diff options
Diffstat (limited to 'recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107')
36 files changed, 128060 insertions, 0 deletions
diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch new file mode 100644 index 0000000000..0b660f3521 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/1764-1.patch @@ -0,0 +1,16 @@ +__arch_strncpy_from_user needs to be exported if you build the framebuffer console driver as a module. + +Cheers, + +Ian. + +--- linux-2.6-bkpxa.orig/arch/arm/kernel/armksyms.c 2004-02-27 10:35:29.000000000 +0000 ++++ linux-2.6-bkpxa/arch/arm/kernel/armksyms.c 2004-02-27 14:55:02.000000000 +0000 +@@ -187,6 +187,7 @@ + EXPORT_SYMBOL(__arch_copy_to_user); + EXPORT_SYMBOL(__arch_clear_user); + EXPORT_SYMBOL(__arch_strnlen_user); ++EXPORT_SYMBOL(__arch_strncpy_from_user); + + /* consistent area handling */ + EXPORT_SYMBOL(consistent_alloc); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch new file mode 100644 index 0000000000..f45fb72de3 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/apm_arrowkey.patch @@ -0,0 +1,32 @@ +--- linux/arch/arm/mach-pxa/sharpsl_apm.c-original 2005-09-07 02:38:21.000000000 -0600 ++++ linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-09-08 01:11:56.000000000 -0600 +@@ -89,6 +89,12 @@ + #include <linux/ioctl.h> + #include <asm/sharp_apm.h> + #include <asm/sharp_char.h> ++#if defined(CONFIG_ARCH_PXA_POODLE) ++#include <asm-arm/arch-pxa/keyboard_poodle.h> /* blc */ ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm-arm/arch-pxa/keyboard_tosa.h> ++#define NR_KEYCODES (KEYCODE(KB_ROWS-1,KB_COLS-1)+1) ++#endif + #include <linux/delay.h> + #include <asm/arch/ads7846_ts.h> + #include <linux/apm_bios.h> +@@ -155,6 +156,7 @@ + /// ioctl + #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + static u32 apm_event_mask = (APM_EVT_POWER_BUTTON); ++extern kbd_keyinfo sharppda_kbdstate[(NR_KEYCODES+1)]; + #else + static u32 apm_event_mask = (APM_EVT_POWER_BUTTON | APM_EVT_BATTERY_STATUS); + #endif +@@ -472,7 +474,7 @@ + if (irq == IRQ_GPIO_ON_KEY) { /* suspend */ + + DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request); +- if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) { ++ if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) || (!sharppda_kbdstate[1].in) ) { /* second half, if something other than cancel is pushed blc */ + /* release */ + count = 0; + } else { diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch new file mode 100644 index 0000000000..eacada33f5 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluecard_cs.patch @@ -0,0 +1,11 @@ +--- linux-orig/drivers/bluetooth/bluecard_cs.c 2004-02-16 10:51:46.000000000 +0300 ++++ linux/drivers/bluetooth/bluecard_cs.c 2004-02-17 03:45:31.000000000 +0300 +@@ -102,7 +102,7 @@ + + + /* Default baud rate: 57600, 115200, 230400 or 460800 */ +-#define DEFAULT_BAUD_RATE 230400 ++#define DEFAULT_BAUD_RATE 460800 + + + /* Hardware states */ diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch new file mode 100644 index 0000000000..d6575dd604 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bluetooth-2.4.18-mh15.patch @@ -0,0 +1,32759 @@ +diff -urN linux-2.4.18/arch/alpha/config.in linux-2.4.18-mh15/arch/alpha/config.in +--- linux-2.4.18/arch/alpha/config.in 2001-11-21 00:49:31.000000000 +0100 ++++ linux-2.4.18-mh15/arch/alpha/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -371,9 +371,7 @@ + source drivers/usb/Config.in + source drivers/input/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Kernel hacking' +diff -urN linux-2.4.18/arch/arm/config.in linux-2.4.18-mh15/arch/arm/config.in +--- linux-2.4.18/arch/arm/config.in 2001-11-09 22:58:02.000000000 +0100 ++++ linux-2.4.18-mh15/arch/arm/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -584,9 +584,7 @@ + + source drivers/usb/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Kernel hacking' +diff -urN linux-2.4.18/arch/i386/config.in linux-2.4.18-mh15/arch/i386/config.in +--- linux-2.4.18/arch/i386/config.in 2002-02-25 20:37:52.000000000 +0100 ++++ linux-2.4.18-mh15/arch/i386/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -407,9 +407,7 @@ + + source drivers/usb/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Kernel hacking' +diff -urN linux-2.4.18/arch/ppc/config.in linux-2.4.18-mh15/arch/ppc/config.in +--- linux-2.4.18/arch/ppc/config.in 2002-02-25 20:37:55.000000000 +0100 ++++ linux-2.4.18-mh15/arch/ppc/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -389,9 +389,7 @@ + + source drivers/usb/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Kernel hacking' +diff -urN linux-2.4.18/arch/sparc/config.in linux-2.4.18-mh15/arch/sparc/config.in +--- linux-2.4.18/arch/sparc/config.in 2001-06-12 04:15:27.000000000 +0200 ++++ linux-2.4.18-mh15/arch/sparc/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -251,9 +251,7 @@ + + source fs/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Watchdog' +diff -urN linux-2.4.18/arch/sparc64/config.in linux-2.4.18-mh15/arch/sparc64/config.in +--- linux-2.4.18/arch/sparc64/config.in 2001-12-21 18:41:53.000000000 +0100 ++++ linux-2.4.18-mh15/arch/sparc64/config.in 2004-08-01 16:26:22.000000000 +0200 +@@ -283,9 +283,7 @@ + + source drivers/usb/Config.in + +-if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then +- source net/bluetooth/Config.in +-fi ++source net/bluetooth/Config.in + + mainmenu_option next_comment + comment 'Watchdog' +diff -urN linux-2.4.18/arch/sparc64/kernel/ioctl32.c linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c +--- linux-2.4.18/arch/sparc64/kernel/ioctl32.c 2002-02-25 20:37:56.000000000 +0100 ++++ linux-2.4.18-mh15/arch/sparc64/kernel/ioctl32.c 2004-08-01 16:26:23.000000000 +0200 +@@ -92,6 +92,7 @@ + + #include <net/bluetooth/bluetooth.h> + #include <net/bluetooth/hci.h> ++#include <net/bluetooth/rfcomm.h> + + #include <linux/usb.h> + #include <linux/usbdevice_fs.h> +@@ -3822,6 +3823,15 @@ + return err; + } + ++/* Bluetooth ioctls */ ++#define HCIUARTSETPROTO _IOW('U', 200, int) ++#define HCIUARTGETPROTO _IOR('U', 201, int) ++ ++#define BNEPCONNADD _IOW('B', 200, int) ++#define BNEPCONNDEL _IOW('B', 201, int) ++#define BNEPGETCONNLIST _IOR('B', 210, int) ++#define BNEPGETCONNINFO _IOR('B', 211, int) ++ + struct mtd_oob_buf32 { + u32 start; + u32 length; +@@ -3878,6 +3888,16 @@ + return ((0 == ret) ? 0 : -EFAULT); + } + ++#define CMTPCONNADD _IOW('C', 200, int) ++#define CMTPCONNDEL _IOW('C', 201, int) ++#define CMTPGETCONNLIST _IOR('C', 210, int) ++#define CMTPGETCONNINFO _IOR('C', 211, int) ++ ++#define HIDPCONNADD _IOW('H', 200, int) ++#define HIDPCONNDEL _IOW('H', 201, int) ++#define HIDPGETCONNLIST _IOR('H', 210, int) ++#define HIDPGETCONNINFO _IOR('H', 211, int) ++ + struct ioctl_trans { + unsigned int cmd; + unsigned int handler; +@@ -4540,6 +4560,25 @@ + COMPATIBLE_IOCTL(HCISETSCAN) + COMPATIBLE_IOCTL(HCISETAUTH) + COMPATIBLE_IOCTL(HCIINQUIRY) ++COMPATIBLE_IOCTL(HCIUARTSETPROTO) ++COMPATIBLE_IOCTL(HCIUARTGETPROTO) ++COMPATIBLE_IOCTL(RFCOMMCREATEDEV) ++COMPATIBLE_IOCTL(RFCOMMRELEASEDEV) ++COMPATIBLE_IOCTL(RFCOMMGETDEVLIST) ++COMPATIBLE_IOCTL(RFCOMMGETDEVINFO) ++COMPATIBLE_IOCTL(RFCOMMSTEALDLC) ++COMPATIBLE_IOCTL(BNEPCONNADD) ++COMPATIBLE_IOCTL(BNEPCONNDEL) ++COMPATIBLE_IOCTL(BNEPGETCONNLIST) ++COMPATIBLE_IOCTL(BNEPGETCONNINFO) ++COMPATIBLE_IOCTL(CMTPCONNADD) ++COMPATIBLE_IOCTL(CMTPCONNDEL) ++COMPATIBLE_IOCTL(CMTPGETCONNLIST) ++COMPATIBLE_IOCTL(CMTPGETCONNINFO) ++COMPATIBLE_IOCTL(HIDPCONNADD) ++COMPATIBLE_IOCTL(HIDPCONNDEL) ++COMPATIBLE_IOCTL(HIDPGETCONNLIST) ++COMPATIBLE_IOCTL(HIDPGETCONNINFO) + /* Misc. */ + COMPATIBLE_IOCTL(0x41545900) /* ATYIO_CLKR */ + COMPATIBLE_IOCTL(0x41545901) /* ATYIO_CLKW */ +diff -urN linux-2.4.18/CREDITS linux-2.4.18-mh15/CREDITS +--- linux-2.4.18/CREDITS 2002-02-25 20:37:50.000000000 +0100 ++++ linux-2.4.18-mh15/CREDITS 2004-08-01 16:26:23.000000000 +0200 +@@ -1317,6 +1317,16 @@ + S: Provo, Utah 84606-5607 + S: USA + ++N: Marcel Holtmann ++E: marcel@holtmann.org ++W: http://www.holtmann.org ++D: Maintainer of the Linux Bluetooth Subsystem ++D: Author and maintainer of the various Bluetooth HCI drivers ++D: Author and maintainer of the CAPI message transport protocol driver ++D: Author and maintainer of the Bluetooth HID protocol driver ++D: Various other Bluetooth related patches, cleanups and fixes ++S: Germany ++ + N: Rob W. W. Hooft + E: hooft@EMBL-Heidelberg.DE + D: Shared libs for graphics-tools and for the f2c compiler +@@ -2546,6 +2556,7 @@ + N: Aristeu Sergio Rozanski Filho + E: aris@conectiva.com.br + D: Support for EtherExpress 10 ISA (i82595) in eepro driver ++D: User level driver support for input + S: Conectiva S.A. + S: R. Tocantins, 89 - Cristo Rei + S: 80050-430 - Curitiba - Paraná +diff -urN linux-2.4.18/Documentation/Configure.help linux-2.4.18-mh15/Documentation/Configure.help +--- linux-2.4.18/Documentation/Configure.help 2002-02-25 20:37:51.000000000 +0100 ++++ linux-2.4.18-mh15/Documentation/Configure.help 2004-08-01 16:26:23.000000000 +0200 +@@ -2824,14 +2824,6 @@ + + If unsure, say N. + +-HCI EMU (virtual device) driver +-CONFIG_BLUEZ_HCIEMU +- Bluetooth Virtual HCI device driver. +- This driver is required if you want to use HCI Emulation software. +- +- Say Y here to compile support for Virtual HCI devices into the +- kernel or say M to compile it as module (hci_usb.o). +- + # Choice: alphatype + Alpha system type + CONFIG_ALPHA_GENERIC +@@ -11037,6 +11029,12 @@ + + If unsure, say N. + ++Hotplug firmware loading support (EXPERIMENTAL) ++CONFIG_FW_LOADER ++ This option is provided for the case where no in-kernel-tree modules require ++ hotplug firmware loading support, but a module built outside the kernel tree ++ does. ++ + Use PCI shared memory for NIC registers + CONFIG_TULIP_MMIO + Use PCI shared memory for the NIC registers, rather than going through +@@ -12896,6 +12894,15 @@ + accessible under char device 13:64+ - /dev/input/eventX in a generic + way. This is the future ... + ++CONFIG_INPUT_UINPUT ++ Say Y here if you want to support user level drivers for input ++ subsystem accessible under char device 10:223 - /dev/input/uinput. ++ ++ This driver is also available as a module ( = code which can be ++ inserted in and removed from the running kernel whenever you want). ++ The module will be called uinput.o. If you want to compile it as a ++ module, say M here and read <file:Documentation/modules.txt>. ++ + USB Scanner support + CONFIG_USB_SCANNER + Say Y here if you want to connect a USB scanner to your computer's +@@ -19870,19 +19877,22 @@ + Bluetooth can be found at <http://www.bluetooth.com/>. + + Linux Bluetooth subsystem consist of several layers: +- HCI Core (device and connection manager, scheduler) +- HCI Device drivers (interface to the hardware) +- L2CAP Module (L2CAP protocol) ++ BlueZ Core (HCI device and connection manager, scheduler) ++ HCI Device drivers (Interface to the hardware) ++ SCO Module (SCO audio links) ++ L2CAP Module (Logical Link Control and Adaptation Protocol) ++ RFCOMM Module (RFCOMM Protocol) ++ BNEP Module (Bluetooth Network Encapsulation Protocol) ++ CMTP Module (CAPI Message Transport Protocol) ++ HIDP Module (Human Interface Device Protocol) + +- Say Y here to enable Linux Bluetooth support and to build HCI Core +- layer. ++ Say Y here to compile Bluetooth support into the kernel or say M to ++ compile it as module (bluez.o). + + To use Linux Bluetooth subsystem, you will need several user-space + utilities like hciconfig and hcid. These utilities and updates to + Bluetooth kernel modules are provided in the BlueZ package. +- For more information, see <http://bluez.sourceforge.net/>. +- +- If you want to compile HCI Core as module (hci.o) say M here. ++ For more information, see <http://www.bluez.org/>. + + L2CAP protocol support + CONFIG_BLUEZ_L2CAP +@@ -19893,15 +19903,96 @@ + Say Y here to compile L2CAP support into the kernel or say M to + compile it as module (l2cap.o). + ++SCO links support ++CONFIG_BLUEZ_SCO ++ SCO link provides voice transport over Bluetooth. SCO support is ++ required for voice applications like Headset and Audio. ++ ++ Say Y here to compile SCO support into the kernel or say M to ++ compile it as module (sco.o). ++ ++RFCOMM protocol support ++CONFIG_BLUEZ_RFCOMM ++ RFCOMM provides connection oriented stream transport. RFCOMM ++ support is required for Dialup Networking, OBEX and other Bluetooth ++ applications. ++ ++ Say Y here to compile RFCOMM support into the kernel or say M to ++ compile it as module (rfcomm.o). ++ ++RFCOMM TTY emulation support ++CONFIG_BLUEZ_RFCOMM_TTY ++ This option enables TTY emulation support for RFCOMM channels. ++ ++BNEP protocol support ++CONFIG_BLUEZ_BNEP ++ BNEP (Bluetooth Network Encapsulation Protocol) is Ethernet ++ emulation layer on top of Bluetooth. BNEP is required for ++ Bluetooth PAN (Personal Area Network). ++ ++ Say Y here to compile BNEP support into the kernel or say M to ++ compile it as module (bnep.o). ++ ++BNEP multicast filter support ++CONFIG_BLUEZ_BNEP_MC_FILTER ++ This option enables the multicast filter support for BNEP. ++ ++BNEP protocol filter support ++CONFIG_BLUEZ_BNEP_PROTO_FILTER ++ This option enables the protocol filter support for BNEP. ++ ++CMTP protocol support ++CONFIG_BLUEZ_CMTP ++ CMTP (CAPI Message Transport Protocol) is a transport layer ++ for CAPI messages. CMTP is required for the Bluetooth Common ++ ISDN Access Profile. ++ ++ Say Y here to compile CMTP support into the kernel or say M to ++ compile it as module (cmtp.o). ++ ++HIDP protocol support ++CONFIG_BLUEZ_HIDP ++ HIDP (Human Interface Device Protocol) is a transport layer ++ for HID reports. HIDP is required for the Bluetooth Human ++ Interface Device Profile. ++ ++ Say Y here to compile HIDP support into the kernel or say M to ++ compile it as module (hidp.o). ++ + HCI UART driver + CONFIG_BLUEZ_HCIUART + Bluetooth HCI UART driver. + This driver is required if you want to use Bluetooth devices with +- serial port interface. ++ serial port interface. You will also need this driver if you have ++ UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card ++ adapter and BrainBoxes Bluetooth PC Card. + + Say Y here to compile support for Bluetooth UART devices into the + kernel or say M to compile it as module (hci_uart.o). + ++HCI UART (H4) protocol support ++CONFIG_BLUEZ_HCIUART_H4 ++ UART (H4) is serial protocol for communication between Bluetooth ++ device and host. This protocol is required for most Bluetooth devices ++ with UART interface, including PCMCIA and CF cards. ++ ++ Say Y here to compile support for HCI UART (H4) protocol. ++ ++HCI BCSP protocol support ++CONFIG_BLUEZ_HCIUART_BCSP ++ BCSP (BlueCore Serial Protocol) is serial protocol for communication ++ between Bluetooth device and host. This protocol is required for non ++ USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and ++ CF cards. ++ ++ Say Y here to compile support for HCI BCSP protocol. ++ ++HCI BCSP transmit CRC with every BCSP packet ++CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ If you say Y here, a 16-bit CRC checksum will be transmitted along with ++ every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip. ++ This increases reliability, but slightly reduces efficiency. ++ + HCI USB driver + CONFIG_BLUEZ_HCIUSB + Bluetooth HCI USB driver. +@@ -19911,7 +20002,16 @@ + Say Y here to compile support for Bluetooth USB devices into the + kernel or say M to compile it as module (hci_usb.o). + +-HCI VHCI virtual HCI device driver ++HCI USB SCO (voice) support ++CONFIG_BLUEZ_HCIUSB_SCO ++ This option enables the SCO support in the HCI USB driver. You need this ++ to transmit voice data with your Bluetooth USB device. And your device ++ must also support sending SCO data over the HCI layer, because some of ++ them sends the SCO data to an internal PCM adapter. ++ ++ Say Y here to compile support for HCI SCO data. ++ ++HCI VHCI Virtual HCI device driver + CONFIG_BLUEZ_HCIVHCI + Bluetooth Virtual HCI device driver. + This driver is required if you want to use HCI Emulation software. +@@ -19919,6 +20019,63 @@ + Say Y here to compile support for virtual HCI devices into the + kernel or say M to compile it as module (hci_vhci.o). + ++HCI BFUSB device driver ++CONFIG_BLUEZ_HCIBFUSB ++ Bluetooth HCI BlueFRITZ! USB driver. ++ This driver provides support for Bluetooth USB devices with AVM ++ interface: ++ AVM BlueFRITZ! USB ++ ++ Say Y here to compile support for HCI BFUSB devices into the ++ kernel or say M to compile it as module (bfusb.o). ++ ++HCI DTL1 (PC Card) device driver ++CONFIG_BLUEZ_HCIDTL1 ++ Bluetooth HCI DTL1 (PC Card) driver. ++ This driver provides support for Bluetooth PCMCIA devices with ++ Nokia DTL1 interface: ++ Nokia Bluetooth Card ++ Socket Bluetooth CF Card ++ ++ Say Y here to compile support for HCI DTL1 devices into the ++ kernel or say M to compile it as module (dtl1_cs.o). ++ ++HCI BT3C (PC Card) device driver ++CONFIG_BLUEZ_HCIBT3C ++ Bluetooth HCI BT3C (PC Card) driver. ++ This driver provides support for Bluetooth PCMCIA devices with ++ 3Com BT3C interface: ++ 3Com Bluetooth Card (3CRWB6096) ++ HP Bluetooth Card ++ ++ Say Y here to compile support for HCI BT3C devices into the ++ kernel or say M to compile it as module (bt3c_cs.o). ++ ++HCI BlueCard (PC Card) device driver ++CONFIG_BLUEZ_HCIBLUECARD ++ Bluetooth HCI BlueCard (PC Card) driver. ++ This driver provides support for Bluetooth PCMCIA devices with ++ Anycom BlueCard interface: ++ Anycom Bluetooth PC Card ++ Anycom Bluetooth CF Card ++ ++ Say Y here to compile support for HCI BlueCard devices into the ++ kernel or say M to compile it as module (bluecard_cs.o). ++ ++HCI UART (PC Card) device driver ++CONFIG_BLUEZ_HCIBTUART ++ Bluetooth HCI UART (PC Card) driver. ++ This driver provides support for Bluetooth PCMCIA devices with ++ an UART interface: ++ Xircom CreditCard Bluetooth Adapter ++ Xircom RealPort2 Bluetooth Adapter ++ Sphinx PICO Card ++ H-Soft blue+Card ++ Cyber-blue Compact Flash Card ++ ++ Say Y here to compile support for HCI UART devices into the ++ kernel or say M to compile it as module (btuart_cs.o). ++ + # The following options are for Linux when running on the Hitachi + # SuperH family of RISC microprocessors. + +diff -urN linux-2.4.18/Documentation/devices.txt linux-2.4.18-mh15/Documentation/devices.txt +--- linux-2.4.18/Documentation/devices.txt 2001-11-07 23:46:01.000000000 +0100 ++++ linux-2.4.18-mh15/Documentation/devices.txt 2004-08-01 16:26:23.000000000 +0200 +@@ -419,6 +419,7 @@ + 220 = /dev/mptctl Message passing technology (MPT) control + 221 = /dev/mvista/hssdsi Montavista PICMG hot swap system driver + 222 = /dev/mvista/hasi Montavista PICMG high availability ++ 223 = /dev/input/uinput User level driver support for input + 240-255 Reserved for local use + + 11 char Raw keyboard device +diff -urN linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c +--- linux-2.4.18/Documentation/firmware_class/firmware_sample_driver.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/Documentation/firmware_class/firmware_sample_driver.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,121 @@ ++/* ++ * firmware_sample_driver.c - ++ * ++ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org> ++ * ++ * Sample code on how to use request_firmware() from drivers. ++ * ++ * Note that register_firmware() is currently useless. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/string.h> ++ ++#include "linux/firmware.h" ++ ++#define WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE ++#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE ++char __init inkernel_firmware[] = "let's say that this is firmware\n"; ++#endif ++ ++static char ghost_device[] = "ghost0"; ++ ++static void sample_firmware_load(char *firmware, int size) ++{ ++ u8 buf[size+1]; ++ memcpy(buf, firmware, size); ++ buf[size] = '\0'; ++ printk("firmware_sample_driver: firmware: %s\n", buf); ++} ++ ++static void sample_probe_default(void) ++{ ++ /* uses the default method to get the firmware */ ++ const struct firmware *fw_entry; ++ printk("firmware_sample_driver: a ghost device got inserted :)\n"); ++ ++ if(request_firmware(&fw_entry, "sample_driver_fw", ghost_device)!=0) ++ { ++ printk(KERN_ERR ++ "firmware_sample_driver: Firmware not available\n"); ++ return; ++ } ++ ++ sample_firmware_load(fw_entry->data, fw_entry->size); ++ ++ release_firmware(fw_entry); ++ ++ /* finish setting up the device */ ++} ++static void sample_probe_specific(void) ++{ ++ /* Uses some specific hotplug support to get the firmware from ++ * userspace directly into the hardware, or via some sysfs file */ ++ ++ /* NOTE: This currently doesn't work */ ++ ++ printk("firmware_sample_driver: a ghost device got inserted :)\n"); ++ ++ if(request_firmware(NULL, "sample_driver_fw", ghost_device)!=0) ++ { ++ printk(KERN_ERR ++ "firmware_sample_driver: Firmware load failed\n"); ++ return; ++ } ++ ++ /* request_firmware blocks until userspace finished, so at ++ * this point the firmware should be already in the device */ ++ ++ /* finish setting up the device */ ++} ++static void sample_probe_async_cont(const struct firmware *fw, void *context) ++{ ++ if(!fw){ ++ printk(KERN_ERR ++ "firmware_sample_driver: firmware load failed\n"); ++ return; ++ } ++ ++ printk("firmware_sample_driver: device pointer \"%s\"\n", ++ (char *)context); ++ sample_firmware_load(fw->data, fw->size); ++} ++static void sample_probe_async(void) ++{ ++ /* Let's say that I can't sleep */ ++ int error; ++ error = request_firmware_nowait (THIS_MODULE, ++ "sample_driver_fw", ghost_device, ++ "my device pointer", ++ sample_probe_async_cont); ++ if(error){ ++ printk(KERN_ERR ++ "firmware_sample_driver:" ++ " request_firmware_nowait failed\n"); ++ } ++} ++ ++static int sample_init(void) ++{ ++#ifdef WE_CAN_NEED_FIRMWARE_BEFORE_USERSPACE_IS_AVAILABLE ++ register_firmware("sample_driver_fw", inkernel_firmware, ++ sizeof(inkernel_firmware)); ++#endif ++ /* since there is no real hardware insertion I just call the ++ * sample probe functions here */ ++ sample_probe_specific(); ++ sample_probe_default(); ++ sample_probe_async(); ++ return 0; ++} ++static void __exit sample_exit(void) ++{ ++} ++ ++module_init (sample_init); ++module_exit (sample_exit); ++ ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/Documentation/firmware_class/hotplug-script linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script +--- linux-2.4.18/Documentation/firmware_class/hotplug-script 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/Documentation/firmware_class/hotplug-script 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,16 @@ ++#!/bin/sh ++ ++# Simple hotplug script sample: ++# ++# Both $DEVPATH and $FIRMWARE are already provided in the environment. ++ ++HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/ ++ ++echo 1 > /sysfs/$DEVPATH/loading ++cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data ++echo 0 > /sysfs/$DEVPATH/loading ++ ++# To cancel the load in case of error: ++# ++# echo -1 > /sysfs/$DEVPATH/loading ++# +diff -urN linux-2.4.18/Documentation/firmware_class/README linux-2.4.18-mh15/Documentation/firmware_class/README +--- linux-2.4.18/Documentation/firmware_class/README 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/Documentation/firmware_class/README 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,58 @@ ++ ++ request_firmware() hotplug interface: ++ ------------------------------------ ++ Copyright (C) 2003 Manuel Estrada Sainz <ranty@debian.org> ++ ++ Why: ++ --- ++ ++ Today, the most extended way to use firmware in the Linux kernel is linking ++ it statically in a header file. Which has political and technical issues: ++ ++ 1) Some firmware is not legal to redistribute. ++ 2) The firmware occupies memory permanently, even though it often is just ++ used once. ++ 3) Some people, like the Debian crowd, don't consider some firmware free ++ enough and remove entire drivers (e.g.: keyspan). ++ ++ about in-kernel persistence: ++ --------------------------- ++ Under some circumstances, as explained below, it would be interesting to keep ++ firmware images in non-swappable kernel memory or even in the kernel image ++ (probably within initramfs). ++ ++ Note that this functionality has not been implemented. ++ ++ - Why OPTIONAL in-kernel persistence may be a good idea sometimes: ++ ++ - If the device that needs the firmware is needed to access the ++ filesystem. When upon some error the device has to be reset and the ++ firmware reloaded, it won't be possible to get it from userspace. ++ e.g.: ++ - A diskless client with a network card that needs firmware. ++ - The filesystem is stored in a disk behind an scsi device ++ that needs firmware. ++ - Replacing buggy DSDT/SSDT ACPI tables on boot. ++ Note: this would require the persistent objects to be included ++ within the kernel image, probably within initramfs. ++ ++ And the same device can be needed to access the filesystem or not depending ++ on the setup, so I think that the choice on what firmware to make ++ persistent should be left to userspace. ++ ++ - Why register_firmware()+__init can be useful: ++ - For boot devices needing firmware. ++ - To make the transition easier: ++ The firmware can be declared __init and register_firmware() ++ called on module_init. Then the firmware is warranted to be ++ there even if "firmware hotplug userspace" is not there yet or ++ it doesn't yet provide the needed firmware. ++ Once the firmware is widely available in userspace, it can be ++ removed from the kernel. Or made optional (CONFIG_.*_FIRMWARE). ++ ++ In either case, if firmware hotplug support is there, it can move the ++ firmware out of kernel memory into the real filesystem for later ++ usage. ++ ++ Note: If persistence is implemented on top of initramfs, ++ register_firmware() may not be appropriate. +diff -urN linux-2.4.18/drivers/bluetooth/bfusb.c linux-2.4.18-mh15/drivers/bluetooth/bfusb.c +--- linux-2.4.18/drivers/bluetooth/bfusb.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/bfusb.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,782 @@ ++/* ++ * ++ * AVM BlueFRITZ! USB driver ++ * ++ * Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/errno.h> ++#include <linux/skbuff.h> ++ ++#include <linux/firmware.h> ++#include <linux/usb.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++#ifndef CONFIG_BLUEZ_HCIBFUSB_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define VERSION "1.1" ++ ++static struct usb_device_id bfusb_table[] = { ++ /* AVM BlueFRITZ! USB */ ++ { USB_DEVICE(0x057c, 0x2200) }, ++ ++ { } /* Terminating entry */ ++}; ++ ++MODULE_DEVICE_TABLE(usb, bfusb_table); ++ ++ ++#define BFUSB_MAX_BLOCK_SIZE 256 ++ ++#define BFUSB_BLOCK_TIMEOUT (HZ * 3) ++ ++#define BFUSB_TX_PROCESS 1 ++#define BFUSB_TX_WAKEUP 2 ++ ++#define BFUSB_MAX_BULK_TX 1 ++#define BFUSB_MAX_BULK_RX 1 ++ ++struct bfusb { ++ struct hci_dev hdev; ++ ++ unsigned long state; ++ ++ struct usb_device *udev; ++ ++ unsigned int bulk_in_ep; ++ unsigned int bulk_out_ep; ++ unsigned int bulk_pkt_size; ++ ++ rwlock_t lock; ++ ++ struct sk_buff_head transmit_q; ++ ++ struct sk_buff *reassembly; ++ ++ atomic_t pending_tx; ++ struct sk_buff_head pending_q; ++ struct sk_buff_head completed_q; ++}; ++ ++struct bfusb_scb { ++ struct urb *urb; ++}; ++ ++static void bfusb_tx_complete(struct urb *urb); ++static void bfusb_rx_complete(struct urb *urb); ++ ++static struct urb *bfusb_get_completed(struct bfusb *bfusb) ++{ ++ struct sk_buff *skb; ++ struct urb *urb = NULL; ++ ++ BT_DBG("bfusb %p", bfusb); ++ ++ skb = skb_dequeue(&bfusb->completed_q); ++ if (skb) { ++ urb = ((struct bfusb_scb *) skb->cb)->urb; ++ kfree_skb(skb); ++ } ++ ++ return urb; ++} ++ ++static inline void bfusb_unlink_urbs(struct bfusb *bfusb) ++{ ++ struct sk_buff *skb; ++ struct urb *urb; ++ ++ BT_DBG("bfusb %p", bfusb); ++ ++ while ((skb = skb_dequeue(&bfusb->pending_q))) { ++ urb = ((struct bfusb_scb *) skb->cb)->urb; ++ usb_unlink_urb(urb); ++ skb_queue_tail(&bfusb->completed_q, skb); ++ } ++ ++ while ((urb = bfusb_get_completed(bfusb))) ++ usb_free_urb(urb); ++} ++ ++ ++static int bfusb_send_bulk(struct bfusb *bfusb, struct sk_buff *skb) ++{ ++ struct bfusb_scb *scb = (void *) skb->cb; ++ struct urb *urb = bfusb_get_completed(bfusb); ++ int err, pipe; ++ ++ BT_DBG("bfusb %p skb %p len %d", bfusb, skb, skb->len); ++ ++ if (!urb && !(urb = usb_alloc_urb(0))) ++ return -ENOMEM; ++ ++ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep); ++ ++ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, skb->len, ++ bfusb_tx_complete, skb); ++ ++ urb->transfer_flags = USB_QUEUE_BULK; ++ ++ scb->urb = urb; ++ ++ skb_queue_tail(&bfusb->pending_q, skb); ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s bulk tx submit failed urb %p err %d", ++ bfusb->hdev.name, urb, err); ++ skb_unlink(skb); ++ usb_free_urb(urb); ++ } else ++ atomic_inc(&bfusb->pending_tx); ++ ++ return err; ++} ++ ++static void bfusb_tx_wakeup(struct bfusb *bfusb) ++{ ++ struct sk_buff *skb; ++ ++ BT_DBG("bfusb %p", bfusb); ++ ++ if (test_and_set_bit(BFUSB_TX_PROCESS, &bfusb->state)) { ++ set_bit(BFUSB_TX_WAKEUP, &bfusb->state); ++ return; ++ } ++ ++ do { ++ clear_bit(BFUSB_TX_WAKEUP, &bfusb->state); ++ ++ while ((atomic_read(&bfusb->pending_tx) < BFUSB_MAX_BULK_TX) && ++ (skb = skb_dequeue(&bfusb->transmit_q))) { ++ if (bfusb_send_bulk(bfusb, skb) < 0) { ++ skb_queue_head(&bfusb->transmit_q, skb); ++ break; ++ } ++ } ++ ++ } while (test_bit(BFUSB_TX_WAKEUP, &bfusb->state)); ++ ++ clear_bit(BFUSB_TX_PROCESS, &bfusb->state); ++} ++ ++static void bfusb_tx_complete(struct urb *urb) ++{ ++ struct sk_buff *skb = (struct sk_buff *) urb->context; ++ struct bfusb *bfusb = (struct bfusb *) skb->dev; ++ ++ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len); ++ ++ atomic_dec(&bfusb->pending_tx); ++ ++ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags)) ++ return; ++ ++ if (!urb->status) ++ bfusb->hdev.stat.byte_tx += skb->len; ++ else ++ bfusb->hdev.stat.err_tx++; ++ ++ read_lock(&bfusb->lock); ++ ++ skb_unlink(skb); ++ skb_queue_tail(&bfusb->completed_q, skb); ++ ++ bfusb_tx_wakeup(bfusb); ++ ++ read_unlock(&bfusb->lock); ++} ++ ++ ++static int bfusb_rx_submit(struct bfusb *bfusb, struct urb *urb) ++{ ++ struct bfusb_scb *scb; ++ struct sk_buff *skb; ++ int err, pipe, size = HCI_MAX_FRAME_SIZE + 32; ++ ++ BT_DBG("bfusb %p urb %p", bfusb, urb); ++ ++ if (!urb && !(urb = usb_alloc_urb(0))) ++ return -ENOMEM; ++ ++ if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) { ++ usb_free_urb(urb); ++ return -ENOMEM; ++ } ++ ++ skb->dev = (void *) bfusb; ++ ++ scb = (struct bfusb_scb *) skb->cb; ++ scb->urb = urb; ++ ++ pipe = usb_rcvbulkpipe(bfusb->udev, bfusb->bulk_in_ep); ++ ++ FILL_BULK_URB(urb, bfusb->udev, pipe, skb->data, size, ++ bfusb_rx_complete, skb); ++ ++ urb->transfer_flags = USB_QUEUE_BULK; ++ ++ skb_queue_tail(&bfusb->pending_q, skb); ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s bulk rx submit failed urb %p err %d", ++ bfusb->hdev.name, urb, err); ++ skb_unlink(skb); ++ kfree_skb(skb); ++ usb_free_urb(urb); ++ } ++ ++ return err; ++} ++ ++static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len) ++{ ++ BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len); ++ ++ if (hdr & 0x10) { ++ BT_ERR("%s error in block", bfusb->hdev.name); ++ if (bfusb->reassembly) ++ kfree_skb(bfusb->reassembly); ++ bfusb->reassembly = NULL; ++ return -EIO; ++ } ++ ++ if (hdr & 0x04) { ++ struct sk_buff *skb; ++ unsigned char pkt_type; ++ int pkt_len = 0; ++ ++ if (bfusb->reassembly) { ++ BT_ERR("%s unexpected start block", bfusb->hdev.name); ++ kfree_skb(bfusb->reassembly); ++ bfusb->reassembly = NULL; ++ } ++ ++ if (len < 1) { ++ BT_ERR("%s no packet type found", bfusb->hdev.name); ++ return -EPROTO; ++ } ++ ++ pkt_type = *data++; len--; ++ ++ switch (pkt_type) { ++ case HCI_EVENT_PKT: ++ if (len >= HCI_EVENT_HDR_SIZE) { ++ hci_event_hdr *hdr = (hci_event_hdr *) data; ++ pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen; ++ } else { ++ BT_ERR("%s event block is too short", bfusb->hdev.name); ++ return -EILSEQ; ++ } ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ if (len >= HCI_ACL_HDR_SIZE) { ++ hci_acl_hdr *hdr = (hci_acl_hdr *) data; ++ pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen); ++ } else { ++ BT_ERR("%s data block is too short", bfusb->hdev.name); ++ return -EILSEQ; ++ } ++ break; ++ ++ case HCI_SCODATA_PKT: ++ if (len >= HCI_SCO_HDR_SIZE) { ++ hci_sco_hdr *hdr = (hci_sco_hdr *) data; ++ pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen; ++ } else { ++ BT_ERR("%s audio block is too short", bfusb->hdev.name); ++ return -EILSEQ; ++ } ++ break; ++ } ++ ++ skb = bluez_skb_alloc(pkt_len, GFP_ATOMIC); ++ if (!skb) { ++ BT_ERR("%s no memory for the packet", bfusb->hdev.name); ++ return -ENOMEM; ++ } ++ ++ skb->dev = (void *) &bfusb->hdev; ++ skb->pkt_type = pkt_type; ++ ++ bfusb->reassembly = skb; ++ } else { ++ if (!bfusb->reassembly) { ++ BT_ERR("%s unexpected continuation block", bfusb->hdev.name); ++ return -EIO; ++ } ++ } ++ ++ if (len > 0) ++ memcpy(skb_put(bfusb->reassembly, len), data, len); ++ ++ if (hdr & 0x08) { ++ hci_recv_frame(bfusb->reassembly); ++ bfusb->reassembly = NULL; ++ } ++ ++ return 0; ++} ++ ++static void bfusb_rx_complete(struct urb *urb) ++{ ++ struct sk_buff *skb = (struct sk_buff *) urb->context; ++ struct bfusb *bfusb = (struct bfusb *) skb->dev; ++ unsigned char *buf = urb->transfer_buffer; ++ int count = urb->actual_length; ++ int err, hdr, len; ++ ++ BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len); ++ ++ read_lock(&bfusb->lock); ++ ++ if (!test_bit(HCI_RUNNING, &bfusb->hdev.flags)) ++ goto unlock; ++ ++ if (urb->status || !count) ++ goto resubmit; ++ ++ bfusb->hdev.stat.byte_rx += count; ++ ++ skb_put(skb, count); ++ ++ while (count) { ++ hdr = buf[0] | (buf[1] << 8); ++ ++ if (hdr & 0x4000) { ++ len = 0; ++ count -= 2; ++ buf += 2; ++ } else { ++ len = (buf[2] == 0) ? 256 : buf[2]; ++ count -= 3; ++ buf += 3; ++ } ++ ++ if (count < len) { ++ BT_ERR("%s block extends over URB buffer ranges", ++ bfusb->hdev.name); ++ } ++ ++ if ((hdr & 0xe1) == 0xc1) ++ bfusb_recv_block(bfusb, hdr, buf, len); ++ ++ count -= len; ++ buf += len; ++ } ++ ++ skb_unlink(skb); ++ kfree_skb(skb); ++ ++ bfusb_rx_submit(bfusb, urb); ++ ++ read_unlock(&bfusb->lock); ++ ++ return; ++ ++resubmit: ++ urb->dev = bfusb->udev; ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s bulk resubmit failed urb %p err %d", ++ bfusb->hdev.name, urb, err); ++ } ++ ++unlock: ++ read_unlock(&bfusb->lock); ++} ++ ++ ++static int bfusb_open(struct hci_dev *hdev) ++{ ++ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data; ++ unsigned long flags; ++ int i, err; ++ ++ BT_DBG("hdev %p bfusb %p", hdev, bfusb); ++ ++ if (test_and_set_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; ++ ++ MOD_INC_USE_COUNT; ++ ++ write_lock_irqsave(&bfusb->lock, flags); ++ ++ err = bfusb_rx_submit(bfusb, NULL); ++ if (!err) { ++ for (i = 1; i < BFUSB_MAX_BULK_RX; i++) ++ bfusb_rx_submit(bfusb, NULL); ++ } else { ++ clear_bit(HCI_RUNNING, &hdev->flags); ++ MOD_DEC_USE_COUNT; ++ } ++ ++ write_unlock_irqrestore(&bfusb->lock, flags); ++ ++ return err; ++} ++ ++static int bfusb_flush(struct hci_dev *hdev) ++{ ++ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data; ++ ++ BT_DBG("hdev %p bfusb %p", hdev, bfusb); ++ ++ skb_queue_purge(&bfusb->transmit_q); ++ ++ return 0; ++} ++ ++static int bfusb_close(struct hci_dev *hdev) ++{ ++ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data; ++ unsigned long flags; ++ ++ BT_DBG("hdev %p bfusb %p", hdev, bfusb); ++ ++ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; ++ ++ write_lock_irqsave(&bfusb->lock, flags); ++ ++ bfusb_unlink_urbs(bfusb); ++ bfusb_flush(hdev); ++ ++ write_unlock_irqrestore(&bfusb->lock, flags); ++ ++ MOD_DEC_USE_COUNT; ++ ++ return 0; ++} ++ ++static int bfusb_send_frame(struct sk_buff *skb) ++{ ++ struct hci_dev *hdev = (struct hci_dev *) skb->dev; ++ struct bfusb *bfusb; ++ struct sk_buff *nskb; ++ unsigned char buf[3]; ++ int sent = 0, size, count; ++ ++ BT_DBG("hdev %p skb %p type %d len %d", hdev, skb, skb->pkt_type, skb->len); ++ ++ if (!hdev) { ++ BT_ERR("Frame for unknown HCI device (hdev=NULL)"); ++ return -ENODEV; ++ } ++ ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) ++ return -EBUSY; ++ ++ bfusb = (struct bfusb *) hdev->driver_data; ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++ }; ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1); ++ ++ count = skb->len; ++ ++ /* Max HCI frame size seems to be 1511 + 1 */ ++ if (!(nskb = bluez_skb_alloc(count + 32, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for new packet"); ++ return -ENOMEM; ++ } ++ ++ nskb->dev = (void *) bfusb; ++ ++ while (count) { ++ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE); ++ ++ buf[0] = 0xc1 | ((sent == 0) ? 0x04 : 0) | ((count == size) ? 0x08 : 0); ++ buf[1] = 0x00; ++ buf[2] = (size == BFUSB_MAX_BLOCK_SIZE) ? 0 : size; ++ ++ memcpy(skb_put(nskb, 3), buf, 3); ++ memcpy(skb_put(nskb, size), skb->data + sent, size); ++ ++ sent += size; ++ count -= size; ++ } ++ ++ /* Don't send frame with multiple size of bulk max packet */ ++ if ((nskb->len % bfusb->bulk_pkt_size) == 0) { ++ buf[0] = 0xdd; ++ buf[1] = 0x00; ++ memcpy(skb_put(nskb, 2), buf, 2); ++ } ++ ++ read_lock(&bfusb->lock); ++ ++ skb_queue_tail(&bfusb->transmit_q, nskb); ++ bfusb_tx_wakeup(bfusb); ++ ++ read_unlock(&bfusb->lock); ++ ++ kfree_skb(skb); ++ ++ return 0; ++} ++ ++static void bfusb_destruct(struct hci_dev *hdev) ++{ ++ struct bfusb *bfusb = (struct bfusb *) hdev->driver_data; ++ ++ BT_DBG("hdev %p bfusb %p", hdev, bfusb); ++ ++ kfree(bfusb); ++} ++ ++static int bfusb_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++static int bfusb_load_firmware(struct bfusb *bfusb, unsigned char *firmware, int count) ++{ ++ unsigned char *buf; ++ int err, pipe, len, size, sent = 0; ++ ++ BT_DBG("bfusb %p udev %p firmware %p count %d", bfusb, bfusb->udev, firmware, count); ++ ++ BT_INFO("BlueFRITZ! USB loading firmware"); ++ ++ if (usb_set_configuration(bfusb->udev, 1) < 0) { ++ BT_ERR("Can't change to loading configuration"); ++ return -EBUSY; ++ } ++ ++ buf = kmalloc(BFUSB_MAX_BLOCK_SIZE + 3, GFP_ATOMIC); ++ if (!buf) { ++ BT_ERR("Can't allocate memory chunk for firmware"); ++ return -ENOMEM; ++ } ++ ++ pipe = usb_sndbulkpipe(bfusb->udev, bfusb->bulk_out_ep); ++ ++ while (count) { ++ size = min_t(uint, count, BFUSB_MAX_BLOCK_SIZE + 3); ++ ++ memcpy(buf, firmware + sent, size); ++ ++ err = usb_bulk_msg(bfusb->udev, pipe, buf, size, ++ &len, BFUSB_BLOCK_TIMEOUT); ++ ++ if (err || (len != size)) { ++ BT_ERR("Error in firmware loading"); ++ goto error; ++ } ++ ++ sent += size; ++ count -= size; ++ } ++ ++ if ((err = usb_bulk_msg(bfusb->udev, pipe, NULL, 0, ++ &len, BFUSB_BLOCK_TIMEOUT)) < 0) { ++ BT_ERR("Error in null packet request"); ++ goto error; ++ } ++ ++ if ((err = usb_set_configuration(bfusb->udev, 2)) < 0) { ++ BT_ERR("Can't change to running configuration"); ++ goto error; ++ } ++ ++ BT_INFO("BlueFRITZ! USB device ready"); ++ ++ kfree(buf); ++ return 0; ++ ++error: ++ kfree(buf); ++ ++ pipe = usb_sndctrlpipe(bfusb->udev, 0); ++ ++ usb_control_msg(bfusb->udev, pipe, USB_REQ_SET_CONFIGURATION, ++ 0, 0, 0, NULL, 0, BFUSB_BLOCK_TIMEOUT); ++ ++ return err; ++} ++ ++static void *bfusb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id) ++{ ++ const struct firmware *firmware; ++ char device[16]; ++ struct usb_interface *iface; ++ struct usb_interface_descriptor *iface_desc; ++ struct usb_endpoint_descriptor *bulk_out_ep; ++ struct usb_endpoint_descriptor *bulk_in_ep; ++ struct hci_dev *hdev; ++ struct bfusb *bfusb; ++ ++ BT_DBG("udev %p ifnum %d id %p", udev, ifnum, id); ++ ++ /* Check number of endpoints */ ++ iface = &udev->actconfig->interface[0]; ++ iface_desc = &iface->altsetting[0]; ++ ++ if (iface_desc->bNumEndpoints < 2) ++ return NULL; ++ ++ bulk_out_ep = &iface_desc->endpoint[0]; ++ bulk_in_ep = &iface_desc->endpoint[1]; ++ ++ if (!bulk_out_ep || !bulk_in_ep) { ++ BT_ERR("Bulk endpoints not found"); ++ goto done; ++ } ++ ++ /* Initialize control structure and load firmware */ ++ if (!(bfusb = kmalloc(sizeof(struct bfusb), GFP_KERNEL))) { ++ BT_ERR("Can't allocate memory for control structure"); ++ goto done; ++ } ++ ++ memset(bfusb, 0, sizeof(struct bfusb)); ++ ++ bfusb->udev = udev; ++ bfusb->bulk_in_ep = bulk_in_ep->bEndpointAddress; ++ bfusb->bulk_out_ep = bulk_out_ep->bEndpointAddress; ++ bfusb->bulk_pkt_size = bulk_out_ep->wMaxPacketSize; ++ ++ bfusb->lock = RW_LOCK_UNLOCKED; ++ ++ bfusb->reassembly = NULL; ++ ++ skb_queue_head_init(&bfusb->transmit_q); ++ skb_queue_head_init(&bfusb->pending_q); ++ skb_queue_head_init(&bfusb->completed_q); ++ ++ snprintf(device, sizeof(device), "bfusb%3.3d%3.3d", udev->bus->busnum, udev->devnum); ++ ++ if (request_firmware(&firmware, "bfubase.frm", device) < 0) { ++ BT_ERR("Firmware request failed"); ++ goto error; ++ } ++ ++ if (bfusb_load_firmware(bfusb, firmware->data, firmware->size) < 0) { ++ BT_ERR("Firmware loading failed"); ++ goto release; ++ } ++ ++ release_firmware(firmware); ++ ++ /* Initialize and register HCI device */ ++ hdev = &bfusb->hdev; ++ ++ hdev->type = HCI_USB; ++ hdev->driver_data = bfusb; ++ ++ hdev->open = bfusb_open; ++ hdev->close = bfusb_close; ++ hdev->flush = bfusb_flush; ++ hdev->send = bfusb_send_frame; ++ hdev->destruct = bfusb_destruct; ++ hdev->ioctl = bfusb_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ BT_ERR("Can't register HCI device"); ++ goto error; ++ } ++ ++ return bfusb; ++ ++release: ++ release_firmware(firmware); ++ ++error: ++ kfree(bfusb); ++ ++done: ++ return NULL; ++} ++ ++static void bfusb_disconnect(struct usb_device *udev, void *ptr) ++{ ++ struct bfusb *bfusb = (struct bfusb *) ptr; ++ struct hci_dev *hdev = &bfusb->hdev; ++ ++ BT_DBG("udev %p ptr %p", udev, ptr); ++ ++ if (!hdev) ++ return; ++ ++ bfusb_close(hdev); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ BT_ERR("Can't unregister HCI device %s", hdev->name); ++} ++ ++static struct usb_driver bfusb_driver = { ++ name: "bfusb", ++ probe: bfusb_probe, ++ disconnect: bfusb_disconnect, ++ id_table: bfusb_table, ++}; ++ ++static int __init bfusb_init(void) ++{ ++ int err; ++ ++ BT_INFO("BlueFRITZ! USB driver ver %s", VERSION); ++ BT_INFO("Copyright (C) 2003 Marcel Holtmann <marcel@holtmann.org>"); ++ ++ if ((err = usb_register(&bfusb_driver)) < 0) ++ BT_ERR("Failed to register BlueFRITZ! USB driver"); ++ ++ return err; ++} ++ ++static void __exit bfusb_cleanup(void) ++{ ++ usb_deregister(&bfusb_driver); ++} ++ ++module_init(bfusb_init); ++module_exit(bfusb_cleanup); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/drivers/bluetooth/bluecard_cs.c linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c +--- linux-2.4.18/drivers/bluetooth/bluecard_cs.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/bluecard_cs.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,1116 @@ ++/* ++ * ++ * Bluetooth driver for the Anycom BlueCard (LSE039/LSE041) ++ * ++ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * Software distributed under the License is distributed on an "AS ++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++ * implied. See the License for the specific language governing ++ * rights and limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds ++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/spinlock.h> ++#include <linux/skbuff.h> ++#include <asm/io.h> ++ ++#include <pcmcia/version.h> ++#include <pcmcia/cs_types.h> ++#include <pcmcia/cs.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/ciscode.h> ++#include <pcmcia/ds.h> ++#include <pcmcia/cisreg.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++ ++ ++/* ======================== Module parameters ======================== */ ++ ++ ++/* Bit map of interrupts to choose from */ ++static u_int irq_mask = 0x86bc; ++static int irq_list[4] = { -1 }; ++ ++MODULE_PARM(irq_mask, "i"); ++MODULE_PARM(irq_list, "1-4i"); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueZ driver for the Anycom BlueCard (LSE039/LSE041)"); ++MODULE_LICENSE("GPL"); ++ ++ ++ ++/* ======================== Local structures ======================== */ ++ ++ ++typedef struct bluecard_info_t { ++ dev_link_t link; ++ dev_node_t node; ++ ++ struct hci_dev hdev; ++ ++ spinlock_t lock; /* For serializing operations */ ++ struct timer_list timer; /* For LED control */ ++ ++ struct sk_buff_head txq; ++ unsigned long tx_state; ++ ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++ ++ unsigned char ctrl_reg; ++ unsigned long hw_state; /* Status of the hardware and LED control */ ++} bluecard_info_t; ++ ++ ++void bluecard_config(dev_link_t *link); ++void bluecard_release(u_long arg); ++int bluecard_event(event_t event, int priority, event_callback_args_t *args); ++ ++static dev_info_t dev_info = "bluecard_cs"; ++ ++dev_link_t *bluecard_attach(void); ++void bluecard_detach(dev_link_t *); ++ ++static dev_link_t *dev_list = NULL; ++ ++ ++/* Default baud rate: 57600, 115200, 230400 or 460800 */ ++#define DEFAULT_BAUD_RATE 230400 ++ ++ ++/* Hardware states */ ++#define CARD_READY 1 ++#define CARD_HAS_PCCARD_ID 4 ++#define CARD_HAS_POWER_LED 5 ++#define CARD_HAS_ACTIVITY_LED 6 ++ ++/* Transmit states */ ++#define XMIT_SENDING 1 ++#define XMIT_WAKEUP 2 ++#define XMIT_BUFFER_NUMBER 5 /* unset = buffer one, set = buffer two */ ++#define XMIT_BUF_ONE_READY 6 ++#define XMIT_BUF_TWO_READY 7 ++#define XMIT_SENDING_READY 8 ++ ++/* Receiver states */ ++#define RECV_WAIT_PACKET_TYPE 0 ++#define RECV_WAIT_EVENT_HEADER 1 ++#define RECV_WAIT_ACL_HEADER 2 ++#define RECV_WAIT_SCO_HEADER 3 ++#define RECV_WAIT_DATA 4 ++ ++/* Special packet types */ ++#define PKT_BAUD_RATE_57600 0x80 ++#define PKT_BAUD_RATE_115200 0x81 ++#define PKT_BAUD_RATE_230400 0x82 ++#define PKT_BAUD_RATE_460800 0x83 ++ ++ ++/* These are the register offsets */ ++#define REG_COMMAND 0x20 ++#define REG_INTERRUPT 0x21 ++#define REG_CONTROL 0x22 ++#define REG_RX_CONTROL 0x24 ++#define REG_CARD_RESET 0x30 ++#define REG_LED_CTRL 0x30 ++ ++/* REG_COMMAND */ ++#define REG_COMMAND_TX_BUF_ONE 0x01 ++#define REG_COMMAND_TX_BUF_TWO 0x02 ++#define REG_COMMAND_RX_BUF_ONE 0x04 ++#define REG_COMMAND_RX_BUF_TWO 0x08 ++#define REG_COMMAND_RX_WIN_ONE 0x00 ++#define REG_COMMAND_RX_WIN_TWO 0x10 ++ ++/* REG_CONTROL */ ++#define REG_CONTROL_BAUD_RATE_57600 0x00 ++#define REG_CONTROL_BAUD_RATE_115200 0x01 ++#define REG_CONTROL_BAUD_RATE_230400 0x02 ++#define REG_CONTROL_BAUD_RATE_460800 0x03 ++#define REG_CONTROL_RTS 0x04 ++#define REG_CONTROL_BT_ON 0x08 ++#define REG_CONTROL_BT_RESET 0x10 ++#define REG_CONTROL_BT_RES_PU 0x20 ++#define REG_CONTROL_INTERRUPT 0x40 ++#define REG_CONTROL_CARD_RESET 0x80 ++ ++/* REG_RX_CONTROL */ ++#define RTS_LEVEL_SHIFT_BITS 0x02 ++ ++ ++ ++/* ======================== LED handling routines ======================== */ ++ ++ ++void bluecard_activity_led_timeout(u_long arg) ++{ ++ bluecard_info_t *info = (bluecard_info_t *)arg; ++ unsigned int iobase = info->link.io.BasePort1; ++ ++ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) { ++ /* Disable activity LED */ ++ outb(0x08 | 0x20, iobase + 0x30); ++ } else { ++ /* Disable power LED */ ++ outb(0x00, iobase + 0x30); ++ } ++} ++ ++ ++static void bluecard_enable_activity_led(bluecard_info_t *info) ++{ ++ unsigned int iobase = info->link.io.BasePort1; ++ ++ if (test_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state))) { ++ /* Enable activity LED */ ++ outb(0x10 | 0x40, iobase + 0x30); ++ ++ /* Stop the LED after HZ/4 */ ++ mod_timer(&(info->timer), jiffies + HZ / 4); ++ } else { ++ /* Enable power LED */ ++ outb(0x08 | 0x20, iobase + 0x30); ++ ++ /* Stop the LED after HZ/2 */ ++ mod_timer(&(info->timer), jiffies + HZ / 2); ++ } ++} ++ ++ ++ ++/* ======================== Interrupt handling ======================== */ ++ ++ ++static int bluecard_write(unsigned int iobase, unsigned int offset, __u8 *buf, int len) ++{ ++ int i, actual; ++ ++ actual = (len > 15) ? 15 : len; ++ ++ outb_p(actual, iobase + offset); ++ ++ for (i = 0; i < actual; i++) ++ outb_p(buf[i], iobase + offset + i + 1); ++ ++ return actual; ++} ++ ++ ++static void bluecard_write_wakeup(bluecard_info_t *info) ++{ ++ if (!info) { ++ printk(KERN_WARNING "bluecard_cs: Call of write_wakeup for unknown device.\n"); ++ return; ++ } ++ ++ if (!test_bit(XMIT_SENDING_READY, &(info->tx_state))) ++ return; ++ ++ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) { ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ return; ++ } ++ ++ do { ++ register unsigned int iobase = info->link.io.BasePort1; ++ register unsigned int offset; ++ register unsigned char command; ++ register unsigned long ready_bit; ++ register struct sk_buff *skb; ++ register int len; ++ ++ clear_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (!(info->link.state & DEV_PRESENT)) ++ return; ++ ++ if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) { ++ if (!test_bit(XMIT_BUF_TWO_READY, &(info->tx_state))) ++ break; ++ offset = 0x10; ++ command = REG_COMMAND_TX_BUF_TWO; ++ ready_bit = XMIT_BUF_TWO_READY; ++ } else { ++ if (!test_bit(XMIT_BUF_ONE_READY, &(info->tx_state))) ++ break; ++ offset = 0x00; ++ command = REG_COMMAND_TX_BUF_ONE; ++ ready_bit = XMIT_BUF_ONE_READY; ++ } ++ ++ if (!(skb = skb_dequeue(&(info->txq)))) ++ break; ++ ++ if (skb->pkt_type & 0x80) { ++ /* Disable RTS */ ++ info->ctrl_reg |= REG_CONTROL_RTS; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ } ++ ++ /* Activate LED */ ++ bluecard_enable_activity_led(info); ++ ++ /* Send frame */ ++ len = bluecard_write(iobase, offset, skb->data, skb->len); ++ ++ /* Tell the FPGA to send the data */ ++ outb_p(command, iobase + REG_COMMAND); ++ ++ /* Mark the buffer as dirty */ ++ clear_bit(ready_bit, &(info->tx_state)); ++ ++ if (skb->pkt_type & 0x80) { ++ ++ wait_queue_head_t wait; ++ unsigned char baud_reg; ++ ++ switch (skb->pkt_type) { ++ case PKT_BAUD_RATE_460800: ++ baud_reg = REG_CONTROL_BAUD_RATE_460800; ++ break; ++ case PKT_BAUD_RATE_230400: ++ baud_reg = REG_CONTROL_BAUD_RATE_230400; ++ break; ++ case PKT_BAUD_RATE_115200: ++ baud_reg = REG_CONTROL_BAUD_RATE_115200; ++ break; ++ case PKT_BAUD_RATE_57600: ++ /* Fall through... */ ++ default: ++ baud_reg = REG_CONTROL_BAUD_RATE_57600; ++ break; ++ } ++ ++ /* Wait until the command reaches the baseband */ ++ init_waitqueue_head(&wait); ++ interruptible_sleep_on_timeout(&wait, HZ / 10); ++ ++ /* Set baud on baseband */ ++ info->ctrl_reg &= ~0x03; ++ info->ctrl_reg |= baud_reg; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Enable RTS */ ++ info->ctrl_reg &= ~REG_CONTROL_RTS; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Wait before the next HCI packet can be send */ ++ interruptible_sleep_on_timeout(&wait, HZ); ++ ++ } ++ ++ if (len == skb->len) { ++ kfree_skb(skb); ++ } else { ++ skb_pull(skb, len); ++ skb_queue_head(&(info->txq), skb); ++ } ++ ++ info->hdev.stat.byte_tx += len; ++ ++ /* Change buffer */ ++ change_bit(XMIT_BUFFER_NUMBER, &(info->tx_state)); ++ ++ } while (test_bit(XMIT_WAKEUP, &(info->tx_state))); ++ ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++} ++ ++ ++static int bluecard_read(unsigned int iobase, unsigned int offset, __u8 *buf, int size) ++{ ++ int i, n, len; ++ ++ outb(REG_COMMAND_RX_WIN_ONE, iobase + REG_COMMAND); ++ ++ len = inb(iobase + offset); ++ n = 0; ++ i = 1; ++ ++ while (n < len) { ++ ++ if (i == 16) { ++ outb(REG_COMMAND_RX_WIN_TWO, iobase + REG_COMMAND); ++ i = 0; ++ } ++ ++ buf[n] = inb(iobase + offset + i); ++ ++ n++; ++ i++; ++ ++ } ++ ++ return len; ++} ++ ++ ++static void bluecard_receive(bluecard_info_t *info, unsigned int offset) ++{ ++ unsigned int iobase; ++ unsigned char buf[31]; ++ int i, len; ++ ++ if (!info) { ++ printk(KERN_WARNING "bluecard_cs: Call of receive for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ if (test_bit(XMIT_SENDING_READY, &(info->tx_state))) ++ bluecard_enable_activity_led(info); ++ ++ len = bluecard_read(iobase, offset, buf, sizeof(buf)); ++ ++ for (i = 0; i < len; i++) { ++ ++ /* Allocate packet */ ++ if (info->rx_skb == NULL) { ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n"); ++ return; ++ } ++ } ++ ++ if (info->rx_state == RECV_WAIT_PACKET_TYPE) { ++ ++ info->rx_skb->dev = (void *)&(info->hdev); ++ info->rx_skb->pkt_type = buf[i]; ++ ++ switch (info->rx_skb->pkt_type) { ++ ++ case 0x00: ++ /* init packet */ ++ if (offset != 0x00) { ++ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state)); ++ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state)); ++ set_bit(XMIT_SENDING_READY, &(info->tx_state)); ++ bluecard_write_wakeup(info); ++ } ++ ++ kfree_skb(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ case HCI_EVENT_PKT: ++ info->rx_state = RECV_WAIT_EVENT_HEADER; ++ info->rx_count = HCI_EVENT_HDR_SIZE; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ info->rx_state = RECV_WAIT_ACL_HEADER; ++ info->rx_count = HCI_ACL_HDR_SIZE; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ info->rx_state = RECV_WAIT_SCO_HEADER; ++ info->rx_count = HCI_SCO_HDR_SIZE; ++ break; ++ ++ default: ++ /* unknown packet */ ++ printk(KERN_WARNING "bluecard_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type); ++ info->hdev.stat.err_rx++; ++ ++ kfree_skb(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } else { ++ ++ *skb_put(info->rx_skb, 1) = buf[i]; ++ info->rx_count--; ++ ++ if (info->rx_count == 0) { ++ ++ int dlen; ++ hci_event_hdr *eh; ++ hci_acl_hdr *ah; ++ hci_sco_hdr *sh; ++ ++ switch (info->rx_state) { ++ ++ case RECV_WAIT_EVENT_HEADER: ++ eh = (hci_event_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = eh->plen; ++ break; ++ ++ case RECV_WAIT_ACL_HEADER: ++ ah = (hci_acl_hdr *)(info->rx_skb->data); ++ dlen = __le16_to_cpu(ah->dlen); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = dlen; ++ break; ++ ++ case RECV_WAIT_SCO_HEADER: ++ sh = (hci_sco_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = sh->dlen; ++ break; ++ ++ case RECV_WAIT_DATA: ++ hci_recv_frame(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } ++ ++ } ++ ++ ++ } ++ ++ info->hdev.stat.byte_rx += len; ++} ++ ++ ++void bluecard_interrupt(int irq, void *dev_inst, struct pt_regs *regs) ++{ ++ bluecard_info_t *info = dev_inst; ++ unsigned int iobase; ++ unsigned char reg; ++ ++ if (!info) { ++ printk(KERN_WARNING "bluecard_cs: Call of irq %d for unknown device.\n", irq); ++ return; ++ } ++ ++ if (!test_bit(CARD_READY, &(info->hw_state))) ++ return; ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock(&(info->lock)); ++ ++ /* Disable interrupt */ ++ info->ctrl_reg &= ~REG_CONTROL_INTERRUPT; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ reg = inb(iobase + REG_INTERRUPT); ++ ++ if ((reg != 0x00) && (reg != 0xff)) { ++ ++ if (reg & 0x04) { ++ bluecard_receive(info, 0x00); ++ outb(0x04, iobase + REG_INTERRUPT); ++ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND); ++ } ++ ++ if (reg & 0x08) { ++ bluecard_receive(info, 0x10); ++ outb(0x08, iobase + REG_INTERRUPT); ++ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND); ++ } ++ ++ if (reg & 0x01) { ++ set_bit(XMIT_BUF_ONE_READY, &(info->tx_state)); ++ outb(0x01, iobase + REG_INTERRUPT); ++ bluecard_write_wakeup(info); ++ } ++ ++ if (reg & 0x02) { ++ set_bit(XMIT_BUF_TWO_READY, &(info->tx_state)); ++ outb(0x02, iobase + REG_INTERRUPT); ++ bluecard_write_wakeup(info); ++ } ++ ++ } ++ ++ /* Enable interrupt */ ++ info->ctrl_reg |= REG_CONTROL_INTERRUPT; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ spin_unlock(&(info->lock)); ++} ++ ++ ++ ++/* ======================== Device specific HCI commands ======================== */ ++ ++ ++static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud) ++{ ++ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data); ++ struct sk_buff *skb; ++ ++ /* Ericsson baud rate command */ ++ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 }; ++ ++ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "bluecard_cs: Can't allocate mem for new packet.\n"); ++ return -1; ++ } ++ ++ switch (baud) { ++ case 460800: ++ cmd[4] = 0x00; ++ skb->pkt_type = PKT_BAUD_RATE_460800; ++ break; ++ case 230400: ++ cmd[4] = 0x01; ++ skb->pkt_type = PKT_BAUD_RATE_230400; ++ break; ++ case 115200: ++ cmd[4] = 0x02; ++ skb->pkt_type = PKT_BAUD_RATE_115200; ++ break; ++ case 57600: ++ /* Fall through... */ ++ default: ++ cmd[4] = 0x03; ++ skb->pkt_type = PKT_BAUD_RATE_57600; ++ break; ++ } ++ ++ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd)); ++ ++ skb_queue_tail(&(info->txq), skb); ++ ++ bluecard_write_wakeup(info); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== HCI interface ======================== */ ++ ++ ++static int bluecard_hci_flush(struct hci_dev *hdev) ++{ ++ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ return 0; ++} ++ ++ ++static int bluecard_hci_open(struct hci_dev *hdev) ++{ ++ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data); ++ unsigned int iobase = info->link.io.BasePort1; ++ ++ bluecard_hci_set_baud_rate(hdev, DEFAULT_BAUD_RATE); ++ ++ if (test_and_set_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ /* Enable LED */ ++ outb(0x08 | 0x20, iobase + 0x30); ++ ++ return 0; ++} ++ ++ ++static int bluecard_hci_close(struct hci_dev *hdev) ++{ ++ bluecard_info_t *info = (bluecard_info_t *)(hdev->driver_data); ++ unsigned int iobase = info->link.io.BasePort1; ++ ++ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ bluecard_hci_flush(hdev); ++ ++ /* Disable LED */ ++ outb(0x00, iobase + 0x30); ++ ++ return 0; ++} ++ ++ ++static int bluecard_hci_send_frame(struct sk_buff *skb) ++{ ++ bluecard_info_t *info; ++ struct hci_dev *hdev = (struct hci_dev *)(skb->dev); ++ ++ if (!hdev) { ++ printk(KERN_WARNING "bluecard_cs: Frame for unknown HCI device (hdev=NULL)."); ++ return -ENODEV; ++ } ++ ++ info = (bluecard_info_t *)(hdev->driver_data); ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++ }; ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1); ++ skb_queue_tail(&(info->txq), skb); ++ ++ bluecard_write_wakeup(info); ++ ++ return 0; ++} ++ ++ ++static void bluecard_hci_destruct(struct hci_dev *hdev) ++{ ++} ++ ++ ++static int bluecard_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++ ++/* ======================== Card services HCI interaction ======================== */ ++ ++ ++int bluecard_open(bluecard_info_t *info) ++{ ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev; ++ unsigned char id; ++ ++ spin_lock_init(&(info->lock)); ++ ++ init_timer(&(info->timer)); ++ info->timer.function = &bluecard_activity_led_timeout; ++ info->timer.data = (u_long)info; ++ ++ skb_queue_head_init(&(info->txq)); ++ ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ info->rx_skb = NULL; ++ ++ id = inb(iobase + 0x30); ++ ++ if ((id & 0x0f) == 0x02) ++ set_bit(CARD_HAS_PCCARD_ID, &(info->hw_state)); ++ ++ if (id & 0x10) ++ set_bit(CARD_HAS_POWER_LED, &(info->hw_state)); ++ ++ if (id & 0x20) ++ set_bit(CARD_HAS_ACTIVITY_LED, &(info->hw_state)); ++ ++ /* Reset card */ ++ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Turn FPGA off */ ++ outb(0x80, iobase + 0x30); ++ ++ /* Wait some time */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout(HZ / 100); ++ ++ /* Turn FPGA on */ ++ outb(0x00, iobase + 0x30); ++ ++ /* Activate card */ ++ info->ctrl_reg = REG_CONTROL_BT_ON | REG_CONTROL_BT_RES_PU; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Enable interrupt */ ++ outb(0xff, iobase + REG_INTERRUPT); ++ info->ctrl_reg |= REG_CONTROL_INTERRUPT; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Start the RX buffers */ ++ outb(REG_COMMAND_RX_BUF_ONE, iobase + REG_COMMAND); ++ outb(REG_COMMAND_RX_BUF_TWO, iobase + REG_COMMAND); ++ ++ /* Signal that the hardware is ready */ ++ set_bit(CARD_READY, &(info->hw_state)); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ /* Control the point at which RTS is enabled */ ++ outb((0x0f << RTS_LEVEL_SHIFT_BITS) | 1, iobase + REG_RX_CONTROL); ++ ++ /* Timeout before it is safe to send the first HCI packet */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout((HZ * 5) / 4); // or set it to 3/2 ++ ++ ++ /* Initialize and register HCI device */ ++ ++ hdev = &(info->hdev); ++ ++ hdev->type = HCI_PCCARD; ++ hdev->driver_data = info; ++ ++ hdev->open = bluecard_hci_open; ++ hdev->close = bluecard_hci_close; ++ hdev->flush = bluecard_hci_flush; ++ hdev->send = bluecard_hci_send_frame; ++ hdev->destruct = bluecard_hci_destruct; ++ hdev->ioctl = bluecard_hci_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ printk(KERN_WARNING "bluecard_cs: Can't register HCI device %s.\n", hdev->name); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++ ++int bluecard_close(bluecard_info_t *info) ++{ ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev = &(info->hdev); ++ ++ if (info->link.state & DEV_CONFIG_PENDING) ++ return -ENODEV; ++ ++ bluecard_hci_close(hdev); ++ ++ clear_bit(CARD_READY, &(info->hw_state)); ++ ++ /* Reset card */ ++ info->ctrl_reg = REG_CONTROL_BT_RESET | REG_CONTROL_CARD_RESET; ++ outb(info->ctrl_reg, iobase + REG_CONTROL); ++ ++ /* Turn FPGA off */ ++ outb(0x80, iobase + 0x30); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ printk(KERN_WARNING "bluecard_cs: Can't unregister HCI device %s.\n", hdev->name); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Card services ======================== */ ++ ++ ++static void cs_error(client_handle_t handle, int func, int ret) ++{ ++ error_info_t err = { func, ret }; ++ ++ CardServices(ReportError, handle, &err); ++} ++ ++ ++dev_link_t *bluecard_attach(void) ++{ ++ bluecard_info_t *info; ++ client_reg_t client_reg; ++ dev_link_t *link; ++ int i, ret; ++ ++ /* Create new info device */ ++ info = kmalloc(sizeof(*info), GFP_KERNEL); ++ if (!info) ++ return NULL; ++ memset(info, 0, sizeof(*info)); ++ ++ link = &info->link; ++ link->priv = info; ++ ++ link->release.function = &bluecard_release; ++ link->release.data = (u_long)link; ++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; ++ link->io.NumPorts1 = 8; ++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; ++ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; ++ ++ if (irq_list[0] == -1) ++ link->irq.IRQInfo2 = irq_mask; ++ else ++ for (i = 0; i < 4; i++) ++ link->irq.IRQInfo2 |= 1 << irq_list[i]; ++ ++ link->irq.Handler = bluecard_interrupt; ++ link->irq.Instance = info; ++ ++ link->conf.Attributes = CONF_ENABLE_IRQ; ++ link->conf.Vcc = 50; ++ link->conf.IntType = INT_MEMORY_AND_IO; ++ ++ /* Register with Card Services */ ++ link->next = dev_list; ++ dev_list = link; ++ client_reg.dev_info = &dev_info; ++ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; ++ client_reg.EventMask = ++ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | ++ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | ++ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; ++ client_reg.event_handler = &bluecard_event; ++ client_reg.Version = 0x0210; ++ client_reg.event_callback_args.client_data = link; ++ ++ ret = CardServices(RegisterClient, &link->handle, &client_reg); ++ if (ret != CS_SUCCESS) { ++ cs_error(link->handle, RegisterClient, ret); ++ bluecard_detach(link); ++ return NULL; ++ } ++ ++ return link; ++} ++ ++ ++void bluecard_detach(dev_link_t *link) ++{ ++ bluecard_info_t *info = link->priv; ++ dev_link_t **linkp; ++ int ret; ++ ++ /* Locate device structure */ ++ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) ++ if (*linkp == link) ++ break; ++ ++ if (*linkp == NULL) ++ return; ++ ++ del_timer(&link->release); ++ if (link->state & DEV_CONFIG) ++ bluecard_release((u_long)link); ++ ++ if (link->handle) { ++ ret = CardServices(DeregisterClient, link->handle); ++ if (ret != CS_SUCCESS) ++ cs_error(link->handle, DeregisterClient, ret); ++ } ++ ++ /* Unlink device structure, free bits */ ++ *linkp = link->next; ++ ++ kfree(info); ++} ++ ++ ++static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse) ++{ ++ int i; ++ ++ i = CardServices(fn, handle, tuple); ++ if (i != CS_SUCCESS) ++ return CS_NO_MORE_ITEMS; ++ ++ i = CardServices(GetTupleData, handle, tuple); ++ if (i != CS_SUCCESS) ++ return i; ++ ++ return CardServices(ParseTuple, handle, tuple, parse); ++} ++ ++ ++#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) ++#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) ++ ++void bluecard_config(dev_link_t *link) ++{ ++ client_handle_t handle = link->handle; ++ bluecard_info_t *info = link->priv; ++ tuple_t tuple; ++ u_short buf[256]; ++ cisparse_t parse; ++ config_info_t config; ++ int i, n, last_ret, last_fn; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ ++ /* Get configuration register information */ ++ tuple.DesiredTuple = CISTPL_CONFIG; ++ last_ret = first_tuple(handle, &tuple, &parse); ++ if (last_ret != CS_SUCCESS) { ++ last_fn = ParseTuple; ++ goto cs_failed; ++ } ++ link->conf.ConfigBase = parse.config.base; ++ link->conf.Present = parse.config.rmask[0]; ++ ++ /* Configure card */ ++ link->state |= DEV_CONFIG; ++ i = CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ ++ link->conf.ConfigIndex = 0x20; ++ link->io.NumPorts1 = 64; ++ link->io.IOAddrLines = 6; ++ ++ for (n = 0; n < 0x400; n += 0x40) { ++ link->io.BasePort1 = n ^ 0x300; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ break; ++ } ++ ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIO, i); ++ goto failed; ++ } ++ ++ i = CardServices(RequestIRQ, link->handle, &link->irq); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIRQ, i); ++ link->irq.AssignedIRQ = 0; ++ } ++ ++ i = CardServices(RequestConfiguration, link->handle, &link->conf); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestConfiguration, i); ++ goto failed; ++ } ++ ++ MOD_INC_USE_COUNT; ++ ++ if (bluecard_open(info) != 0) ++ goto failed; ++ ++ strcpy(info->node.dev_name, info->hdev.name); ++ link->dev = &info->node; ++ link->state &= ~DEV_CONFIG_PENDING; ++ ++ return; ++ ++cs_failed: ++ cs_error(link->handle, last_fn, last_ret); ++ ++failed: ++ bluecard_release((u_long)link); ++} ++ ++ ++void bluecard_release(u_long arg) ++{ ++ dev_link_t *link = (dev_link_t *)arg; ++ bluecard_info_t *info = link->priv; ++ ++ if (link->state & DEV_PRESENT) ++ bluecard_close(info); ++ ++ MOD_DEC_USE_COUNT; ++ ++ link->dev = NULL; ++ ++ CardServices(ReleaseConfiguration, link->handle); ++ CardServices(ReleaseIO, link->handle, &link->io); ++ CardServices(ReleaseIRQ, link->handle, &link->irq); ++ ++ link->state &= ~DEV_CONFIG; ++} ++ ++ ++int bluecard_event(event_t event, int priority, event_callback_args_t *args) ++{ ++ dev_link_t *link = args->client_data; ++ bluecard_info_t *info = link->priv; ++ ++ switch (event) { ++ case CS_EVENT_CARD_REMOVAL: ++ link->state &= ~DEV_PRESENT; ++ if (link->state & DEV_CONFIG) { ++ bluecard_close(info); ++ mod_timer(&link->release, jiffies + HZ / 20); ++ } ++ break; ++ case CS_EVENT_CARD_INSERTION: ++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; ++ bluecard_config(link); ++ break; ++ case CS_EVENT_PM_SUSPEND: ++ link->state |= DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_RESET_PHYSICAL: ++ if (link->state & DEV_CONFIG) ++ CardServices(ReleaseConfiguration, link->handle); ++ break; ++ case CS_EVENT_PM_RESUME: ++ link->state &= ~DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_CARD_RESET: ++ if (DEV_OK(link)) ++ CardServices(RequestConfiguration, link->handle, &link->conf); ++ break; ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Module initialization ======================== */ ++ ++ ++int __init init_bluecard_cs(void) ++{ ++ servinfo_t serv; ++ int err; ++ ++ CardServices(GetCardServicesInfo, &serv); ++ if (serv.Revision != CS_RELEASE_CODE) { ++ printk(KERN_NOTICE "bluecard_cs: Card Services release does not match!\n"); ++ return -1; ++ } ++ ++ err = register_pccard_driver(&dev_info, &bluecard_attach, &bluecard_detach); ++ ++ return err; ++} ++ ++ ++void __exit exit_bluecard_cs(void) ++{ ++ unregister_pccard_driver(&dev_info); ++ ++ while (dev_list != NULL) ++ bluecard_detach(dev_list); ++} ++ ++ ++module_init(init_bluecard_cs); ++module_exit(exit_bluecard_cs); ++ ++EXPORT_NO_SYMBOLS; +diff -urN linux-2.4.18/drivers/bluetooth/bt3c_cs.c linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c +--- linux-2.4.18/drivers/bluetooth/bt3c_cs.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/bt3c_cs.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,986 @@ ++/* ++ * ++ * Driver for the 3Com Bluetooth PCMCIA card ++ * ++ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org> ++ * Jose Orlando Pereira <jop@di.uminho.pt> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * Software distributed under the License is distributed on an "AS ++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++ * implied. See the License for the specific language governing ++ * rights and limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds ++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/kmod.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/delay.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/unistd.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/spinlock.h> ++ ++#include <linux/skbuff.h> ++#include <linux/string.h> ++#include <linux/serial.h> ++#include <linux/serial_reg.h> ++#include <asm/system.h> ++#include <asm/bitops.h> ++#include <asm/io.h> ++ ++#include <linux/firmware.h> ++ ++#include <pcmcia/version.h> ++#include <pcmcia/cs_types.h> ++#include <pcmcia/cs.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/ciscode.h> ++#include <pcmcia/ds.h> ++#include <pcmcia/cisreg.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++ ++ ++/* ======================== Module parameters ======================== */ ++ ++ ++/* Bit map of interrupts to choose from */ ++static u_int irq_mask = 0xffff; ++static int irq_list[4] = { -1 }; ++ ++MODULE_PARM(irq_mask, "i"); ++MODULE_PARM(irq_list, "1-4i"); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Jose Orlando Pereira <jop@di.uminho.pt>"); ++MODULE_DESCRIPTION("BlueZ driver for the 3Com Bluetooth PCMCIA card"); ++MODULE_LICENSE("GPL"); ++ ++ ++ ++/* ======================== Local structures ======================== */ ++ ++ ++typedef struct bt3c_info_t { ++ dev_link_t link; ++ dev_node_t node; ++ ++ struct hci_dev hdev; ++ ++ spinlock_t lock; /* For serializing operations */ ++ ++ struct sk_buff_head txq; ++ unsigned long tx_state; ++ ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++} bt3c_info_t; ++ ++ ++void bt3c_config(dev_link_t *link); ++void bt3c_release(u_long arg); ++int bt3c_event(event_t event, int priority, event_callback_args_t *args); ++ ++static dev_info_t dev_info = "bt3c_cs"; ++ ++dev_link_t *bt3c_attach(void); ++void bt3c_detach(dev_link_t *); ++ ++static dev_link_t *dev_list = NULL; ++ ++ ++/* Transmit states */ ++#define XMIT_SENDING 1 ++#define XMIT_WAKEUP 2 ++#define XMIT_WAITING 8 ++ ++/* Receiver states */ ++#define RECV_WAIT_PACKET_TYPE 0 ++#define RECV_WAIT_EVENT_HEADER 1 ++#define RECV_WAIT_ACL_HEADER 2 ++#define RECV_WAIT_SCO_HEADER 3 ++#define RECV_WAIT_DATA 4 ++ ++ ++ ++/* ======================== Special I/O functions ======================== */ ++ ++ ++#define DATA_L 0 ++#define DATA_H 1 ++#define ADDR_L 2 ++#define ADDR_H 3 ++#define CONTROL 4 ++ ++ ++inline void bt3c_address(unsigned int iobase, unsigned short addr) ++{ ++ outb(addr & 0xff, iobase + ADDR_L); ++ outb((addr >> 8) & 0xff, iobase + ADDR_H); ++} ++ ++ ++inline void bt3c_put(unsigned int iobase, unsigned short value) ++{ ++ outb(value & 0xff, iobase + DATA_L); ++ outb((value >> 8) & 0xff, iobase + DATA_H); ++} ++ ++ ++inline void bt3c_io_write(unsigned int iobase, unsigned short addr, unsigned short value) ++{ ++ bt3c_address(iobase, addr); ++ bt3c_put(iobase, value); ++} ++ ++ ++inline unsigned short bt3c_get(unsigned int iobase) ++{ ++ unsigned short value = inb(iobase + DATA_L); ++ ++ value |= inb(iobase + DATA_H) << 8; ++ ++ return value; ++} ++ ++ ++inline unsigned short bt3c_read(unsigned int iobase, unsigned short addr) ++{ ++ bt3c_address(iobase, addr); ++ ++ return bt3c_get(iobase); ++} ++ ++ ++ ++/* ======================== Interrupt handling ======================== */ ++ ++ ++static int bt3c_write(unsigned int iobase, int fifo_size, __u8 *buf, int len) ++{ ++ int actual = 0; ++ ++ bt3c_address(iobase, 0x7080); ++ ++ /* Fill FIFO with current frame */ ++ while (actual < len) { ++ /* Transmit next byte */ ++ bt3c_put(iobase, buf[actual]); ++ actual++; ++ } ++ ++ bt3c_io_write(iobase, 0x7005, actual); ++ ++ return actual; ++} ++ ++ ++static void bt3c_write_wakeup(bt3c_info_t *info, int from) ++{ ++ unsigned long flags; ++ ++ if (!info) { ++ printk(KERN_WARNING "bt3c_cs: Call of write_wakeup for unknown device.\n"); ++ return; ++ } ++ ++ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) ++ return; ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ do { ++ register unsigned int iobase = info->link.io.BasePort1; ++ register struct sk_buff *skb; ++ register int len; ++ ++ if (!(info->link.state & DEV_PRESENT)) ++ break; ++ ++ ++ if (!(skb = skb_dequeue(&(info->txq)))) { ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++ break; ++ } ++ ++ /* Send frame */ ++ len = bt3c_write(iobase, 256, skb->data, skb->len); ++ ++ if (len != skb->len) { ++ printk(KERN_WARNING "bt3c_cs: very strange\n"); ++ } ++ ++ kfree_skb(skb); ++ ++ info->hdev.stat.byte_tx += len; ++ ++ } while (0); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++} ++ ++ ++static void bt3c_receive(bt3c_info_t *info) ++{ ++ unsigned int iobase; ++ int size = 0, avail; ++ ++ if (!info) { ++ printk(KERN_WARNING "bt3c_cs: Call of receive for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ avail = bt3c_read(iobase, 0x7006); ++ //printk("bt3c_cs: receiving %d bytes\n", avail); ++ ++ bt3c_address(iobase, 0x7480); ++ while (size < avail) { ++ size++; ++ info->hdev.stat.byte_rx++; ++ ++ /* Allocate packet */ ++ if (info->rx_skb == NULL) { ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "bt3c_cs: Can't allocate mem for new packet.\n"); ++ return; ++ } ++ } ++ ++ ++ if (info->rx_state == RECV_WAIT_PACKET_TYPE) { ++ ++ info->rx_skb->dev = (void *)&(info->hdev); ++ info->rx_skb->pkt_type = inb(iobase + DATA_L); ++ inb(iobase + DATA_H); ++ //printk("bt3c: PACKET_TYPE=%02x\n", info->rx_skb->pkt_type); ++ ++ switch (info->rx_skb->pkt_type) { ++ ++ case HCI_EVENT_PKT: ++ info->rx_state = RECV_WAIT_EVENT_HEADER; ++ info->rx_count = HCI_EVENT_HDR_SIZE; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ info->rx_state = RECV_WAIT_ACL_HEADER; ++ info->rx_count = HCI_ACL_HDR_SIZE; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ info->rx_state = RECV_WAIT_SCO_HEADER; ++ info->rx_count = HCI_SCO_HDR_SIZE; ++ break; ++ ++ default: ++ /* Unknown packet */ ++ printk(KERN_WARNING "bt3c_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type); ++ info->hdev.stat.err_rx++; ++ clear_bit(HCI_RUNNING, &(info->hdev.flags)); ++ ++ kfree_skb(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } else { ++ ++ __u8 x = inb(iobase + DATA_L); ++ ++ *skb_put(info->rx_skb, 1) = x; ++ inb(iobase + DATA_H); ++ info->rx_count--; ++ ++ if (info->rx_count == 0) { ++ ++ int dlen; ++ hci_event_hdr *eh; ++ hci_acl_hdr *ah; ++ hci_sco_hdr *sh; ++ ++ switch (info->rx_state) { ++ ++ case RECV_WAIT_EVENT_HEADER: ++ eh = (hci_event_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = eh->plen; ++ break; ++ ++ case RECV_WAIT_ACL_HEADER: ++ ah = (hci_acl_hdr *)(info->rx_skb->data); ++ dlen = __le16_to_cpu(ah->dlen); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = dlen; ++ break; ++ ++ case RECV_WAIT_SCO_HEADER: ++ sh = (hci_sco_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = sh->dlen; ++ break; ++ ++ case RECV_WAIT_DATA: ++ hci_recv_frame(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } ++ ++ } ++ ++ } ++ ++ bt3c_io_write(iobase, 0x7006, 0x0000); ++} ++ ++ ++void bt3c_interrupt(int irq, void *dev_inst, struct pt_regs *regs) ++{ ++ bt3c_info_t *info = dev_inst; ++ unsigned int iobase; ++ int iir; ++ ++ if (!info) { ++ printk(KERN_WARNING "bt3c_cs: Call of irq %d for unknown device.\n", irq); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock(&(info->lock)); ++ ++ iir = inb(iobase + CONTROL); ++ if (iir & 0x80) { ++ int stat = bt3c_read(iobase, 0x7001); ++ ++ if ((stat & 0xff) == 0x7f) { ++ printk(KERN_WARNING "bt3c_cs: STRANGE stat=%04x\n", stat); ++ } else if ((stat & 0xff) != 0xff) { ++ if (stat & 0x0020) { ++ int stat = bt3c_read(iobase, 0x7002) & 0x10; ++ printk(KERN_WARNING "bt3c_cs: antena %s\n", stat ? "OUT" : "IN"); ++ } ++ if (stat & 0x0001) ++ bt3c_receive(info); ++ if (stat & 0x0002) { ++ //printk("bt3c_cs: ACK %04x\n", stat); ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++ bt3c_write_wakeup(info, 1); ++ } ++ ++ bt3c_io_write(iobase, 0x7001, 0x0000); ++ ++ outb(iir, iobase + CONTROL); ++ } ++ } ++ ++ spin_unlock(&(info->lock)); ++} ++ ++ ++ ++ ++/* ======================== HCI interface ======================== */ ++ ++ ++static int bt3c_hci_flush(struct hci_dev *hdev) ++{ ++ bt3c_info_t *info = (bt3c_info_t *)(hdev->driver_data); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ return 0; ++} ++ ++ ++static int bt3c_hci_open(struct hci_dev *hdev) ++{ ++ set_bit(HCI_RUNNING, &(hdev->flags)); ++ ++ return 0; ++} ++ ++ ++static int bt3c_hci_close(struct hci_dev *hdev) ++{ ++ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ bt3c_hci_flush(hdev); ++ ++ return 0; ++} ++ ++ ++static int bt3c_hci_send_frame(struct sk_buff *skb) ++{ ++ bt3c_info_t *info; ++ struct hci_dev *hdev = (struct hci_dev *)(skb->dev); ++ ++ if (!hdev) { ++ printk(KERN_WARNING "bt3c_cs: Frame for unknown HCI device (hdev=NULL)."); ++ return -ENODEV; ++ } ++ ++ info = (bt3c_info_t *) (hdev->driver_data); ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++ }; ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1); ++ skb_queue_tail(&(info->txq), skb); ++ ++ bt3c_write_wakeup(info, 0); ++ ++ return 0; ++} ++ ++ ++static void bt3c_hci_destruct(struct hci_dev *hdev) ++{ ++} ++ ++ ++static int bt3c_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++ ++/* ======================== Card services HCI interaction ======================== */ ++ ++ ++static int bt3c_load_firmware(bt3c_info_t *info, unsigned char *firmware, int count) ++{ ++ char *ptr = (char *) firmware; ++ char b[9]; ++ unsigned int iobase, size, addr, fcs, tmp; ++ int i, err = 0; ++ ++ iobase = info->link.io.BasePort1; ++ ++ /* Reset */ ++ ++ bt3c_io_write(iobase, 0x8040, 0x0404); ++ bt3c_io_write(iobase, 0x8040, 0x0400); ++ ++ udelay(1); ++ ++ bt3c_io_write(iobase, 0x8040, 0x0404); ++ ++ udelay(17); ++ ++ /* Load */ ++ ++ while (count) { ++ if (ptr[0] != 'S') { ++ printk(KERN_WARNING "bt3c_cs: Bad address in firmware.\n"); ++ err = -EFAULT; ++ goto error; ++ } ++ ++ memset(b, 0, sizeof(b)); ++ memcpy(b, ptr + 2, 2); ++ size = simple_strtol(b, NULL, 16); ++ ++ memset(b, 0, sizeof(b)); ++ memcpy(b, ptr + 4, 8); ++ addr = simple_strtol(b, NULL, 16); ++ ++ memset(b, 0, sizeof(b)); ++ memcpy(b, ptr + (size * 2) + 2, 2); ++ fcs = simple_strtol(b, NULL, 16); ++ ++ memset(b, 0, sizeof(b)); ++ for (tmp = 0, i = 0; i < size; i++) { ++ memcpy(b, ptr + (i * 2) + 2, 2); ++ tmp += simple_strtol(b, NULL, 16); ++ } ++ ++ if (((tmp + fcs) & 0xff) != 0xff) { ++ printk(KERN_WARNING "bt3c_cs: Checksum error in firmware.\n"); ++ err = -EILSEQ; ++ goto error; ++ } ++ ++ if (ptr[1] == '3') { ++ bt3c_address(iobase, addr); ++ ++ memset(b, 0, sizeof(b)); ++ for (i = 0; i < (size - 4) / 2; i++) { ++ memcpy(b, ptr + (i * 4) + 12, 4); ++ tmp = simple_strtol(b, NULL, 16); ++ bt3c_put(iobase, tmp); ++ } ++ } ++ ++ ptr += (size * 2) + 6; ++ count -= (size * 2) + 6; ++ } ++ ++ udelay(17); ++ ++ /* Boot */ ++ ++ bt3c_address(iobase, 0x3000); ++ outb(inb(iobase + CONTROL) | 0x40, iobase + CONTROL); ++ ++error: ++ udelay(17); ++ ++ /* Clear */ ++ ++ bt3c_io_write(iobase, 0x7006, 0x0000); ++ bt3c_io_write(iobase, 0x7005, 0x0000); ++ bt3c_io_write(iobase, 0x7001, 0x0000); ++ ++ return err; ++} ++ ++ ++int bt3c_open(bt3c_info_t *info) ++{ ++ const struct firmware *firmware; ++ char device[16]; ++ struct hci_dev *hdev; ++ int err; ++ ++ spin_lock_init(&(info->lock)); ++ ++ skb_queue_head_init(&(info->txq)); ++ ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ info->rx_skb = NULL; ++ ++ /* Load firmware */ ++ ++ snprintf(device, sizeof(device), "bt3c%4.4x", info->link.io.BasePort1); ++ ++ err = request_firmware(&firmware, "BT3CPCC.bin", device); ++ if (err < 0) { ++ printk(KERN_WARNING "bt3c_cs: Firmware request failed.\n"); ++ return err; ++ } ++ ++ err = bt3c_load_firmware(info, firmware->data, firmware->size); ++ ++ release_firmware(firmware); ++ ++ if (err < 0) { ++ printk(KERN_WARNING "bt3c_cs: Firmware loading failed.\n"); ++ return err; ++ } ++ ++ /* Timeout before it is safe to send the first HCI packet */ ++ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout(HZ); ++ ++ ++ /* Initialize and register HCI device */ ++ ++ hdev = &(info->hdev); ++ ++ hdev->type = HCI_PCCARD; ++ hdev->driver_data = info; ++ ++ hdev->open = bt3c_hci_open; ++ hdev->close = bt3c_hci_close; ++ hdev->flush = bt3c_hci_flush; ++ hdev->send = bt3c_hci_send_frame; ++ hdev->destruct = bt3c_hci_destruct; ++ hdev->ioctl = bt3c_hci_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ printk(KERN_WARNING "bt3c_cs: Can't register HCI device %s.\n", hdev->name); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++ ++int bt3c_close(bt3c_info_t *info) ++{ ++ struct hci_dev *hdev = &(info->hdev); ++ ++ if (info->link.state & DEV_CONFIG_PENDING) ++ return -ENODEV; ++ ++ bt3c_hci_close(hdev); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ printk(KERN_WARNING "bt3c_cs: Can't unregister HCI device %s.\n", hdev->name); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Card services ======================== */ ++ ++ ++static void cs_error(client_handle_t handle, int func, int ret) ++{ ++ error_info_t err = { func, ret }; ++ ++ CardServices(ReportError, handle, &err); ++} ++ ++ ++dev_link_t *bt3c_attach(void) ++{ ++ bt3c_info_t *info; ++ client_reg_t client_reg; ++ dev_link_t *link; ++ int i, ret; ++ ++ /* Create new info device */ ++ info = kmalloc(sizeof(*info), GFP_KERNEL); ++ if (!info) ++ return NULL; ++ memset(info, 0, sizeof(*info)); ++ ++ link = &info->link; ++ link->priv = info; ++ ++ link->release.function = &bt3c_release; ++ link->release.data = (u_long)link; ++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; ++ link->io.NumPorts1 = 8; ++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; ++ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; ++ ++ if (irq_list[0] == -1) ++ link->irq.IRQInfo2 = irq_mask; ++ else ++ for (i = 0; i < 4; i++) ++ link->irq.IRQInfo2 |= 1 << irq_list[i]; ++ ++ link->irq.Handler = bt3c_interrupt; ++ link->irq.Instance = info; ++ ++ link->conf.Attributes = CONF_ENABLE_IRQ; ++ link->conf.Vcc = 50; ++ link->conf.IntType = INT_MEMORY_AND_IO; ++ ++ /* Register with Card Services */ ++ link->next = dev_list; ++ dev_list = link; ++ client_reg.dev_info = &dev_info; ++ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; ++ client_reg.EventMask = ++ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | ++ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | ++ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; ++ client_reg.event_handler = &bt3c_event; ++ client_reg.Version = 0x0210; ++ client_reg.event_callback_args.client_data = link; ++ ++ ret = CardServices(RegisterClient, &link->handle, &client_reg); ++ if (ret != CS_SUCCESS) { ++ cs_error(link->handle, RegisterClient, ret); ++ bt3c_detach(link); ++ return NULL; ++ } ++ ++ return link; ++} ++ ++ ++void bt3c_detach(dev_link_t *link) ++{ ++ bt3c_info_t *info = link->priv; ++ dev_link_t **linkp; ++ int ret; ++ ++ /* Locate device structure */ ++ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) ++ if (*linkp == link) ++ break; ++ ++ if (*linkp == NULL) ++ return; ++ ++ del_timer(&link->release); ++ ++ if (link->state & DEV_CONFIG) ++ bt3c_release((u_long)link); ++ ++ if (link->handle) { ++ ret = CardServices(DeregisterClient, link->handle); ++ if (ret != CS_SUCCESS) ++ cs_error(link->handle, DeregisterClient, ret); ++ } ++ ++ /* Unlink device structure, free bits */ ++ *linkp = link->next; ++ ++ kfree(info); ++} ++ ++ ++static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse) ++{ ++ int i; ++ ++ i = CardServices(fn, handle, tuple); ++ if (i != CS_SUCCESS) ++ return CS_NO_MORE_ITEMS; ++ ++ i = CardServices(GetTupleData, handle, tuple); ++ if (i != CS_SUCCESS) ++ return i; ++ ++ return CardServices(ParseTuple, handle, tuple, parse); ++} ++ ++ ++#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) ++#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) ++ ++void bt3c_config(dev_link_t *link) ++{ ++ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; ++ client_handle_t handle = link->handle; ++ bt3c_info_t *info = link->priv; ++ tuple_t tuple; ++ u_short buf[256]; ++ cisparse_t parse; ++ cistpl_cftable_entry_t *cf = &parse.cftable_entry; ++ config_info_t config; ++ int i, j, try, last_ret, last_fn; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ ++ /* Get configuration register information */ ++ tuple.DesiredTuple = CISTPL_CONFIG; ++ last_ret = first_tuple(handle, &tuple, &parse); ++ if (last_ret != CS_SUCCESS) { ++ last_fn = ParseTuple; ++ goto cs_failed; ++ } ++ link->conf.ConfigBase = parse.config.base; ++ link->conf.Present = parse.config.rmask[0]; ++ ++ /* Configure card */ ++ link->state |= DEV_CONFIG; ++ i = CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ ++ /* First pass: look for a config entry that looks normal. */ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; ++ /* Two tries: without IO aliases, then with aliases */ ++ for (try = 0; try < 2; try++) { ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if (i != CS_SUCCESS) ++ goto next_entry; ++ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) ++ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; ++ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) { ++ link->conf.ConfigIndex = cf->index; ++ link->io.BasePort1 = cf->io.win[0].base; ++ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++next_entry: ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ } ++ ++ /* Second pass: try to find an entry that isn't picky about ++ its base address, then try to grab any standard serial port ++ address, and finally try to get any free port. */ ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { ++ link->conf.ConfigIndex = cf->index; ++ for (j = 0; j < 5; j++) { ++ link->io.BasePort1 = base[j]; ++ link->io.IOAddrLines = base[j] ? 16 : 3; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++ } ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ ++found_port: ++ if (i != CS_SUCCESS) { ++ printk(KERN_NOTICE "bt3c_cs: No usable port range found. Giving up.\n"); ++ cs_error(link->handle, RequestIO, i); ++ goto failed; ++ } ++ ++ i = CardServices(RequestIRQ, link->handle, &link->irq); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIRQ, i); ++ link->irq.AssignedIRQ = 0; ++ } ++ ++ i = CardServices(RequestConfiguration, link->handle, &link->conf); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestConfiguration, i); ++ goto failed; ++ } ++ ++ MOD_INC_USE_COUNT; ++ ++ if (bt3c_open(info) != 0) ++ goto failed; ++ ++ strcpy(info->node.dev_name, info->hdev.name); ++ link->dev = &info->node; ++ link->state &= ~DEV_CONFIG_PENDING; ++ ++ return; ++ ++cs_failed: ++ cs_error(link->handle, last_fn, last_ret); ++ ++failed: ++ bt3c_release((u_long)link); ++} ++ ++ ++void bt3c_release(u_long arg) ++{ ++ dev_link_t *link = (dev_link_t *)arg; ++ bt3c_info_t *info = link->priv; ++ ++ if (link->state & DEV_PRESENT) ++ bt3c_close(info); ++ ++ MOD_DEC_USE_COUNT; ++ ++ link->dev = NULL; ++ ++ CardServices(ReleaseConfiguration, link->handle); ++ CardServices(ReleaseIO, link->handle, &link->io); ++ CardServices(ReleaseIRQ, link->handle, &link->irq); ++ ++ link->state &= ~DEV_CONFIG; ++} ++ ++ ++int bt3c_event(event_t event, int priority, event_callback_args_t *args) ++{ ++ dev_link_t *link = args->client_data; ++ bt3c_info_t *info = link->priv; ++ ++ switch (event) { ++ case CS_EVENT_CARD_REMOVAL: ++ link->state &= ~DEV_PRESENT; ++ if (link->state & DEV_CONFIG) { ++ bt3c_close(info); ++ mod_timer(&link->release, jiffies + HZ / 20); ++ } ++ break; ++ case CS_EVENT_CARD_INSERTION: ++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; ++ bt3c_config(link); ++ break; ++ case CS_EVENT_PM_SUSPEND: ++ link->state |= DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_RESET_PHYSICAL: ++ if (link->state & DEV_CONFIG) ++ CardServices(ReleaseConfiguration, link->handle); ++ break; ++ case CS_EVENT_PM_RESUME: ++ link->state &= ~DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_CARD_RESET: ++ if (DEV_OK(link)) ++ CardServices(RequestConfiguration, link->handle, &link->conf); ++ break; ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Module initialization ======================== */ ++ ++ ++int __init init_bt3c_cs(void) ++{ ++ servinfo_t serv; ++ int err; ++ ++ CardServices(GetCardServicesInfo, &serv); ++ if (serv.Revision != CS_RELEASE_CODE) { ++ printk(KERN_NOTICE "bt3c_cs: Card Services release does not match!\n"); ++ return -1; ++ } ++ ++ err = register_pccard_driver(&dev_info, &bt3c_attach, &bt3c_detach); ++ ++ return err; ++} ++ ++ ++void __exit exit_bt3c_cs(void) ++{ ++ unregister_pccard_driver(&dev_info); ++ ++ while (dev_list != NULL) ++ bt3c_detach(dev_list); ++} ++ ++ ++module_init(init_bt3c_cs); ++module_exit(exit_bt3c_cs); ++ ++EXPORT_NO_SYMBOLS; +diff -urN linux-2.4.18/drivers/bluetooth/btuart_cs.c linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c +--- linux-2.4.18/drivers/bluetooth/btuart_cs.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/btuart_cs.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,909 @@ ++/* ++ * ++ * Driver for Bluetooth PCMCIA cards with HCI UART interface ++ * ++ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * Software distributed under the License is distributed on an "AS ++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++ * implied. See the License for the specific language governing ++ * rights and limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds ++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/spinlock.h> ++ ++#include <linux/skbuff.h> ++#include <linux/string.h> ++#include <linux/serial.h> ++#include <linux/serial_reg.h> ++#include <asm/system.h> ++#include <asm/bitops.h> ++#include <asm/io.h> ++ ++#include <pcmcia/version.h> ++#include <pcmcia/cs_types.h> ++#include <pcmcia/cs.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/ciscode.h> ++#include <pcmcia/ds.h> ++#include <pcmcia/cisreg.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++ ++ ++/* ======================== Module parameters ======================== */ ++ ++ ++/* Bit map of interrupts to choose from */ ++static u_int irq_mask = 0xffff; ++static int irq_list[4] = { -1 }; ++ ++MODULE_PARM(irq_mask, "i"); ++MODULE_PARM(irq_list, "1-4i"); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueZ driver for Bluetooth PCMCIA cards with HCI UART interface"); ++MODULE_LICENSE("GPL"); ++ ++ ++ ++/* ======================== Local structures ======================== */ ++ ++ ++typedef struct btuart_info_t { ++ dev_link_t link; ++ dev_node_t node; ++ ++ struct hci_dev hdev; ++ ++ spinlock_t lock; /* For serializing operations */ ++ ++ struct sk_buff_head txq; ++ unsigned long tx_state; ++ ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++} btuart_info_t; ++ ++ ++void btuart_config(dev_link_t *link); ++void btuart_release(u_long arg); ++int btuart_event(event_t event, int priority, event_callback_args_t *args); ++ ++static dev_info_t dev_info = "btuart_cs"; ++ ++dev_link_t *btuart_attach(void); ++void btuart_detach(dev_link_t *); ++ ++static dev_link_t *dev_list = NULL; ++ ++ ++/* Maximum baud rate */ ++#define SPEED_MAX 115200 ++ ++/* Default baud rate: 57600, 115200, 230400 or 460800 */ ++#define DEFAULT_BAUD_RATE 115200 ++ ++ ++/* Transmit states */ ++#define XMIT_SENDING 1 ++#define XMIT_WAKEUP 2 ++#define XMIT_WAITING 8 ++ ++/* Receiver states */ ++#define RECV_WAIT_PACKET_TYPE 0 ++#define RECV_WAIT_EVENT_HEADER 1 ++#define RECV_WAIT_ACL_HEADER 2 ++#define RECV_WAIT_SCO_HEADER 3 ++#define RECV_WAIT_DATA 4 ++ ++ ++ ++/* ======================== Interrupt handling ======================== */ ++ ++ ++static int btuart_write(unsigned int iobase, int fifo_size, __u8 *buf, int len) ++{ ++ int actual = 0; ++ ++ /* Tx FIFO should be empty */ ++ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE)) ++ return 0; ++ ++ /* Fill FIFO with current frame */ ++ while ((fifo_size-- > 0) && (actual < len)) { ++ /* Transmit next byte */ ++ outb(buf[actual], iobase + UART_TX); ++ actual++; ++ } ++ ++ return actual; ++} ++ ++ ++static void btuart_write_wakeup(btuart_info_t *info) ++{ ++ if (!info) { ++ printk(KERN_WARNING "btuart_cs: Call of write_wakeup for unknown device.\n"); ++ return; ++ } ++ ++ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) { ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ return; ++ } ++ ++ do { ++ register unsigned int iobase = info->link.io.BasePort1; ++ register struct sk_buff *skb; ++ register int len; ++ ++ clear_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (!(info->link.state & DEV_PRESENT)) ++ return; ++ ++ if (!(skb = skb_dequeue(&(info->txq)))) ++ break; ++ ++ /* Send frame */ ++ len = btuart_write(iobase, 16, skb->data, skb->len); ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (len == skb->len) { ++ kfree_skb(skb); ++ } else { ++ skb_pull(skb, len); ++ skb_queue_head(&(info->txq), skb); ++ } ++ ++ info->hdev.stat.byte_tx += len; ++ ++ } while (test_bit(XMIT_WAKEUP, &(info->tx_state))); ++ ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++} ++ ++ ++static void btuart_receive(btuart_info_t *info) ++{ ++ unsigned int iobase; ++ int boguscount = 0; ++ ++ if (!info) { ++ printk(KERN_WARNING "btuart_cs: Call of receive for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ do { ++ info->hdev.stat.byte_rx++; ++ ++ /* Allocate packet */ ++ if (info->rx_skb == NULL) { ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "btuart_cs: Can't allocate mem for new packet.\n"); ++ return; ++ } ++ } ++ ++ if (info->rx_state == RECV_WAIT_PACKET_TYPE) { ++ ++ info->rx_skb->dev = (void *)&(info->hdev); ++ info->rx_skb->pkt_type = inb(iobase + UART_RX); ++ ++ switch (info->rx_skb->pkt_type) { ++ ++ case HCI_EVENT_PKT: ++ info->rx_state = RECV_WAIT_EVENT_HEADER; ++ info->rx_count = HCI_EVENT_HDR_SIZE; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ info->rx_state = RECV_WAIT_ACL_HEADER; ++ info->rx_count = HCI_ACL_HDR_SIZE; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ info->rx_state = RECV_WAIT_SCO_HEADER; ++ info->rx_count = HCI_SCO_HDR_SIZE; ++ break; ++ ++ default: ++ /* Unknown packet */ ++ printk(KERN_WARNING "btuart_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type); ++ info->hdev.stat.err_rx++; ++ clear_bit(HCI_RUNNING, &(info->hdev.flags)); ++ ++ kfree_skb(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } else { ++ ++ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX); ++ info->rx_count--; ++ ++ if (info->rx_count == 0) { ++ ++ int dlen; ++ hci_event_hdr *eh; ++ hci_acl_hdr *ah; ++ hci_sco_hdr *sh; ++ ++ ++ switch (info->rx_state) { ++ ++ case RECV_WAIT_EVENT_HEADER: ++ eh = (hci_event_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = eh->plen; ++ break; ++ ++ case RECV_WAIT_ACL_HEADER: ++ ah = (hci_acl_hdr *)(info->rx_skb->data); ++ dlen = __le16_to_cpu(ah->dlen); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = dlen; ++ break; ++ ++ case RECV_WAIT_SCO_HEADER: ++ sh = (hci_sco_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = sh->dlen; ++ break; ++ ++ case RECV_WAIT_DATA: ++ hci_recv_frame(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } ++ ++ } ++ ++ /* Make sure we don't stay here to long */ ++ if (boguscount++ > 16) ++ break; ++ ++ } while (inb(iobase + UART_LSR) & UART_LSR_DR); ++} ++ ++ ++void btuart_interrupt(int irq, void *dev_inst, struct pt_regs *regs) ++{ ++ btuart_info_t *info = dev_inst; ++ unsigned int iobase; ++ int boguscount = 0; ++ int iir, lsr; ++ ++ if (!info) { ++ printk(KERN_WARNING "btuart_cs: Call of irq %d for unknown device.\n", irq); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock(&(info->lock)); ++ ++ iir = inb(iobase + UART_IIR) & UART_IIR_ID; ++ while (iir) { ++ ++ /* Clear interrupt */ ++ lsr = inb(iobase + UART_LSR); ++ ++ switch (iir) { ++ case UART_IIR_RLSI: ++ printk(KERN_NOTICE "btuart_cs: RLSI\n"); ++ break; ++ case UART_IIR_RDI: ++ /* Receive interrupt */ ++ btuart_receive(info); ++ break; ++ case UART_IIR_THRI: ++ if (lsr & UART_LSR_THRE) { ++ /* Transmitter ready for data */ ++ btuart_write_wakeup(info); ++ } ++ break; ++ default: ++ printk(KERN_NOTICE "btuart_cs: Unhandled IIR=%#x\n", iir); ++ break; ++ } ++ ++ /* Make sure we don't stay here to long */ ++ if (boguscount++ > 100) ++ break; ++ ++ iir = inb(iobase + UART_IIR) & UART_IIR_ID; ++ ++ } ++ ++ spin_unlock(&(info->lock)); ++} ++ ++ ++static void btuart_change_speed(btuart_info_t *info, unsigned int speed) ++{ ++ unsigned long flags; ++ unsigned int iobase; ++ int fcr; /* FIFO control reg */ ++ int lcr; /* Line control reg */ ++ int divisor; ++ ++ if (!info) { ++ printk(KERN_WARNING "btuart_cs: Call of change speed for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Turn off interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ divisor = SPEED_MAX / speed; ++ ++ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT; ++ ++ /* ++ * Use trigger level 1 to avoid 3 ms. timeout delay at 9600 bps, and ++ * almost 1,7 ms at 19200 bps. At speeds above that we can just forget ++ * about this timeout since it will always be fast enough. ++ */ ++ ++ if (speed < 38400) ++ fcr |= UART_FCR_TRIGGER_1; ++ else ++ fcr |= UART_FCR_TRIGGER_14; ++ ++ /* Bluetooth cards use 8N1 */ ++ lcr = UART_LCR_WLEN8; ++ ++ outb(UART_LCR_DLAB | lcr, iobase + UART_LCR); /* Set DLAB */ ++ outb(divisor & 0xff, iobase + UART_DLL); /* Set speed */ ++ outb(divisor >> 8, iobase + UART_DLM); ++ outb(lcr, iobase + UART_LCR); /* Set 8N1 */ ++ outb(fcr, iobase + UART_FCR); /* Enable FIFO's */ ++ ++ /* Turn on interrups */ ++ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++} ++ ++ ++ ++/* ======================== HCI interface ======================== */ ++ ++ ++static int btuart_hci_flush(struct hci_dev *hdev) ++{ ++ btuart_info_t *info = (btuart_info_t *)(hdev->driver_data); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ return 0; ++} ++ ++ ++static int btuart_hci_open(struct hci_dev *hdev) ++{ ++ set_bit(HCI_RUNNING, &(hdev->flags)); ++ ++ return 0; ++} ++ ++ ++static int btuart_hci_close(struct hci_dev *hdev) ++{ ++ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ btuart_hci_flush(hdev); ++ ++ return 0; ++} ++ ++ ++static int btuart_hci_send_frame(struct sk_buff *skb) ++{ ++ btuart_info_t *info; ++ struct hci_dev *hdev = (struct hci_dev *)(skb->dev); ++ ++ if (!hdev) { ++ printk(KERN_WARNING "btuart_cs: Frame for unknown HCI device (hdev=NULL)."); ++ return -ENODEV; ++ } ++ ++ info = (btuart_info_t *)(hdev->driver_data); ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++ }; ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1); ++ skb_queue_tail(&(info->txq), skb); ++ ++ btuart_write_wakeup(info); ++ ++ return 0; ++} ++ ++ ++static void btuart_hci_destruct(struct hci_dev *hdev) ++{ ++} ++ ++ ++static int btuart_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++ ++/* ======================== Card services HCI interaction ======================== */ ++ ++ ++int btuart_open(btuart_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev; ++ ++ spin_lock_init(&(info->lock)); ++ ++ skb_queue_head_init(&(info->txq)); ++ ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ info->rx_skb = NULL; ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Reset UART */ ++ outb(0, iobase + UART_MCR); ++ ++ /* Turn off interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ /* Initialize UART */ ++ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */ ++ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR); ++ ++ /* Turn on interrupts */ ++ // outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++ ++ btuart_change_speed(info, DEFAULT_BAUD_RATE); ++ ++ /* Timeout before it is safe to send the first HCI packet */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout(HZ); ++ ++ ++ /* Initialize and register HCI device */ ++ ++ hdev = &(info->hdev); ++ ++ hdev->type = HCI_PCCARD; ++ hdev->driver_data = info; ++ ++ hdev->open = btuart_hci_open; ++ hdev->close = btuart_hci_close; ++ hdev->flush = btuart_hci_flush; ++ hdev->send = btuart_hci_send_frame; ++ hdev->destruct = btuart_hci_destruct; ++ hdev->ioctl = btuart_hci_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ printk(KERN_WARNING "btuart_cs: Can't register HCI device %s.\n", hdev->name); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++ ++int btuart_close(btuart_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev = &(info->hdev); ++ ++ if (info->link.state & DEV_CONFIG_PENDING) ++ return -ENODEV; ++ ++ btuart_hci_close(hdev); ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Reset UART */ ++ outb(0, iobase + UART_MCR); ++ ++ /* Turn off interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ printk(KERN_WARNING "btuart_cs: Can't unregister HCI device %s.\n", hdev->name); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Card services ======================== */ ++ ++ ++static void cs_error(client_handle_t handle, int func, int ret) ++{ ++ error_info_t err = { func, ret }; ++ ++ CardServices(ReportError, handle, &err); ++} ++ ++ ++dev_link_t *btuart_attach(void) ++{ ++ btuart_info_t *info; ++ client_reg_t client_reg; ++ dev_link_t *link; ++ int i, ret; ++ ++ /* Create new info device */ ++ info = kmalloc(sizeof(*info), GFP_KERNEL); ++ if (!info) ++ return NULL; ++ memset(info, 0, sizeof(*info)); ++ ++ link = &info->link; ++ link->priv = info; ++ ++ link->release.function = &btuart_release; ++ link->release.data = (u_long)link; ++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; ++ link->io.NumPorts1 = 8; ++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; ++ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; ++ ++ if (irq_list[0] == -1) ++ link->irq.IRQInfo2 = irq_mask; ++ else ++ for (i = 0; i < 4; i++) ++ link->irq.IRQInfo2 |= 1 << irq_list[i]; ++ ++ link->irq.Handler = btuart_interrupt; ++ link->irq.Instance = info; ++ ++ link->conf.Attributes = CONF_ENABLE_IRQ; ++ link->conf.Vcc = 50; ++ link->conf.IntType = INT_MEMORY_AND_IO; ++ ++ /* Register with Card Services */ ++ link->next = dev_list; ++ dev_list = link; ++ client_reg.dev_info = &dev_info; ++ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; ++ client_reg.EventMask = ++ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | ++ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | ++ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; ++ client_reg.event_handler = &btuart_event; ++ client_reg.Version = 0x0210; ++ client_reg.event_callback_args.client_data = link; ++ ++ ret = CardServices(RegisterClient, &link->handle, &client_reg); ++ if (ret != CS_SUCCESS) { ++ cs_error(link->handle, RegisterClient, ret); ++ btuart_detach(link); ++ return NULL; ++ } ++ ++ return link; ++} ++ ++ ++void btuart_detach(dev_link_t *link) ++{ ++ btuart_info_t *info = link->priv; ++ dev_link_t **linkp; ++ int ret; ++ ++ /* Locate device structure */ ++ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) ++ if (*linkp == link) ++ break; ++ ++ if (*linkp == NULL) ++ return; ++ ++ del_timer(&link->release); ++ if (link->state & DEV_CONFIG) ++ btuart_release((u_long)link); ++ ++ if (link->handle) { ++ ret = CardServices(DeregisterClient, link->handle); ++ if (ret != CS_SUCCESS) ++ cs_error(link->handle, DeregisterClient, ret); ++ } ++ ++ /* Unlink device structure, free bits */ ++ *linkp = link->next; ++ ++ kfree(info); ++} ++ ++ ++static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse) ++{ ++ int i; ++ ++ i = CardServices(fn, handle, tuple); ++ if (i != CS_SUCCESS) ++ return CS_NO_MORE_ITEMS; ++ ++ i = CardServices(GetTupleData, handle, tuple); ++ if (i != CS_SUCCESS) ++ return i; ++ ++ return CardServices(ParseTuple, handle, tuple, parse); ++} ++ ++ ++#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) ++#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) ++ ++void btuart_config(dev_link_t *link) ++{ ++ static ioaddr_t base[5] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, 0x0 }; ++ client_handle_t handle = link->handle; ++ btuart_info_t *info = link->priv; ++ tuple_t tuple; ++ u_short buf[256]; ++ cisparse_t parse; ++ cistpl_cftable_entry_t *cf = &parse.cftable_entry; ++ config_info_t config; ++ int i, j, try, last_ret, last_fn; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ ++ /* Get configuration register information */ ++ tuple.DesiredTuple = CISTPL_CONFIG; ++ last_ret = first_tuple(handle, &tuple, &parse); ++ if (last_ret != CS_SUCCESS) { ++ last_fn = ParseTuple; ++ goto cs_failed; ++ } ++ link->conf.ConfigBase = parse.config.base; ++ link->conf.Present = parse.config.rmask[0]; ++ ++ /* Configure card */ ++ link->state |= DEV_CONFIG; ++ i = CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ ++ /* First pass: look for a config entry that looks normal. */ ++ tuple.TupleData = (cisdata_t *) buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; ++ /* Two tries: without IO aliases, then with aliases */ ++ for (try = 0; try < 2; try++) { ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if (i != CS_SUCCESS) ++ goto next_entry; ++ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) ++ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; ++ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) { ++ link->conf.ConfigIndex = cf->index; ++ link->io.BasePort1 = cf->io.win[0].base; ++ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++next_entry: ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ } ++ ++ /* Second pass: try to find an entry that isn't picky about ++ its base address, then try to grab any standard serial port ++ address, and finally try to get any free port. */ ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) ++ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { ++ link->conf.ConfigIndex = cf->index; ++ for (j = 0; j < 5; j++) { ++ link->io.BasePort1 = base[j]; ++ link->io.IOAddrLines = base[j] ? 16 : 3; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++ } ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ ++found_port: ++ if (i != CS_SUCCESS) { ++ printk(KERN_NOTICE "btuart_cs: No usable port range found. Giving up.\n"); ++ cs_error(link->handle, RequestIO, i); ++ goto failed; ++ } ++ ++ i = CardServices(RequestIRQ, link->handle, &link->irq); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIRQ, i); ++ link->irq.AssignedIRQ = 0; ++ } ++ ++ i = CardServices(RequestConfiguration, link->handle, &link->conf); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestConfiguration, i); ++ goto failed; ++ } ++ ++ MOD_INC_USE_COUNT; ++ ++ if (btuart_open(info) != 0) ++ goto failed; ++ ++ strcpy(info->node.dev_name, info->hdev.name); ++ link->dev = &info->node; ++ link->state &= ~DEV_CONFIG_PENDING; ++ ++ return; ++ ++cs_failed: ++ cs_error(link->handle, last_fn, last_ret); ++ ++failed: ++ btuart_release((u_long) link); ++} ++ ++ ++void btuart_release(u_long arg) ++{ ++ dev_link_t *link = (dev_link_t *)arg; ++ btuart_info_t *info = link->priv; ++ ++ if (link->state & DEV_PRESENT) ++ btuart_close(info); ++ ++ MOD_DEC_USE_COUNT; ++ ++ link->dev = NULL; ++ ++ CardServices(ReleaseConfiguration, link->handle); ++ CardServices(ReleaseIO, link->handle, &link->io); ++ CardServices(ReleaseIRQ, link->handle, &link->irq); ++ ++ link->state &= ~DEV_CONFIG; ++} ++ ++ ++int btuart_event(event_t event, int priority, event_callback_args_t *args) ++{ ++ dev_link_t *link = args->client_data; ++ btuart_info_t *info = link->priv; ++ ++ switch (event) { ++ case CS_EVENT_CARD_REMOVAL: ++ link->state &= ~DEV_PRESENT; ++ if (link->state & DEV_CONFIG) { ++ btuart_close(info); ++ mod_timer(&link->release, jiffies + HZ / 20); ++ } ++ break; ++ case CS_EVENT_CARD_INSERTION: ++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; ++ btuart_config(link); ++ break; ++ case CS_EVENT_PM_SUSPEND: ++ link->state |= DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_RESET_PHYSICAL: ++ if (link->state & DEV_CONFIG) ++ CardServices(ReleaseConfiguration, link->handle); ++ break; ++ case CS_EVENT_PM_RESUME: ++ link->state &= ~DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_CARD_RESET: ++ if (DEV_OK(link)) ++ CardServices(RequestConfiguration, link->handle, &link->conf); ++ break; ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Module initialization ======================== */ ++ ++ ++int __init init_btuart_cs(void) ++{ ++ servinfo_t serv; ++ int err; ++ ++ CardServices(GetCardServicesInfo, &serv); ++ if (serv.Revision != CS_RELEASE_CODE) { ++ printk(KERN_NOTICE "btuart_cs: Card Services release does not match!\n"); ++ return -1; ++ } ++ ++ err = register_pccard_driver(&dev_info, &btuart_attach, &btuart_detach); ++ ++ return err; ++} ++ ++ ++void __exit exit_btuart_cs(void) ++{ ++ unregister_pccard_driver(&dev_info); ++ ++ while (dev_list != NULL) ++ btuart_detach(dev_list); ++} ++ ++ ++module_init(init_btuart_cs); ++module_exit(exit_btuart_cs); ++ ++EXPORT_NO_SYMBOLS; +diff -urN linux-2.4.18/drivers/bluetooth/Config.in linux-2.4.18-mh15/drivers/bluetooth/Config.in +--- linux-2.4.18/drivers/bluetooth/Config.in 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -1,8 +1,33 @@ ++# ++# Bluetooth HCI device drivers configuration ++# ++ + mainmenu_option next_comment + comment 'Bluetooth device drivers' + + dep_tristate 'HCI USB driver' CONFIG_BLUEZ_HCIUSB $CONFIG_BLUEZ $CONFIG_USB ++if [ "$CONFIG_BLUEZ_HCIUSB" != "n" ]; then ++ bool ' SCO (voice) support' CONFIG_BLUEZ_HCIUSB_SCO ++fi ++ + dep_tristate 'HCI UART driver' CONFIG_BLUEZ_HCIUART $CONFIG_BLUEZ +-dep_tristate 'HCI VHCI virtual HCI device driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ ++if [ "$CONFIG_BLUEZ_HCIUART" != "n" ]; then ++ bool ' UART (H4) protocol support' CONFIG_BLUEZ_HCIUART_H4 ++ bool ' BCSP protocol support' CONFIG_BLUEZ_HCIUART_BCSP ++ dep_bool ' Transmit CRC with every BCSP packet' CONFIG_BLUEZ_HCIUART_BCSP_TXCRC $CONFIG_BLUEZ_HCIUART_BCSP ++fi ++ ++dep_tristate 'HCI BlueFRITZ! USB driver' CONFIG_BLUEZ_HCIBFUSB $CONFIG_BLUEZ $CONFIG_USB ++ ++dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ ++ ++dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ ++ ++dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ ++ ++dep_tristate 'HCI UART (PC Card) driver' CONFIG_BLUEZ_HCIBTUART $CONFIG_PCMCIA $CONFIG_BLUEZ ++ ++dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ + + endmenu ++ +diff -urN linux-2.4.18/drivers/bluetooth/dtl1_cs.c linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c +--- linux-2.4.18/drivers/bluetooth/dtl1_cs.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/dtl1_cs.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,861 @@ ++/* ++ * ++ * A driver for Nokia Connectivity Card DTL-1 devices ++ * ++ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * Software distributed under the License is distributed on an "AS ++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++ * implied. See the License for the specific language governing ++ * rights and limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds ++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/spinlock.h> ++ ++#include <linux/skbuff.h> ++#include <linux/string.h> ++#include <linux/serial.h> ++#include <linux/serial_reg.h> ++#include <asm/system.h> ++#include <asm/bitops.h> ++#include <asm/io.h> ++ ++#include <pcmcia/version.h> ++#include <pcmcia/cs_types.h> ++#include <pcmcia/cs.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/ciscode.h> ++#include <pcmcia/ds.h> ++#include <pcmcia/cisreg.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++ ++ ++/* ======================== Module parameters ======================== */ ++ ++ ++/* Bit map of interrupts to choose from */ ++static u_int irq_mask = 0xffff; ++static int irq_list[4] = { -1 }; ++ ++MODULE_PARM(irq_mask, "i"); ++MODULE_PARM(irq_list, "1-4i"); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueZ driver for Nokia Connectivity Card DTL-1"); ++MODULE_LICENSE("GPL"); ++ ++ ++ ++/* ======================== Local structures ======================== */ ++ ++ ++typedef struct dtl1_info_t { ++ dev_link_t link; ++ dev_node_t node; ++ ++ struct hci_dev hdev; ++ ++ spinlock_t lock; /* For serializing operations */ ++ ++ unsigned long flowmask; /* HCI flow mask */ ++ int ri_latch; ++ ++ struct sk_buff_head txq; ++ unsigned long tx_state; ++ ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++} dtl1_info_t; ++ ++ ++void dtl1_config(dev_link_t *link); ++void dtl1_release(u_long arg); ++int dtl1_event(event_t event, int priority, event_callback_args_t *args); ++ ++static dev_info_t dev_info = "dtl1_cs"; ++ ++dev_link_t *dtl1_attach(void); ++void dtl1_detach(dev_link_t *); ++ ++static dev_link_t *dev_list = NULL; ++ ++ ++/* Transmit states */ ++#define XMIT_SENDING 1 ++#define XMIT_WAKEUP 2 ++#define XMIT_WAITING 8 ++ ++/* Receiver States */ ++#define RECV_WAIT_NSH 0 ++#define RECV_WAIT_DATA 1 ++ ++ ++typedef struct { ++ u8 type; ++ u8 zero; ++ u16 len; ++} __attribute__ ((packed)) nsh_t; /* Nokia Specific Header */ ++ ++#define NSHL 4 /* Nokia Specific Header Length */ ++ ++ ++ ++/* ======================== Interrupt handling ======================== */ ++ ++ ++static int dtl1_write(unsigned int iobase, int fifo_size, __u8 *buf, int len) ++{ ++ int actual = 0; ++ ++ /* Tx FIFO should be empty */ ++ if (!(inb(iobase + UART_LSR) & UART_LSR_THRE)) ++ return 0; ++ ++ /* Fill FIFO with current frame */ ++ while ((fifo_size-- > 0) && (actual < len)) { ++ /* Transmit next byte */ ++ outb(buf[actual], iobase + UART_TX); ++ actual++; ++ } ++ ++ return actual; ++} ++ ++ ++static void dtl1_write_wakeup(dtl1_info_t *info) ++{ ++ if (!info) { ++ printk(KERN_WARNING "dtl1_cs: Call of write_wakeup for unknown device.\n"); ++ return; ++ } ++ ++ if (test_bit(XMIT_WAITING, &(info->tx_state))) { ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ return; ++ } ++ ++ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) { ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ return; ++ } ++ ++ do { ++ register unsigned int iobase = info->link.io.BasePort1; ++ register struct sk_buff *skb; ++ register int len; ++ ++ clear_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (!(info->link.state & DEV_PRESENT)) ++ return; ++ ++ if (!(skb = skb_dequeue(&(info->txq)))) ++ break; ++ ++ /* Send frame */ ++ len = dtl1_write(iobase, 32, skb->data, skb->len); ++ ++ if (len == skb->len) { ++ set_bit(XMIT_WAITING, &(info->tx_state)); ++ kfree_skb(skb); ++ } else { ++ skb_pull(skb, len); ++ skb_queue_head(&(info->txq), skb); ++ } ++ ++ info->hdev.stat.byte_tx += len; ++ ++ } while (test_bit(XMIT_WAKEUP, &(info->tx_state))); ++ ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++} ++ ++ ++static void dtl1_control(dtl1_info_t *info, struct sk_buff *skb) ++{ ++ u8 flowmask = *(u8 *)skb->data; ++ int i; ++ ++ printk(KERN_INFO "dtl1_cs: Nokia control data = "); ++ for (i = 0; i < skb->len; i++) { ++ printk("%02x ", skb->data[i]); ++ } ++ printk("\n"); ++ ++ /* transition to active state */ ++ if (((info->flowmask & 0x07) == 0) && ((flowmask & 0x07) != 0)) { ++ clear_bit(XMIT_WAITING, &(info->tx_state)); ++ dtl1_write_wakeup(info); ++ } ++ ++ info->flowmask = flowmask; ++ ++ kfree_skb(skb); ++} ++ ++ ++static void dtl1_receive(dtl1_info_t *info) ++{ ++ unsigned int iobase; ++ nsh_t *nsh; ++ int boguscount = 0; ++ ++ if (!info) { ++ printk(KERN_WARNING "dtl1_cs: Call of receive for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ do { ++ info->hdev.stat.byte_rx++; ++ ++ /* Allocate packet */ ++ if (info->rx_skb == NULL) ++ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "dtl1_cs: Can't allocate mem for new packet.\n"); ++ info->rx_state = RECV_WAIT_NSH; ++ info->rx_count = NSHL; ++ return; ++ } ++ ++ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX); ++ nsh = (nsh_t *)info->rx_skb->data; ++ ++ info->rx_count--; ++ ++ if (info->rx_count == 0) { ++ ++ switch (info->rx_state) { ++ case RECV_WAIT_NSH: ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = nsh->len + (nsh->len & 0x0001); ++ break; ++ case RECV_WAIT_DATA: ++ info->rx_skb->pkt_type = nsh->type; ++ ++ /* remove PAD byte if it exists */ ++ if (nsh->len & 0x0001) { ++ info->rx_skb->tail--; ++ info->rx_skb->len--; ++ } ++ ++ /* remove NSH */ ++ skb_pull(info->rx_skb, NSHL); ++ ++ switch (info->rx_skb->pkt_type) { ++ case 0x80: ++ /* control data for the Nokia Card */ ++ dtl1_control(info, info->rx_skb); ++ break; ++ case 0x82: ++ case 0x83: ++ case 0x84: ++ /* send frame to the HCI layer */ ++ info->rx_skb->dev = (void *)&(info->hdev); ++ info->rx_skb->pkt_type &= 0x0f; ++ hci_recv_frame(info->rx_skb); ++ break; ++ default: ++ /* unknown packet */ ++ printk(KERN_WARNING "dtl1_cs: Unknown HCI packet with type 0x%02x received.\n", info->rx_skb->pkt_type); ++ kfree_skb(info->rx_skb); ++ break; ++ } ++ ++ info->rx_state = RECV_WAIT_NSH; ++ info->rx_count = NSHL; ++ info->rx_skb = NULL; ++ break; ++ } ++ ++ } ++ ++ /* Make sure we don't stay here to long */ ++ if (boguscount++ > 32) ++ break; ++ ++ } while (inb(iobase + UART_LSR) & UART_LSR_DR); ++} ++ ++ ++void dtl1_interrupt(int irq, void *dev_inst, struct pt_regs *regs) ++{ ++ dtl1_info_t *info = dev_inst; ++ unsigned int iobase; ++ unsigned char msr; ++ int boguscount = 0; ++ int iir, lsr; ++ ++ if (!info) { ++ printk(KERN_WARNING "dtl1_cs: Call of irq %d for unknown device.\n", irq); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock(&(info->lock)); ++ ++ iir = inb(iobase + UART_IIR) & UART_IIR_ID; ++ while (iir) { ++ ++ /* Clear interrupt */ ++ lsr = inb(iobase + UART_LSR); ++ ++ switch (iir) { ++ case UART_IIR_RLSI: ++ printk(KERN_NOTICE "dtl1_cs: RLSI\n"); ++ break; ++ case UART_IIR_RDI: ++ /* Receive interrupt */ ++ dtl1_receive(info); ++ break; ++ case UART_IIR_THRI: ++ if (lsr & UART_LSR_THRE) { ++ /* Transmitter ready for data */ ++ dtl1_write_wakeup(info); ++ } ++ break; ++ default: ++ printk(KERN_NOTICE "dtl1_cs: Unhandled IIR=%#x\n", iir); ++ break; ++ } ++ ++ /* Make sure we don't stay here to long */ ++ if (boguscount++ > 100) ++ break; ++ ++ iir = inb(iobase + UART_IIR) & UART_IIR_ID; ++ ++ } ++ ++ msr = inb(iobase + UART_MSR); ++ ++ if (info->ri_latch ^ (msr & UART_MSR_RI)) { ++ info->ri_latch = msr & UART_MSR_RI; ++ clear_bit(XMIT_WAITING, &(info->tx_state)); ++ dtl1_write_wakeup(info); ++ } ++ ++ spin_unlock(&(info->lock)); ++} ++ ++ ++ ++/* ======================== HCI interface ======================== */ ++ ++ ++static int dtl1_hci_open(struct hci_dev *hdev) ++{ ++ set_bit(HCI_RUNNING, &(hdev->flags)); ++ ++ return 0; ++} ++ ++ ++static int dtl1_hci_flush(struct hci_dev *hdev) ++{ ++ dtl1_info_t *info = (dtl1_info_t *)(hdev->driver_data); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ return 0; ++} ++ ++ ++static int dtl1_hci_close(struct hci_dev *hdev) ++{ ++ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ dtl1_hci_flush(hdev); ++ ++ return 0; ++} ++ ++ ++static int dtl1_hci_send_frame(struct sk_buff *skb) ++{ ++ dtl1_info_t *info; ++ struct hci_dev *hdev = (struct hci_dev *)(skb->dev); ++ struct sk_buff *s; ++ nsh_t nsh; ++ ++ if (!hdev) { ++ printk(KERN_WARNING "dtl1_cs: Frame for unknown HCI device (hdev=NULL)."); ++ return -ENODEV; ++ } ++ ++ info = (dtl1_info_t *)(hdev->driver_data); ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ nsh.type = 0x81; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ nsh.type = 0x82; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ nsh.type = 0x83; ++ break; ++ }; ++ ++ nsh.zero = 0; ++ nsh.len = skb->len; ++ ++ s = bluez_skb_alloc(NSHL + skb->len + 1, GFP_ATOMIC); ++ skb_reserve(s, NSHL); ++ memcpy(skb_put(s, skb->len), skb->data, skb->len); ++ if (skb->len & 0x0001) ++ *skb_put(s, 1) = 0; /* PAD */ ++ ++ /* Prepend skb with Nokia frame header and queue */ ++ memcpy(skb_push(s, NSHL), &nsh, NSHL); ++ skb_queue_tail(&(info->txq), s); ++ ++ dtl1_write_wakeup(info); ++ ++ kfree_skb(skb); ++ ++ return 0; ++} ++ ++ ++static void dtl1_hci_destruct(struct hci_dev *hdev) ++{ ++} ++ ++ ++static int dtl1_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++ ++/* ======================== Card services HCI interaction ======================== */ ++ ++ ++int dtl1_open(dtl1_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev; ++ ++ spin_lock_init(&(info->lock)); ++ ++ skb_queue_head_init(&(info->txq)); ++ ++ info->rx_state = RECV_WAIT_NSH; ++ info->rx_count = NSHL; ++ info->rx_skb = NULL; ++ ++ set_bit(XMIT_WAITING, &(info->tx_state)); ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Reset UART */ ++ outb(0, iobase + UART_MCR); ++ ++ /* Turn off interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ /* Initialize UART */ ++ outb(UART_LCR_WLEN8, iobase + UART_LCR); /* Reset DLAB */ ++ outb((UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2), iobase + UART_MCR); ++ ++ info->ri_latch = inb(info->link.io.BasePort1 + UART_MSR) & UART_MSR_RI; ++ ++ /* Turn on interrupts */ ++ outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++ ++ /* Timeout before it is safe to send the first HCI packet */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout(HZ * 2); ++ ++ ++ /* Initialize and register HCI device */ ++ ++ hdev = &(info->hdev); ++ ++ hdev->type = HCI_PCCARD; ++ hdev->driver_data = info; ++ ++ hdev->open = dtl1_hci_open; ++ hdev->close = dtl1_hci_close; ++ hdev->flush = dtl1_hci_flush; ++ hdev->send = dtl1_hci_send_frame; ++ hdev->destruct = dtl1_hci_destruct; ++ hdev->ioctl = dtl1_hci_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ printk(KERN_WARNING "dtl1_cs: Can't register HCI device %s.\n", hdev->name); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++ ++int dtl1_close(dtl1_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ struct hci_dev *hdev = &(info->hdev); ++ ++ if (info->link.state & DEV_CONFIG_PENDING) ++ return -ENODEV; ++ ++ dtl1_hci_close(hdev); ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Reset UART */ ++ outb(0, iobase + UART_MCR); ++ ++ /* Turn off interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ printk(KERN_WARNING "dtl1_cs: Can't unregister HCI device %s.\n", hdev->name); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Card services ======================== */ ++ ++ ++static void cs_error(client_handle_t handle, int func, int ret) ++{ ++ error_info_t err = { func, ret }; ++ ++ CardServices(ReportError, handle, &err); ++} ++ ++ ++dev_link_t *dtl1_attach(void) ++{ ++ dtl1_info_t *info; ++ client_reg_t client_reg; ++ dev_link_t *link; ++ int i, ret; ++ ++ /* Create new info device */ ++ info = kmalloc(sizeof(*info), GFP_KERNEL); ++ if (!info) ++ return NULL; ++ memset(info, 0, sizeof(*info)); ++ ++ link = &info->link; ++ link->priv = info; ++ ++ link->release.function = &dtl1_release; ++ link->release.data = (u_long)link; ++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; ++ link->io.NumPorts1 = 8; ++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; ++ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; ++ ++ if (irq_list[0] == -1) ++ link->irq.IRQInfo2 = irq_mask; ++ else ++ for (i = 0; i < 4; i++) ++ link->irq.IRQInfo2 |= 1 << irq_list[i]; ++ ++ link->irq.Handler = dtl1_interrupt; ++ link->irq.Instance = info; ++ ++ link->conf.Attributes = CONF_ENABLE_IRQ; ++ link->conf.Vcc = 50; ++ link->conf.IntType = INT_MEMORY_AND_IO; ++ ++ /* Register with Card Services */ ++ link->next = dev_list; ++ dev_list = link; ++ client_reg.dev_info = &dev_info; ++ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; ++ client_reg.EventMask = ++ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | ++ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | ++ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; ++ client_reg.event_handler = &dtl1_event; ++ client_reg.Version = 0x0210; ++ client_reg.event_callback_args.client_data = link; ++ ++ ret = CardServices(RegisterClient, &link->handle, &client_reg); ++ if (ret != CS_SUCCESS) { ++ cs_error(link->handle, RegisterClient, ret); ++ dtl1_detach(link); ++ return NULL; ++ } ++ ++ return link; ++} ++ ++ ++void dtl1_detach(dev_link_t *link) ++{ ++ dtl1_info_t *info = link->priv; ++ dev_link_t **linkp; ++ int ret; ++ ++ /* Locate device structure */ ++ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) ++ if (*linkp == link) ++ break; ++ ++ if (*linkp == NULL) ++ return; ++ ++ del_timer(&link->release); ++ if (link->state & DEV_CONFIG) ++ dtl1_release((u_long)link); ++ ++ if (link->handle) { ++ ret = CardServices(DeregisterClient, link->handle); ++ if (ret != CS_SUCCESS) ++ cs_error(link->handle, DeregisterClient, ret); ++ } ++ ++ /* Unlink device structure, free bits */ ++ *linkp = link->next; ++ ++ kfree(info); ++} ++ ++ ++static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse) ++{ ++ int i; ++ ++ i = CardServices(fn, handle, tuple); ++ if (i != CS_SUCCESS) ++ return CS_NO_MORE_ITEMS; ++ ++ i = CardServices(GetTupleData, handle, tuple); ++ if (i != CS_SUCCESS) ++ return i; ++ ++ return CardServices(ParseTuple, handle, tuple, parse); ++} ++ ++ ++#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) ++#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) ++ ++void dtl1_config(dev_link_t *link) ++{ ++ client_handle_t handle = link->handle; ++ dtl1_info_t *info = link->priv; ++ tuple_t tuple; ++ u_short buf[256]; ++ cisparse_t parse; ++ cistpl_cftable_entry_t *cf = &parse.cftable_entry; ++ config_info_t config; ++ int i, last_ret, last_fn; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ ++ /* Get configuration register information */ ++ tuple.DesiredTuple = CISTPL_CONFIG; ++ last_ret = first_tuple(handle, &tuple, &parse); ++ if (last_ret != CS_SUCCESS) { ++ last_fn = ParseTuple; ++ goto cs_failed; ++ } ++ link->conf.ConfigBase = parse.config.base; ++ link->conf.Present = parse.config.rmask[0]; ++ ++ /* Configure card */ ++ link->state |= DEV_CONFIG; ++ i = CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; ++ ++ /* Look for a generic full-sized window */ ++ link->io.NumPorts1 = 8; ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if ((i == CS_SUCCESS) && (cf->io.nwin == 1) && (cf->io.win[0].len > 8)) { ++ link->conf.ConfigIndex = cf->index; ++ link->io.BasePort1 = cf->io.win[0].base; ++ link->io.NumPorts1 = cf->io.win[0].len; /*yo */ ++ link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ break; ++ } ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIO, i); ++ goto failed; ++ } ++ ++ i = CardServices(RequestIRQ, link->handle, &link->irq); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIRQ, i); ++ link->irq.AssignedIRQ = 0; ++ } ++ ++ i = CardServices(RequestConfiguration, link->handle, &link->conf); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestConfiguration, i); ++ goto failed; ++ } ++ ++ MOD_INC_USE_COUNT; ++ ++ if (dtl1_open(info) != 0) ++ goto failed; ++ ++ strcpy(info->node.dev_name, info->hdev.name); ++ link->dev = &info->node; ++ link->state &= ~DEV_CONFIG_PENDING; ++ ++ return; ++ ++cs_failed: ++ cs_error(link->handle, last_fn, last_ret); ++ ++failed: ++ dtl1_release((u_long)link); ++} ++ ++ ++void dtl1_release(u_long arg) ++{ ++ dev_link_t *link = (dev_link_t *)arg; ++ dtl1_info_t *info = link->priv; ++ ++ if (link->state & DEV_PRESENT) ++ dtl1_close(info); ++ ++ MOD_DEC_USE_COUNT; ++ ++ link->dev = NULL; ++ ++ CardServices(ReleaseConfiguration, link->handle); ++ CardServices(ReleaseIO, link->handle, &link->io); ++ CardServices(ReleaseIRQ, link->handle, &link->irq); ++ ++ link->state &= ~DEV_CONFIG; ++} ++ ++ ++int dtl1_event(event_t event, int priority, event_callback_args_t *args) ++{ ++ dev_link_t *link = args->client_data; ++ dtl1_info_t *info = link->priv; ++ ++ switch (event) { ++ case CS_EVENT_CARD_REMOVAL: ++ link->state &= ~DEV_PRESENT; ++ if (link->state & DEV_CONFIG) { ++ dtl1_close(info); ++ mod_timer(&link->release, jiffies + HZ / 20); ++ } ++ break; ++ case CS_EVENT_CARD_INSERTION: ++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; ++ dtl1_config(link); ++ break; ++ case CS_EVENT_PM_SUSPEND: ++ link->state |= DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_RESET_PHYSICAL: ++ if (link->state & DEV_CONFIG) ++ CardServices(ReleaseConfiguration, link->handle); ++ break; ++ case CS_EVENT_PM_RESUME: ++ link->state &= ~DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_CARD_RESET: ++ if (DEV_OK(link)) ++ CardServices(RequestConfiguration, link->handle, &link->conf); ++ break; ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Module initialization ======================== */ ++ ++ ++int __init init_dtl1_cs(void) ++{ ++ servinfo_t serv; ++ int err; ++ ++ CardServices(GetCardServicesInfo, &serv); ++ if (serv.Revision != CS_RELEASE_CODE) { ++ printk(KERN_NOTICE "dtl1_cs: Card Services release does not match!\n"); ++ return -1; ++ } ++ ++ err = register_pccard_driver(&dev_info, &dtl1_attach, &dtl1_detach); ++ ++ return err; ++} ++ ++ ++void __exit exit_dtl1_cs(void) ++{ ++ unregister_pccard_driver(&dev_info); ++ ++ while (dev_list != NULL) ++ dtl1_detach(dev_list); ++} ++ ++ ++module_init(init_dtl1_cs); ++module_exit(exit_dtl1_cs); ++ ++EXPORT_NO_SYMBOLS; +diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.c linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c +--- linux-2.4.18/drivers/bluetooth/hci_bcsp.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,710 @@ ++/* ++ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ). ++ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com> ++ ++ Based on ++ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com> ++ ABCSP by Carl Orsborn <cjo@csr.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $ ++ */ ++ ++#define VERSION "0.1" ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/version.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/types.h> ++#include <linux/fcntl.h> ++#include <linux/interrupt.h> ++#include <linux/ptrace.h> ++#include <linux/poll.h> ++ ++#include <linux/slab.h> ++#include <linux/tty.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/signal.h> ++#include <linux/ioctl.h> ++#include <linux/skbuff.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include "hci_uart.h" ++#include "hci_bcsp.h" ++ ++#ifndef HCI_UART_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#undef BT_DMP ++#define BT_DMP( A... ) ++#endif ++ ++/* ---- BCSP CRC calculation ---- */ ++ ++/* Table for calculating CRC for polynomial 0x1021, LSB processed first, ++initial value 0xffff, bits shifted in reverse order. */ ++ ++static const u16 crc_table[] = { ++ 0x0000, 0x1081, 0x2102, 0x3183, ++ 0x4204, 0x5285, 0x6306, 0x7387, ++ 0x8408, 0x9489, 0xa50a, 0xb58b, ++ 0xc60c, 0xd68d, 0xe70e, 0xf78f ++}; ++ ++/* Initialise the crc calculator */ ++#define BCSP_CRC_INIT(x) x = 0xffff ++ ++/* ++ Update crc with next data byte ++ ++ Implementation note ++ The data byte is treated as two nibbles. The crc is generated ++ in reverse, i.e., bits are fed into the register from the top. ++*/ ++static void bcsp_crc_update(u16 *crc, u8 d) ++{ ++ u16 reg = *crc; ++ ++ reg = (reg >> 4) ^ crc_table[(reg ^ d) & 0x000f]; ++ reg = (reg >> 4) ^ crc_table[(reg ^ (d >> 4)) & 0x000f]; ++ ++ *crc = reg; ++} ++ ++/* ++ Get reverse of generated crc ++ ++ Implementation note ++ The crc generator (bcsp_crc_init() and bcsp_crc_update()) ++ creates a reversed crc, so it needs to be swapped back before ++ being passed on. ++*/ ++static u16 bcsp_crc_reverse(u16 crc) ++{ ++ u16 b, rev; ++ ++ for (b = 0, rev = 0; b < 16; b++) { ++ rev = rev << 1; ++ rev |= (crc & 1); ++ crc = crc >> 1; ++ } ++ return (rev); ++} ++ ++/* ---- BCSP core ---- */ ++ ++static void bcsp_slip_msgdelim(struct sk_buff *skb) ++{ ++ const char pkt_delim = 0xc0; ++ memcpy(skb_put(skb, 1), &pkt_delim, 1); ++} ++ ++static void bcsp_slip_one_byte(struct sk_buff *skb, u8 c) ++{ ++ const char esc_c0[2] = { 0xdb, 0xdc }; ++ const char esc_db[2] = { 0xdb, 0xdd }; ++ ++ switch (c) { ++ case 0xc0: ++ memcpy(skb_put(skb, 2), &esc_c0, 2); ++ break; ++ case 0xdb: ++ memcpy(skb_put(skb, 2), &esc_db, 2); ++ break; ++ default: ++ memcpy(skb_put(skb, 1), &c, 1); ++ } ++} ++ ++static int bcsp_enqueue(struct hci_uart *hu, struct sk_buff *skb) ++{ ++ struct bcsp_struct *bcsp = hu->priv; ++ ++ if (skb->len > 0xFFF) { ++ BT_ERR("Packet too long"); ++ kfree_skb(skb); ++ return 0; ++ } ++ ++ switch (skb->pkt_type) { ++ case HCI_ACLDATA_PKT: ++ case HCI_COMMAND_PKT: ++ skb_queue_tail(&bcsp->rel, skb); ++ break; ++ ++ case HCI_SCODATA_PKT: ++ skb_queue_tail(&bcsp->unrel, skb); ++ break; ++ ++ default: ++ BT_ERR("Unknown packet type"); ++ kfree_skb(skb); ++ break; ++ } ++ return 0; ++} ++ ++static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, ++ int len, int pkt_type) ++{ ++ struct sk_buff *nskb; ++ u8 hdr[4], chan; ++ int rel, i; ++ ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ u16 BCSP_CRC_INIT(bcsp_txmsg_crc); ++#endif ++ ++ switch (pkt_type) { ++ case HCI_ACLDATA_PKT: ++ chan = 6; /* BCSP ACL channel */ ++ rel = 1; /* reliable channel */ ++ break; ++ case HCI_COMMAND_PKT: ++ chan = 5; /* BCSP cmd/evt channel */ ++ rel = 1; /* reliable channel */ ++ break; ++ case HCI_SCODATA_PKT: ++ chan = 7; /* BCSP SCO channel */ ++ rel = 0; /* unreliable channel */ ++ break; ++ case BCSP_LE_PKT: ++ chan = 1; /* BCSP LE channel */ ++ rel = 0; /* unreliable channel */ ++ break; ++ case BCSP_ACK_PKT: ++ chan = 0; /* BCSP internal channel */ ++ rel = 0; /* unreliable channel */ ++ break; ++ default: ++ BT_ERR("Unknown packet type"); ++ return NULL; ++ } ++ ++ /* Max len of packet: (original len +4(bcsp hdr) +2(crc))*2 ++ (because bytes 0xc0 and 0xdb are escaped, worst case is ++ when the packet is all made of 0xc0 and 0xdb :) ) ++ + 2 (0xc0 delimiters at start and end). */ ++ ++ nskb = alloc_skb((len + 6) * 2 + 2, GFP_ATOMIC); ++ if (!nskb) ++ return NULL; ++ ++ nskb->pkt_type = pkt_type; ++ ++ bcsp_slip_msgdelim(nskb); ++ ++ hdr[0] = bcsp->rxseq_txack << 3; ++ bcsp->txack_req = 0; ++ BT_DBG("We request packet no %u to card", bcsp->rxseq_txack); ++ ++ if (rel) { ++ hdr[0] |= 0x80 + bcsp->msgq_txseq; ++ BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq); ++ bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07; ++ } ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ hdr[0] |= 0x40; ++#endif ++ ++ hdr[1] = (len << 4) & 0xFF; ++ hdr[1] |= chan; ++ hdr[2] = len >> 4; ++ hdr[3] = ~(hdr[0] + hdr[1] + hdr[2]); ++ ++ /* Put BCSP header */ ++ for (i = 0; i < 4; i++) { ++ bcsp_slip_one_byte(nskb, hdr[i]); ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]); ++#endif ++ } ++ ++ /* Put payload */ ++ for (i = 0; i < len; i++) { ++ bcsp_slip_one_byte(nskb, data[i]); ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ bcsp_crc_update(&bcsp_txmsg_crc, data[i]); ++#endif ++ } ++ ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP_TXCRC ++ /* Put CRC */ ++ bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc); ++ bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff)); ++ bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff)); ++#endif ++ ++ bcsp_slip_msgdelim(nskb); ++ return nskb; ++} ++ ++/* This is a rewrite of pkt_avail in ABCSP */ ++static struct sk_buff *bcsp_dequeue(struct hci_uart *hu) ++{ ++ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv; ++ unsigned long flags; ++ struct sk_buff *skb; ++ ++ /* First of all, check for unreliable messages in the queue, ++ since they have priority */ ++ ++ if ((skb = skb_dequeue(&bcsp->unrel)) != NULL) { ++ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type); ++ if (nskb) { ++ kfree_skb(skb); ++ return nskb; ++ } else { ++ skb_queue_head(&bcsp->unrel, skb); ++ BT_ERR("Could not dequeue pkt because alloc_skb failed"); ++ } ++ } ++ ++ /* Now, try to send a reliable pkt. We can only send a ++ reliable packet if the number of packets sent but not yet ack'ed ++ is < than the winsize */ ++ ++ spin_lock_irqsave(&bcsp->unack.lock, flags); ++ ++ if (bcsp->unack.qlen < BCSP_TXWINSIZE && (skb = skb_dequeue(&bcsp->rel)) != NULL) { ++ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, skb->pkt_type); ++ if (nskb) { ++ __skb_queue_tail(&bcsp->unack, skb); ++ mod_timer(&bcsp->tbcsp, jiffies + HZ / 4); ++ spin_unlock_irqrestore(&bcsp->unack.lock, flags); ++ return nskb; ++ } else { ++ skb_queue_head(&bcsp->rel, skb); ++ BT_ERR("Could not dequeue pkt because alloc_skb failed"); ++ } ++ } ++ ++ spin_unlock_irqrestore(&bcsp->unack.lock, flags); ++ ++ ++ /* We could not send a reliable packet, either because there are ++ none or because there are too many unack'ed pkts. Did we receive ++ any packets we have not acknowledged yet ? */ ++ ++ if (bcsp->txack_req) { ++ /* if so, craft an empty ACK pkt and send it on BCSP unreliable ++ channel 0 */ ++ struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, NULL, 0, BCSP_ACK_PKT); ++ return nskb; ++ } ++ ++ /* We have nothing to send */ ++ return NULL; ++} ++ ++static int bcsp_flush(struct hci_uart *hu) ++{ ++ BT_DBG("hu %p", hu); ++ return 0; ++} ++ ++/* Remove ack'ed packets */ ++static void bcsp_pkt_cull(struct bcsp_struct *bcsp) ++{ ++ unsigned long flags; ++ struct sk_buff *skb; ++ int i, pkts_to_be_removed; ++ u8 seqno; ++ ++ spin_lock_irqsave(&bcsp->unack.lock, flags); ++ ++ pkts_to_be_removed = bcsp->unack.qlen; ++ seqno = bcsp->msgq_txseq; ++ ++ while (pkts_to_be_removed) { ++ if (bcsp->rxack == seqno) ++ break; ++ pkts_to_be_removed--; ++ seqno = (seqno - 1) & 0x07; ++ } ++ ++ if (bcsp->rxack != seqno) ++ BT_ERR("Peer acked invalid packet"); ++ ++ BT_DBG("Removing %u pkts out of %u, up to seqno %u", ++ pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07); ++ ++ for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed ++ && skb != (struct sk_buff *) &bcsp->unack; i++) { ++ struct sk_buff *nskb; ++ ++ nskb = skb->next; ++ __skb_unlink(skb, &bcsp->unack); ++ kfree_skb(skb); ++ skb = nskb; ++ } ++ if (bcsp->unack.qlen == 0) ++ del_timer(&bcsp->tbcsp); ++ spin_unlock_irqrestore(&bcsp->unack.lock, flags); ++ ++ if (i != pkts_to_be_removed) ++ BT_ERR("Removed only %u out of %u pkts", i, pkts_to_be_removed); ++} ++ ++/* Handle BCSP link-establishment packets. When we ++ detect a "sync" packet, symptom that the BT module has reset, ++ we do nothing :) (yet) */ ++static void bcsp_handle_le_pkt(struct hci_uart *hu) ++{ ++ struct bcsp_struct *bcsp = hu->priv; ++ u8 conf_pkt[4] = { 0xad, 0xef, 0xac, 0xed }; ++ u8 conf_rsp_pkt[4] = { 0xde, 0xad, 0xd0, 0xd0 }; ++ u8 sync_pkt[4] = { 0xda, 0xdc, 0xed, 0xed }; ++ ++ /* spot "conf" pkts and reply with a "conf rsp" pkt */ ++ if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 && ++ !memcmp(&bcsp->rx_skb->data[4], conf_pkt, 4)) { ++ struct sk_buff *nskb = alloc_skb(4, GFP_ATOMIC); ++ ++ BT_DBG("Found a LE conf pkt"); ++ if (!nskb) ++ return; ++ memcpy(skb_put(nskb, 4), conf_rsp_pkt, 4); ++ nskb->pkt_type = BCSP_LE_PKT; ++ ++ skb_queue_head(&bcsp->unrel, nskb); ++ hci_uart_tx_wakeup(hu); ++ } ++ /* Spot "sync" pkts. If we find one...disaster! */ ++ else if (bcsp->rx_skb->data[1] >> 4 == 4 && bcsp->rx_skb->data[2] == 0 && ++ !memcmp(&bcsp->rx_skb->data[4], sync_pkt, 4)) { ++ BT_ERR("Found a LE sync pkt, card has reset"); ++ } ++} ++ ++static inline void bcsp_unslip_one_byte(struct bcsp_struct *bcsp, unsigned char byte) ++{ ++ const u8 c0 = 0xc0, db = 0xdb; ++ ++ switch (bcsp->rx_esc_state) { ++ case BCSP_ESCSTATE_NOESC: ++ switch (byte) { ++ case 0xdb: ++ bcsp->rx_esc_state = BCSP_ESCSTATE_ESC; ++ break; ++ default: ++ memcpy(skb_put(bcsp->rx_skb, 1), &byte, 1); ++ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 && ++ bcsp->rx_state != BCSP_W4_CRC) ++ bcsp_crc_update(&bcsp->message_crc, byte); ++ bcsp->rx_count--; ++ } ++ break; ++ ++ case BCSP_ESCSTATE_ESC: ++ switch (byte) { ++ case 0xdc: ++ memcpy(skb_put(bcsp->rx_skb, 1), &c0, 1); ++ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 && ++ bcsp->rx_state != BCSP_W4_CRC) ++ bcsp_crc_update(&bcsp-> message_crc, 0xc0); ++ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC; ++ bcsp->rx_count--; ++ break; ++ ++ case 0xdd: ++ memcpy(skb_put(bcsp->rx_skb, 1), &db, 1); ++ if ((bcsp->rx_skb-> data[0] & 0x40) != 0 && ++ bcsp->rx_state != BCSP_W4_CRC) ++ bcsp_crc_update(&bcsp-> message_crc, 0xdb); ++ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC; ++ bcsp->rx_count--; ++ break; ++ ++ default: ++ BT_ERR ("Invalid byte %02x after esc byte", byte); ++ kfree_skb(bcsp->rx_skb); ++ bcsp->rx_skb = NULL; ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_count = 0; ++ } ++ } ++} ++ ++static inline void bcsp_complete_rx_pkt(struct hci_uart *hu) ++{ ++ struct bcsp_struct *bcsp = hu->priv; ++ int pass_up; ++ ++ if (bcsp->rx_skb->data[0] & 0x80) { /* reliable pkt */ ++ BT_DBG("Received seqno %u from card", bcsp->rxseq_txack); ++ bcsp->rxseq_txack++; ++ bcsp->rxseq_txack %= 0x8; ++ bcsp->txack_req = 1; ++ ++ /* If needed, transmit an ack pkt */ ++ hci_uart_tx_wakeup(hu); ++ } ++ ++ bcsp->rxack = (bcsp->rx_skb->data[0] >> 3) & 0x07; ++ BT_DBG("Request for pkt %u from card", bcsp->rxack); ++ ++ bcsp_pkt_cull(bcsp); ++ if ((bcsp->rx_skb->data[1] & 0x0f) == 6 && ++ bcsp->rx_skb->data[0] & 0x80) { ++ bcsp->rx_skb->pkt_type = HCI_ACLDATA_PKT; ++ pass_up = 1; ++ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 5 && ++ bcsp->rx_skb->data[0] & 0x80) { ++ bcsp->rx_skb->pkt_type = HCI_EVENT_PKT; ++ pass_up = 1; ++ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 7) { ++ bcsp->rx_skb->pkt_type = HCI_SCODATA_PKT; ++ pass_up = 1; ++ } else if ((bcsp->rx_skb->data[1] & 0x0f) == 1 && ++ !(bcsp->rx_skb->data[0] & 0x80)) { ++ bcsp_handle_le_pkt(hu); ++ pass_up = 0; ++ } else ++ pass_up = 0; ++ ++ if (!pass_up) { ++ if ((bcsp->rx_skb->data[1] & 0x0f) != 0 && ++ (bcsp->rx_skb->data[1] & 0x0f) != 1) { ++ BT_ERR ("Packet for unknown channel (%u %s)", ++ bcsp->rx_skb->data[1] & 0x0f, ++ bcsp->rx_skb->data[0] & 0x80 ? ++ "reliable" : "unreliable"); ++ } ++ kfree_skb(bcsp->rx_skb); ++ } else { ++ /* Pull out BCSP hdr */ ++ skb_pull(bcsp->rx_skb, 4); ++ ++ hci_recv_frame(bcsp->rx_skb); ++ } ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_skb = NULL; ++} ++ ++/* Recv data */ ++static int bcsp_recv(struct hci_uart *hu, void *data, int count) ++{ ++ struct bcsp_struct *bcsp = hu->priv; ++ register unsigned char *ptr; ++ ++ BT_DBG("hu %p count %d rx_state %ld rx_count %ld", ++ hu, count, bcsp->rx_state, bcsp->rx_count); ++ ++ ptr = data; ++ while (count) { ++ if (bcsp->rx_count) { ++ if (*ptr == 0xc0) { ++ BT_ERR("Short BCSP packet"); ++ kfree_skb(bcsp->rx_skb); ++ bcsp->rx_state = BCSP_W4_PKT_START; ++ bcsp->rx_count = 0; ++ } else ++ bcsp_unslip_one_byte(bcsp, *ptr); ++ ++ ptr++; count--; ++ continue; ++ } ++ ++ switch (bcsp->rx_state) { ++ case BCSP_W4_BCSP_HDR: ++ if ((0xff & (u8) ~ (bcsp->rx_skb->data[0] + bcsp->rx_skb->data[1] + ++ bcsp->rx_skb->data[2])) != bcsp->rx_skb->data[3]) { ++ BT_ERR("Error in BCSP hdr checksum"); ++ kfree_skb(bcsp->rx_skb); ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_count = 0; ++ continue; ++ } ++ if (bcsp->rx_skb->data[0] & 0x80 /* reliable pkt */ ++ && (bcsp->rx_skb->data[0] & 0x07) != bcsp->rxseq_txack) { ++ BT_ERR ("Out-of-order packet arrived, got %u expected %u", ++ bcsp->rx_skb->data[0] & 0x07, bcsp->rxseq_txack); ++ ++ kfree_skb(bcsp->rx_skb); ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_count = 0; ++ continue; ++ } ++ bcsp->rx_state = BCSP_W4_DATA; ++ bcsp->rx_count = (bcsp->rx_skb->data[1] >> 4) + ++ (bcsp->rx_skb->data[2] << 4); /* May be 0 */ ++ continue; ++ ++ case BCSP_W4_DATA: ++ if (bcsp->rx_skb->data[0] & 0x40) { /* pkt with crc */ ++ bcsp->rx_state = BCSP_W4_CRC; ++ bcsp->rx_count = 2; ++ } else ++ bcsp_complete_rx_pkt(hu); ++ continue; ++ ++ case BCSP_W4_CRC: ++ if (bcsp_crc_reverse(bcsp->message_crc) != ++ (bcsp->rx_skb->data[bcsp->rx_skb->len - 2] << 8) + ++ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]) { ++ ++ BT_ERR ("Checksum failed: computed %04x received %04x", ++ bcsp_crc_reverse(bcsp->message_crc), ++ (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) + ++ bcsp->rx_skb->data[bcsp->rx_skb->len - 1]); ++ ++ kfree_skb(bcsp->rx_skb); ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_count = 0; ++ continue; ++ } ++ skb_trim(bcsp->rx_skb, bcsp->rx_skb->len - 2); ++ bcsp_complete_rx_pkt(hu); ++ continue; ++ ++ case BCSP_W4_PKT_DELIMITER: ++ switch (*ptr) { ++ case 0xc0: ++ bcsp->rx_state = BCSP_W4_PKT_START; ++ break; ++ default: ++ /*BT_ERR("Ignoring byte %02x", *ptr);*/ ++ break; ++ } ++ ptr++; count--; ++ break; ++ ++ case BCSP_W4_PKT_START: ++ switch (*ptr) { ++ case 0xc0: ++ ptr++; count--; ++ break; ++ ++ default: ++ bcsp->rx_state = BCSP_W4_BCSP_HDR; ++ bcsp->rx_count = 4; ++ bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC; ++ BCSP_CRC_INIT(bcsp->message_crc); ++ ++ /* Do not increment ptr or decrement count ++ * Allocate packet. Max len of a BCSP pkt= ++ * 0xFFF (payload) +4 (header) +2 (crc) */ ++ ++ bcsp->rx_skb = bluez_skb_alloc(0x1005, GFP_ATOMIC); ++ if (!bcsp->rx_skb) { ++ BT_ERR("Can't allocate mem for new packet"); ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ bcsp->rx_count = 0; ++ return 0; ++ } ++ bcsp->rx_skb->dev = (void *) &hu->hdev; ++ break; ++ } ++ break; ++ } ++ } ++ return count; ++} ++ ++ /* Arrange to retransmit all messages in the relq. */ ++static void bcsp_timed_event(unsigned long arg) ++{ ++ struct hci_uart *hu = (struct hci_uart *) arg; ++ struct bcsp_struct *bcsp = (struct bcsp_struct *) hu->priv; ++ struct sk_buff *skb; ++ unsigned long flags; ++ ++ BT_DBG("hu %p retransmitting %u pkts", hu, bcsp->unack.qlen); ++ ++ spin_lock_irqsave(&bcsp->unack.lock, flags); ++ ++ while ((skb = __skb_dequeue_tail(&bcsp->unack)) != NULL) { ++ bcsp->msgq_txseq = (bcsp->msgq_txseq - 1) & 0x07; ++ skb_queue_head(&bcsp->rel, skb); ++ } ++ ++ spin_unlock_irqrestore(&bcsp->unack.lock, flags); ++ ++ hci_uart_tx_wakeup(hu); ++} ++ ++static int bcsp_open(struct hci_uart *hu) ++{ ++ struct bcsp_struct *bcsp; ++ ++ BT_DBG("hu %p", hu); ++ ++ bcsp = kmalloc(sizeof(*bcsp), GFP_ATOMIC); ++ if (!bcsp) ++ return -ENOMEM; ++ memset(bcsp, 0, sizeof(*bcsp)); ++ ++ hu->priv = bcsp; ++ skb_queue_head_init(&bcsp->unack); ++ skb_queue_head_init(&bcsp->rel); ++ skb_queue_head_init(&bcsp->unrel); ++ ++ init_timer(&bcsp->tbcsp); ++ bcsp->tbcsp.function = bcsp_timed_event; ++ bcsp->tbcsp.data = (u_long) hu; ++ ++ bcsp->rx_state = BCSP_W4_PKT_DELIMITER; ++ ++ return 0; ++} ++ ++static int bcsp_close(struct hci_uart *hu) ++{ ++ struct bcsp_struct *bcsp = hu->priv; ++ hu->priv = NULL; ++ ++ BT_DBG("hu %p", hu); ++ ++ skb_queue_purge(&bcsp->unack); ++ skb_queue_purge(&bcsp->rel); ++ skb_queue_purge(&bcsp->unrel); ++ del_timer(&bcsp->tbcsp); ++ ++ kfree(bcsp); ++ return 0; ++} ++ ++static struct hci_uart_proto bcsp = { ++ id: HCI_UART_BCSP, ++ open: bcsp_open, ++ close: bcsp_close, ++ enqueue: bcsp_enqueue, ++ dequeue: bcsp_dequeue, ++ recv: bcsp_recv, ++ flush: bcsp_flush ++}; ++ ++int bcsp_init(void) ++{ ++ return hci_uart_register_proto(&bcsp); ++} ++ ++int bcsp_deinit(void) ++{ ++ return hci_uart_unregister_proto(&bcsp); ++} +diff -urN linux-2.4.18/drivers/bluetooth/hci_bcsp.h linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h +--- linux-2.4.18/drivers/bluetooth/hci_bcsp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_bcsp.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,70 @@ ++/* ++ BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ). ++ Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com> ++ ++ Based on ++ hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com> ++ ABCSP by Carl Orsborn <cjo@csr.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $ ++ */ ++ ++#ifndef __HCI_BCSP_H__ ++#define __HCI_BCSP_H__ ++ ++#define BCSP_TXWINSIZE 4 ++ ++#define BCSP_ACK_PKT 0x05 ++#define BCSP_LE_PKT 0x06 ++ ++struct bcsp_struct { ++ struct sk_buff_head unack; /* Unack'ed packets queue */ ++ struct sk_buff_head rel; /* Reliable packets queue */ ++ struct sk_buff_head unrel; /* Unreliable packets queue */ ++ ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++ u8 rxseq_txack; /* rxseq == txack. */ ++ u8 rxack; /* Last packet sent by us that the peer ack'ed */ ++ struct timer_list tbcsp; ++ ++ enum { ++ BCSP_W4_PKT_DELIMITER, ++ BCSP_W4_PKT_START, ++ BCSP_W4_BCSP_HDR, ++ BCSP_W4_DATA, ++ BCSP_W4_CRC ++ } rx_state; ++ ++ enum { ++ BCSP_ESCSTATE_NOESC, ++ BCSP_ESCSTATE_ESC ++ } rx_esc_state; ++ ++ u16 message_crc; ++ u8 txack_req; /* Do we need to send ack's to the peer? */ ++ ++ /* Reliable packet sequence number - used to assign seq to each rel pkt. */ ++ u8 msgq_txseq; ++}; ++ ++#endif /* __HCI_BCSP_H__ */ +diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.c linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c +--- linux-2.4.18/drivers/bluetooth/hci_h4.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,277 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * BlueZ HCI UART(H4) protocol. ++ * ++ * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $ ++ */ ++#define VERSION "1.2" ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/version.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/types.h> ++#include <linux/fcntl.h> ++#include <linux/interrupt.h> ++#include <linux/ptrace.h> ++#include <linux/poll.h> ++ ++#include <linux/slab.h> ++#include <linux/tty.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/signal.h> ++#include <linux/ioctl.h> ++#include <linux/skbuff.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include "hci_uart.h" ++#include "hci_h4.h" ++ ++#ifndef HCI_UART_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#undef BT_DMP ++#define BT_DMP( A... ) ++#endif ++ ++/* Initialize protocol */ ++static int h4_open(struct hci_uart *hu) ++{ ++ struct h4_struct *h4; ++ ++ BT_DBG("hu %p", hu); ++ ++ h4 = kmalloc(sizeof(*h4), GFP_ATOMIC); ++ if (!h4) ++ return -ENOMEM; ++ memset(h4, 0, sizeof(*h4)); ++ ++ skb_queue_head_init(&h4->txq); ++ ++ hu->priv = h4; ++ return 0; ++} ++ ++/* Flush protocol data */ ++static int h4_flush(struct hci_uart *hu) ++{ ++ struct h4_struct *h4 = hu->priv; ++ ++ BT_DBG("hu %p", hu); ++ skb_queue_purge(&h4->txq); ++ return 0; ++} ++ ++/* Close protocol */ ++static int h4_close(struct hci_uart *hu) ++{ ++ struct h4_struct *h4 = hu->priv; ++ hu->priv = NULL; ++ ++ BT_DBG("hu %p", hu); ++ ++ skb_queue_purge(&h4->txq); ++ if (h4->rx_skb) ++ kfree_skb(h4->rx_skb); ++ ++ hu->priv = NULL; ++ kfree(h4); ++ return 0; ++} ++ ++/* Enqueue frame for transmittion (padding, crc, etc) */ ++static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb) ++{ ++ struct h4_struct *h4 = hu->priv; ++ ++ BT_DBG("hu %p skb %p", hu, skb); ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &skb->pkt_type, 1); ++ skb_queue_tail(&h4->txq, skb); ++ return 0; ++} ++ ++static inline int h4_check_data_len(struct h4_struct *h4, int len) ++{ ++ register int room = skb_tailroom(h4->rx_skb); ++ ++ BT_DBG("len %d room %d", len, room); ++ if (!len) { ++ BT_DMP(h4->rx_skb->data, h4->rx_skb->len); ++ hci_recv_frame(h4->rx_skb); ++ } else if (len > room) { ++ BT_ERR("Data length is too large"); ++ kfree_skb(h4->rx_skb); ++ } else { ++ h4->rx_state = H4_W4_DATA; ++ h4->rx_count = len; ++ return len; ++ } ++ ++ h4->rx_state = H4_W4_PACKET_TYPE; ++ h4->rx_skb = NULL; ++ h4->rx_count = 0; ++ return 0; ++} ++ ++/* Recv data */ ++static int h4_recv(struct hci_uart *hu, void *data, int count) ++{ ++ struct h4_struct *h4 = hu->priv; ++ register char *ptr; ++ hci_event_hdr *eh; ++ hci_acl_hdr *ah; ++ hci_sco_hdr *sh; ++ register int len, type, dlen; ++ ++ BT_DBG("hu %p count %d rx_state %ld rx_count %ld", ++ hu, count, h4->rx_state, h4->rx_count); ++ ++ ptr = data; ++ while (count) { ++ if (h4->rx_count) { ++ len = MIN(h4->rx_count, count); ++ memcpy(skb_put(h4->rx_skb, len), ptr, len); ++ h4->rx_count -= len; count -= len; ptr += len; ++ ++ if (h4->rx_count) ++ continue; ++ ++ switch (h4->rx_state) { ++ case H4_W4_DATA: ++ BT_DBG("Complete data"); ++ ++ BT_DMP(h4->rx_skb->data, h4->rx_skb->len); ++ ++ hci_recv_frame(h4->rx_skb); ++ ++ h4->rx_state = H4_W4_PACKET_TYPE; ++ h4->rx_skb = NULL; ++ continue; ++ ++ case H4_W4_EVENT_HDR: ++ eh = (hci_event_hdr *) h4->rx_skb->data; ++ ++ BT_DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen); ++ ++ h4_check_data_len(h4, eh->plen); ++ continue; ++ ++ case H4_W4_ACL_HDR: ++ ah = (hci_acl_hdr *) h4->rx_skb->data; ++ dlen = __le16_to_cpu(ah->dlen); ++ ++ BT_DBG("ACL header: dlen %d", dlen); ++ ++ h4_check_data_len(h4, dlen); ++ continue; ++ ++ case H4_W4_SCO_HDR: ++ sh = (hci_sco_hdr *) h4->rx_skb->data; ++ ++ BT_DBG("SCO header: dlen %d", sh->dlen); ++ ++ h4_check_data_len(h4, sh->dlen); ++ continue; ++ } ++ } ++ ++ /* H4_W4_PACKET_TYPE */ ++ switch (*ptr) { ++ case HCI_EVENT_PKT: ++ BT_DBG("Event packet"); ++ h4->rx_state = H4_W4_EVENT_HDR; ++ h4->rx_count = HCI_EVENT_HDR_SIZE; ++ type = HCI_EVENT_PKT; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ BT_DBG("ACL packet"); ++ h4->rx_state = H4_W4_ACL_HDR; ++ h4->rx_count = HCI_ACL_HDR_SIZE; ++ type = HCI_ACLDATA_PKT; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ BT_DBG("SCO packet"); ++ h4->rx_state = H4_W4_SCO_HDR; ++ h4->rx_count = HCI_SCO_HDR_SIZE; ++ type = HCI_SCODATA_PKT; ++ break; ++ ++ default: ++ BT_ERR("Unknown HCI packet type %2.2x", (__u8)*ptr); ++ hu->hdev.stat.err_rx++; ++ ptr++; count--; ++ continue; ++ }; ++ ptr++; count--; ++ ++ /* Allocate packet */ ++ h4->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC); ++ if (!h4->rx_skb) { ++ BT_ERR("Can't allocate mem for new packet"); ++ h4->rx_state = H4_W4_PACKET_TYPE; ++ h4->rx_count = 0; ++ return 0; ++ } ++ h4->rx_skb->dev = (void *) &hu->hdev; ++ h4->rx_skb->pkt_type = type; ++ } ++ return count; ++} ++ ++static struct sk_buff *h4_dequeue(struct hci_uart *hu) ++{ ++ struct h4_struct *h4 = hu->priv; ++ return skb_dequeue(&h4->txq); ++} ++ ++static struct hci_uart_proto h4p = { ++ id: HCI_UART_H4, ++ open: h4_open, ++ close: h4_close, ++ recv: h4_recv, ++ enqueue: h4_enqueue, ++ dequeue: h4_dequeue, ++ flush: h4_flush, ++}; ++ ++int h4_init(void) ++{ ++ return hci_uart_register_proto(&h4p); ++} ++ ++int h4_deinit(void) ++{ ++ return hci_uart_unregister_proto(&h4p); ++} +diff -urN linux-2.4.18/drivers/bluetooth/hci_h4.h linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h +--- linux-2.4.18/drivers/bluetooth/hci_h4.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_h4.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,44 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $ ++ */ ++ ++#ifdef __KERNEL__ ++struct h4_struct { ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++ struct sk_buff_head txq; ++}; ++ ++/* H4 receiver States */ ++#define H4_W4_PACKET_TYPE 0 ++#define H4_W4_EVENT_HDR 1 ++#define H4_W4_ACL_HDR 2 ++#define H4_W4_SCO_HDR 3 ++#define H4_W4_DATA 4 ++ ++#endif /* __KERNEL__ */ +diff -urN linux-2.4.18/drivers/bluetooth/hci_ldisc.c linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c +--- linux-2.4.18/drivers/bluetooth/hci_ldisc.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_ldisc.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,579 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * BlueZ HCI UART driver. ++ * ++ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $ ++ */ ++#define VERSION "2.1" ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/version.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/types.h> ++#include <linux/fcntl.h> ++#include <linux/interrupt.h> ++#include <linux/ptrace.h> ++#include <linux/poll.h> ++ ++#include <linux/slab.h> ++#include <linux/tty.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/signal.h> ++#include <linux/ioctl.h> ++#include <linux/skbuff.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include "hci_uart.h" ++ ++#ifndef HCI_UART_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#undef BT_DMP ++#define BT_DMP( A... ) ++#endif ++ ++static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO]; ++ ++int hci_uart_register_proto(struct hci_uart_proto *p) ++{ ++ if (p->id >= HCI_UART_MAX_PROTO) ++ return -EINVAL; ++ ++ if (hup[p->id]) ++ return -EEXIST; ++ ++ hup[p->id] = p; ++ return 0; ++} ++ ++int hci_uart_unregister_proto(struct hci_uart_proto *p) ++{ ++ if (p->id >= HCI_UART_MAX_PROTO) ++ return -EINVAL; ++ ++ if (!hup[p->id]) ++ return -EINVAL; ++ ++ hup[p->id] = NULL; ++ return 0; ++} ++ ++static struct hci_uart_proto *hci_uart_get_proto(unsigned int id) ++{ ++ if (id >= HCI_UART_MAX_PROTO) ++ return NULL; ++ return hup[id]; ++} ++ ++static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type) ++{ ++ struct hci_dev *hdev = &hu->hdev; ++ ++ /* Update HCI stat counters */ ++ switch (pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ } ++} ++ ++static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu) ++{ ++ struct sk_buff *skb = hu->tx_skb; ++ if (!skb) ++ skb = hu->proto->dequeue(hu); ++ else ++ hu->tx_skb = NULL; ++ return skb; ++} ++ ++int hci_uart_tx_wakeup(struct hci_uart *hu) ++{ ++ struct tty_struct *tty = hu->tty; ++ struct hci_dev *hdev = &hu->hdev; ++ struct sk_buff *skb; ++ ++ if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) { ++ set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); ++ return 0; ++ } ++ ++ BT_DBG(""); ++ ++restart: ++ clear_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); ++ ++ while ((skb = hci_uart_dequeue(hu))) { ++ int len; ++ ++ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); ++ len = tty->driver.write(tty, 0, skb->data, skb->len); ++ hdev->stat.byte_tx += len; ++ ++ skb_pull(skb, len); ++ if (skb->len) { ++ hu->tx_skb = skb; ++ break; ++ } ++ ++ hci_uart_tx_complete(hu, skb->pkt_type); ++ kfree_skb(skb); ++ } ++ ++ if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)) ++ goto restart; ++ ++ clear_bit(HCI_UART_SENDING, &hu->tx_state); ++ return 0; ++} ++ ++/* ------- Interface to HCI layer ------ */ ++/* Initialize device */ ++static int hci_uart_open(struct hci_dev *hdev) ++{ ++ BT_DBG("%s %p", hdev->name, hdev); ++ ++ /* Nothing to do for UART driver */ ++ ++ set_bit(HCI_RUNNING, &hdev->flags); ++ return 0; ++} ++ ++/* Reset device */ ++static int hci_uart_flush(struct hci_dev *hdev) ++{ ++ struct hci_uart *hu = (struct hci_uart *) hdev->driver_data; ++ struct tty_struct *tty = hu->tty; ++ ++ BT_DBG("hdev %p tty %p", hdev, tty); ++ ++ if (hu->tx_skb) { ++ kfree_skb(hu->tx_skb); hu->tx_skb = NULL; ++ } ++ ++ /* Flush any pending characters in the driver and discipline. */ ++ if (tty->ldisc.flush_buffer) ++ tty->ldisc.flush_buffer(tty); ++ ++ if (tty->driver.flush_buffer) ++ tty->driver.flush_buffer(tty); ++ ++ if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) ++ hu->proto->flush(hu); ++ ++ return 0; ++} ++ ++/* Close device */ ++static int hci_uart_close(struct hci_dev *hdev) ++{ ++ BT_DBG("hdev %p", hdev); ++ ++ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; ++ ++ hci_uart_flush(hdev); ++ return 0; ++} ++ ++/* Send frames from HCI layer */ ++static int hci_uart_send_frame(struct sk_buff *skb) ++{ ++ struct hci_dev* hdev = (struct hci_dev *) skb->dev; ++ struct tty_struct *tty; ++ struct hci_uart *hu; ++ ++ if (!hdev) { ++ BT_ERR("Frame for uknown device (hdev=NULL)"); ++ return -ENODEV; ++ } ++ ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) ++ return -EBUSY; ++ ++ hu = (struct hci_uart *) hdev->driver_data; ++ tty = hu->tty; ++ ++ BT_DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len); ++ ++ hu->proto->enqueue(hu, skb); ++ ++ hci_uart_tx_wakeup(hu); ++ return 0; ++} ++ ++static void hci_uart_destruct(struct hci_dev *hdev) ++{ ++ struct hci_uart *hu; ++ ++ if (!hdev) return; ++ ++ BT_DBG("%s", hdev->name); ++ ++ hu = (struct hci_uart *) hdev->driver_data; ++ kfree(hu); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++/* ------ LDISC part ------ */ ++/* hci_uart_tty_open ++ * ++ * Called when line discipline changed to HCI_UART. ++ * ++ * Arguments: ++ * tty pointer to tty info structure ++ * Return Value: ++ * 0 if success, otherwise error code ++ */ ++static int hci_uart_tty_open(struct tty_struct *tty) ++{ ++ struct hci_uart *hu = (void *) tty->disc_data; ++ ++ BT_DBG("tty %p", tty); ++ ++ if (hu) ++ return -EEXIST; ++ ++ if (!(hu = kmalloc(sizeof(struct hci_uart), GFP_KERNEL))) { ++ BT_ERR("Can't allocate controll structure"); ++ return -ENFILE; ++ } ++ memset(hu, 0, sizeof(struct hci_uart)); ++ ++ tty->disc_data = hu; ++ hu->tty = tty; ++ ++ spin_lock_init(&hu->rx_lock); ++ ++ /* Flush any pending characters in the driver and line discipline */ ++ if (tty->ldisc.flush_buffer) ++ tty->ldisc.flush_buffer(tty); ++ ++ if (tty->driver.flush_buffer) ++ tty->driver.flush_buffer(tty); ++ ++ MOD_INC_USE_COUNT; ++ return 0; ++} ++ ++/* hci_uart_tty_close() ++ * ++ * Called when the line discipline is changed to something ++ * else, the tty is closed, or the tty detects a hangup. ++ */ ++static void hci_uart_tty_close(struct tty_struct *tty) ++{ ++ struct hci_uart *hu = (void *)tty->disc_data; ++ ++ BT_DBG("tty %p", tty); ++ ++ /* Detach from the tty */ ++ tty->disc_data = NULL; ++ ++ if (hu) { ++ struct hci_dev *hdev = &hu->hdev; ++ hci_uart_close(hdev); ++ ++ if (test_and_clear_bit(HCI_UART_PROTO_SET, &hu->flags)) { ++ hu->proto->close(hu); ++ hci_unregister_dev(hdev); ++ } ++ ++ MOD_DEC_USE_COUNT; ++ } ++} ++ ++/* hci_uart_tty_wakeup() ++ * ++ * Callback for transmit wakeup. Called when low level ++ * device driver can accept more send data. ++ * ++ * Arguments: tty pointer to associated tty instance data ++ * Return Value: None ++ */ ++static void hci_uart_tty_wakeup(struct tty_struct *tty) ++{ ++ struct hci_uart *hu = (void *)tty->disc_data; ++ ++ BT_DBG(""); ++ ++ if (!hu) ++ return; ++ ++ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); ++ ++ if (tty != hu->tty) ++ return; ++ ++ if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) ++ hci_uart_tx_wakeup(hu); ++} ++ ++/* hci_uart_tty_room() ++ * ++ * Callback function from tty driver. Return the amount of ++ * space left in the receiver's buffer to decide if remote ++ * transmitter is to be throttled. ++ * ++ * Arguments: tty pointer to associated tty instance data ++ * Return Value: number of bytes left in receive buffer ++ */ ++static int hci_uart_tty_room (struct tty_struct *tty) ++{ ++ return 65536; ++} ++ ++/* hci_uart_tty_receive() ++ * ++ * Called by tty low level driver when receive data is ++ * available. ++ * ++ * Arguments: tty pointer to tty isntance data ++ * data pointer to received data ++ * flags pointer to flags for data ++ * count count of received data in bytes ++ * ++ * Return Value: None ++ */ ++static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count) ++{ ++ struct hci_uart *hu = (void *)tty->disc_data; ++ ++ if (!hu || tty != hu->tty) ++ return; ++ ++ if (!test_bit(HCI_UART_PROTO_SET, &hu->flags)) ++ return; ++ ++ spin_lock(&hu->rx_lock); ++ hu->proto->recv(hu, (void *) data, count); ++ hu->hdev.stat.byte_rx += count; ++ spin_unlock(&hu->rx_lock); ++ ++ if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle) ++ tty->driver.unthrottle(tty); ++} ++ ++static int hci_uart_register_dev(struct hci_uart *hu) ++{ ++ struct hci_dev *hdev; ++ ++ BT_DBG(""); ++ ++ /* Initialize and register HCI device */ ++ hdev = &hu->hdev; ++ ++ hdev->type = HCI_UART; ++ hdev->driver_data = hu; ++ ++ hdev->open = hci_uart_open; ++ hdev->close = hci_uart_close; ++ hdev->flush = hci_uart_flush; ++ hdev->send = hci_uart_send_frame; ++ hdev->destruct = hci_uart_destruct; ++ ++ if (hci_register_dev(hdev) < 0) { ++ BT_ERR("Can't register HCI device %s", hdev->name); ++ return -ENODEV; ++ } ++ MOD_INC_USE_COUNT; ++ return 0; ++} ++ ++static int hci_uart_set_proto(struct hci_uart *hu, int id) ++{ ++ struct hci_uart_proto *p; ++ int err; ++ ++ p = hci_uart_get_proto(id); ++ if (!p) ++ return -EPROTONOSUPPORT; ++ ++ err = p->open(hu); ++ if (err) ++ return err; ++ ++ hu->proto = p; ++ ++ err = hci_uart_register_dev(hu); ++ if (err) { ++ p->close(hu); ++ return err; ++ } ++ return 0; ++} ++ ++/* hci_uart_tty_ioctl() ++ * ++ * Process IOCTL system call for the tty device. ++ * ++ * Arguments: ++ * ++ * tty pointer to tty instance data ++ * file pointer to open file object for device ++ * cmd IOCTL command code ++ * arg argument for IOCTL call (cmd dependent) ++ * ++ * Return Value: Command dependent ++ */ ++static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file, ++ unsigned int cmd, unsigned long arg) ++{ ++ struct hci_uart *hu = (void *)tty->disc_data; ++ int err = 0; ++ ++ BT_DBG(""); ++ ++ /* Verify the status of the device */ ++ if (!hu) ++ return -EBADF; ++ ++ switch (cmd) { ++ case HCIUARTSETPROTO: ++ if (!test_and_set_bit(HCI_UART_PROTO_SET, &hu->flags)) { ++ err = hci_uart_set_proto(hu, arg); ++ if (err) { ++ clear_bit(HCI_UART_PROTO_SET, &hu->flags); ++ return err; ++ } ++ tty->low_latency = 1; ++ } else ++ return -EBUSY; ++ ++ case HCIUARTGETPROTO: ++ if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) ++ return hu->proto->id; ++ return -EUNATCH; ++ ++ default: ++ err = n_tty_ioctl(tty, file, cmd, arg); ++ break; ++ }; ++ ++ return err; ++} ++ ++/* ++ * We don't provide read/write/poll interface for user space. ++ */ ++static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr) ++{ ++ return 0; ++} ++static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count) ++{ ++ return 0; ++} ++static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait) ++{ ++ return 0; ++} ++ ++#ifdef CONFIG_BLUEZ_HCIUART_H4 ++int h4_init(void); ++int h4_deinit(void); ++#endif ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP ++int bcsp_init(void); ++int bcsp_deinit(void); ++#endif ++ ++int __init hci_uart_init(void) ++{ ++ static struct tty_ldisc hci_uart_ldisc; ++ int err; ++ ++ BT_INFO("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", ++ VERSION); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ ++ /* Register the tty discipline */ ++ ++ memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc)); ++ hci_uart_ldisc.magic = TTY_LDISC_MAGIC; ++ hci_uart_ldisc.name = "n_hci"; ++ hci_uart_ldisc.open = hci_uart_tty_open; ++ hci_uart_ldisc.close = hci_uart_tty_close; ++ hci_uart_ldisc.read = hci_uart_tty_read; ++ hci_uart_ldisc.write = hci_uart_tty_write; ++ hci_uart_ldisc.ioctl = hci_uart_tty_ioctl; ++ hci_uart_ldisc.poll = hci_uart_tty_poll; ++ hci_uart_ldisc.receive_room= hci_uart_tty_room; ++ hci_uart_ldisc.receive_buf = hci_uart_tty_receive; ++ hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup; ++ ++ if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) { ++ BT_ERR("Can't register HCI line discipline (%d)", err); ++ return err; ++ } ++ ++#ifdef CONFIG_BLUEZ_HCIUART_H4 ++ h4_init(); ++#endif ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP ++ bcsp_init(); ++#endif ++ ++ return 0; ++} ++ ++void hci_uart_cleanup(void) ++{ ++ int err; ++ ++#ifdef CONFIG_BLUEZ_HCIUART_H4 ++ h4_deinit(); ++#endif ++#ifdef CONFIG_BLUEZ_HCIUART_BCSP ++ bcsp_deinit(); ++#endif ++ ++ /* Release tty registration of line discipline */ ++ if ((err = tty_register_ldisc(N_HCI, NULL))) ++ BT_ERR("Can't unregister HCI line discipline (%d)", err); ++} ++ ++module_init(hci_uart_init); ++module_exit(hci_uart_cleanup); ++ ++MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); ++MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.c linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c +--- linux-2.4.18/drivers/bluetooth/hci_uart.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,580 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * BlueZ HCI UART driver. +- * +- * $Id: hci_uart.c,v 1.5 2001/07/05 18:42:44 maxk Exp $ +- */ +-#define VERSION "1.0" +- +-#include <linux/config.h> +-#include <linux/module.h> +- +-#include <linux/version.h> +-#include <linux/config.h> +-#include <linux/kernel.h> +-#include <linux/init.h> +-#include <linux/sched.h> +-#include <linux/types.h> +-#include <linux/fcntl.h> +-#include <linux/interrupt.h> +-#include <linux/ptrace.h> +-#include <linux/poll.h> +- +-#include <linux/slab.h> +-#include <linux/tty.h> +-#include <linux/errno.h> +-#include <linux/string.h> +-#include <linux/signal.h> +-#include <linux/ioctl.h> +-#include <linux/skbuff.h> +- +-#include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> +-#include <net/bluetooth/hci_core.h> +-#include <net/bluetooth/hci_uart.h> +- +-#ifndef HCI_UART_DEBUG +-#undef DBG +-#define DBG( A... ) +-#undef DMP +-#define DMP( A... ) +-#endif +- +-/* ------- Interface to HCI layer ------ */ +-/* Initialize device */ +-int n_hci_open(struct hci_dev *hdev) +-{ +- DBG("%s %p", hdev->name, hdev); +- +- /* Nothing to do for UART driver */ +- +- hdev->flags |= HCI_RUNNING; +- +- return 0; +-} +- +-/* Reset device */ +-int n_hci_flush(struct hci_dev *hdev) +-{ +- struct n_hci *n_hci = (struct n_hci *) hdev->driver_data; +- struct tty_struct *tty = n_hci->tty; +- +- DBG("hdev %p tty %p", hdev, tty); +- +- /* Drop TX queue */ +- skb_queue_purge(&n_hci->txq); +- +- /* Flush any pending characters in the driver and discipline. */ +- if (tty->ldisc.flush_buffer) +- tty->ldisc.flush_buffer(tty); +- +- if (tty->driver.flush_buffer) +- tty->driver.flush_buffer(tty); +- +- return 0; +-} +- +-/* Close device */ +-int n_hci_close(struct hci_dev *hdev) +-{ +- DBG("hdev %p", hdev); +- +- hdev->flags &= ~HCI_RUNNING; +- +- n_hci_flush(hdev); +- +- return 0; +-} +- +-int n_hci_tx_wakeup(struct n_hci *n_hci) +-{ +- register struct tty_struct *tty = n_hci->tty; +- +- if (test_and_set_bit(TRANS_SENDING, &n_hci->tx_state)) { +- set_bit(TRANS_WAKEUP, &n_hci->tx_state); +- return 0; +- } +- +- DBG(""); +- do { +- register struct sk_buff *skb; +- register int len; +- +- clear_bit(TRANS_WAKEUP, &n_hci->tx_state); +- +- if (!(skb = skb_dequeue(&n_hci->txq))) +- break; +- +- DMP(skb->data, skb->len); +- +- /* Send frame to TTY driver */ +- tty->flags |= (1 << TTY_DO_WRITE_WAKEUP); +- len = tty->driver.write(tty, 0, skb->data, skb->len); +- +- n_hci->hdev.stat.byte_tx += len; +- +- DBG("sent %d", len); +- +- if (len == skb->len) { +- /* Full frame was sent */ +- kfree_skb(skb); +- } else { +- /* Subtract sent part and requeue */ +- skb_pull(skb, len); +- skb_queue_head(&n_hci->txq, skb); +- } +- } while (test_bit(TRANS_WAKEUP, &n_hci->tx_state)); +- clear_bit(TRANS_SENDING, &n_hci->tx_state); +- +- return 0; +-} +- +-/* Send frames from HCI layer */ +-int n_hci_send_frame(struct sk_buff *skb) +-{ +- struct hci_dev* hdev = (struct hci_dev *) skb->dev; +- struct tty_struct *tty; +- struct n_hci *n_hci; +- +- if (!hdev) { +- ERR("Frame for uknown device (hdev=NULL)"); +- return -ENODEV; +- } +- +- if (!(hdev->flags & HCI_RUNNING)) +- return -EBUSY; +- +- n_hci = (struct n_hci *) hdev->driver_data; +- tty = n_hci2tty(n_hci); +- +- DBG("%s: type %d len %d", hdev->name, skb->pkt_type, skb->len); +- +- switch (skb->pkt_type) { +- case HCI_COMMAND_PKT: +- hdev->stat.cmd_tx++; +- break; +- +- case HCI_ACLDATA_PKT: +- hdev->stat.acl_tx++; +- break; +- +- case HCI_SCODATA_PKT: +- hdev->stat.cmd_tx++; +- break; +- }; +- +- /* Prepend skb with frame type and queue */ +- memcpy(skb_push(skb, 1), &skb->pkt_type, 1); +- skb_queue_tail(&n_hci->txq, skb); +- +- n_hci_tx_wakeup(n_hci); +- +- return 0; +-} +- +-/* ------ LDISC part ------ */ +- +-/* n_hci_tty_open +- * +- * Called when line discipline changed to N_HCI. +- * +- * Arguments: +- * tty pointer to tty info structure +- * Return Value: +- * 0 if success, otherwise error code +- */ +-static int n_hci_tty_open(struct tty_struct *tty) +-{ +- struct n_hci *n_hci = tty2n_hci(tty); +- struct hci_dev *hdev; +- +- DBG("tty %p", tty); +- +- if (n_hci) +- return -EEXIST; +- +- if (!(n_hci = kmalloc(sizeof(struct n_hci), GFP_KERNEL))) { +- ERR("Can't allocate controll structure"); +- return -ENFILE; +- } +- memset(n_hci, 0, sizeof(struct n_hci)); +- +- /* Initialize and register HCI device */ +- hdev = &n_hci->hdev; +- +- hdev->type = HCI_UART; +- hdev->driver_data = n_hci; +- +- hdev->open = n_hci_open; +- hdev->close = n_hci_close; +- hdev->flush = n_hci_flush; +- hdev->send = n_hci_send_frame; +- +- if (hci_register_dev(hdev) < 0) { +- ERR("Can't register HCI device %s", hdev->name); +- kfree(n_hci); +- return -ENODEV; +- } +- +- tty->disc_data = n_hci; +- n_hci->tty = tty; +- +- spin_lock_init(&n_hci->rx_lock); +- n_hci->rx_state = WAIT_PACKET_TYPE; +- +- skb_queue_head_init(&n_hci->txq); +- +- MOD_INC_USE_COUNT; +- +- /* Flush any pending characters in the driver and discipline. */ +- if (tty->ldisc.flush_buffer) +- tty->ldisc.flush_buffer(tty); +- +- if (tty->driver.flush_buffer) +- tty->driver.flush_buffer(tty); +- +- return 0; +-} +- +-/* n_hci_tty_close() +- * +- * Called when the line discipline is changed to something +- * else, the tty is closed, or the tty detects a hangup. +- */ +-static void n_hci_tty_close(struct tty_struct *tty) +-{ +- struct n_hci *n_hci = tty2n_hci(tty); +- struct hci_dev *hdev = &n_hci->hdev; +- +- DBG("tty %p hdev %p", tty, hdev); +- +- if (n_hci != NULL) { +- n_hci_close(hdev); +- +- if (hci_unregister_dev(hdev) < 0) { +- ERR("Can't unregister HCI device %s",hdev->name); +- } +- +- hdev->driver_data = NULL; +- tty->disc_data = NULL; +- kfree(n_hci); +- +- MOD_DEC_USE_COUNT; +- } +-} +- +-/* n_hci_tty_wakeup() +- * +- * Callback for transmit wakeup. Called when low level +- * device driver can accept more send data. +- * +- * Arguments: tty pointer to associated tty instance data +- * Return Value: None +- */ +-static void n_hci_tty_wakeup( struct tty_struct *tty ) +-{ +- struct n_hci *n_hci = tty2n_hci(tty); +- +- DBG(""); +- +- if (!n_hci) +- return; +- +- tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); +- +- if (tty != n_hci->tty) +- return; +- +- n_hci_tx_wakeup(n_hci); +-} +- +-/* n_hci_tty_room() +- * +- * Callback function from tty driver. Return the amount of +- * space left in the receiver's buffer to decide if remote +- * transmitter is to be throttled. +- * +- * Arguments: tty pointer to associated tty instance data +- * Return Value: number of bytes left in receive buffer +- */ +-static int n_hci_tty_room (struct tty_struct *tty) +-{ +- return 65536; +-} +- +-static inline int n_hci_check_data_len(struct n_hci *n_hci, int len) +-{ +- register int room = skb_tailroom(n_hci->rx_skb); +- +- DBG("len %d room %d", len, room); +- if (!len) { +- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len); +- hci_recv_frame(n_hci->rx_skb); +- } else if (len > room) { +- ERR("Data length is to large"); +- kfree_skb(n_hci->rx_skb); +- n_hci->hdev.stat.err_rx++; +- } else { +- n_hci->rx_state = WAIT_DATA; +- n_hci->rx_count = len; +- return len; +- } +- +- n_hci->rx_state = WAIT_PACKET_TYPE; +- n_hci->rx_skb = NULL; +- n_hci->rx_count = 0; +- return 0; +-} +- +-static inline void n_hci_rx(struct n_hci *n_hci, const __u8 * data, char *flags, int count) +-{ +- register const char *ptr; +- hci_event_hdr *eh; +- hci_acl_hdr *ah; +- hci_sco_hdr *sh; +- register int len, type, dlen; +- +- DBG("count %d state %ld rx_count %ld", count, n_hci->rx_state, n_hci->rx_count); +- +- n_hci->hdev.stat.byte_rx += count; +- +- ptr = data; +- while (count) { +- if (n_hci->rx_count) { +- len = MIN(n_hci->rx_count, count); +- memcpy(skb_put(n_hci->rx_skb, len), ptr, len); +- n_hci->rx_count -= len; count -= len; ptr += len; +- +- if (n_hci->rx_count) +- continue; +- +- switch (n_hci->rx_state) { +- case WAIT_DATA: +- DBG("Complete data"); +- +- DMP(n_hci->rx_skb->data, n_hci->rx_skb->len); +- +- hci_recv_frame(n_hci->rx_skb); +- +- n_hci->rx_state = WAIT_PACKET_TYPE; +- n_hci->rx_skb = NULL; +- continue; +- +- case WAIT_EVENT_HDR: +- eh = (hci_event_hdr *) n_hci->rx_skb->data; +- +- DBG("Event header: evt 0x%2.2x plen %d", eh->evt, eh->plen); +- +- n_hci_check_data_len(n_hci, eh->plen); +- continue; +- +- case WAIT_ACL_HDR: +- ah = (hci_acl_hdr *) n_hci->rx_skb->data; +- dlen = __le16_to_cpu(ah->dlen); +- +- DBG("ACL header: dlen %d", dlen); +- +- n_hci_check_data_len(n_hci, dlen); +- continue; +- +- case WAIT_SCO_HDR: +- sh = (hci_sco_hdr *) n_hci->rx_skb->data; +- +- DBG("SCO header: dlen %d", sh->dlen); +- +- n_hci_check_data_len(n_hci, sh->dlen); +- continue; +- }; +- } +- +- /* WAIT_PACKET_TYPE */ +- switch (*ptr) { +- case HCI_EVENT_PKT: +- DBG("Event packet"); +- n_hci->rx_state = WAIT_EVENT_HDR; +- n_hci->rx_count = HCI_EVENT_HDR_SIZE; +- type = HCI_EVENT_PKT; +- break; +- +- case HCI_ACLDATA_PKT: +- DBG("ACL packet"); +- n_hci->rx_state = WAIT_ACL_HDR; +- n_hci->rx_count = HCI_ACL_HDR_SIZE; +- type = HCI_ACLDATA_PKT; +- break; +- +- case HCI_SCODATA_PKT: +- DBG("SCO packet"); +- n_hci->rx_state = WAIT_SCO_HDR; +- n_hci->rx_count = HCI_SCO_HDR_SIZE; +- type = HCI_SCODATA_PKT; +- break; +- +- default: +- ERR("Unknown HCI packet type %2.2x", (__u8)*ptr); +- n_hci->hdev.stat.err_rx++; +- ptr++; count--; +- continue; +- }; +- ptr++; count--; +- +- /* Allocate packet */ +- if (!(n_hci->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { +- ERR("Can't allocate mem for new packet"); +- +- n_hci->rx_state = WAIT_PACKET_TYPE; +- n_hci->rx_count = 0; +- return; +- } +- n_hci->rx_skb->dev = (void *) &n_hci->hdev; +- n_hci->rx_skb->pkt_type = type; +- } +-} +- +-/* n_hci_tty_receive() +- * +- * Called by tty low level driver when receive data is +- * available. +- * +- * Arguments: tty pointer to tty isntance data +- * data pointer to received data +- * flags pointer to flags for data +- * count count of received data in bytes +- * +- * Return Value: None +- */ +-static void n_hci_tty_receive(struct tty_struct *tty, const __u8 * data, char *flags, int count) +-{ +- struct n_hci *n_hci = tty2n_hci(tty); +- +- if (!n_hci || tty != n_hci->tty) +- return; +- +- spin_lock(&n_hci->rx_lock); +- n_hci_rx(n_hci, data, flags, count); +- spin_unlock(&n_hci->rx_lock); +- +- if (test_and_clear_bit(TTY_THROTTLED,&tty->flags) && tty->driver.unthrottle) +- tty->driver.unthrottle(tty); +-} +- +-/* n_hci_tty_ioctl() +- * +- * Process IOCTL system call for the tty device. +- * +- * Arguments: +- * +- * tty pointer to tty instance data +- * file pointer to open file object for device +- * cmd IOCTL command code +- * arg argument for IOCTL call (cmd dependent) +- * +- * Return Value: Command dependent +- */ +-static int n_hci_tty_ioctl (struct tty_struct *tty, struct file * file, +- unsigned int cmd, unsigned long arg) +-{ +- struct n_hci *n_hci = tty2n_hci(tty); +- int error = 0; +- +- DBG(""); +- +- /* Verify the status of the device */ +- if (!n_hci) +- return -EBADF; +- +- switch (cmd) { +- default: +- error = n_tty_ioctl(tty, file, cmd, arg); +- break; +- }; +- +- return error; +-} +- +-/* +- * We don't provide read/write/poll interface for user space. +- */ +-static ssize_t n_hci_tty_read(struct tty_struct *tty, struct file *file, unsigned char *buf, size_t nr) +-{ +- return 0; +-} +-static ssize_t n_hci_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count) +-{ +- return 0; +-} +-static unsigned int n_hci_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait) +-{ +- return 0; +-} +- +-int __init n_hci_init(void) +-{ +- static struct tty_ldisc n_hci_ldisc; +- int err; +- +- INF("BlueZ HCI UART driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", +- VERSION); +- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); +- +- /* Register the tty discipline */ +- +- memset(&n_hci_ldisc, 0, sizeof (n_hci_ldisc)); +- n_hci_ldisc.magic = TTY_LDISC_MAGIC; +- n_hci_ldisc.name = "n_hci"; +- n_hci_ldisc.open = n_hci_tty_open; +- n_hci_ldisc.close = n_hci_tty_close; +- n_hci_ldisc.read = n_hci_tty_read; +- n_hci_ldisc.write = n_hci_tty_write; +- n_hci_ldisc.ioctl = n_hci_tty_ioctl; +- n_hci_ldisc.poll = n_hci_tty_poll; +- n_hci_ldisc.receive_room= n_hci_tty_room; +- n_hci_ldisc.receive_buf = n_hci_tty_receive; +- n_hci_ldisc.write_wakeup= n_hci_tty_wakeup; +- +- if ((err = tty_register_ldisc(N_HCI, &n_hci_ldisc))) { +- ERR("Can't register HCI line discipline (%d)", err); +- return err; +- } +- +- return 0; +-} +- +-void n_hci_cleanup(void) +-{ +- int err; +- +- /* Release tty registration of line discipline */ +- if ((err = tty_register_ldisc(N_HCI, NULL))) +- ERR("Can't unregister HCI line discipline (%d)", err); +-} +- +-module_init(n_hci_init); +-module_exit(n_hci_cleanup); +- +-MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); +-MODULE_DESCRIPTION("BlueZ HCI UART driver ver " VERSION); +-MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/drivers/bluetooth/hci_uart.h linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h +--- linux-2.4.18/drivers/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_uart.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,82 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $ ++ */ ++ ++#ifndef N_HCI ++#define N_HCI 15 ++#endif ++ ++/* Ioctls */ ++#define HCIUARTSETPROTO _IOW('U', 200, int) ++#define HCIUARTGETPROTO _IOR('U', 201, int) ++ ++/* UART protocols */ ++#define HCI_UART_MAX_PROTO 4 ++ ++#define HCI_UART_H4 0 ++#define HCI_UART_BCSP 1 ++#define HCI_UART_3WIRE 2 ++#define HCI_UART_H4DS 3 ++ ++#ifdef __KERNEL__ ++struct hci_uart; ++ ++struct hci_uart_proto { ++ unsigned int id; ++ int (*open)(struct hci_uart *hu); ++ int (*close)(struct hci_uart *hu); ++ int (*flush)(struct hci_uart *hu); ++ int (*recv)(struct hci_uart *hu, void *data, int len); ++ int (*enqueue)(struct hci_uart *hu, struct sk_buff *skb); ++ struct sk_buff *(*dequeue)(struct hci_uart *hu); ++}; ++ ++struct hci_uart { ++ struct tty_struct *tty; ++ struct hci_dev hdev; ++ unsigned long flags; ++ ++ struct hci_uart_proto *proto; ++ void *priv; ++ ++ struct sk_buff *tx_skb; ++ unsigned long tx_state; ++ spinlock_t rx_lock; ++}; ++ ++/* HCI_UART flag bits */ ++#define HCI_UART_PROTO_SET 0 ++ ++/* TX states */ ++#define HCI_UART_SENDING 1 ++#define HCI_UART_TX_WAKEUP 2 ++ ++int hci_uart_register_proto(struct hci_uart_proto *p); ++int hci_uart_unregister_proto(struct hci_uart_proto *p); ++int hci_uart_tx_wakeup(struct hci_uart *hu); ++ ++#endif /* __KERNEL__ */ +diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.c linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c +--- linux-2.4.18/drivers/bluetooth/hci_usb.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.c 2004-08-01 16:26:23.000000000 +0200 +@@ -1,9 +1,10 @@ + /* +- BlueZ - Bluetooth protocol stack for Linux ++ HCI USB driver for Linux Bluetooth protocol stack (BlueZ) + Copyright (C) 2000-2001 Qualcomm Incorporated +- + Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> + ++ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com> ++ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation; +@@ -23,598 +24,938 @@ + */ + + /* +- * BlueZ HCI USB driver. + * Based on original USB Bluetooth driver for Linux kernel + * Copyright (c) 2000 Greg Kroah-Hartman <greg@kroah.com> + * Copyright (c) 2000 Mark Douglas Corner <mcorner@umich.edu> + * +- * $Id: hci_usb.c,v 1.5 2001/07/05 18:42:44 maxk Exp $ ++ * $Id: hci_usb.c,v 1.8 2002/07/18 17:23:09 maxk Exp $ + */ +-#define VERSION "1.0" ++#define VERSION "2.7" + + #include <linux/config.h> + #include <linux/module.h> + + #include <linux/version.h> +-#include <linux/config.h> + #include <linux/kernel.h> + #include <linux/init.h> + #include <linux/sched.h> ++#include <linux/unistd.h> + #include <linux/types.h> +-#include <linux/fcntl.h> + #include <linux/interrupt.h> +-#include <linux/ptrace.h> +-#include <linux/poll.h> + + #include <linux/slab.h> +-#include <linux/tty.h> + #include <linux/errno.h> + #include <linux/string.h> +-#include <linux/signal.h> +-#include <linux/ioctl.h> + #include <linux/skbuff.h> + + #include <linux/usb.h> + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> + #include <net/bluetooth/hci_core.h> +-#include <net/bluetooth/hci_usb.h> ++ ++#include "hci_usb.h" + + #ifndef HCI_USB_DEBUG +-#undef DBG +-#define DBG( A... ) +-#undef DMP +-#define DMP( A... ) ++#undef BT_DBG ++#define BT_DBG( A... ) ++#undef BT_DMP ++#define BT_DMP( A... ) + #endif + +-static struct usb_device_id usb_bluetooth_ids [] = { ++#ifndef CONFIG_BLUEZ_HCIUSB_ZERO_PACKET ++#undef USB_ZERO_PACKET ++#define USB_ZERO_PACKET 0 ++#endif ++ ++static struct usb_driver hci_usb_driver; ++ ++static struct usb_device_id bluetooth_ids[] = { ++ /* Generic Bluetooth USB device */ + { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) }, ++ ++ /* AVM BlueFRITZ! USB v2.0 */ ++ { USB_DEVICE(0x057c, 0x3800) }, ++ ++ /* Bluetooth Ultraport Module from IBM */ ++ { USB_DEVICE(0x04bf, 0x030a) }, ++ ++ /* ALPS Modules with non-standard id */ ++ { USB_DEVICE(0x044e, 0x3001) }, ++ { USB_DEVICE(0x044e, 0x3002) }, ++ ++ /* Ericsson with non-standard id */ ++ { USB_DEVICE(0x0bdb, 0x1002) }, ++ + { } /* Terminating entry */ + }; + +-MODULE_DEVICE_TABLE (usb, usb_bluetooth_ids); ++MODULE_DEVICE_TABLE (usb, bluetooth_ids); + +-static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb); +-static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb); ++static struct usb_device_id blacklist_ids[] = { ++ /* Broadcom BCM2033 without firmware */ ++ { USB_DEVICE(0x0a5c, 0x2033), driver_info: HCI_IGNORE }, + +-static void hci_usb_unlink_urbs(struct hci_usb *husb) ++ /* Broadcom BCM2035 */ ++ { USB_DEVICE(0x0a5c, 0x200a), driver_info: HCI_RESET }, ++ ++ /* ISSC Bluetooth Adapter v3.1 */ ++ { USB_DEVICE(0x1131, 0x1001), driver_info: HCI_RESET }, ++ ++ /* Digianswer device */ ++ { USB_DEVICE(0x08fd, 0x0001), driver_info: HCI_DIGIANSWER }, ++ ++ /* RTX Telecom based adapter with buggy SCO support */ ++ { USB_DEVICE(0x0400, 0x0807), driver_info: HCI_BROKEN_ISOC }, ++ ++ { } /* Terminating entry */ ++}; ++ ++struct _urb *_urb_alloc(int isoc, int gfp) + { +- usb_unlink_urb(husb->read_urb); +- usb_unlink_urb(husb->intr_urb); +- usb_unlink_urb(husb->ctrl_urb); +- usb_unlink_urb(husb->write_urb); ++ struct _urb *_urb = kmalloc(sizeof(struct _urb) + ++ sizeof(iso_packet_descriptor_t) * isoc, gfp); ++ if (_urb) { ++ memset(_urb, 0, sizeof(*_urb)); ++ spin_lock_init(&_urb->urb.lock); ++ } ++ return _urb; ++} ++ ++struct _urb *_urb_dequeue(struct _urb_queue *q) ++{ ++ struct _urb *_urb = NULL; ++ unsigned long flags; ++ spin_lock_irqsave(&q->lock, flags); ++ { ++ struct list_head *head = &q->head; ++ struct list_head *next = head->next; ++ if (next != head) { ++ _urb = list_entry(next, struct _urb, list); ++ list_del(next); _urb->queue = NULL; ++ } ++ } ++ spin_unlock_irqrestore(&q->lock, flags); ++ return _urb; + } + +-static void hci_usb_free_bufs(struct hci_usb *husb) ++static void hci_usb_rx_complete(struct urb *urb); ++static void hci_usb_tx_complete(struct urb *urb); ++ ++#define __pending_tx(husb, type) (&husb->pending_tx[type-1]) ++#define __pending_q(husb, type) (&husb->pending_q[type-1]) ++#define __completed_q(husb, type) (&husb->completed_q[type-1]) ++#define __transmit_q(husb, type) (&husb->transmit_q[type-1]) ++#define __reassembly(husb, type) (husb->reassembly[type-1]) ++ ++static inline struct _urb *__get_completed(struct hci_usb *husb, int type) + { +- if (husb->read_urb) { +- if (husb->read_urb->transfer_buffer) +- kfree(husb->read_urb->transfer_buffer); +- usb_free_urb(husb->read_urb); +- } ++ return _urb_dequeue(__completed_q(husb, type)); ++} + +- if (husb->intr_urb) { +- if (husb->intr_urb->transfer_buffer) +- kfree(husb->intr_urb->transfer_buffer); +- usb_free_urb(husb->intr_urb); ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++static void __fill_isoc_desc(struct urb *urb, int len, int mtu) ++{ ++ int offset = 0, i; ++ ++ BT_DBG("len %d mtu %d", len, mtu); ++ ++ for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) { ++ urb->iso_frame_desc[i].offset = offset; ++ urb->iso_frame_desc[i].length = mtu; ++ BT_DBG("desc %d offset %d len %d", i, offset, mtu); ++ } ++ if (len && i < HCI_MAX_ISOC_FRAMES) { ++ urb->iso_frame_desc[i].offset = offset; ++ urb->iso_frame_desc[i].length = len; ++ BT_DBG("desc %d offset %d len %d", i, offset, len); ++ i++; + } ++ urb->number_of_packets = i; ++} ++#endif + +- if (husb->ctrl_urb) +- usb_free_urb(husb->ctrl_urb); ++static int hci_usb_intr_rx_submit(struct hci_usb *husb) ++{ ++ struct _urb *_urb; ++ struct urb *urb; ++ int err, pipe, interval, size; ++ void *buf; ++ ++ BT_DBG("%s", husb->hdev.name); ++ ++ size = husb->intr_in_ep->wMaxPacketSize; ++ ++ buf = kmalloc(size, GFP_ATOMIC); ++ if (!buf) ++ return -ENOMEM; ++ ++ _urb = _urb_alloc(0, GFP_ATOMIC); ++ if (!_urb) { ++ kfree(buf); ++ return -ENOMEM; ++ } ++ _urb->type = HCI_EVENT_PKT; ++ _urb_queue_tail(__pending_q(husb, _urb->type), _urb); ++ ++ urb = &_urb->urb; ++ pipe = usb_rcvintpipe(husb->udev, husb->intr_in_ep->bEndpointAddress); ++ interval = husb->intr_in_ep->bInterval; ++ FILL_INT_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval); ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s intr rx submit failed urb %p err %d", ++ husb->hdev.name, urb, err); ++ _urb_unlink(_urb); ++ _urb_free(_urb); ++ kfree(buf); ++ } ++ return err; ++} + +- if (husb->write_urb) +- usb_free_urb(husb->write_urb); ++static int hci_usb_bulk_rx_submit(struct hci_usb *husb) ++{ ++ struct _urb *_urb; ++ struct urb *urb; ++ int err, pipe, size = HCI_MAX_FRAME_SIZE; ++ void *buf; ++ ++ buf = kmalloc(size, GFP_ATOMIC); ++ if (!buf) ++ return -ENOMEM; ++ ++ _urb = _urb_alloc(0, GFP_ATOMIC); ++ if (!_urb) { ++ kfree(buf); ++ return -ENOMEM; ++ } ++ _urb->type = HCI_ACLDATA_PKT; ++ _urb_queue_tail(__pending_q(husb, _urb->type), _urb); ++ ++ urb = &_urb->urb; ++ pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->bEndpointAddress); ++ FILL_BULK_URB(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb); ++ urb->transfer_flags = USB_QUEUE_BULK; ++ ++ BT_DBG("%s urb %p", husb->hdev.name, urb); ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s bulk rx submit failed urb %p err %d", ++ husb->hdev.name, urb, err); ++ _urb_unlink(_urb); ++ _urb_free(_urb); ++ kfree(buf); ++ } ++ return err; ++} + +- if (husb->intr_skb) +- kfree_skb(husb->intr_skb); ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++static int hci_usb_isoc_rx_submit(struct hci_usb *husb) ++{ ++ struct _urb *_urb; ++ struct urb *urb; ++ int err, mtu, size; ++ void *buf; ++ ++ mtu = husb->isoc_in_ep->wMaxPacketSize; ++ size = mtu * HCI_MAX_ISOC_FRAMES; ++ ++ buf = kmalloc(size, GFP_ATOMIC); ++ if (!buf) ++ return -ENOMEM; ++ ++ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC); ++ if (!_urb) { ++ kfree(buf); ++ return -ENOMEM; ++ } ++ _urb->type = HCI_SCODATA_PKT; ++ _urb_queue_tail(__pending_q(husb, _urb->type), _urb); ++ ++ urb = &_urb->urb; ++ ++ urb->context = husb; ++ urb->dev = husb->udev; ++ urb->pipe = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->bEndpointAddress); ++ urb->complete = hci_usb_rx_complete; ++ ++ urb->transfer_buffer_length = size; ++ urb->transfer_buffer = buf; ++ urb->transfer_flags = USB_ISO_ASAP; ++ ++ __fill_isoc_desc(urb, size, mtu); ++ ++ BT_DBG("%s urb %p", husb->hdev.name, urb); ++ ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s isoc rx submit failed urb %p err %d", ++ husb->hdev.name, urb, err); ++ _urb_unlink(_urb); ++ _urb_free(_urb); ++ kfree(buf); ++ } ++ return err; + } ++#endif + +-/* ------- Interface to HCI layer ------ */ + /* Initialize device */ +-int hci_usb_open(struct hci_dev *hdev) ++static int hci_usb_open(struct hci_dev *hdev) + { + struct hci_usb *husb = (struct hci_usb *) hdev->driver_data; +- int status; ++ int i, err; ++ unsigned long flags; ++ ++ BT_DBG("%s", hdev->name); + +- DBG("%s", hdev->name); ++ if (test_and_set_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; + +- husb->read_urb->dev = husb->udev; +- if ((status = usb_submit_urb(husb->read_urb))) +- DBG("read submit failed. %d", status); ++ MOD_INC_USE_COUNT; + +- husb->intr_urb->dev = husb->udev; +- if ((status = usb_submit_urb(husb->intr_urb))) +- DBG("interrupt submit failed. %d", status); ++ write_lock_irqsave(&husb->completion_lock, flags); + +- hdev->flags |= HCI_RUNNING; ++ err = hci_usb_intr_rx_submit(husb); ++ if (!err) { ++ for (i = 0; i < HCI_MAX_BULK_RX; i++) ++ hci_usb_bulk_rx_submit(husb); ++ ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ if (husb->isoc_iface) ++ for (i = 0; i < HCI_MAX_ISOC_RX; i++) ++ hci_usb_isoc_rx_submit(husb); ++#endif ++ } else { ++ clear_bit(HCI_RUNNING, &hdev->flags); ++ MOD_DEC_USE_COUNT; ++ } + +- return 0; ++ write_unlock_irqrestore(&husb->completion_lock, flags); ++ return err; + } + + /* Reset device */ +-int hci_usb_flush(struct hci_dev *hdev) ++static int hci_usb_flush(struct hci_dev *hdev) + { + struct hci_usb *husb = (struct hci_usb *) hdev->driver_data; ++ int i; + +- DBG("%s", hdev->name); +- +- /* Drop TX queues */ +- skb_queue_purge(&husb->tx_ctrl_q); +- skb_queue_purge(&husb->tx_write_q); ++ BT_DBG("%s", hdev->name); + ++ for (i=0; i < 4; i++) ++ skb_queue_purge(&husb->transmit_q[i]); + return 0; + } + +-/* Close device */ +-int hci_usb_close(struct hci_dev *hdev) ++static void hci_usb_unlink_urbs(struct hci_usb *husb) + { +- struct hci_usb *husb = (struct hci_usb *) hdev->driver_data; ++ int i; + +- DBG("%s", hdev->name); ++ BT_DBG("%s", husb->hdev.name); + +- hdev->flags &= ~HCI_RUNNING; +- hci_usb_unlink_urbs(husb); ++ for (i=0; i < 4; i++) { ++ struct _urb *_urb; ++ struct urb *urb; ++ ++ /* Kill pending requests */ ++ while ((_urb = _urb_dequeue(&husb->pending_q[i]))) { ++ urb = &_urb->urb; ++ BT_DBG("%s unlinking _urb %p type %d urb %p", ++ husb->hdev.name, _urb, _urb->type, urb); ++ usb_unlink_urb(urb); ++ _urb_queue_tail(__completed_q(husb, _urb->type), _urb); ++ } + +- hci_usb_flush(hdev); ++ /* Release completed requests */ ++ while ((_urb = _urb_dequeue(&husb->completed_q[i]))) { ++ urb = &_urb->urb; ++ BT_DBG("%s freeing _urb %p type %d urb %p", ++ husb->hdev.name, _urb, _urb->type, urb); ++ if (urb->setup_packet) ++ kfree(urb->setup_packet); ++ if (urb->transfer_buffer) ++ kfree(urb->transfer_buffer); ++ _urb_free(_urb); ++ } + +- return 0; ++ /* Release reassembly buffers */ ++ if (husb->reassembly[i]) { ++ kfree_skb(husb->reassembly[i]); ++ husb->reassembly[i] = NULL; ++ } ++ } + } + +-void hci_usb_ctrl_wakeup(struct hci_usb *husb) ++/* Close device */ ++static int hci_usb_close(struct hci_dev *hdev) + { +- struct sk_buff *skb; ++ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data; ++ unsigned long flags; ++ ++ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; + +- if (test_and_set_bit(HCI_TX_CTRL, &husb->tx_state)) +- return; ++ BT_DBG("%s", hdev->name); + +- DBG("%s", husb->hdev.name); ++ write_lock_irqsave(&husb->completion_lock, flags); ++ ++ hci_usb_unlink_urbs(husb); ++ hci_usb_flush(hdev); + +- if (!(skb = skb_dequeue(&husb->tx_ctrl_q))) +- goto done; ++ write_unlock_irqrestore(&husb->completion_lock, flags); + +- if (hci_usb_ctrl_msg(husb, skb)){ +- kfree_skb(skb); +- goto done; +- } ++ MOD_DEC_USE_COUNT; ++ return 0; ++} + +- DMP(skb->data, skb->len); ++static int __tx_submit(struct hci_usb *husb, struct _urb *_urb) ++{ ++ struct urb *urb = &_urb->urb; ++ int err; + +- husb->hdev.stat.byte_tx += skb->len; +- return; ++ BT_DBG("%s urb %p type %d", husb->hdev.name, urb, _urb->type); ++ ++ _urb_queue_tail(__pending_q(husb, _urb->type), _urb); ++ err = usb_submit_urb(urb); ++ if (err) { ++ BT_ERR("%s tx submit failed urb %p type %d err %d", ++ husb->hdev.name, urb, _urb->type, err); ++ _urb_unlink(_urb); ++ _urb_queue_tail(__completed_q(husb, _urb->type), _urb); ++ } else ++ atomic_inc(__pending_tx(husb, _urb->type)); + +-done: +- clear_bit(HCI_TX_CTRL, &husb->tx_state); +- return; ++ return err; + } + +-void hci_usb_write_wakeup(struct hci_usb *husb) ++static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb) + { +- struct sk_buff *skb; ++ struct _urb *_urb = __get_completed(husb, skb->pkt_type); ++ devrequest *dr; ++ struct urb *urb; ++ ++ if (!_urb) { ++ _urb = _urb_alloc(0, GFP_ATOMIC); ++ if (!_urb) ++ return -ENOMEM; ++ _urb->type = skb->pkt_type; ++ ++ dr = kmalloc(sizeof(*dr), GFP_ATOMIC); ++ if (!dr) { ++ _urb_free(_urb); ++ return -ENOMEM; ++ } ++ } else ++ dr = (void *) _urb->urb.setup_packet; + +- if (test_and_set_bit(HCI_TX_WRITE, &husb->tx_state)) +- return; ++ dr->requesttype = husb->ctrl_req; ++ dr->request = 0; ++ dr->index = 0; ++ dr->value = 0; ++ dr->length = __cpu_to_le16(skb->len); + +- DBG("%s", husb->hdev.name); ++ urb = &_urb->urb; ++ FILL_CONTROL_URB(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0), ++ (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb); + +- if (!(skb = skb_dequeue(&husb->tx_write_q))) +- goto done; ++ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len); ++ ++ _urb->priv = skb; ++ return __tx_submit(husb, _urb); ++} + +- if (hci_usb_write_msg(husb, skb)) { +- skb_queue_head(&husb->tx_write_q, skb); +- goto done; ++static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb) ++{ ++ struct _urb *_urb = __get_completed(husb, skb->pkt_type); ++ struct urb *urb; ++ int pipe; ++ ++ if (!_urb) { ++ _urb = _urb_alloc(0, GFP_ATOMIC); ++ if (!_urb) ++ return -ENOMEM; ++ _urb->type = skb->pkt_type; + } + +- DMP(skb->data, skb->len); ++ urb = &_urb->urb; ++ pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->bEndpointAddress); ++ FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len, ++ hci_usb_tx_complete, husb); ++ urb->transfer_flags = USB_QUEUE_BULK | USB_ZERO_PACKET; + +- husb->hdev.stat.byte_tx += skb->len; +- return; ++ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len); + +-done: +- clear_bit(HCI_TX_WRITE, &husb->tx_state); +- return; ++ _urb->priv = skb; ++ return __tx_submit(husb, _urb); + } + +-/* Send frames from HCI layer */ +-int hci_usb_send_frame(struct sk_buff *skb) ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb) + { +- struct hci_dev *hdev = (struct hci_dev *) skb->dev; +- struct hci_usb *husb; +- +- if (!hdev) { +- ERR("frame for uknown device (hdev=NULL)"); +- return -ENODEV; ++ struct _urb *_urb = __get_completed(husb, skb->pkt_type); ++ struct urb *urb; ++ ++ if (!_urb) { ++ _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC); ++ if (!_urb) ++ return -ENOMEM; ++ _urb->type = skb->pkt_type; + } + +- if (!(hdev->flags & HCI_RUNNING)) +- return 0; ++ BT_DBG("%s skb %p len %d", husb->hdev.name, skb, skb->len); + +- husb = (struct hci_usb *) hdev->driver_data; ++ urb = &_urb->urb; ++ ++ urb->context = husb; ++ urb->dev = husb->udev; ++ urb->pipe = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->bEndpointAddress); ++ urb->complete = hci_usb_tx_complete; ++ urb->transfer_flags = USB_ISO_ASAP; + +- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); ++ urb->transfer_buffer = skb->data; ++ urb->transfer_buffer_length = skb->len; ++ ++ __fill_isoc_desc(urb, skb->len, husb->isoc_out_ep->wMaxPacketSize); + +- switch (skb->pkt_type) { +- case HCI_COMMAND_PKT: +- skb_queue_tail(&husb->tx_ctrl_q, skb); +- hci_usb_ctrl_wakeup(husb); +- hdev->stat.cmd_tx++; +- return 0; +- +- case HCI_ACLDATA_PKT: +- skb_queue_tail(&husb->tx_write_q, skb); +- hci_usb_write_wakeup(husb); +- hdev->stat.acl_tx++; +- return 0; +- +- case HCI_SCODATA_PKT: +- return -EOPNOTSUPP; +- }; +- +- return 0; ++ _urb->priv = skb; ++ return __tx_submit(husb, _urb); + } ++#endif + +-/* ---------- USB ------------- */ +- +-static void hci_usb_ctrl(struct urb *urb) ++static void hci_usb_tx_process(struct hci_usb *husb) + { +- struct sk_buff *skb = (struct sk_buff *) urb->context; +- struct hci_dev *hdev; +- struct hci_usb *husb; ++ struct sk_buff_head *q; ++ struct sk_buff *skb; + +- if (!skb) +- return; +- hdev = (struct hci_dev *) skb->dev; +- husb = (struct hci_usb *) hdev->driver_data; ++ BT_DBG("%s", husb->hdev.name); + +- DBG("%s", hdev->name); ++ do { ++ clear_bit(HCI_USB_TX_WAKEUP, &husb->state); + +- if (urb->status) +- DBG("%s ctrl status: %d", hdev->name, urb->status); ++ /* Process command queue */ ++ q = __transmit_q(husb, HCI_COMMAND_PKT); ++ if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) && ++ (skb = skb_dequeue(q))) { ++ if (hci_usb_send_ctrl(husb, skb) < 0) ++ skb_queue_head(q, skb); ++ } + +- clear_bit(HCI_TX_CTRL, &husb->tx_state); +- kfree_skb(skb); ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ /* Process SCO queue */ ++ q = __transmit_q(husb, HCI_SCODATA_PKT); ++ if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX && ++ (skb = skb_dequeue(q))) { ++ if (hci_usb_send_isoc(husb, skb) < 0) ++ skb_queue_head(q, skb); ++ } ++#endif ++ ++ /* Process ACL queue */ ++ q = __transmit_q(husb, HCI_ACLDATA_PKT); ++ while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX && ++ (skb = skb_dequeue(q))) { ++ if (hci_usb_send_bulk(husb, skb) < 0) { ++ skb_queue_head(q, skb); ++ break; ++ } ++ } ++ } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state)); ++} + +- /* Wake up device */ +- hci_usb_ctrl_wakeup(husb); ++static inline void hci_usb_tx_wakeup(struct hci_usb *husb) ++{ ++ /* Serialize TX queue processing to avoid data reordering */ ++ if (!test_and_set_bit(HCI_USB_TX_PROCESS, &husb->state)) { ++ hci_usb_tx_process(husb); ++ clear_bit(HCI_USB_TX_PROCESS, &husb->state); ++ } else ++ set_bit(HCI_USB_TX_WAKEUP, &husb->state); + } + +-static void hci_usb_bulk_write(struct urb *urb) ++/* Send frames from HCI layer */ ++static int hci_usb_send_frame(struct sk_buff *skb) + { +- struct sk_buff *skb = (struct sk_buff *) urb->context; +- struct hci_dev *hdev; ++ struct hci_dev *hdev = (struct hci_dev *) skb->dev; + struct hci_usb *husb; + +- if (!skb) +- return; +- hdev = (struct hci_dev *) skb->dev; +- husb = (struct hci_usb *) hdev->driver_data; ++ if (!hdev) { ++ BT_ERR("frame for uknown device (hdev=NULL)"); ++ return -ENODEV; ++ } + +- DBG("%s", hdev->name); ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) ++ return -EBUSY; + +- if (urb->status) +- DBG("%s bulk write status: %d", hdev->name, urb->status); ++ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); + +- clear_bit(HCI_TX_WRITE, &husb->tx_state); +- kfree_skb(skb); ++ husb = (struct hci_usb *) hdev->driver_data; + +- /* Wake up device */ +- hci_usb_write_wakeup(husb); ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++#endif + +- return; +-} ++ default: ++ kfree_skb(skb); ++ return 0; ++ } + +-static void hci_usb_intr(struct urb *urb) +-{ +- struct hci_usb *husb = (struct hci_usb *) urb->context; +- unsigned char *data = urb->transfer_buffer; +- register int count = urb->actual_length; +- register struct sk_buff *skb = husb->intr_skb; +- hci_event_hdr *eh; +- register int len; ++ read_lock(&husb->completion_lock); + +- if (!husb) +- return; ++ skb_queue_tail(__transmit_q(husb, skb->pkt_type), skb); ++ hci_usb_tx_wakeup(husb); + +- DBG("%s count %d", husb->hdev.name, count); ++ read_unlock(&husb->completion_lock); ++ return 0; ++} + +- if (urb->status || !count) { +- DBG("%s intr status %d, count %d", husb->hdev.name, urb->status, count); +- return; +- } ++static inline int __recv_frame(struct hci_usb *husb, int type, void *data, int count) ++{ ++ BT_DBG("%s type %d data %p count %d", husb->hdev.name, type, data, count); + +- /* Do we really have to handle continuations here ? */ +- if (!skb) { +- /* New frame */ +- if (count < HCI_EVENT_HDR_SIZE) { +- DBG("%s bad frame len %d", husb->hdev.name, count); +- return; +- } ++ husb->hdev.stat.byte_rx += count; + +- eh = (hci_event_hdr *) data; +- len = eh->plen + HCI_EVENT_HDR_SIZE; ++ while (count) { ++ struct sk_buff *skb = __reassembly(husb, type); ++ struct { int expect; } *scb; ++ int len = 0; ++ ++ if (!skb) { ++ /* Start of the frame */ ++ ++ switch (type) { ++ case HCI_EVENT_PKT: ++ if (count >= HCI_EVENT_HDR_SIZE) { ++ hci_event_hdr *h = data; ++ len = HCI_EVENT_HDR_SIZE + h->plen; ++ } else ++ return -EILSEQ; ++ break; + +- if (count > len) { +- DBG("%s corrupted frame, len %d", husb->hdev.name, count); +- return; +- } ++ case HCI_ACLDATA_PKT: ++ if (count >= HCI_ACL_HDR_SIZE) { ++ hci_acl_hdr *h = data; ++ len = HCI_ACL_HDR_SIZE + __le16_to_cpu(h->dlen); ++ } else ++ return -EILSEQ; ++ break; ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ case HCI_SCODATA_PKT: ++ if (count >= HCI_SCO_HDR_SIZE) { ++ hci_sco_hdr *h = data; ++ len = HCI_SCO_HDR_SIZE + h->dlen; ++ } else ++ return -EILSEQ; ++ break; ++#endif ++ } ++ BT_DBG("new packet len %d", len); + +- /* Allocate skb */ +- if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) { +- ERR("Can't allocate mem for new packet"); +- return; ++ skb = bluez_skb_alloc(len, GFP_ATOMIC); ++ if (!skb) { ++ BT_ERR("%s no memory for the packet", husb->hdev.name); ++ return -ENOMEM; ++ } ++ skb->dev = (void *) &husb->hdev; ++ skb->pkt_type = type; ++ ++ __reassembly(husb, type) = skb; ++ ++ scb = (void *) skb->cb; ++ scb->expect = len; ++ } else { ++ /* Continuation */ ++ scb = (void *) skb->cb; ++ len = scb->expect; + } +- skb->dev = (void *) &husb->hdev; +- skb->pkt_type = HCI_EVENT_PKT; +- +- husb->intr_skb = skb; +- husb->intr_count = len; +- } else { +- /* Continuation */ +- if (count > husb->intr_count) { +- ERR("%s bad frame len %d (expected %d)", husb->hdev.name, count, husb->intr_count); + +- kfree_skb(skb); +- husb->intr_skb = NULL; +- husb->intr_count = 0; +- return; ++ len = min(len, count); ++ ++ memcpy(skb_put(skb, len), data, len); ++ ++ scb->expect -= len; ++ if (!scb->expect) { ++ /* Complete frame */ ++ __reassembly(husb, type) = NULL; ++ hci_recv_frame(skb); + } +- } +- +- memcpy(skb_put(skb, count), data, count); +- husb->intr_count -= count; +- +- DMP(data, count); +- +- if (!husb->intr_count) { +- /* Got complete frame */ + +- husb->hdev.stat.byte_rx += skb->len; +- hci_recv_frame(skb); +- +- husb->intr_skb = NULL; ++ count -= len; data += len; + } ++ return 0; + } + +-static void hci_usb_bulk_read(struct urb *urb) ++static void hci_usb_rx_complete(struct urb *urb) + { +- struct hci_usb *husb = (struct hci_usb *) urb->context; +- unsigned char *data = urb->transfer_buffer; +- int count = urb->actual_length, status; +- struct sk_buff *skb; +- hci_acl_hdr *ah; +- register __u16 dlen; +- +- if (!husb) +- return; ++ struct _urb *_urb = container_of(urb, struct _urb, urb); ++ struct hci_usb *husb = (void *) urb->context; ++ struct hci_dev *hdev = &husb->hdev; ++ int err, count = urb->actual_length; + +- DBG("%s status %d, count %d, flags %x", husb->hdev.name, urb->status, count, urb->transfer_flags); ++ BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb, ++ _urb->type, urb->status, count, urb->transfer_flags); + +- if (urb->status) { +- /* Do not re-submit URB on critical errors */ +- switch (urb->status) { +- case -ENOENT: +- return; +- default: +- goto resubmit; +- }; +- } +- if (!count) +- goto resubmit; +- +- DMP(data, count); ++ read_lock(&husb->completion_lock); + +- ah = (hci_acl_hdr *) data; +- dlen = le16_to_cpu(ah->dlen); ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) ++ goto unlock; + +- /* Verify frame len and completeness */ +- if ((count - HCI_ACL_HDR_SIZE) != dlen) { +- ERR("%s corrupted ACL packet: count %d, plen %d", husb->hdev.name, count, dlen); ++ if (urb->status || !count) + goto resubmit; +- } + +- /* Allocate packet */ +- if (!(skb = bluez_skb_alloc(count, GFP_ATOMIC))) { +- ERR("Can't allocate mem for new packet"); +- goto resubmit; ++ if (_urb->type == HCI_SCODATA_PKT) { ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ int i; ++ for (i=0; i < urb->number_of_packets; i++) { ++ BT_DBG("desc %d status %d offset %d len %d", i, ++ urb->iso_frame_desc[i].status, ++ urb->iso_frame_desc[i].offset, ++ urb->iso_frame_desc[i].actual_length); ++ ++ if (!urb->iso_frame_desc[i].status) ++ __recv_frame(husb, _urb->type, ++ urb->transfer_buffer + urb->iso_frame_desc[i].offset, ++ urb->iso_frame_desc[i].actual_length); ++ } ++#else ++ ; ++#endif ++ } else { ++ err = __recv_frame(husb, _urb->type, urb->transfer_buffer, count); ++ if (err < 0) { ++ BT_ERR("%s corrupted packet: type %d count %d", ++ husb->hdev.name, _urb->type, count); ++ hdev->stat.err_rx++; ++ } + } + +- memcpy(skb_put(skb, count), data, count); +- skb->dev = (void *) &husb->hdev; +- skb->pkt_type = HCI_ACLDATA_PKT; +- +- husb->hdev.stat.byte_rx += skb->len; +- +- hci_recv_frame(skb); +- + resubmit: +- husb->read_urb->dev = husb->udev; +- if ((status = usb_submit_urb(husb->read_urb))) +- DBG("%s read URB submit failed %d", husb->hdev.name, status); ++ if (_urb->type != HCI_EVENT_PKT) { ++ urb->dev = husb->udev; ++ err = usb_submit_urb(urb); ++ BT_DBG("%s urb %p type %d resubmit status %d", hdev->name, urb, ++ _urb->type, err); ++ } + +- DBG("%s read URB re-submited", husb->hdev.name); ++unlock: ++ read_unlock(&husb->completion_lock); + } + +-static int hci_usb_ctrl_msg(struct hci_usb *husb, struct sk_buff *skb) ++static void hci_usb_tx_complete(struct urb *urb) + { +- struct urb *urb = husb->ctrl_urb; +- devrequest *dr = &husb->dev_req; +- int pipe, status; ++ struct _urb *_urb = container_of(urb, struct _urb, urb); ++ struct hci_usb *husb = (void *) urb->context; ++ struct hci_dev *hdev = &husb->hdev; + +- DBG("%s len %d", husb->hdev.name, skb->len); ++ BT_DBG("%s urb %p status %d flags %x", hdev->name, urb, ++ urb->status, urb->transfer_flags); + +- pipe = usb_sndctrlpipe(husb->udev, 0); ++ atomic_dec(__pending_tx(husb, _urb->type)); + +- dr->requesttype = HCI_CTRL_REQ; +- dr->request = 0; +- dr->index = 0; +- dr->value = 0; +- dr->length = cpu_to_le16(skb->len); +- +- FILL_CONTROL_URB(urb, husb->udev, pipe, (void*)dr, skb->data, skb->len, +- hci_usb_ctrl, skb); ++ urb->transfer_buffer = NULL; ++ kfree_skb((struct sk_buff *) _urb->priv); + +- if ((status = usb_submit_urb(urb))) { +- DBG("%s control URB submit failed %d", husb->hdev.name, status); +- return status; +- } ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) ++ return; + +- return 0; +-} ++ if (!urb->status) ++ hdev->stat.byte_tx += urb->transfer_buffer_length; ++ else ++ hdev->stat.err_tx++; + +-static int hci_usb_write_msg(struct hci_usb *husb, struct sk_buff *skb) +-{ +- struct urb *urb = husb->write_urb; +- int pipe, status; ++ read_lock(&husb->completion_lock); + +- DBG("%s len %d", husb->hdev.name, skb->len); ++ _urb_unlink(_urb); ++ _urb_queue_tail(__completed_q(husb, _urb->type), _urb); + +- pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep_addr); ++ hci_usb_tx_wakeup(husb); ++ ++ read_unlock(&husb->completion_lock); ++} + +- FILL_BULK_URB(urb, husb->udev, pipe, skb->data, skb->len, +- hci_usb_bulk_write, skb); +- urb->transfer_flags |= USB_QUEUE_BULK; ++static void hci_usb_destruct(struct hci_dev *hdev) ++{ ++ struct hci_usb *husb = (struct hci_usb *) hdev->driver_data; + +- if ((status = usb_submit_urb(urb))) { +- DBG("%s write URB submit failed %d", husb->hdev.name, status); +- return status; +- } ++ BT_DBG("%s", hdev->name); + +- return 0; ++ kfree(husb); + } + +-static void * hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id) ++static void *hci_usb_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id) + { +- struct usb_endpoint_descriptor *bulk_out_ep, *intr_in_ep, *bulk_in_ep; ++ struct usb_endpoint_descriptor *bulk_out_ep[HCI_MAX_IFACE_NUM]; ++ struct usb_endpoint_descriptor *isoc_out_ep[HCI_MAX_IFACE_NUM]; ++ struct usb_endpoint_descriptor *bulk_in_ep[HCI_MAX_IFACE_NUM]; ++ struct usb_endpoint_descriptor *isoc_in_ep[HCI_MAX_IFACE_NUM]; ++ struct usb_endpoint_descriptor *intr_in_ep[HCI_MAX_IFACE_NUM]; + struct usb_interface_descriptor *uif; + struct usb_endpoint_descriptor *ep; ++ struct usb_interface *iface, *isoc_iface; + struct hci_usb *husb; + struct hci_dev *hdev; +- int i, size, pipe; +- __u8 * buf; ++ int i, a, e, size, ifn, isoc_ifnum, isoc_alts; + +- DBG("udev %p ifnum %d", udev, ifnum); ++ BT_DBG("udev %p ifnum %d", udev, ifnum); + +- /* Check device signature */ +- if ((udev->descriptor.bDeviceClass != HCI_DEV_CLASS) || +- (udev->descriptor.bDeviceSubClass != HCI_DEV_SUBCLASS)|| +- (udev->descriptor.bDeviceProtocol != HCI_DEV_PROTOCOL) ) +- return NULL; ++ iface = &udev->actconfig->interface[0]; + +- MOD_INC_USE_COUNT; +- +- uif = &udev->actconfig->interface[ifnum].altsetting[0]; ++ if (!id->driver_info) { ++ const struct usb_device_id *match; ++ match = usb_match_id(udev, iface, blacklist_ids); ++ if (match) ++ id = match; ++ } + +- if (uif->bNumEndpoints != 3) { +- DBG("Wrong number of endpoints %d", uif->bNumEndpoints); +- MOD_DEC_USE_COUNT; ++ if (id->driver_info & HCI_IGNORE) + return NULL; +- } + +- bulk_out_ep = intr_in_ep = bulk_in_ep = NULL; ++ /* Check number of endpoints */ ++ if (udev->actconfig->interface[ifnum].altsetting[0].bNumEndpoints < 3) ++ return NULL; + ++ memset(bulk_out_ep, 0, sizeof(bulk_out_ep)); ++ memset(isoc_out_ep, 0, sizeof(isoc_out_ep)); ++ memset(bulk_in_ep, 0, sizeof(bulk_in_ep)); ++ memset(isoc_in_ep, 0, sizeof(isoc_in_ep)); ++ memset(intr_in_ep, 0, sizeof(intr_in_ep)); ++ ++ size = 0; ++ isoc_iface = NULL; ++ isoc_alts = isoc_ifnum = 0; ++ + /* Find endpoints that we need */ +- for ( i = 0; i < uif->bNumEndpoints; ++i) { +- ep = &uif->endpoint[i]; + +- switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { +- case USB_ENDPOINT_XFER_BULK: +- if (ep->bEndpointAddress & USB_DIR_IN) +- bulk_in_ep = ep; +- else +- bulk_out_ep = ep; +- break; ++ ifn = MIN(udev->actconfig->bNumInterfaces, HCI_MAX_IFACE_NUM); ++ for (i = 0; i < ifn; i++) { ++ iface = &udev->actconfig->interface[i]; ++ for (a = 0; a < iface->num_altsetting; a++) { ++ uif = &iface->altsetting[a]; ++ for (e = 0; e < uif->bNumEndpoints; e++) { ++ ep = &uif->endpoint[e]; ++ ++ switch (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { ++ case USB_ENDPOINT_XFER_INT: ++ if (ep->bEndpointAddress & USB_DIR_IN) ++ intr_in_ep[i] = ep; ++ break; ++ ++ case USB_ENDPOINT_XFER_BULK: ++ if (ep->bEndpointAddress & USB_DIR_IN) ++ bulk_in_ep[i] = ep; ++ else ++ bulk_out_ep[i] = ep; ++ break; ++ ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ case USB_ENDPOINT_XFER_ISOC: ++ if (ep->wMaxPacketSize < size || a > 2) ++ break; ++ size = ep->wMaxPacketSize; ++ ++ isoc_iface = iface; ++ isoc_alts = a; ++ isoc_ifnum = i; ++ ++ if (ep->bEndpointAddress & USB_DIR_IN) ++ isoc_in_ep[i] = ep; ++ else ++ isoc_out_ep[i] = ep; ++ break; ++#endif ++ } ++ } ++ } ++ } + +- case USB_ENDPOINT_XFER_INT: +- intr_in_ep = ep; +- break; +- }; ++ if (!bulk_in_ep[0] || !bulk_out_ep[0] || !intr_in_ep[0]) { ++ BT_DBG("Bulk endpoints not found"); ++ goto done; + } + +- if (!bulk_in_ep || !bulk_out_ep || !intr_in_ep) { +- DBG("Endpoints not found: %p %p %p", bulk_in_ep, bulk_out_ep, intr_in_ep); +- MOD_DEC_USE_COUNT; +- return NULL; ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ if (id->driver_info & HCI_BROKEN_ISOC || !isoc_in_ep[1] || !isoc_out_ep[1]) { ++ BT_DBG("Isoc endpoints not found"); ++ isoc_iface = NULL; + } ++#endif + + if (!(husb = kmalloc(sizeof(struct hci_usb), GFP_KERNEL))) { +- ERR("Can't allocate: control structure"); +- MOD_DEC_USE_COUNT; +- return NULL; ++ BT_ERR("Can't allocate: control structure"); ++ goto done; + } + + memset(husb, 0, sizeof(struct hci_usb)); + + husb->udev = udev; +- husb->bulk_out_ep_addr = bulk_out_ep->bEndpointAddress; +- +- if (!(husb->ctrl_urb = usb_alloc_urb(0))) { +- ERR("Can't allocate: control URB"); +- goto probe_error; +- } +- +- if (!(husb->write_urb = usb_alloc_urb(0))) { +- ERR("Can't allocate: write URB"); +- goto probe_error; +- } +- +- if (!(husb->read_urb = usb_alloc_urb(0))) { +- ERR("Can't allocate: read URB"); +- goto probe_error; +- } +- +- ep = bulk_in_ep; +- pipe = usb_rcvbulkpipe(udev, ep->bEndpointAddress); +- size = HCI_MAX_FRAME_SIZE; +- +- if (!(buf = kmalloc(size, GFP_KERNEL))) { +- ERR("Can't allocate: read buffer"); +- goto probe_error; +- } +- +- FILL_BULK_URB(husb->read_urb, udev, pipe, buf, size, hci_usb_bulk_read, husb); +- husb->read_urb->transfer_flags |= USB_QUEUE_BULK; +- +- ep = intr_in_ep; +- pipe = usb_rcvintpipe(udev, ep->bEndpointAddress); +- size = usb_maxpacket(udev, pipe, usb_pipeout(pipe)); +- +- if (!(husb->intr_urb = usb_alloc_urb(0))) { +- ERR("Can't allocate: interrupt URB"); +- goto probe_error; ++ husb->bulk_out_ep = bulk_out_ep[0]; ++ husb->bulk_in_ep = bulk_in_ep[0]; ++ husb->intr_in_ep = intr_in_ep[0]; ++ ++ if (id->driver_info & HCI_DIGIANSWER) ++ husb->ctrl_req = HCI_DIGI_REQ; ++ else ++ husb->ctrl_req = HCI_CTRL_REQ; ++ ++#ifdef CONFIG_BLUEZ_HCIUSB_SCO ++ if (isoc_iface) { ++ BT_DBG("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts); ++ if (usb_set_interface(udev, isoc_ifnum, isoc_alts)) { ++ BT_ERR("Can't set isoc interface settings"); ++ isoc_iface = NULL; ++ } ++ usb_driver_claim_interface(&hci_usb_driver, isoc_iface, husb); ++ husb->isoc_iface = isoc_iface; ++ husb->isoc_in_ep = isoc_in_ep[isoc_ifnum]; ++ husb->isoc_out_ep = isoc_out_ep[isoc_ifnum]; + } ++#endif ++ ++ husb->completion_lock = RW_LOCK_UNLOCKED; + +- if (!(buf = kmalloc(size, GFP_KERNEL))) { +- ERR("Can't allocate: interrupt buffer"); +- goto probe_error; ++ for (i = 0; i < 4; i++) { ++ skb_queue_head_init(&husb->transmit_q[i]); ++ _urb_queue_init(&husb->pending_q[i]); ++ _urb_queue_init(&husb->completed_q[i]); + } + +- FILL_INT_URB(husb->intr_urb, udev, pipe, buf, size, hci_usb_intr, husb, ep->bInterval); +- +- skb_queue_head_init(&husb->tx_ctrl_q); +- skb_queue_head_init(&husb->tx_write_q); +- + /* Initialize and register HCI device */ + hdev = &husb->hdev; + +- hdev->type = HCI_USB; ++ hdev->type = HCI_USB; + hdev->driver_data = husb; + + hdev->open = hci_usb_open; + hdev->close = hci_usb_close; + hdev->flush = hci_usb_flush; +- hdev->send = hci_usb_send_frame; ++ hdev->send = hci_usb_send_frame; ++ hdev->destruct = hci_usb_destruct; ++ ++ if (id->driver_info & HCI_RESET) ++ set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks); + + if (hci_register_dev(hdev) < 0) { +- ERR("Can't register HCI device %s", hdev->name); ++ BT_ERR("Can't register HCI device"); + goto probe_error; + } + + return husb; + + probe_error: +- hci_usb_free_bufs(husb); + kfree(husb); +- MOD_DEC_USE_COUNT; ++ ++done: + return NULL; + } + +@@ -626,38 +967,34 @@ + if (!husb) + return; + +- DBG("%s", hdev->name); ++ BT_DBG("%s", hdev->name); + + hci_usb_close(hdev); + +- if (hci_unregister_dev(hdev) < 0) { +- ERR("Can't unregister HCI device %s", hdev->name); +- } ++ if (husb->isoc_iface) ++ usb_driver_release_interface(&hci_usb_driver, husb->isoc_iface); + +- hci_usb_free_bufs(husb); +- kfree(husb); +- +- MOD_DEC_USE_COUNT; ++ if (hci_unregister_dev(hdev) < 0) ++ BT_ERR("Can't unregister HCI device %s", hdev->name); + } + +-static struct usb_driver hci_usb_driver = +-{ ++static struct usb_driver hci_usb_driver = { + name: "hci_usb", + probe: hci_usb_probe, + disconnect: hci_usb_disconnect, +- id_table: usb_bluetooth_ids, ++ id_table: bluetooth_ids, + }; + + int hci_usb_init(void) + { + int err; + +- INF("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", ++ BT_INFO("BlueZ HCI USB driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", + VERSION); +- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); + + if ((err = usb_register(&hci_usb_driver)) < 0) +- ERR("Failed to register HCI USB driver"); ++ BT_ERR("Failed to register HCI USB driver"); + + return err; + } +@@ -670,6 +1007,6 @@ + module_init(hci_usb_init); + module_exit(hci_usb_cleanup); + +-MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); ++MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); + MODULE_DESCRIPTION("BlueZ HCI USB driver ver " VERSION); + MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/drivers/bluetooth/hci_usb.h linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h +--- linux-2.4.18/drivers/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_usb.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,147 @@ ++/* ++ HCI USB driver for Linux Bluetooth protocol stack (BlueZ) ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_usb.h,v 1.2 2002/03/18 19:10:04 maxk Exp $ ++ */ ++ ++#ifdef __KERNEL__ ++ ++/* Class, SubClass, and Protocol codes that describe a Bluetooth device */ ++#define HCI_DEV_CLASS 0xe0 /* Wireless class */ ++#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */ ++#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */ ++ ++#define HCI_CTRL_REQ 0x20 ++#define HCI_DIGI_REQ 0x40 ++ ++#define HCI_IGNORE 0x01 ++#define HCI_RESET 0x02 ++#define HCI_DIGIANSWER 0x04 ++#define HCI_BROKEN_ISOC 0x08 ++ ++#define HCI_MAX_IFACE_NUM 3 ++ ++#define HCI_MAX_BULK_TX 4 ++#define HCI_MAX_BULK_RX 1 ++ ++#define HCI_MAX_ISOC_RX 2 ++#define HCI_MAX_ISOC_TX 2 ++ ++#define HCI_MAX_ISOC_FRAMES 10 ++ ++struct _urb_queue { ++ struct list_head head; ++ spinlock_t lock; ++}; ++ ++struct _urb { ++ struct list_head list; ++ struct _urb_queue *queue; ++ int type; ++ void *priv; ++ struct urb urb; ++}; ++ ++struct _urb *_urb_alloc(int isoc, int gfp); ++ ++static inline void _urb_free(struct _urb *_urb) ++{ ++ kfree(_urb); ++} ++ ++static inline void _urb_queue_init(struct _urb_queue *q) ++{ ++ INIT_LIST_HEAD(&q->head); ++ spin_lock_init(&q->lock); ++} ++ ++static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb) ++{ ++ unsigned long flags; ++ spin_lock_irqsave(&q->lock, flags); ++ list_add(&_urb->list, &q->head); _urb->queue = q; ++ spin_unlock_irqrestore(&q->lock, flags); ++} ++ ++static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb) ++{ ++ unsigned long flags; ++ spin_lock_irqsave(&q->lock, flags); ++ list_add_tail(&_urb->list, &q->head); _urb->queue = q; ++ spin_unlock_irqrestore(&q->lock, flags); ++} ++ ++static inline void _urb_unlink(struct _urb *_urb) ++{ ++ struct _urb_queue *q = _urb->queue; ++ unsigned long flags; ++ if (q) { ++ spin_lock_irqsave(&q->lock, flags); ++ list_del(&_urb->list); _urb->queue = NULL; ++ spin_unlock_irqrestore(&q->lock, flags); ++ } ++} ++ ++struct _urb *_urb_dequeue(struct _urb_queue *q); ++ ++#ifndef container_of ++#define container_of(ptr, type, member) ({ \ ++ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ++ (type *)( (char *)__mptr - offsetof(type,member) );}) ++#endif ++ ++struct hci_usb { ++ struct hci_dev hdev; ++ ++ unsigned long state; ++ ++ struct usb_device *udev; ++ ++ struct usb_endpoint_descriptor *bulk_in_ep; ++ struct usb_endpoint_descriptor *bulk_out_ep; ++ struct usb_endpoint_descriptor *intr_in_ep; ++ ++ struct usb_interface *isoc_iface; ++ struct usb_endpoint_descriptor *isoc_out_ep; ++ struct usb_endpoint_descriptor *isoc_in_ep; ++ ++ __u8 ctrl_req; ++ ++ struct sk_buff_head transmit_q[4]; ++ struct sk_buff *reassembly[4]; // Reassembly buffers ++ ++ rwlock_t completion_lock; ++ ++ atomic_t pending_tx[4]; // Number of pending requests ++ struct _urb_queue pending_q[4]; // Pending requests ++ struct _urb_queue completed_q[4]; // Completed requests ++}; ++ ++/* States */ ++#define HCI_USB_TX_PROCESS 1 ++#define HCI_USB_TX_WAKEUP 2 ++ ++#endif /* __KERNEL__ */ +diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.c linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c +--- linux-2.4.18/drivers/bluetooth/hci_vhci.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,9 +25,9 @@ + /* + * BlueZ HCI virtual device driver. + * +- * $Id: hci_vhci.c,v 1.3 2001/08/03 04:19:50 maxk Exp $ ++ * $Id: hci_vhci.c,v 1.3 2002/04/17 17:37:20 maxk Exp $ + */ +-#define VERSION "1.0" ++#define VERSION "1.1" + + #include <linux/config.h> + #include <linux/module.h> +@@ -49,43 +49,56 @@ + #include <asm/uaccess.h> + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> + #include <net/bluetooth/hci_core.h> +-#include <net/bluetooth/hci_vhci.h> ++#include "hci_vhci.h" + + /* HCI device part */ + +-int hci_vhci_open(struct hci_dev *hdev) ++static int hci_vhci_open(struct hci_dev *hdev) + { +- hdev->flags |= HCI_RUNNING; ++ set_bit(HCI_RUNNING, &hdev->flags); + return 0; + } + +-int hci_vhci_flush(struct hci_dev *hdev) ++static int hci_vhci_flush(struct hci_dev *hdev) + { + struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) hdev->driver_data; + skb_queue_purge(&hci_vhci->readq); + return 0; + } + +-int hci_vhci_close(struct hci_dev *hdev) ++static int hci_vhci_close(struct hci_dev *hdev) + { +- hdev->flags &= ~HCI_RUNNING; ++ if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) ++ return 0; ++ + hci_vhci_flush(hdev); + return 0; + } + +-int hci_vhci_send_frame(struct sk_buff *skb) ++static void hci_vhci_destruct(struct hci_dev *hdev) ++{ ++ struct hci_vhci_struct *vhci; ++ ++ if (!hdev) return; ++ ++ vhci = (struct hci_vhci_struct *) hdev->driver_data; ++ kfree(vhci); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++static int hci_vhci_send_frame(struct sk_buff *skb) + { + struct hci_dev* hdev = (struct hci_dev *) skb->dev; + struct hci_vhci_struct *hci_vhci; + + if (!hdev) { +- ERR("Frame for uknown device (hdev=NULL)"); ++ BT_ERR("Frame for uknown device (hdev=NULL)"); + return -ENODEV; + } + +- if (!(hdev->flags & HCI_RUNNING)) ++ if (!test_bit(HCI_RUNNING, &hdev->flags)) + return -EBUSY; + + hci_vhci = (struct hci_vhci_struct *) hdev->driver_data; +@@ -188,7 +201,7 @@ + + add_wait_queue(&hci_vhci->read_wait, &wait); + while (count) { +- current->state = TASK_INTERRUPTIBLE; ++ set_current_state(TASK_INTERRUPTIBLE); + + /* Read frames from device queue */ + if (!(skb = skb_dequeue(&hci_vhci->readq))) { +@@ -214,8 +227,7 @@ + kfree_skb(skb); + break; + } +- +- current->state = TASK_RUNNING; ++ set_current_state(TASK_RUNNING); + remove_wait_queue(&hci_vhci->read_wait, &wait); + + return ret; +@@ -270,11 +282,13 @@ + hdev->close = hci_vhci_close; + hdev->flush = hci_vhci_flush; + hdev->send = hci_vhci_send_frame; ++ hdev->destruct = hci_vhci_destruct; + + if (hci_register_dev(hdev) < 0) { + kfree(hci_vhci); + return -EBUSY; + } ++ MOD_INC_USE_COUNT; + + file->private_data = hci_vhci; + return 0; +@@ -285,12 +299,10 @@ + struct hci_vhci_struct *hci_vhci = (struct hci_vhci_struct *) file->private_data; + + if (hci_unregister_dev(&hci_vhci->hdev) < 0) { +- ERR("Can't unregister HCI device %s", hci_vhci->hdev.name); ++ BT_ERR("Can't unregister HCI device %s", hci_vhci->hdev.name); + } + +- kfree(hci_vhci); + file->private_data = NULL; +- + return 0; + } + +@@ -315,12 +327,12 @@ + + int __init hci_vhci_init(void) + { +- INF("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", ++ BT_INFO("BlueZ VHCI driver ver %s Copyright (C) 2000,2001 Qualcomm Inc", + VERSION); +- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); + + if (misc_register(&hci_vhci_miscdev)) { +- ERR("Can't register misc device %d\n", VHCI_MINOR); ++ BT_ERR("Can't register misc device %d\n", VHCI_MINOR); + return -EIO; + } + +@@ -337,4 +349,4 @@ + + MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); + MODULE_DESCRIPTION("BlueZ VHCI driver ver " VERSION); +-MODULE_LICENSE("GPL"); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/drivers/bluetooth/hci_vhci.h linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h +--- linux-2.4.18/drivers/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/hci_vhci.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,50 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: hci_vhci.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $ ++ */ ++ ++#ifndef __HCI_VHCI_H ++#define __HCI_VHCI_H ++ ++#ifdef __KERNEL__ ++ ++struct hci_vhci_struct { ++ struct hci_dev hdev; ++ __u32 flags; ++ wait_queue_head_t read_wait; ++ struct sk_buff_head readq; ++ struct fasync_struct *fasync; ++}; ++ ++/* VHCI device flags */ ++#define VHCI_FASYNC 0x0010 ++ ++#endif /* __KERNEL__ */ ++ ++#define VHCI_DEV "/dev/vhci" ++#define VHCI_MINOR 250 ++ ++#endif /* __HCI_VHCI_H */ +diff -urN linux-2.4.18/drivers/bluetooth/Makefile linux-2.4.18-mh15/drivers/bluetooth/Makefile +--- linux-2.4.18/drivers/bluetooth/Makefile 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -1,11 +1,27 @@ + # +-# Makefile for Bluetooth HCI device drivers. ++# Makefile for the Linux Bluetooth HCI device drivers + # + + O_TARGET := bluetooth.o + ++list-multi := hci_uart.o ++ + obj-$(CONFIG_BLUEZ_HCIUSB) += hci_usb.o +-obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o + obj-$(CONFIG_BLUEZ_HCIVHCI) += hci_vhci.o + ++obj-$(CONFIG_BLUEZ_HCIUART) += hci_uart.o ++uart-y := hci_ldisc.o ++uart-$(CONFIG_BLUEZ_HCIUART_H4) += hci_h4.o ++uart-$(CONFIG_BLUEZ_HCIUART_BCSP) += hci_bcsp.o ++ ++obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o ++ ++obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o ++obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o ++obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o ++obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o ++ + include $(TOPDIR)/Rules.make ++ ++hci_uart.o: $(uart-y) ++ $(LD) -r -o $@ $(uart-y) +diff -urN linux-2.4.18/drivers/bluetooth/Makefile.lib linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib +--- linux-2.4.18/drivers/bluetooth/Makefile.lib 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/bluetooth/Makefile.lib 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,2 @@ ++obj-$(CONFIG_BLUEZ_HCIBFUSB) += firmware_class.o ++obj-$(CONFIG_BLUEZ_HCIBT3C) += firmware_class.o +diff -urN linux-2.4.18/drivers/char/pcmcia/serial_cs.c linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c +--- linux-2.4.18/drivers/char/pcmcia/serial_cs.c 2001-12-21 18:41:54.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/char/pcmcia/serial_cs.c 2004-08-01 16:26:23.000000000 +0200 +@@ -2,7 +2,7 @@ + + A driver for PCMCIA serial devices + +- serial_cs.c 1.128 2001/10/18 12:18:35 ++ serial_cs.c 1.138 2002/10/25 06:24:52 + + The contents of this file are subject to the Mozilla Public + License Version 1.1 (the "License"); you may not use this file +@@ -69,14 +69,14 @@ + static int irq_list[4] = { -1 }; + MODULE_PARM(irq_list, "1-4i"); + +-/* Enable the speaker? */ +-INT_MODULE_PARM(do_sound, 1); ++INT_MODULE_PARM(do_sound, 1); /* Enable the speaker? */ ++INT_MODULE_PARM(buggy_uart, 0); /* Skip strict UART tests? */ + + #ifdef PCMCIA_DEBUG + INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); + #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) + static char *version = +-"serial_cs.c 1.128 2001/10/18 12:18:35 (David Hinds)"; ++"serial_cs.c 1.138 2002/10/25 06:24:52 (David Hinds)"; + #else + #define DEBUG(n, args...) + #endif +@@ -95,6 +95,7 @@ + { MANFID_OMEGA, PRODID_OMEGA_QSP_100, 4 }, + { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232, 2 }, + { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D1, 2 }, ++ { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS232_D2, 2 }, + { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS232, 4 }, + { MANFID_QUATECH, PRODID_QUATECH_DUAL_RS422, 2 }, + { MANFID_QUATECH, PRODID_QUATECH_QUAD_RS422, 4 }, +@@ -148,7 +149,7 @@ + client_reg_t client_reg; + dev_link_t *link; + int i, ret; +- ++ + DEBUG(0, "serial_attach()\n"); + + /* Create new serial device */ +@@ -160,7 +161,7 @@ + link->release.function = &serial_release; + link->release.data = (u_long)link; + link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; +- link->io.NumPorts1 = 8; ++ link->io.Attributes2 = IO_DATA_PATH_WIDTH_8; + link->irq.Attributes = IRQ_TYPE_EXCLUSIVE; + link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID; + if (irq_list[0] == -1) +@@ -169,13 +170,12 @@ + for (i = 0; i < 4; i++) + link->irq.IRQInfo2 |= 1 << irq_list[i]; + link->conf.Attributes = CONF_ENABLE_IRQ; +- link->conf.Vcc = 50; + if (do_sound) { + link->conf.Attributes |= CONF_ENABLE_SPKR; + link->conf.Status = CCSR_AUDIO_ENA; + } + link->conf.IntType = INT_MEMORY_AND_IO; +- ++ + /* Register with Card Services */ + link->next = dev_list; + dev_list = link; +@@ -194,7 +194,7 @@ + serial_detach(link); + return NULL; + } +- ++ + return link; + } /* serial_attach */ + +@@ -214,7 +214,7 @@ + int ret; + + DEBUG(0, "serial_detach(0x%p)\n", link); +- ++ + /* Locate device structure */ + for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) + if (*linkp == link) break; +@@ -224,17 +224,17 @@ + del_timer(&link->release); + if (link->state & DEV_CONFIG) + serial_release((u_long)link); +- ++ + if (link->handle) { + ret = CardServices(DeregisterClient, link->handle); + if (ret != CS_SUCCESS) + cs_error(link->handle, DeregisterClient, ret); + } +- ++ + /* Unlink device structure, free bits */ + *linkp = link->next; + kfree(info); +- ++ + } /* serial_detach */ + + /*====================================================================*/ +@@ -243,18 +243,20 @@ + { + struct serial_struct serial; + int line; +- ++ + memset(&serial, 0, sizeof(serial)); + serial.port = port; + serial.irq = irq; + serial.flags = ASYNC_SKIP_TEST | ASYNC_SHARE_IRQ; ++ if (buggy_uart) ++ serial.flags |= ASYNC_BUGGY_UART; + line = register_serial(&serial); + if (line < 0) { + printk(KERN_NOTICE "serial_cs: register_serial() at 0x%04lx," + " irq %d failed\n", (u_long)serial.port, serial.irq); + return -1; + } +- ++ + info->line[info->ndev] = line; + sprintf(info->node[info->ndev].dev_name, "ttyS%d", line); + info->node[info->ndev].major = TTY_MAJOR; +@@ -262,7 +264,7 @@ + if (info->ndev > 0) + info->node[info->ndev-1].next = &info->node[info->ndev]; + info->ndev++; +- ++ + return 0; + } + +@@ -313,7 +315,10 @@ + return setup_serial(info, port, config.AssignedIRQ); + } + link->conf.Vcc = config.Vcc; +- ++ ++ link->io.NumPorts1 = 8; ++ link->io.NumPorts2 = 0; ++ + /* First pass: look for a config entry that looks normal. */ + tuple.TupleData = (cisdata_t *)buf; + tuple.TupleOffset = 0; tuple.TupleDataMax = 255; +@@ -340,7 +345,7 @@ + i = next_tuple(handle, &tuple, &parse); + } + } +- ++ + /* Second pass: try to find an entry that isn't picky about + its base address, then try to grab any standard serial port + address, and finally try to get any free port. */ +@@ -352,8 +357,7 @@ + for (j = 0; j < 5; j++) { + link->io.BasePort1 = base[j]; + link->io.IOAddrLines = base[j] ? 16 : 3; +- i = CardServices(RequestIO, link->handle, +- &link->io); ++ i = CardServices(RequestIO, link->handle, &link->io); + if (i == CS_SUCCESS) goto found_port; + } + } +@@ -365,7 +369,7 @@ + cs_error(link->handle, RequestIO, i); + return -1; + } +- ++ + i = CardServices(RequestIRQ, link->handle, &link->irq); + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestIRQ, i); +@@ -390,8 +394,12 @@ + u_char buf[256]; + cisparse_t parse; + cistpl_cftable_entry_t *cf = &parse.cftable_entry; ++ config_info_t config; + int i, base2 = 0; + ++ CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ + tuple.TupleData = (cisdata_t *)buf; + tuple.TupleOffset = 0; tuple.TupleDataMax = 255; + tuple.Attributes = 0; +@@ -433,12 +441,12 @@ + i = next_tuple(handle, &tuple, &parse); + } + } +- ++ + if (i != CS_SUCCESS) { +- cs_error(link->handle, RequestIO, i); +- return -1; ++ /* At worst, try to configure as a single port */ ++ return simple_config(link); + } +- ++ + i = CardServices(RequestIRQ, link->handle, &link->irq); + if (i != CS_SUCCESS) { + cs_error(link->handle, RequestIRQ, i); +@@ -454,14 +462,27 @@ + cs_error(link->handle, RequestConfiguration, i); + return -1; + } +- ++ ++ /* The Oxford Semiconductor OXCF950 cards are in fact single-port: ++ 8 registers are for the UART, the others are extra registers */ ++ if (info->manfid == MANFID_OXSEMI) { ++ if (cf->index == 1 || cf->index == 3) { ++ setup_serial(info, base2, link->irq.AssignedIRQ); ++ outb(12,link->io.BasePort1+1); ++ } else { ++ setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); ++ outb(12,base2+1); ++ } ++ return 0; ++ } ++ + setup_serial(info, link->io.BasePort1, link->irq.AssignedIRQ); + /* The Nokia cards are not really multiport cards */ + if (info->manfid == MANFID_NOKIA) + return 0; + for (i = 0; i < info->multi-1; i++) + setup_serial(info, base2+(8*i), link->irq.AssignedIRQ); +- ++ + return 0; + } + +@@ -500,7 +521,7 @@ + } + link->conf.ConfigBase = parse.config.base; + link->conf.Present = parse.config.rmask[0]; +- ++ + /* Configure card */ + link->state |= DEV_CONFIG; + +@@ -508,8 +529,8 @@ + tuple.DesiredTuple = CISTPL_LONGLINK_MFC; + tuple.Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK; + info->multi = (first_tuple(handle, &tuple, &parse) == CS_SUCCESS); +- +- /* Is this a multiport card? */ ++ ++ /* Scan list of known multiport card ID's */ + tuple.DesiredTuple = CISTPL_MANFID; + if (first_tuple(handle, &tuple, &parse) == CS_SUCCESS) { + info->manfid = le16_to_cpu(buf[0]); +@@ -537,15 +558,15 @@ + info->multi = 2; + } + } +- ++ + if (info->multi > 1) + multi_config(link); + else + simple_config(link); +- ++ + if (info->ndev == 0) + goto failed; +- ++ + if (info->manfid == MANFID_IBM) { + conf_reg_t reg = { 0, CS_READ, 0x800, 0 }; + CS_CHECK(AccessConfigurationRegister, link->handle, ®); +@@ -562,6 +583,7 @@ + cs_error(link->handle, last_fn, last_ret); + failed: + serial_release((u_long)link); ++ link->state &= ~DEV_CONFIG_PENDING; + + } /* serial_config */ + +@@ -569,7 +591,7 @@ + + After a card is removed, serial_release() will unregister the net + device, and release the PCMCIA configuration. +- ++ + ======================================================================*/ + + void serial_release(u_long arg) +@@ -577,7 +599,7 @@ + dev_link_t *link = (dev_link_t *)arg; + serial_info_t *info = link->priv; + int i; +- ++ + DEBUG(0, "serial_release(0x%p)\n", link); + + for (i = 0; i < info->ndev; i++) { +@@ -590,7 +612,7 @@ + CardServices(ReleaseIO, link->handle, &link->io); + CardServices(ReleaseIRQ, link->handle, &link->irq); + } +- ++ + link->state &= ~DEV_CONFIG; + + } /* serial_release */ +@@ -601,7 +623,7 @@ + stuff to run after an event is received. A CARD_REMOVAL event + also sets some flags to discourage the serial drivers from + talking to the ports. +- ++ + ======================================================================*/ + + static int serial_event(event_t event, int priority, +@@ -609,9 +631,9 @@ + { + dev_link_t *link = args->client_data; + serial_info_t *info = link->priv; +- ++ + DEBUG(1, "serial_event(0x%06x)\n", event); +- ++ + switch (event) { + case CS_EVENT_CARD_REMOVAL: + link->state &= ~DEV_PRESENT; +@@ -650,7 +672,7 @@ + if (serv.Revision != CS_RELEASE_CODE) { + printk(KERN_NOTICE "serial_cs: Card Services release " + "does not match!\n"); +- return -1; ++ return -EINVAL; + } + register_pccard_driver(&dev_info, &serial_attach, &serial_detach); + return 0; +diff -urN linux-2.4.18/drivers/input/Config.in linux-2.4.18-mh15/drivers/input/Config.in +--- linux-2.4.18/drivers/input/Config.in 2001-09-13 00:34:06.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/input/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -14,5 +14,6 @@ + fi + dep_tristate ' Joystick support' CONFIG_INPUT_JOYDEV $CONFIG_INPUT + dep_tristate ' Event interface support' CONFIG_INPUT_EVDEV $CONFIG_INPUT ++dep_tristate ' User level driver support' CONFIG_INPUT_UINPUT $CONFIG_INPUT + + endmenu +diff -urN linux-2.4.18/drivers/input/keybdev.c linux-2.4.18-mh15/drivers/input/keybdev.c +--- linux-2.4.18/drivers/input/keybdev.c 2001-10-11 18:14:32.000000000 +0200 ++++ linux-2.4.18-mh15/drivers/input/keybdev.c 2004-08-01 16:26:23.000000000 +0200 +@@ -154,16 +154,18 @@ + + static struct input_handler keybdev_handler; + ++static unsigned int ledstate = 0xff; ++ + void keybdev_ledfunc(unsigned int led) + { + struct input_handle *handle; + +- for (handle = keybdev_handler.handle; handle; handle = handle->hnext) { ++ ledstate = led; + ++ for (handle = keybdev_handler.handle; handle; handle = handle->hnext) { + input_event(handle->dev, EV_LED, LED_SCROLLL, !!(led & 0x01)); + input_event(handle->dev, EV_LED, LED_NUML, !!(led & 0x02)); + input_event(handle->dev, EV_LED, LED_CAPSL, !!(led & 0x04)); +- + } + } + +@@ -202,6 +204,12 @@ + + // printk(KERN_INFO "keybdev.c: Adding keyboard: input%d\n", dev->number); + ++ if (ledstate != 0xff) { ++ input_event(dev, EV_LED, LED_SCROLLL, !!(ledstate & 0x01)); ++ input_event(dev, EV_LED, LED_NUML, !!(ledstate & 0x02)); ++ input_event(dev, EV_LED, LED_CAPSL, !!(ledstate & 0x04)); ++ } ++ + return handle; + } + +diff -urN linux-2.4.18/drivers/input/Makefile linux-2.4.18-mh15/drivers/input/Makefile +--- linux-2.4.18/drivers/input/Makefile 2000-12-29 23:07:22.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/input/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -24,6 +24,7 @@ + obj-$(CONFIG_INPUT_MOUSEDEV) += mousedev.o + obj-$(CONFIG_INPUT_JOYDEV) += joydev.o + obj-$(CONFIG_INPUT_EVDEV) += evdev.o ++obj-$(CONFIG_INPUT_UINPUT) += uinput.o + + # The global Rules.make. + +diff -urN linux-2.4.18/drivers/input/uinput.c linux-2.4.18-mh15/drivers/input/uinput.c +--- linux-2.4.18/drivers/input/uinput.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/input/uinput.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,428 @@ ++/* ++ * User level driver support for input subsystem ++ * ++ * Heavily based on evdev.c by Vojtech Pavlik ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org> ++ * ++ * Changes/Revisions: ++ * 0.1 20/06/2002 ++ * - first public version ++ */ ++ ++#include <linux/poll.h> ++#include <linux/slab.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/input.h> ++#include <linux/smp_lock.h> ++#include <linux/fs.h> ++#include <linux/miscdevice.h> ++#include <linux/uinput.h> ++ ++static int uinput_dev_open(struct input_dev *dev) ++{ ++ return 0; ++} ++ ++static void uinput_dev_close(struct input_dev *dev) ++{ ++} ++ ++static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) ++{ ++ struct uinput_device *udev; ++ ++ udev = (struct uinput_device *)dev->private; ++ ++ udev->buff[udev->head].type = type; ++ udev->buff[udev->head].code = code; ++ udev->buff[udev->head].value = value; ++ do_gettimeofday(&udev->buff[udev->head].time); ++ udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE; ++ ++ wake_up_interruptible(&udev->waitq); ++ ++ return 0; ++} ++ ++static int uinput_dev_upload_effect(struct input_dev *dev, struct ff_effect *effect) ++{ ++ return 0; ++} ++ ++static int uinput_dev_erase_effect(struct input_dev *dev, int effect_id) ++{ ++ return 0; ++} ++ ++static int uinput_create_device(struct uinput_device *udev) ++{ ++ if (!udev->dev->name) { ++ printk(KERN_DEBUG "%s: write device info first\n", UINPUT_NAME); ++ return -EINVAL; ++ } ++ ++ udev->dev->open = uinput_dev_open; ++ udev->dev->close = uinput_dev_close; ++ udev->dev->event = uinput_dev_event; ++ udev->dev->upload_effect = uinput_dev_upload_effect; ++ udev->dev->erase_effect = uinput_dev_erase_effect; ++ udev->dev->private = udev; ++ ++ init_waitqueue_head(&(udev->waitq)); ++ ++ input_register_device(udev->dev); ++ ++ set_bit(UIST_CREATED, &(udev->state)); ++ ++ return 0; ++} ++ ++static int uinput_destroy_device(struct uinput_device *udev) ++{ ++ if (!test_bit(UIST_CREATED, &(udev->state))) { ++ printk(KERN_WARNING "%s: create the device first\n", UINPUT_NAME); ++ return -EINVAL; ++ } ++ ++ input_unregister_device(udev->dev); ++ ++ clear_bit(UIST_CREATED, &(udev->state)); ++ ++ return 0; ++} ++ ++static int uinput_open(struct inode *inode, struct file *file) ++{ ++ struct uinput_device *newdev; ++ struct input_dev *newinput; ++ ++ newdev = kmalloc(sizeof(struct uinput_device), GFP_KERNEL); ++ if (!newdev) ++ goto error; ++ memset(newdev, 0, sizeof(struct uinput_device)); ++ ++ newinput = kmalloc(sizeof(struct input_dev), GFP_KERNEL); ++ if (!newinput) ++ goto cleanup; ++ memset(newinput, 0, sizeof(struct input_dev)); ++ ++ newdev->dev = newinput; ++ ++ file->private_data = newdev; ++ ++ return 0; ++cleanup: ++ kfree(newdev); ++error: ++ return -ENOMEM; ++} ++ ++static int uinput_validate_absbits(struct input_dev *dev) ++{ ++ unsigned int cnt; ++ int retval = 0; ++ ++ for (cnt = 0; cnt < ABS_MAX; cnt++) { ++ if (!test_bit(cnt, dev->absbit)) ++ continue; ++ ++ if (/*!dev->absmin[cnt] || !dev->absmax[cnt] || */ ++ (dev->absmax[cnt] <= dev->absmin[cnt])) { ++ printk(KERN_DEBUG ++ "%s: invalid abs[%02x] min:%d max:%d\n", ++ UINPUT_NAME, cnt, ++ dev->absmin[cnt], dev->absmax[cnt]); ++ retval = -EINVAL; ++ break; ++ } ++ ++ if ((dev->absflat[cnt] < dev->absmin[cnt]) || ++ (dev->absflat[cnt] > dev->absmax[cnt])) { ++ printk(KERN_DEBUG ++ "%s: absflat[%02x] out of range: %d " ++ "(min:%d/max:%d)\n", ++ UINPUT_NAME, cnt, dev->absflat[cnt], ++ dev->absmin[cnt], dev->absmax[cnt]); ++ retval = -EINVAL; ++ break; ++ } ++ } ++ return retval; ++} ++ ++static int uinput_alloc_device(struct file *file, const char *buffer, size_t count) ++{ ++ struct uinput_user_dev *user_dev; ++ struct input_dev *dev; ++ struct uinput_device *udev; ++ int size, ++ retval; ++ ++ retval = count; ++ ++ udev = (struct uinput_device *)file->private_data; ++ dev = udev->dev; ++ ++ user_dev = kmalloc(sizeof(*user_dev), GFP_KERNEL); ++ if (!user_dev) { ++ retval = -ENOMEM; ++ goto exit; ++ } ++ ++ if (copy_from_user(user_dev, buffer, sizeof(struct uinput_user_dev))) { ++ retval = -EFAULT; ++ goto exit; ++ } ++ ++ if (NULL != dev->name) ++ kfree(dev->name); ++ ++ size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE) + 1; ++ dev->name = kmalloc(size, GFP_KERNEL); ++ if (!dev->name) { ++ retval = -ENOMEM; ++ goto exit; ++ } ++ ++ strncpy(dev->name, user_dev->name, size); ++ dev->idbus = user_dev->idbus; ++ dev->idvendor = user_dev->idvendor; ++ dev->idproduct = user_dev->idproduct; ++ dev->idversion = user_dev->idversion; ++ dev->ff_effects_max = user_dev->ff_effects_max; ++ ++ size = sizeof(int) * (ABS_MAX + 1); ++ memcpy(dev->absmax, user_dev->absmax, size); ++ memcpy(dev->absmin, user_dev->absmin, size); ++ memcpy(dev->absfuzz, user_dev->absfuzz, size); ++ memcpy(dev->absflat, user_dev->absflat, size); ++ ++ /* check if absmin/absmax/absfuzz/absflat are filled as ++ * told in Documentation/input/input-programming.txt */ ++ if (test_bit(EV_ABS, dev->evbit)) { ++ retval = uinput_validate_absbits(dev); ++ if (retval < 0) ++ kfree(dev->name); ++ } ++ ++exit: ++ kfree(user_dev); ++ return retval; ++} ++ ++static ssize_t uinput_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) ++{ ++ struct uinput_device *udev = file->private_data; ++ ++ if (test_bit(UIST_CREATED, &(udev->state))) { ++ struct input_event ev; ++ ++ if (copy_from_user(&ev, buffer, sizeof(struct input_event))) ++ return -EFAULT; ++ input_event(udev->dev, ev.type, ev.code, ev.value); ++ } ++ else ++ count = uinput_alloc_device(file, buffer, count); ++ ++ return count; ++} ++ ++static ssize_t uinput_read(struct file *file, char *buffer, size_t count, loff_t *ppos) ++{ ++ struct uinput_device *udev = file->private_data; ++ int retval = 0; ++ ++ if (!test_bit(UIST_CREATED, &(udev->state))) ++ return -ENODEV; ++ ++ if ((udev->head == udev->tail) && (file->f_flags & O_NONBLOCK)) ++ return -EAGAIN; ++ ++ retval = wait_event_interruptible(udev->waitq, ++ (udev->head != udev->tail) || ++ !test_bit(UIST_CREATED, &(udev->state))); ++ ++ if (retval) ++ return retval; ++ ++ if (!test_bit(UIST_CREATED, &(udev->state))) ++ return -ENODEV; ++ ++ while ((udev->head != udev->tail) && ++ (retval + sizeof(struct input_event) <= count)) { ++ if (copy_to_user(buffer + retval, &(udev->buff[udev->tail]), ++ sizeof(struct input_event))) return -EFAULT; ++ udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE; ++ retval += sizeof(struct input_event); ++ } ++ ++ return retval; ++} ++ ++static unsigned int uinput_poll(struct file *file, poll_table *wait) ++{ ++ struct uinput_device *udev = file->private_data; ++ ++ poll_wait(file, &udev->waitq, wait); ++ ++ if (udev->head != udev->tail) ++ return POLLIN | POLLRDNORM; ++ ++ return 0; ++} ++ ++static int uinput_burn_device(struct uinput_device *udev) ++{ ++ if (test_bit(UIST_CREATED, &(udev->state))) ++ uinput_destroy_device(udev); ++ ++ kfree(udev->dev); ++ kfree(udev); ++ ++ return 0; ++} ++ ++static int uinput_close(struct inode *inode, struct file *file) ++{ ++ return uinput_burn_device((struct uinput_device *)file->private_data); ++} ++ ++static int uinput_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) ++{ ++ int retval = 0; ++ struct uinput_device *udev; ++ ++ udev = (struct uinput_device *)file->private_data; ++ ++ /* device attributes can not be changed after the device is created */ ++ if (cmd >= UI_SET_EVBIT && test_bit(UIST_CREATED, &(udev->state))) ++ return -EINVAL; ++ ++ switch (cmd) { ++ case UI_DEV_CREATE: ++ retval = uinput_create_device(udev); ++ break; ++ ++ case UI_DEV_DESTROY: ++ retval = uinput_destroy_device(udev); ++ break; ++ ++ case UI_SET_EVBIT: ++ if (arg > EV_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->evbit); ++ break; ++ ++ case UI_SET_KEYBIT: ++ if (arg > KEY_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->keybit); ++ break; ++ ++ case UI_SET_RELBIT: ++ if (arg > REL_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->relbit); ++ break; ++ ++ case UI_SET_ABSBIT: ++ if (arg > ABS_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->absbit); ++ break; ++ ++ case UI_SET_MSCBIT: ++ if (arg > MSC_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->mscbit); ++ break; ++ ++ case UI_SET_LEDBIT: ++ if (arg > LED_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->ledbit); ++ break; ++ ++ case UI_SET_SNDBIT: ++ if (arg > SND_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->sndbit); ++ break; ++ ++ case UI_SET_FFBIT: ++ if (arg > FF_MAX) { ++ retval = -EINVAL; ++ break; ++ } ++ set_bit(arg, udev->dev->ffbit); ++ break; ++ ++ default: ++ retval = -EFAULT; ++ } ++ return retval; ++} ++ ++struct file_operations uinput_fops = { ++ owner: THIS_MODULE, ++ open: uinput_open, ++ release: uinput_close, ++ read: uinput_read, ++ write: uinput_write, ++ poll: uinput_poll, ++ ioctl: uinput_ioctl, ++}; ++ ++static struct miscdevice uinput_misc = { ++ fops: &uinput_fops, ++ minor: UINPUT_MINOR, ++ name: UINPUT_NAME, ++}; ++ ++static int __init uinput_init(void) ++{ ++ return misc_register(&uinput_misc); ++} ++ ++static void __exit uinput_exit(void) ++{ ++ misc_deregister(&uinput_misc); ++} ++ ++MODULE_AUTHOR("Aristeu Sergio Rozanski Filho"); ++MODULE_DESCRIPTION("User level driver support for input subsystem"); ++MODULE_LICENSE("GPL"); ++ ++module_init(uinput_init); ++module_exit(uinput_exit); ++ +diff -urN linux-2.4.18/drivers/isdn/avmb1/capidrv.c linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c +--- linux-2.4.18/drivers/isdn/avmb1/capidrv.c 2001-12-21 18:41:54.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/isdn/avmb1/capidrv.c 2004-08-01 16:26:23.000000000 +0200 +@@ -514,13 +514,25 @@ + + static void send_message(capidrv_contr * card, _cmsg * cmsg) + { +- struct sk_buff *skb; +- size_t len; ++ struct sk_buff *skb; ++ size_t len; ++ u16 err; ++ + capi_cmsg2message(cmsg, cmsg->buf); + len = CAPIMSG_LEN(cmsg->buf); + skb = alloc_skb(len, GFP_ATOMIC); ++ if(!skb) { ++ printk(KERN_ERR "no skb len(%d) memory\n", len); ++ return; ++ } + memcpy(skb_put(skb, len), cmsg->buf, len); +- (*capifuncs->capi_put_message) (global.appid, skb); ++ err = (*capifuncs->capi_put_message) (global.appid, skb); ++ if (err) { ++ printk(KERN_WARNING "%s: capi_put_message error: %04x\n", ++ __FUNCTION__, err); ++ kfree_skb(skb); ++ return; ++ } + global.nsentctlpkt++; + } + +@@ -2179,10 +2191,10 @@ + free_ncci(card, card->bchans[card->nbchan-1].nccip); + if (card->bchans[card->nbchan-1].plcip) + free_plci(card, card->bchans[card->nbchan-1].plcip); +- if (card->plci_list) +- printk(KERN_ERR "capidrv: bug in free_plci()\n"); + card->nbchan--; + } ++ if (card->plci_list) ++ printk(KERN_ERR "capidrv: bug in free_plci()\n"); + kfree(card->bchans); + card->bchans = 0; + +diff -urN linux-2.4.18/drivers/isdn/avmb1/kcapi.c linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c +--- linux-2.4.18/drivers/isdn/avmb1/kcapi.c 2001-12-21 18:41:54.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/isdn/avmb1/kcapi.c 2004-08-01 16:26:23.000000000 +0200 +@@ -545,7 +545,13 @@ + static void notify_up(__u32 contr) + { + struct capi_interface_user *p; ++ __u16 appl; + ++ for (appl = 1; appl <= CAPI_MAXAPPL; appl++) { ++ if (!VALID_APPLID(appl)) continue; ++ if (APPL(appl)->releasing) continue; ++ CARD(contr)->driver->register_appl(CARD(contr), appl, &APPL(appl)->rparam); ++ } + printk(KERN_NOTICE "kcapi: notify up contr %d\n", contr); + spin_lock(&capi_users_lock); + for (p = capi_users; p; p = p->next) { +@@ -705,12 +711,16 @@ + nextpp = &(*pp)->next; + } + } +- APPL(appl)->releasing--; +- if (APPL(appl)->releasing <= 0) { +- APPL(appl)->signal = 0; +- APPL_MARK_FREE(appl); +- printk(KERN_INFO "kcapi: appl %d down\n", appl); +- } ++ if (APPL(appl)->releasing) { /* only release if the application was marked for release */ ++ printk(KERN_DEBUG "kcapi: appl %d releasing(%d)\n", appl, APPL(appl)->releasing); ++ APPL(appl)->releasing--; ++ if (APPL(appl)->releasing <= 0) { ++ APPL(appl)->signal = 0; ++ APPL_MARK_FREE(appl); ++ printk(KERN_INFO "kcapi: appl %d down\n", appl); ++ } ++ } else ++ printk(KERN_WARNING "kcapi: appl %d card%d released without request\n", appl, card->cnr); + } + /* + * ncci management +@@ -863,16 +873,7 @@ + + static void controllercb_ready(struct capi_ctr * card) + { +- __u16 appl; +- + card->cardstate = CARD_RUNNING; +- +- for (appl = 1; appl <= CAPI_MAXAPPL; appl++) { +- if (!VALID_APPLID(appl)) continue; +- if (APPL(appl)->releasing) continue; +- card->driver->register_appl(card, appl, &APPL(appl)->rparam); +- } +- + printk(KERN_NOTICE "kcapi: card %d \"%s\" ready.\n", + CARDNR(card), card->name); + +diff -urN linux-2.4.18/drivers/usb/Config.in linux-2.4.18-mh15/drivers/usb/Config.in +--- linux-2.4.18/drivers/usb/Config.in 2002-02-25 20:38:07.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/usb/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -31,7 +31,13 @@ + + comment 'USB Device Class drivers' + dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND +-dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB $CONFIG_EXPERIMENTAL ++if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then ++ if [ "$CONFIG_BLUEZ" = "n" ]; then ++ dep_tristate ' USB Bluetooth support (EXPERIMENTAL)' CONFIG_USB_BLUETOOTH $CONFIG_USB ++ else ++ comment ' USB Bluetooth can only be used with disabled Bluetooth subsystem' ++ fi ++fi + if [ "$CONFIG_SCSI" = "n" ]; then + comment ' SCSI support is needed for USB Storage' + fi +diff -urN linux-2.4.18/drivers/usb/hid-core.c linux-2.4.18-mh15/drivers/usb/hid-core.c +--- linux-2.4.18/drivers/usb/hid-core.c 2001-12-21 18:41:55.000000000 +0100 ++++ linux-2.4.18-mh15/drivers/usb/hid-core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -217,6 +217,8 @@ + + offset = report->size; + report->size += parser->global.report_size * parser->global.report_count; ++ if (usages < parser->global.report_count) ++ usages = parser->global.report_count; + + if (usages == 0) + return 0; /* ignore padding fields */ +diff -urN linux-2.4.18/include/linux/firmware.h linux-2.4.18-mh15/include/linux/firmware.h +--- linux-2.4.18/include/linux/firmware.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/include/linux/firmware.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,20 @@ ++#ifndef _LINUX_FIRMWARE_H ++#define _LINUX_FIRMWARE_H ++#include <linux/module.h> ++#include <linux/types.h> ++#define FIRMWARE_NAME_MAX 30 ++struct firmware { ++ size_t size; ++ u8 *data; ++}; ++int request_firmware (const struct firmware **fw, const char *name, ++ const char *device); ++int request_firmware_nowait ( ++ struct module *module, ++ const char *name, const char *device, void *context, ++ void (*cont)(const struct firmware *fw, void *context)); ++/* On 2.5 'device' is 'struct device *' */ ++ ++void release_firmware (const struct firmware *fw); ++void register_firmware (const char *name, const u8 *data, size_t size); ++#endif +diff -urN linux-2.4.18/include/linux/input.h linux-2.4.18-mh15/include/linux/input.h +--- linux-2.4.18/include/linux/input.h 2001-09-13 00:34:06.000000000 +0200 ++++ linux-2.4.18-mh15/include/linux/input.h 2004-08-01 16:26:23.000000000 +0200 +@@ -468,6 +468,8 @@ + #define BUS_PCI 0x01 + #define BUS_ISAPNP 0x02 + #define BUS_USB 0x03 ++#define BUS_HIL 0x04 ++#define BUS_BLUETOOTH 0x05 + + #define BUS_ISA 0x10 + #define BUS_I8042 0x11 +diff -urN linux-2.4.18/include/linux/kernel.h linux-2.4.18-mh15/include/linux/kernel.h +--- linux-2.4.18/include/linux/kernel.h 2002-02-25 20:38:13.000000000 +0100 ++++ linux-2.4.18-mh15/include/linux/kernel.h 2004-08-01 16:26:23.000000000 +0200 +@@ -11,6 +11,7 @@ + #include <linux/linkage.h> + #include <linux/stddef.h> + #include <linux/types.h> ++#include <linux/compiler.h> + + /* Optimization barrier */ + /* The "volatile" is due to gcc bugs */ +@@ -181,4 +182,6 @@ + char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ + }; + +-#endif ++#define BUG_ON(condition) do { if (unlikely((condition)!=0)) BUG(); } while(0) ++ ++#endif /* _LINUX_KERNEL_H */ +diff -urN linux-2.4.18/include/linux/net.h linux-2.4.18-mh15/include/linux/net.h +--- linux-2.4.18/include/linux/net.h 2001-11-22 20:46:19.000000000 +0100 ++++ linux-2.4.18-mh15/include/linux/net.h 2004-08-01 16:26:23.000000000 +0200 +@@ -139,6 +139,7 @@ + extern int sock_recvmsg(struct socket *, struct msghdr *m, int len, int flags); + extern int sock_readv_writev(int type, struct inode * inode, struct file * file, + const struct iovec * iov, long count, long size); ++extern struct socket *sockfd_lookup(int fd, int *err); + + extern int net_ratelimit(void); + extern unsigned long net_random(void); +diff -urN linux-2.4.18/include/linux/uinput.h linux-2.4.18-mh15/include/linux/uinput.h +--- linux-2.4.18/include/linux/uinput.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/include/linux/uinput.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,79 @@ ++/* ++ * User level driver support for input subsystem ++ * ++ * Heavily based on evdev.c by Vojtech Pavlik ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org> ++ * ++ * Changes/Revisions: ++ * 0.1 20/06/2002 ++ * - first public version ++ */ ++ ++#ifndef __UINPUT_H_ ++#define __UINPUT_H_ ++ ++#ifdef __KERNEL__ ++#define UINPUT_MINOR 223 ++#define UINPUT_NAME "uinput" ++#define UINPUT_BUFFER_SIZE 16 ++ ++/* state flags => bit index for {set|clear|test}_bit ops */ ++#define UIST_CREATED 0 ++ ++struct uinput_device { ++ struct input_dev *dev; ++ unsigned long state; ++ wait_queue_head_t waitq; ++ unsigned char ready, ++ head, ++ tail; ++ struct input_event buff[UINPUT_BUFFER_SIZE]; ++}; ++#endif /* __KERNEL__ */ ++ ++/* ioctl */ ++#define UINPUT_IOCTL_BASE 'U' ++#define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1) ++#define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2) ++#define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int) ++#define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int) ++#define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int) ++#define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int) ++#define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int) ++#define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int) ++#define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int) ++#define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int) ++ ++#ifndef NBITS ++#define NBITS(x) ((((x)-1)/(sizeof(long)*8))+1) ++#endif /* NBITS */ ++ ++#define UINPUT_MAX_NAME_SIZE 80 ++struct uinput_user_dev { ++ char name[UINPUT_MAX_NAME_SIZE]; ++ unsigned short idbus; ++ unsigned short idvendor; ++ unsigned short idproduct; ++ unsigned short idversion; ++ int ff_effects_max; ++ int absmax[ABS_MAX + 1]; ++ int absmin[ABS_MAX + 1]; ++ int absfuzz[ABS_MAX + 1]; ++ int absflat[ABS_MAX + 1]; ++}; ++#endif /* __UINPUT_H_ */ +diff -urN linux-2.4.18/include/net/bluetooth/bluetooth.h linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h +--- linux-2.4.18/include/net/bluetooth/bluetooth.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/bluetooth.h 2004-08-01 16:26:23.000000000 +0200 +@@ -23,7 +23,7 @@ + */ + + /* +- * $Id: bluetooth.h,v 1.6 2001/08/03 04:19:49 maxk Exp $ ++ * $Id: bluetooth.h,v 1.9 2002/05/06 21:11:55 maxk Exp $ + */ + + #ifndef __BLUETOOTH_H +@@ -31,17 +31,64 @@ + + #include <asm/types.h> + #include <asm/byteorder.h> ++#include <linux/poll.h> ++#include <net/sock.h> + + #ifndef AF_BLUETOOTH + #define AF_BLUETOOTH 31 + #define PF_BLUETOOTH AF_BLUETOOTH + #endif + ++/* Reserv for core and drivers use */ ++#define BLUEZ_SKB_RESERVE 8 ++ ++#ifndef MIN ++#define MIN(a,b) ((a) < (b) ? (a) : (b)) ++#endif ++ + #define BTPROTO_L2CAP 0 + #define BTPROTO_HCI 1 ++#define BTPROTO_SCO 2 ++#define BTPROTO_RFCOMM 3 ++#define BTPROTO_BNEP 4 ++#define BTPROTO_CMTP 5 ++#define BTPROTO_HIDP 6 + + #define SOL_HCI 0 + #define SOL_L2CAP 6 ++#define SOL_SCO 17 ++#define SOL_RFCOMM 18 ++ ++/* Debugging */ ++#ifdef CONFIG_BLUEZ_DEBUG ++ ++#define HCI_CORE_DEBUG 1 ++#define HCI_SOCK_DEBUG 1 ++#define HCI_UART_DEBUG 1 ++#define HCI_USB_DEBUG 1 ++//#define HCI_DATA_DUMP 1 ++ ++#define L2CAP_DEBUG 1 ++#define SCO_DEBUG 1 ++#define AF_BLUETOOTH_DEBUG 1 ++ ++#endif /* CONFIG_BLUEZ_DEBUG */ ++ ++extern void bluez_dump(char *pref, __u8 *buf, int count); ++ ++#if __GNUC__ <= 2 && __GNUC_MINOR__ < 95 ++#define __func__ __FUNCTION__ ++#endif ++ ++#define BT_INFO(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg) ++#define BT_DBG(fmt, arg...) printk(KERN_INFO "%s: " fmt "\n" , __func__ , ## arg) ++#define BT_ERR(fmt, arg...) printk(KERN_ERR "%s: " fmt "\n" , __func__ , ## arg) ++ ++#ifdef HCI_DATA_DUMP ++#define BT_DMP(buf, len) bluez_dump(__func__, buf, len) ++#else ++#define BT_DMP(D...) ++#endif + + /* Connection and socket states */ + enum { +@@ -50,6 +97,7 @@ + BT_BOUND, + BT_LISTEN, + BT_CONNECT, ++ BT_CONNECT2, + BT_CONFIG, + BT_DISCONN, + BT_CLOSED +@@ -66,7 +114,8 @@ + __u8 b[6]; + } __attribute__((packed)) bdaddr_t; + +-#define BDADDR_ANY ((bdaddr_t *)"\000\000\000\000\000") ++#define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) ++#define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}}) + + /* Copy, swap, convert BD Address */ + static inline int bacmp(bdaddr_t *ba1, bdaddr_t *ba2) +@@ -82,6 +131,91 @@ + char *batostr(bdaddr_t *ba); + bdaddr_t *strtoba(char *str); + ++/* Common socket structures and functions */ ++ ++#define bluez_pi(sk) ((struct bluez_pinfo *) &sk->protinfo) ++#define bluez_sk(pi) ((struct sock *) \ ++ ((void *)pi - (unsigned long)(&((struct sock *)0)->protinfo))) ++ ++struct bluez_pinfo { ++ bdaddr_t src; ++ bdaddr_t dst; ++ ++ struct list_head accept_q; ++ struct sock *parent; ++}; ++ ++struct bluez_sock_list { ++ struct sock *head; ++ rwlock_t lock; ++}; ++ ++int bluez_sock_register(int proto, struct net_proto_family *ops); ++int bluez_sock_unregister(int proto); ++void bluez_sock_init(struct socket *sock, struct sock *sk); ++void bluez_sock_link(struct bluez_sock_list *l, struct sock *s); ++void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s); ++int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm); ++uint bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait); ++int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo); ++ ++void bluez_accept_enqueue(struct sock *parent, struct sock *sk); ++struct sock * bluez_accept_dequeue(struct sock *parent, struct socket *newsock); ++ ++/* Skb helpers */ ++struct bluez_skb_cb { ++ int incomming; ++}; ++#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb)) ++ ++static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how) ++{ ++ struct sk_buff *skb; ++ ++ if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) { ++ skb_reserve(skb, BLUEZ_SKB_RESERVE); ++ bluez_cb(skb)->incomming = 0; ++ } ++ return skb; ++} ++ ++static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len, ++ int nb, int *err) ++{ ++ struct sk_buff *skb; ++ ++ if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) { ++ skb_reserve(skb, BLUEZ_SKB_RESERVE); ++ bluez_cb(skb)->incomming = 0; ++ } ++ ++ return skb; ++} ++ ++static inline int skb_frags_no(struct sk_buff *skb) ++{ ++ register struct sk_buff *frag = skb_shinfo(skb)->frag_list; ++ register int n = 1; ++ ++ for (; frag; frag=frag->next, n++); ++ return n; ++} ++ ++int hci_core_init(void); ++int hci_core_cleanup(void); ++int hci_sock_init(void); ++int hci_sock_cleanup(void); ++ + int bterr(__u16 code); + ++#ifndef MODULE_LICENSE ++#define MODULE_LICENSE(x) ++#endif ++ ++#ifndef list_for_each_safe ++#define list_for_each_safe(pos, n, head) \ ++ for (pos = (head)->next, n = pos->next; pos != (head); \ ++ pos = n, n = pos->next) ++#endif ++ + #endif /* __BLUETOOTH_H */ +diff -urN linux-2.4.18/include/net/bluetooth/bluez.h linux-2.4.18-mh15/include/net/bluetooth/bluez.h +--- linux-2.4.18/include/net/bluetooth/bluez.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/bluez.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,124 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * $Id: bluez.h,v 1.4 2001/08/03 04:19:49 maxk Exp $ +- */ +- +-#ifndef __IF_BLUEZ_H +-#define __IF_BLUEZ_H +- +-#include <net/sock.h> +- +-#define BLUEZ_MAX_PROTO 2 +- +-/* Reserv for core and drivers use */ +-#define BLUEZ_SKB_RESERVE 8 +- +-#ifndef MIN +-#define MIN(a,b) ((a) < (b) ? (a) : (b)) +-#endif +- +-/* Debugging */ +-#ifdef BLUEZ_DEBUG +- +-#define HCI_CORE_DEBUG 1 +-#define HCI_SOCK_DEBUG 1 +-#define HCI_UART_DEBUG 1 +-#define HCI_USB_DEBUG 1 +-//#define HCI_DATA_DUMP 1 +- +-#define L2CAP_DEBUG 1 +- +-#endif /* BLUEZ_DEBUG */ +- +-extern void bluez_dump(char *pref, __u8 *buf, int count); +- +-#define INF(fmt, arg...) printk(KERN_INFO fmt "\n" , ## arg) +-#define DBG(fmt, arg...) printk(KERN_INFO __FUNCTION__ ": " fmt "\n" , ## arg) +-#define ERR(fmt, arg...) printk(KERN_ERR __FUNCTION__ ": " fmt "\n" , ## arg) +- +-#ifdef HCI_DATA_DUMP +-#define DMP(buf, len) bluez_dump(__FUNCTION__, buf, len) +-#else +-#define DMP(D...) +-#endif +- +-/* ----- Sockets ------ */ +-struct bluez_sock_list { +- struct sock *head; +- rwlock_t lock; +-}; +- +-extern int bluez_sock_register(int proto, struct net_proto_family *ops); +-extern int bluez_sock_unregister(int proto); +- +-extern void bluez_sock_link(struct bluez_sock_list *l, struct sock *s); +-extern void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *s); +- +-/* ----- SKB helpers ----- */ +-struct bluez_skb_cb { +- int incomming; +-}; +-#define bluez_cb(skb) ((struct bluez_skb_cb *)(skb->cb)) +- +-static inline struct sk_buff *bluez_skb_alloc(unsigned int len, int how) +-{ +- struct sk_buff *skb; +- +- if ((skb = alloc_skb(len + BLUEZ_SKB_RESERVE, how))) { +- skb_reserve(skb, BLUEZ_SKB_RESERVE); +- bluez_cb(skb)->incomming = 0; +- } +- return skb; +-} +- +-static inline struct sk_buff *bluez_skb_send_alloc(struct sock *sk, unsigned long len, +- int nb, int *err) +-{ +- struct sk_buff *skb; +- +- if ((skb = sock_alloc_send_skb(sk, len + BLUEZ_SKB_RESERVE, nb, err))) { +- skb_reserve(skb, BLUEZ_SKB_RESERVE); +- bluez_cb(skb)->incomming = 0; +- } +- +- return skb; +-} +- +-static inline int skb_frags_no(struct sk_buff *skb) +-{ +- register struct sk_buff *frag = skb_shinfo(skb)->frag_list; +- register int n = 1; +- +- for (; frag; frag=frag->next, n++); +- return n; +-} +- +-extern int hci_core_init(void); +-extern int hci_core_cleanup(void); +-extern int hci_sock_init(void); +-extern int hci_sock_cleanup(void); +- +-#endif /* __IF_BLUEZ_H */ +diff -urN linux-2.4.18/include/net/bluetooth/hci_core.h linux-2.4.18-mh15/include/net/bluetooth/hci_core.h +--- linux-2.4.18/include/net/bluetooth/hci_core.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/hci_core.h 2004-08-01 16:26:23.000000000 +0200 +@@ -23,7 +23,7 @@ + */ + + /* +- * $Id: hci_core.h,v 1.11 2001/08/05 06:02:15 maxk Exp $ ++ * $Id: hci_core.h,v 1.5 2002/06/27 04:56:30 maxk Exp $ + */ + + #ifndef __HCI_CORE_H +@@ -32,14 +32,12 @@ + #include <net/bluetooth/hci.h> + + /* HCI upper protocols */ +-#define HCI_MAX_PROTO 1 + #define HCI_PROTO_L2CAP 0 ++#define HCI_PROTO_SCO 1 + + #define HCI_INIT_TIMEOUT (HZ * 10) + +-/* ----- Inquiry cache ----- */ +-#define INQUIRY_CACHE_AGE_MAX (HZ*5) // 5 seconds +-#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds ++/* HCI Core structures */ + + struct inquiry_entry { + struct inquiry_entry *next; +@@ -53,111 +51,188 @@ + struct inquiry_entry *list; + }; + +-static inline void inquiry_cache_init(struct inquiry_cache *cache) +-{ +- spin_lock_init(&cache->lock); +- cache->list = NULL; +-} ++struct conn_hash { ++ struct list_head list; ++ spinlock_t lock; ++ unsigned int num; ++}; + +-static inline void inquiry_cache_lock(struct inquiry_cache *cache) +-{ +- spin_lock(&cache->lock); +-} ++struct hci_dev { ++ struct list_head list; ++ spinlock_t lock; ++ atomic_t refcnt; + +-static inline void inquiry_cache_unlock(struct inquiry_cache *cache) +-{ +- spin_unlock(&cache->lock); +-} ++ char name[8]; ++ unsigned long flags; ++ __u16 id; ++ __u8 type; ++ bdaddr_t bdaddr; ++ __u8 features[8]; + +-static inline void inquiry_cache_lock_bh(struct inquiry_cache *cache) +-{ +- spin_lock_bh(&cache->lock); +-} ++ __u16 pkt_type; ++ __u16 link_policy; ++ __u16 link_mode; + +-static inline void inquiry_cache_unlock_bh(struct inquiry_cache *cache) +-{ +- spin_unlock_bh(&cache->lock); +-} ++ unsigned long quirks; + +-static inline long inquiry_cache_age(struct inquiry_cache *cache) +-{ +- return jiffies - cache->timestamp; +-} ++ atomic_t cmd_cnt; ++ unsigned int acl_cnt; ++ unsigned int sco_cnt; + +-static inline long inquiry_entry_age(struct inquiry_entry *e) +-{ +- return jiffies - e->timestamp; +-} +-extern void inquiry_cache_flush(struct inquiry_cache *cache); ++ unsigned int acl_mtu; ++ unsigned int sco_mtu; ++ unsigned int acl_pkts; ++ unsigned int sco_pkts; + +-struct hci_dev; ++ unsigned long cmd_last_tx; ++ unsigned long acl_last_tx; ++ unsigned long sco_last_tx; ++ ++ struct tasklet_struct cmd_task; ++ struct tasklet_struct rx_task; ++ struct tasklet_struct tx_task; ++ ++ struct sk_buff_head rx_q; ++ struct sk_buff_head raw_q; ++ struct sk_buff_head cmd_q; ++ ++ struct sk_buff *sent_cmd; ++ ++ struct semaphore req_lock; ++ wait_queue_head_t req_wait_q; ++ __u32 req_status; ++ __u32 req_result; ++ ++ struct inquiry_cache inq_cache; ++ struct conn_hash conn_hash; ++ ++ struct hci_dev_stats stat; ++ ++ void *driver_data; ++ void *core_data; ++ ++ atomic_t promisc; ++ ++ int (*open)(struct hci_dev *hdev); ++ int (*close)(struct hci_dev *hdev); ++ int (*flush)(struct hci_dev *hdev); ++ int (*send)(struct sk_buff *skb); ++ void (*destruct)(struct hci_dev *hdev); ++ int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg); ++}; + +-/* ----- HCI Connections ----- */ + struct hci_conn { + struct list_head list; ++ ++ atomic_t refcnt; ++ spinlock_t lock; ++ + bdaddr_t dst; + __u16 handle; ++ __u16 state; + __u8 type; +- unsigned int sent; ++ __u8 out; ++ __u32 link_mode; ++ unsigned long pend; ++ ++ unsigned int sent; ++ ++ struct sk_buff_head data_q; + ++ struct timer_list timer; ++ + struct hci_dev *hdev; + void *l2cap_data; ++ void *sco_data; + void *priv; + +- struct sk_buff_head data_q; ++ struct hci_conn *link; + }; + +-struct conn_hash { +- struct list_head list; +- spinlock_t lock; +- unsigned int num; +-}; ++extern struct hci_proto *hci_proto[]; ++extern struct list_head hdev_list; ++extern rwlock_t hdev_list_lock; ++ ++/* ----- Inquiry cache ----- */ ++#define INQUIRY_CACHE_AGE_MAX (HZ*30) // 30 seconds ++#define INQUIRY_ENTRY_AGE_MAX (HZ*60) // 60 seconds ++ ++#define inquiry_cache_lock(c) spin_lock(&c->lock) ++#define inquiry_cache_unlock(c) spin_unlock(&c->lock) ++#define inquiry_cache_lock_bh(c) spin_lock_bh(&c->lock) ++#define inquiry_cache_unlock_bh(c) spin_unlock_bh(&c->lock) + +-static inline void conn_hash_init(struct conn_hash *h) ++static inline void inquiry_cache_init(struct hci_dev *hdev) + { +- INIT_LIST_HEAD(&h->list); +- spin_lock_init(&h->lock); +- h->num = 0; ++ struct inquiry_cache *c = &hdev->inq_cache; ++ spin_lock_init(&c->lock); ++ c->list = NULL; + } + +-static inline void conn_hash_lock(struct conn_hash *h) ++static inline int inquiry_cache_empty(struct hci_dev *hdev) + { +- spin_lock(&h->lock); ++ struct inquiry_cache *c = &hdev->inq_cache; ++ return (c->list == NULL); + } + +-static inline void conn_hash_unlock(struct conn_hash *h) ++static inline long inquiry_cache_age(struct hci_dev *hdev) + { +- spin_unlock(&h->lock); ++ struct inquiry_cache *c = &hdev->inq_cache; ++ return jiffies - c->timestamp; + } + +-static inline void __conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c) ++static inline long inquiry_entry_age(struct inquiry_entry *e) + { +- list_add(&c->list, &h->list); +- h->num++; ++ return jiffies - e->timestamp; + } + +-static inline void conn_hash_add(struct conn_hash *h, __u16 handle, struct hci_conn *c) ++struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr); ++void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info); ++void inquiry_cache_flush(struct hci_dev *hdev); ++int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf); ++ ++/* ----- HCI Connections ----- */ ++enum { ++ HCI_CONN_AUTH_PEND, ++ HCI_CONN_ENCRYPT_PEND ++}; ++ ++#define hci_conn_lock(c) spin_lock(&c->lock) ++#define hci_conn_unlock(c) spin_unlock(&c->lock) ++#define hci_conn_lock_bh(c) spin_lock_bh(&c->lock) ++#define hci_conn_unlock_bh(c) spin_unlock_bh(&c->lock) ++ ++#define conn_hash_lock(d) spin_lock(&d->conn_hash->lock) ++#define conn_hash_unlock(d) spin_unlock(&d->conn_hash->lock) ++#define conn_hash_lock_bh(d) spin_lock_bh(&d->conn_hash->lock) ++#define conn_hash_unlock_bh(d) spin_unlock_bh(&d->conn_hash->lock) ++ ++static inline void conn_hash_init(struct hci_dev *hdev) + { +- conn_hash_lock(h); +- __conn_hash_add(h, handle, c); +- conn_hash_unlock(h); ++ struct conn_hash *h = &hdev->conn_hash; ++ INIT_LIST_HEAD(&h->list); ++ spin_lock_init(&h->lock); ++ h->num = 0; + } + +-static inline void __conn_hash_del(struct conn_hash *h, struct hci_conn *c) ++static inline void conn_hash_add(struct hci_dev *hdev, struct hci_conn *c) + { +- list_del(&c->list); +- h->num--; ++ struct conn_hash *h = &hdev->conn_hash; ++ list_add(&c->list, &h->list); ++ h->num++; + } + +-static inline void conn_hash_del(struct conn_hash *h, struct hci_conn *c) ++static inline void conn_hash_del(struct hci_dev *hdev, struct hci_conn *c) + { +- conn_hash_lock(h); +- __conn_hash_del(h, c); +- conn_hash_unlock(h); ++ struct conn_hash *h = &hdev->conn_hash; ++ list_del(&c->list); ++ h->num--; + } + +-static inline struct hci_conn *__conn_hash_lookup(struct conn_hash *h, __u16 handle) ++static inline struct hci_conn *conn_hash_lookup_handle(struct hci_dev *hdev, ++ __u16 handle) + { ++ register struct conn_hash *h = &hdev->conn_hash; + register struct list_head *p; + register struct hci_conn *c; + +@@ -169,101 +244,97 @@ + return NULL; + } + +-static inline struct hci_conn *conn_hash_lookup(struct conn_hash *h, __u16 handle) ++static inline struct hci_conn *conn_hash_lookup_ba(struct hci_dev *hdev, ++ __u8 type, bdaddr_t *ba) + { +- struct hci_conn *conn; ++ register struct conn_hash *h = &hdev->conn_hash; ++ register struct list_head *p; ++ register struct hci_conn *c; + +- conn_hash_lock(h); +- conn = __conn_hash_lookup(h, handle); +- conn_hash_unlock(h); +- return conn; ++ list_for_each(p, &h->list) { ++ c = list_entry(p, struct hci_conn, list); ++ if (c->type == type && !bacmp(&c->dst, ba)) ++ return c; ++ } ++ return NULL; + } + +-/* ----- HCI Devices ----- */ +-struct hci_dev { +- atomic_t refcnt; +- +- char name[8]; +- __u32 flags; +- __u16 id; +- __u8 type; +- bdaddr_t bdaddr; +- __u8 features[8]; +- +- __u16 pkt_type; +- +- atomic_t cmd_cnt; +- unsigned int acl_cnt; +- unsigned int sco_cnt; +- +- unsigned int acl_mtu; +- unsigned int sco_mtu; +- unsigned int acl_max; +- unsigned int sco_max; +- +- void *driver_data; +- void *l2cap_data; +- void *priv; +- +- struct tasklet_struct cmd_task; +- struct tasklet_struct rx_task; +- struct tasklet_struct tx_task; +- +- struct sk_buff_head rx_q; +- struct sk_buff_head raw_q; +- struct sk_buff_head cmd_q; +- +- struct sk_buff *sent_cmd; ++void hci_acl_connect(struct hci_conn *conn); ++void hci_acl_disconn(struct hci_conn *conn, __u8 reason); ++void hci_add_sco(struct hci_conn *conn, __u16 handle); + +- struct semaphore req_lock; +- wait_queue_head_t req_wait_q; +- __u32 req_status; +- __u32 req_result; ++struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst); ++int hci_conn_del(struct hci_conn *conn); ++void hci_conn_hash_flush(struct hci_dev *hdev); + +- struct inquiry_cache inq_cache; ++struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *src); ++int hci_conn_auth(struct hci_conn *conn); ++int hci_conn_encrypt(struct hci_conn *conn); + +- struct conn_hash conn_hash; +- +- struct hci_dev_stats stat; +- +- int (*open)(struct hci_dev *hdev); +- int (*close)(struct hci_dev *hdev); +- int (*flush)(struct hci_dev *hdev); +- int (*send)(struct sk_buff *skb); +-}; ++static inline void hci_conn_set_timer(struct hci_conn *conn, long timeout) ++{ ++ mod_timer(&conn->timer, jiffies + timeout); ++} + +-static inline void hci_dev_hold(struct hci_dev *hdev) ++static inline void hci_conn_del_timer(struct hci_conn *conn) + { +- atomic_inc(&hdev->refcnt); ++ del_timer(&conn->timer); + } + +-static inline void hci_dev_put(struct hci_dev *hdev) ++static inline void hci_conn_hold(struct hci_conn *conn) + { +- atomic_dec(&hdev->refcnt); ++ atomic_inc(&conn->refcnt); ++ hci_conn_del_timer(conn); + } + +-extern struct hci_dev *hci_dev_get(int index); +-extern int hci_register_dev(struct hci_dev *hdev); +-extern int hci_unregister_dev(struct hci_dev *hdev); +-extern int hci_dev_open(__u16 dev); +-extern int hci_dev_close(__u16 dev); +-extern int hci_dev_reset(__u16 dev); +-extern int hci_dev_reset_stat(__u16 dev); +-extern int hci_dev_info(unsigned long arg); +-extern int hci_dev_list(unsigned long arg); +-extern int hci_dev_setscan(unsigned long arg); +-extern int hci_dev_setauth(unsigned long arg); +-extern int hci_dev_setptype(unsigned long arg); +-extern int hci_conn_list(unsigned long arg); +-extern int hci_inquiry(unsigned long arg); ++static inline void hci_conn_put(struct hci_conn *conn) ++{ ++ if (atomic_dec_and_test(&conn->refcnt)) { ++ if (conn->type == ACL_LINK) { ++ unsigned long timeo = (conn->out) ? ++ HCI_DISCONN_TIMEOUT : HCI_DISCONN_TIMEOUT * 2; ++ hci_conn_set_timer(conn, timeo); ++ } else ++ hci_conn_set_timer(conn, HZ / 100); ++ } ++} + +-extern __u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode); +-extern __u32 hci_dev_getmode(struct hci_dev *hdev); ++/* ----- HCI Devices ----- */ ++static inline void hci_dev_put(struct hci_dev *d) ++{ ++ if (atomic_dec_and_test(&d->refcnt)) ++ d->destruct(d); ++} ++#define hci_dev_hold(d) atomic_inc(&d->refcnt) ++ ++#define hci_dev_lock(d) spin_lock(&d->lock) ++#define hci_dev_unlock(d) spin_unlock(&d->lock) ++#define hci_dev_lock_bh(d) spin_lock_bh(&d->lock) ++#define hci_dev_unlock_bh(d) spin_unlock_bh(&d->lock) ++ ++struct hci_dev *hci_dev_get(int index); ++struct hci_dev *hci_get_route(bdaddr_t *src, bdaddr_t *dst); ++int hci_register_dev(struct hci_dev *hdev); ++int hci_unregister_dev(struct hci_dev *hdev); ++int hci_suspend_dev(struct hci_dev *hdev); ++int hci_resume_dev(struct hci_dev *hdev); ++int hci_dev_open(__u16 dev); ++int hci_dev_close(__u16 dev); ++int hci_dev_reset(__u16 dev); ++int hci_dev_reset_stat(__u16 dev); ++int hci_dev_cmd(unsigned int cmd, unsigned long arg); ++int hci_get_dev_list(unsigned long arg); ++int hci_get_dev_info(unsigned long arg); ++int hci_get_conn_list(unsigned long arg); ++int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg); ++int hci_inquiry(unsigned long arg); + +-extern int hci_recv_frame(struct sk_buff *skb); ++int hci_recv_frame(struct sk_buff *skb); ++void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb); + + /* ----- LMP capabilities ----- */ + #define lmp_rswitch_capable(dev) (dev->features[0] & LMP_RSWITCH) ++#define lmp_encrypt_capable(dev) (dev->features[0] & LMP_ENCRYPT) + + /* ----- HCI tasks ----- */ + static inline void hci_sched_cmd(struct hci_dev *hdev) +@@ -284,43 +355,130 @@ + /* ----- HCI protocols ----- */ + struct hci_proto { + char *name; +- __u32 id; +- __u32 flags; ++ unsigned int id; ++ unsigned long flags; + + void *priv; + +- int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr); +- int (*connect_cfm) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *conn); ++ int (*connect_ind) (struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type); ++ int (*connect_cfm) (struct hci_conn *conn, __u8 status); + int (*disconn_ind) (struct hci_conn *conn, __u8 reason); +- int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb , __u16 flags); ++ int (*recv_acldata) (struct hci_conn *conn, struct sk_buff *skb, __u16 flags); + int (*recv_scodata) (struct hci_conn *conn, struct sk_buff *skb); ++ int (*auth_cfm) (struct hci_conn *conn, __u8 status); ++ int (*encrypt_cfm) (struct hci_conn *conn, __u8 status); + }; + +-extern int hci_register_proto(struct hci_proto *hproto); +-extern int hci_unregister_proto(struct hci_proto *hproto); +-extern int hci_register_notifier(struct notifier_block *nb); +-extern int hci_unregister_notifier(struct notifier_block *nb); +-extern int hci_connect(struct hci_dev * hdev, bdaddr_t * bdaddr); +-extern int hci_disconnect(struct hci_conn *conn, __u8 reason); +-extern int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void * param); +-extern int hci_send_raw(struct sk_buff *skb); +-extern int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags); +-extern int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb); ++static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type) ++{ ++ register struct hci_proto *hp; ++ int mask = 0; ++ ++ hp = hci_proto[HCI_PROTO_L2CAP]; ++ if (hp && hp->connect_ind) ++ mask |= hp->connect_ind(hdev, bdaddr, type); ++ ++ hp = hci_proto[HCI_PROTO_SCO]; ++ if (hp && hp->connect_ind) ++ mask |= hp->connect_ind(hdev, bdaddr, type); ++ ++ return mask; ++} ++ ++static inline void hci_proto_connect_cfm(struct hci_conn *conn, __u8 status) ++{ ++ register struct hci_proto *hp; ++ ++ hp = hci_proto[HCI_PROTO_L2CAP]; ++ if (hp && hp->connect_cfm) ++ hp->connect_cfm(conn, status); ++ ++ hp = hci_proto[HCI_PROTO_SCO]; ++ if (hp && hp->connect_cfm) ++ hp->connect_cfm(conn, status); ++} ++ ++static inline void hci_proto_disconn_ind(struct hci_conn *conn, __u8 reason) ++{ ++ register struct hci_proto *hp; ++ ++ hp = hci_proto[HCI_PROTO_L2CAP]; ++ if (hp && hp->disconn_ind) ++ hp->disconn_ind(conn, reason); ++ ++ hp = hci_proto[HCI_PROTO_SCO]; ++ if (hp && hp->disconn_ind) ++ hp->disconn_ind(conn, reason); ++} ++ ++static inline void hci_proto_auth_cfm(struct hci_conn *conn, __u8 status) ++{ ++ register struct hci_proto *hp; ++ ++ hp = hci_proto[HCI_PROTO_L2CAP]; ++ if (hp && hp->auth_cfm) ++ hp->auth_cfm(conn, status); ++ ++ hp = hci_proto[HCI_PROTO_SCO]; ++ if (hp && hp->auth_cfm) ++ hp->auth_cfm(conn, status); ++} ++ ++static inline void hci_proto_encrypt_cfm(struct hci_conn *conn, __u8 status) ++{ ++ register struct hci_proto *hp; ++ ++ hp = hci_proto[HCI_PROTO_L2CAP]; ++ if (hp && hp->encrypt_cfm) ++ hp->encrypt_cfm(conn, status); ++ ++ hp = hci_proto[HCI_PROTO_SCO]; ++ if (hp && hp->encrypt_cfm) ++ hp->encrypt_cfm(conn, status); ++} ++ ++int hci_register_proto(struct hci_proto *hproto); ++int hci_unregister_proto(struct hci_proto *hproto); ++int hci_register_notifier(struct notifier_block *nb); ++int hci_unregister_notifier(struct notifier_block *nb); ++ ++int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param); ++int hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags); ++int hci_send_sco(struct hci_conn *conn, struct sk_buff *skb); ++ ++void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf); ++ ++void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data); + + /* ----- HCI Sockets ----- */ +-extern void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb); ++void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb); + + /* HCI info for socket */ +-#define hci_pi(sk) ((struct hci_pinfo *) &sk->protinfo) ++#define hci_pi(sk) ((struct hci_pinfo *) &sk->tp_pinfo) + struct hci_pinfo { + struct hci_dev *hdev; + struct hci_filter filter; + __u32 cmsg_mask; + }; + ++/* HCI security filter */ ++#define HCI_SFLT_MAX_OGF 5 ++ ++struct hci_sec_filter { ++ __u32 type_mask; ++ __u32 event_mask[2]; ++ __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4]; ++}; ++ + /* ----- HCI requests ----- */ + #define HCI_REQ_DONE 0 + #define HCI_REQ_PEND 1 + #define HCI_REQ_CANCELED 2 + ++#define hci_req_lock(d) down(&d->req_lock) ++#define hci_req_unlock(d) up(&d->req_lock) ++ ++void hci_req_complete(struct hci_dev *hdev, int result); ++void hci_req_cancel(struct hci_dev *hdev, int err); ++ + #endif /* __HCI_CORE_H */ +diff -urN linux-2.4.18/include/net/bluetooth/hci.h linux-2.4.18-mh15/include/net/bluetooth/hci.h +--- linux-2.4.18/include/net/bluetooth/hci.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/hci.h 2004-08-01 16:26:23.000000000 +0200 +@@ -23,59 +23,80 @@ + */ + + /* +- * $Id: hci.h,v 1.15 2001/08/05 06:02:15 maxk Exp $ ++ * $Id: hci.h,v 1.5 2002/06/27 17:29:30 maxk Exp $ + */ + + #ifndef __HCI_H + #define __HCI_H + +-#include <asm/byteorder.h> +- +-#define HCI_MAX_DEV 8 +-#define HCI_MAX_FRAME_SIZE 2048 ++#define HCI_MAX_ACL_SIZE 1024 ++#define HCI_MAX_SCO_SIZE 255 ++#define HCI_MAX_EVENT_SIZE 260 ++#define HCI_MAX_FRAME_SIZE (HCI_MAX_ACL_SIZE + 4) + + /* HCI dev events */ + #define HCI_DEV_REG 1 + #define HCI_DEV_UNREG 2 + #define HCI_DEV_UP 3 + #define HCI_DEV_DOWN 4 ++#define HCI_DEV_SUSPEND 5 ++#define HCI_DEV_RESUME 6 + + /* HCI device types */ +-#define HCI_UART 0 ++#define HCI_VHCI 0 + #define HCI_USB 1 +-#define HCI_VHCI 2 +- +-/* HCI device modes */ +-#define HCI_NORMAL 0x0001 +-#define HCI_RAW 0x0002 +-#define HCI_MODE_MASK (HCI_NORMAL | HCI_RAW) +-#define HCI_SOCK 0x1000 +- +-/* HCI device states */ +-#define HCI_INIT 0x0010 +-#define HCI_UP 0x0020 +-#define HCI_RUNNING 0x0040 ++#define HCI_PCCARD 2 ++#define HCI_UART 3 ++#define HCI_RS232 4 ++#define HCI_PCI 5 ++ ++/* HCI device quirks */ ++enum { ++ HCI_QUIRK_RESET_ON_INIT ++}; + + /* HCI device flags */ +-#define HCI_PSCAN 0x0100 +-#define HCI_ISCAN 0x0200 +-#define HCI_AUTH 0x0400 ++enum { ++ HCI_UP, ++ HCI_INIT, ++ HCI_RUNNING, ++ ++ HCI_PSCAN, ++ HCI_ISCAN, ++ HCI_AUTH, ++ HCI_ENCRYPT, ++ HCI_INQUIRY, ++ ++ HCI_RAW ++}; + +-/* HCI Ioctl defines */ ++/* HCI ioctl defines */ + #define HCIDEVUP _IOW('H', 201, int) + #define HCIDEVDOWN _IOW('H', 202, int) + #define HCIDEVRESET _IOW('H', 203, int) +-#define HCIRESETSTAT _IOW('H', 204, int) +-#define HCIGETINFO _IOR('H', 205, int) +-#define HCIGETDEVLIST _IOR('H', 206, int) +-#define HCISETRAW _IOW('H', 207, int) +-#define HCISETSCAN _IOW('H', 208, int) +-#define HCISETAUTH _IOW('H', 209, int) +-#define HCIINQUIRY _IOR('H', 210, int) +-#define HCISETPTYPE _IOW('H', 211, int) ++#define HCIDEVRESTAT _IOW('H', 204, int) ++ ++#define HCIGETDEVLIST _IOR('H', 210, int) ++#define HCIGETDEVINFO _IOR('H', 211, int) + #define HCIGETCONNLIST _IOR('H', 212, int) ++#define HCIGETCONNINFO _IOR('H', 213, int) + +-#ifndef __NO_HCI_DEFS ++#define HCISETRAW _IOW('H', 220, int) ++#define HCISETSCAN _IOW('H', 221, int) ++#define HCISETAUTH _IOW('H', 222, int) ++#define HCISETENCRYPT _IOW('H', 223, int) ++#define HCISETPTYPE _IOW('H', 224, int) ++#define HCISETLINKPOL _IOW('H', 225, int) ++#define HCISETLINKMODE _IOW('H', 226, int) ++#define HCISETACLMTU _IOW('H', 227, int) ++#define HCISETSCOMTU _IOW('H', 228, int) ++ ++#define HCIINQUIRY _IOR('H', 240, int) ++ ++/* HCI timeouts */ ++#define HCI_CONN_TIMEOUT (HZ * 40) ++#define HCI_DISCONN_TIMEOUT (HZ * 2) ++#define HCI_CONN_IDLE_TIMEOUT (HZ * 60) + + /* HCI Packet types */ + #define HCI_COMMAND_PKT 0x01 +@@ -92,11 +113,18 @@ + #define HCI_DH3 0x0800 + #define HCI_DH5 0x8000 + ++#define HCI_HV1 0x0020 ++#define HCI_HV2 0x0040 ++#define HCI_HV3 0x0080 ++ ++#define SCO_PTYPE_MASK (HCI_HV1 | HCI_HV2 | HCI_HV3) ++#define ACL_PTYPE_MASK (~SCO_PTYPE_MASK) ++ + /* ACL flags */ +-#define ACL_CONT 0x0001 +-#define ACL_START 0x0002 +-#define ACL_ACTIVE_BCAST 0x0010 +-#define ACL_PICO_BCAST 0x0020 ++#define ACL_CONT 0x01 ++#define ACL_START 0x02 ++#define ACL_ACTIVE_BCAST 0x04 ++#define ACL_PICO_BCAST 0x08 + + /* Baseband links */ + #define SCO_LINK 0x00 +@@ -125,6 +153,20 @@ + #define LMP_PSCHEME 0x02 + #define LMP_PCONTROL 0x04 + ++/* Link policies */ ++#define HCI_LP_RSWITCH 0x0001 ++#define HCI_LP_HOLD 0x0002 ++#define HCI_LP_SNIFF 0x0004 ++#define HCI_LP_PARK 0x0008 ++ ++/* Link mode */ ++#define HCI_LM_ACCEPT 0x8000 ++#define HCI_LM_MASTER 0x0001 ++#define HCI_LM_AUTH 0x0002 ++#define HCI_LM_ENCRYPT 0x0004 ++#define HCI_LM_TRUSTED 0x0008 ++#define HCI_LM_RELIABLE 0x0010 ++ + /* ----- HCI Commands ----- */ + /* OGF & OCF values */ + +@@ -137,9 +179,10 @@ + __u8 hci_ver; + __u16 hci_rev; + __u8 lmp_ver; +- __u16 man_name; +- __u16 lmp_sub; ++ __u16 manufacturer; ++ __u16 lmp_subver; + } __attribute__ ((packed)) read_local_version_rp; ++#define READ_LOCAL_VERSION_RP_SIZE 9 + + #define OCF_READ_LOCAL_FEATURES 0x0003 + typedef struct { +@@ -165,18 +208,24 @@ + /* Host Controller and Baseband */ + #define OGF_HOST_CTL 0x03 + #define OCF_RESET 0x0003 ++#define OCF_READ_AUTH_ENABLE 0x001F + #define OCF_WRITE_AUTH_ENABLE 0x0020 +- #define AUTH_DISABLED 0x00 +- #define AUTH_ENABLED 0x01 ++ #define AUTH_DISABLED 0x00 ++ #define AUTH_ENABLED 0x01 ++ ++#define OCF_READ_ENCRYPT_MODE 0x0021 ++#define OCF_WRITE_ENCRYPT_MODE 0x0022 ++ #define ENCRYPT_DISABLED 0x00 ++ #define ENCRYPT_P2P 0x01 ++ #define ENCRYPT_BOTH 0x02 + + #define OCF_WRITE_CA_TIMEOUT 0x0016 + #define OCF_WRITE_PG_TIMEOUT 0x0018 + + #define OCF_WRITE_SCAN_ENABLE 0x001A +- #define SCANS_DISABLED 0x00 +- #define IS_ENA_PS_DIS 0x01 +- #define IS_DIS_PS_ENA 0x02 +- #define IS_ENA_PS_ENA 0x03 ++ #define SCAN_DISABLED 0x00 ++ #define SCAN_INQUIRY 0x01 ++ #define SCAN_PAGE 0x02 + + #define OCF_SET_EVENT_FLT 0x0005 + typedef struct { +@@ -226,9 +275,18 @@ + } __attribute__ ((packed)) write_class_of_dev_cp; + #define WRITE_CLASS_OF_DEV_CP_SIZE 3 + ++#define OCF_HOST_BUFFER_SIZE 0x0033 ++typedef struct { ++ __u16 acl_mtu; ++ __u8 sco_mtu; ++ __u16 acl_max_pkt; ++ __u16 sco_max_pkt; ++} __attribute__ ((packed)) host_buffer_size_cp; ++#define HOST_BUFFER_SIZE_CP_SIZE 7 ++ + /* Link Control */ + #define OGF_LINK_CTL 0x01 +-#define OCF_CREATE_CONN 0x0005 ++#define OCF_CREATE_CONN 0x0005 + typedef struct { + bdaddr_t bdaddr; + __u16 pkt_type; +@@ -246,6 +304,13 @@ + } __attribute__ ((packed)) accept_conn_req_cp; + #define ACCEPT_CONN_REQ_CP_SIZE 7 + ++#define OCF_REJECT_CONN_REQ 0x000a ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 reason; ++} __attribute__ ((packed)) reject_conn_req_cp; ++#define REJECT_CONN_REQ_CP_SIZE 7 ++ + #define OCF_DISCONNECT 0x0006 + typedef struct { + __u16 handle; +@@ -253,17 +318,142 @@ + } __attribute__ ((packed)) disconnect_cp; + #define DISCONNECT_CP_SIZE 3 + ++#define OCF_ADD_SCO 0x0007 ++typedef struct { ++ __u16 handle; ++ __u16 pkt_type; ++} __attribute__ ((packed)) add_sco_cp; ++#define ADD_SCO_CP_SIZE 4 ++ + #define OCF_INQUIRY 0x0001 + typedef struct { + __u8 lap[3]; +- __u8 lenght; ++ __u8 length; + __u8 num_rsp; + } __attribute__ ((packed)) inquiry_cp; + #define INQUIRY_CP_SIZE 5 + +-#define OGF_LINK_POLICY 0x02 /* Link Policy */ ++typedef struct { ++ __u8 status; ++ bdaddr_t bdaddr; ++} __attribute__ ((packed)) status_bdaddr_rp; ++#define STATUS_BDADDR_RP_SIZE 7 ++ ++#define OCF_INQUIRY_CANCEL 0x0002 ++ ++#define OCF_LINK_KEY_REPLY 0x000B ++#define OCF_LINK_KEY_NEG_REPLY 0x000C ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 link_key[16]; ++} __attribute__ ((packed)) link_key_reply_cp; ++#define LINK_KEY_REPLY_CP_SIZE 22 ++ ++#define OCF_PIN_CODE_REPLY 0x000D ++#define OCF_PIN_CODE_NEG_REPLY 0x000E ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 pin_len; ++ __u8 pin_code[16]; ++} __attribute__ ((packed)) pin_code_reply_cp; ++#define PIN_CODE_REPLY_CP_SIZE 23 ++ ++#define OCF_CHANGE_CONN_PTYPE 0x000F ++typedef struct { ++ __u16 handle; ++ __u16 pkt_type; ++} __attribute__ ((packed)) change_conn_ptype_cp; ++#define CHANGE_CONN_PTYPE_CP_SIZE 4 ++ ++#define OCF_AUTH_REQUESTED 0x0011 ++typedef struct { ++ __u16 handle; ++} __attribute__ ((packed)) auth_requested_cp; ++#define AUTH_REQUESTED_CP_SIZE 2 ++ ++#define OCF_SET_CONN_ENCRYPT 0x0013 ++typedef struct { ++ __u16 handle; ++ __u8 encrypt; ++} __attribute__ ((packed)) set_conn_encrypt_cp; ++#define SET_CONN_ENCRYPT_CP_SIZE 3 ++ ++#define OCF_REMOTE_NAME_REQ 0x0019 ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 pscan_rep_mode; ++ __u8 pscan_mode; ++ __u16 clock_offset; ++} __attribute__ ((packed)) remote_name_req_cp; ++#define REMOTE_NAME_REQ_CP_SIZE 10 ++ ++#define OCF_READ_REMOTE_FEATURES 0x001B ++typedef struct { ++ __u16 handle; ++} __attribute__ ((packed)) read_remote_features_cp; ++#define READ_REMOTE_FEATURES_CP_SIZE 2 ++ ++#define OCF_READ_REMOTE_VERSION 0x001D ++typedef struct { ++ __u16 handle; ++} __attribute__ ((packed)) read_remote_version_cp; ++#define READ_REMOTE_VERSION_CP_SIZE 2 ++ ++/* Link Policy */ ++#define OGF_LINK_POLICY 0x02 ++#define OCF_ROLE_DISCOVERY 0x0009 ++typedef struct { ++ __u16 handle; ++} __attribute__ ((packed)) role_discovery_cp; ++#define ROLE_DISCOVERY_CP_SIZE 2 ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ __u8 role; ++} __attribute__ ((packed)) role_discovery_rp; ++#define ROLE_DISCOVERY_RP_SIZE 4 ++ ++#define OCF_READ_LINK_POLICY 0x000C ++typedef struct { ++ __u16 handle; ++} __attribute__ ((packed)) read_link_policy_cp; ++#define READ_LINK_POLICY_CP_SIZE 2 ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ __u16 policy; ++} __attribute__ ((packed)) read_link_policy_rp; ++#define READ_LINK_POLICY_RP_SIZE 5 + +-/* --------- HCI Events --------- */ ++#define OCF_SWITCH_ROLE 0x000B ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 role; ++} __attribute__ ((packed)) switch_role_cp; ++#define SWITCH_ROLE_CP_SIZE 7 ++ ++#define OCF_WRITE_LINK_POLICY 0x000D ++typedef struct { ++ __u16 handle; ++ __u16 policy; ++} __attribute__ ((packed)) write_link_policy_cp; ++#define WRITE_LINK_POLICY_CP_SIZE 4 ++typedef struct { ++ __u8 status; ++ __u16 handle; ++} __attribute__ ((packed)) write_link_policy_rp; ++#define WRITE_LINK_POLICY_RP_SIZE 3 ++ ++/* Status params */ ++#define OGF_STATUS_PARAM 0x05 ++ ++/* Testing commands */ ++#define OGF_TESTING_CMD 0x3e ++ ++/* Vendor specific commands */ ++#define OGF_VENDOR_CMD 0x3f ++ ++/* ---- HCI Events ---- */ + #define EVT_INQUIRY_COMPLETE 0x01 + + #define EVT_INQUIRY_RESULT 0x02 +@@ -272,11 +462,22 @@ + __u8 pscan_rep_mode; + __u8 pscan_period_mode; + __u8 pscan_mode; +- __u8 class[3]; ++ __u8 dev_class[3]; + __u16 clock_offset; + } __attribute__ ((packed)) inquiry_info; + #define INQUIRY_INFO_SIZE 14 + ++#define EVT_INQUIRY_RESULT_WITH_RSSI 0x22 ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 pscan_rep_mode; ++ __u8 pscan_period_mode; ++ __u8 dev_class[3]; ++ __u16 clock_offset; ++ __s8 rssi; ++} __attribute__ ((packed)) inquiry_info_with_rssi; ++#define INQUIRY_INFO_WITH_RSSI_SIZE 14 ++ + #define EVT_CONN_COMPLETE 0x03 + typedef struct { + __u8 status; +@@ -303,6 +504,44 @@ + } __attribute__ ((packed)) evt_disconn_complete; + #define EVT_DISCONN_COMPLETE_SIZE 4 + ++#define EVT_AUTH_COMPLETE 0x06 ++typedef struct { ++ __u8 status; ++ __u16 handle; ++} __attribute__ ((packed)) evt_auth_complete; ++#define EVT_AUTH_COMPLETE_SIZE 3 ++ ++#define EVT_REMOTE_NAME_REQ_COMPLETE 0x07 ++typedef struct { ++ __u8 status; ++ bdaddr_t bdaddr; ++ __u8 name[248]; ++} __attribute__ ((packed)) evt_remote_name_req_complete; ++#define EVT_REMOTE_NAME_REQ_COMPLETE_SIZE 255 ++ ++#define EVT_ENCRYPT_CHANGE 0x08 ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ __u8 encrypt; ++} __attribute__ ((packed)) evt_encrypt_change; ++#define EVT_ENCRYPT_CHANGE_SIZE 5 ++ ++#define EVT_QOS_SETUP_COMPLETE 0x0D ++typedef struct { ++ __u8 service_type; ++ __u32 token_rate; ++ __u32 peak_bandwidth; ++ __u32 latency; ++ __u32 delay_variation; ++} __attribute__ ((packed)) hci_qos; ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ hci_qos qos; ++} __attribute__ ((packed)) evt_qos_setup_complete; ++#define EVT_QOS_SETUP_COMPLETE_SIZE 20 ++ + #define EVT_CMD_COMPLETE 0x0e + typedef struct { + __u8 ncmd; +@@ -321,16 +560,78 @@ + #define EVT_NUM_COMP_PKTS 0x13 + typedef struct { + __u8 num_hndl; +- /* variable lenght part */ ++ /* variable length part */ + } __attribute__ ((packed)) evt_num_comp_pkts; + #define EVT_NUM_COMP_PKTS_SIZE 1 + +-#define EVT_HCI_DEV_EVENT 0xfd ++#define EVT_ROLE_CHANGE 0x12 ++typedef struct { ++ __u8 status; ++ bdaddr_t bdaddr; ++ __u8 role; ++} __attribute__ ((packed)) evt_role_change; ++#define EVT_ROLE_CHANGE_SIZE 8 ++ ++#define EVT_PIN_CODE_REQ 0x16 ++typedef struct { ++ bdaddr_t bdaddr; ++} __attribute__ ((packed)) evt_pin_code_req; ++#define EVT_PIN_CODE_REQ_SIZE 6 ++ ++#define EVT_LINK_KEY_REQ 0x17 ++typedef struct { ++ bdaddr_t bdaddr; ++} __attribute__ ((packed)) evt_link_key_req; ++#define EVT_LINK_KEY_REQ_SIZE 6 ++ ++#define EVT_LINK_KEY_NOTIFY 0x18 ++typedef struct { ++ bdaddr_t bdaddr; ++ __u8 link_key[16]; ++ __u8 key_type; ++} __attribute__ ((packed)) evt_link_key_notify; ++#define EVT_LINK_KEY_NOTIFY_SIZE 23 ++ ++#define EVT_READ_REMOTE_FEATURES_COMPLETE 0x0B ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ __u8 features[8]; ++} __attribute__ ((packed)) evt_read_remote_features_complete; ++#define EVT_READ_REMOTE_FEATURES_COMPLETE_SIZE 11 ++ ++#define EVT_READ_REMOTE_VERSION_COMPLETE 0x0C ++typedef struct { ++ __u8 status; ++ __u16 handle; ++ __u8 lmp_ver; ++ __u16 manufacturer; ++ __u16 lmp_subver; ++} __attribute__ ((packed)) evt_read_remote_version_complete; ++#define EVT_READ_REMOTE_VERSION_COMPLETE_SIZE 8 ++ ++/* Internal events generated by BlueZ stack */ ++#define EVT_STACK_INTERNAL 0xfd ++typedef struct { ++ __u16 type; ++ __u8 data[0]; ++} __attribute__ ((packed)) evt_stack_internal; ++#define EVT_STACK_INTERNAL_SIZE 2 ++ ++#define EVT_SI_DEVICE 0x01 ++typedef struct { ++ __u16 event; ++ __u16 dev_id; ++} __attribute__ ((packed)) evt_si_device; ++#define EVT_SI_DEVICE_SIZE 4 ++ ++#define EVT_SI_SECURITY 0x02 + typedef struct { + __u16 event; +- __u16 param; +-} __attribute__ ((packed)) evt_hci_dev_event; +-#define EVT_HCI_DEV_EVENT_SIZE 4 ++ __u16 proto; ++ __u16 subproto; ++ __u8 incomming; ++} __attribute__ ((packed)) evt_si_security; + + /* -------- HCI Packet structures -------- */ + #define HCI_TYPE_LEN 1 +@@ -369,14 +670,14 @@ + #define acl_handle(h) (h & 0x0fff) + #define acl_flags(h) (h >> 12) + +-#endif /* _NO_HCI_DEFS */ +- + /* HCI Socket options */ +-#define HCI_DATA_DIR 0x0001 +-#define HCI_FILTER 0x0002 ++#define HCI_DATA_DIR 1 ++#define HCI_FILTER 2 ++#define HCI_TIME_STAMP 3 + + /* HCI CMSG flags */ + #define HCI_CMSG_DIR 0x0001 ++#define HCI_CMSG_TSTAMP 0x0002 + + struct sockaddr_hci { + sa_family_t hci_family; +@@ -387,27 +688,29 @@ + struct hci_filter { + __u32 type_mask; + __u32 event_mask[2]; ++ __u16 opcode; + }; + +-struct hci_dev_req { +- __u16 dev_id; +- __u32 dev_opt; +-}; +- +-struct hci_dev_list_req { +- __u16 dev_num; +- struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ +-}; +- +-struct hci_inquiry_req { +- __u16 dev_id; +- __u16 flags; +- __u8 lap[3]; +- __u8 length; +- __u8 num_rsp; +-}; +-#define IREQ_CACHE_FLUSH 0x0001 ++#define HCI_FLT_TYPE_BITS 31 ++#define HCI_FLT_EVENT_BITS 63 ++#define HCI_FLT_OGF_BITS 63 ++#define HCI_FLT_OCF_BITS 127 ++ ++#if BITS_PER_LONG == 64 ++static inline void hci_set_bit(int nr, void *addr) ++{ ++ *((__u32 *) addr + (nr >> 5)) |= ((__u32) 1 << (nr & 31)); ++} ++static inline int hci_test_bit(int nr, void *addr) ++{ ++ return *((__u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31)); ++} ++#else ++#define hci_set_bit set_bit ++#define hci_test_bit test_bit ++#endif + ++/* Ioctl requests structures */ + struct hci_dev_stats { + __u32 err_rx; + __u32 err_tx; +@@ -433,11 +736,13 @@ + __u8 features[8]; + + __u32 pkt_type; ++ __u32 link_policy; ++ __u32 link_mode; + + __u16 acl_mtu; +- __u16 acl_max; ++ __u16 acl_pkts; + __u16 sco_mtu; +- __u16 sco_max; ++ __u16 sco_pkts; + + struct hci_dev_stats stat; + }; +@@ -445,6 +750,20 @@ + struct hci_conn_info { + __u16 handle; + bdaddr_t bdaddr; ++ __u8 type; ++ __u8 out; ++ __u16 state; ++ __u32 link_mode; ++}; ++ ++struct hci_dev_req { ++ __u16 dev_id; ++ __u32 dev_opt; ++}; ++ ++struct hci_dev_list_req { ++ __u16 dev_num; ++ struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ + }; + + struct hci_conn_list_req { +@@ -453,4 +772,26 @@ + struct hci_conn_info conn_info[0]; + }; + ++struct hci_conn_info_req { ++ bdaddr_t bdaddr; ++ __u8 type; ++ struct hci_conn_info conn_info[0]; ++}; ++ ++struct hci_inquiry_req { ++ __u16 dev_id; ++ __u16 flags; ++ __u8 lap[3]; ++ __u8 length; ++ __u8 num_rsp; ++}; ++#define IREQ_CACHE_FLUSH 0x0001 ++ ++struct hci_remotename_req { ++ __u16 dev_id; ++ __u16 flags; ++ bdaddr_t bdaddr; ++ __u8 name[248]; ++}; ++ + #endif /* __HCI_H */ +diff -urN linux-2.4.18/include/net/bluetooth/hci_uart.h linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h +--- linux-2.4.18/include/net/bluetooth/hci_uart.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/hci_uart.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,62 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * $Id: hci_uart.h,v 1.2 2001/06/02 01:40:08 maxk Exp $ +- */ +- +-#ifndef N_HCI +-#define N_HCI 15 +-#endif +- +-#ifdef __KERNEL__ +- +-#define tty2n_hci(tty) ((struct n_hci *)((tty)->disc_data)) +-#define n_hci2tty(n_hci) ((n_hci)->tty) +- +-struct n_hci { +- struct tty_struct *tty; +- struct hci_dev hdev; +- +- struct sk_buff_head txq; +- unsigned long tx_state; +- +- spinlock_t rx_lock; +- unsigned long rx_state; +- unsigned long rx_count; +- struct sk_buff *rx_skb; +-}; +- +-/* Transmit states */ +-#define TRANS_SENDING 1 +-#define TRANS_WAKEUP 2 +- +-/* Receiver States */ +-#define WAIT_PACKET_TYPE 0 +-#define WAIT_EVENT_HDR 1 +-#define WAIT_ACL_HDR 2 +-#define WAIT_SCO_HDR 3 +-#define WAIT_DATA 4 +- +-#endif /* __KERNEL__ */ +diff -urN linux-2.4.18/include/net/bluetooth/hci_usb.h linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h +--- linux-2.4.18/include/net/bluetooth/hci_usb.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/hci_usb.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,68 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * $Id: hci_usb.h,v 1.3 2001/06/02 01:40:08 maxk Exp $ +- */ +- +-#ifdef __KERNEL__ +- +-/* Class, SubClass, and Protocol codes that describe a Bluetooth device */ +-#define HCI_DEV_CLASS 0xe0 /* Wireless class */ +-#define HCI_DEV_SUBCLASS 0x01 /* RF subclass */ +-#define HCI_DEV_PROTOCOL 0x01 /* Bluetooth programming protocol */ +- +-#define HCI_CTRL_REQ 0x20 +- +-struct hci_usb { +- struct usb_device *udev; +- +- devrequest dev_req; +- struct urb *ctrl_urb; +- struct urb *intr_urb; +- struct urb *read_urb; +- struct urb *write_urb; +- +- __u8 *read_buf; +- __u8 *intr_buf; +- struct sk_buff *intr_skb; +- int intr_count; +- +- __u8 bulk_out_ep_addr; +- __u8 bulk_in_ep_addr; +- __u8 intr_in_ep_addr; +- __u8 intr_in_interval; +- +- struct hci_dev hdev; +- +- unsigned long tx_state; +- struct sk_buff_head tx_ctrl_q; +- struct sk_buff_head tx_write_q; +-}; +- +-/* Transmit states */ +-#define HCI_TX_CTRL 1 +-#define HCI_TX_WRITE 2 +- +-#endif /* __KERNEL__ */ +diff -urN linux-2.4.18/include/net/bluetooth/hci_vhci.h linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h +--- linux-2.4.18/include/net/bluetooth/hci_vhci.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/hci_vhci.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,50 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * $Id: hci_vhci.h,v 1.2 2001/08/01 01:02:20 maxk Exp $ +- */ +- +-#ifndef __HCI_VHCI_H +-#define __HCI_VHCI_H +- +-#ifdef __KERNEL__ +- +-struct hci_vhci_struct { +- struct hci_dev hdev; +- __u32 flags; +- wait_queue_head_t read_wait; +- struct sk_buff_head readq; +- struct fasync_struct *fasync; +-}; +- +-/* VHCI device flags */ +-#define VHCI_FASYNC 0x0010 +- +-#endif /* __KERNEL__ */ +- +-#define VHCI_DEV "/dev/vhci" +-#define VHCI_MINOR 250 +- +-#endif /* __HCI_VHCI_H */ +diff -urN linux-2.4.18/include/net/bluetooth/l2cap_core.h linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h +--- linux-2.4.18/include/net/bluetooth/l2cap_core.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/l2cap_core.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,144 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * $Id: l2cap_core.h,v 1.6 2001/08/03 04:19:49 maxk Exp $ +- */ +- +-#ifndef __L2CAP_CORE_H +-#define __L2CAP_CORE_H +- +-#ifdef __KERNEL__ +- +-/* ----- L2CAP interface ----- */ +-struct l2cap_iff { +- struct list_head list; +- struct hci_dev *hdev; +- bdaddr_t *bdaddr; +- __u16 mtu; +- spinlock_t lock; +- struct list_head conn_list; +-}; +- +-static inline void l2cap_iff_lock(struct l2cap_iff *iff) +-{ +- spin_lock(&iff->lock); +-} +- +-static inline void l2cap_iff_unlock(struct l2cap_iff *iff) +-{ +- spin_unlock(&iff->lock); +-} +- +-/* ----- L2CAP connections ----- */ +-struct l2cap_chan_list { +- struct sock *head; +- rwlock_t lock; +- long num; +-}; +- +-struct l2cap_conn { +- struct l2cap_iff *iff; +- struct list_head list; +- +- struct hci_conn *hconn; +- +- __u16 state; +- __u8 out; +- bdaddr_t src; +- bdaddr_t dst; +- +- spinlock_t lock; +- atomic_t refcnt; +- +- struct sk_buff *rx_skb; +- __u32 rx_len; +- __u8 rx_ident; +- __u8 tx_ident; +- +- struct l2cap_chan_list chan_list; +- +- struct timer_list timer; +-}; +- +-static inline void __l2cap_conn_link(struct l2cap_iff *iff, struct l2cap_conn *c) +-{ +- list_add(&c->list, &iff->conn_list); +-} +- +-static inline void __l2cap_conn_unlink(struct l2cap_iff *iff, struct l2cap_conn *c) +-{ +- list_del(&c->list); +-} +- +-/* ----- L2CAP channel and socket info ----- */ +-#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->protinfo) +- +-struct l2cap_accept_q { +- struct sock *head; +- struct sock *tail; +-}; +- +-struct l2cap_pinfo { +- bdaddr_t src; +- bdaddr_t dst; +- __u16 psm; +- __u16 dcid; +- __u16 scid; +- __u32 flags; +- +- __u16 imtu; +- __u16 omtu; +- __u16 flush_to; +- +- __u8 conf_state; +- __u16 conf_mtu; +- +- __u8 ident; +- +- struct l2cap_conn *conn; +- struct sock *next_c; +- struct sock *prev_c; +- +- struct sock *parent; +- struct sock *next_q; +- struct sock *prev_q; +- +- struct l2cap_accept_q accept_q; +-}; +- +-#define CONF_REQ_SENT 0x01 +-#define CONF_INPUT_DONE 0x02 +-#define CONF_OUTPUT_DONE 0x04 +- +-extern struct bluez_sock_list l2cap_sk_list; +-extern struct list_head l2cap_iff_list; +-extern rwlock_t l2cap_rt_lock; +- +-extern void l2cap_register_proc(void); +-extern void l2cap_unregister_proc(void); +- +-#endif /* __KERNEL__ */ +- +-#endif /* __L2CAP_CORE_H */ +diff -urN linux-2.4.18/include/net/bluetooth/l2cap.h linux-2.4.18-mh15/include/net/bluetooth/l2cap.h +--- linux-2.4.18/include/net/bluetooth/l2cap.h 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/include/net/bluetooth/l2cap.h 2004-08-01 16:26:23.000000000 +0200 +@@ -23,22 +23,17 @@ + */ + + /* +- * $Id: l2cap.h,v 1.5 2001/06/14 21:28:26 maxk Exp $ ++ * $Id: l2cap.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $ + */ + + #ifndef __L2CAP_H + #define __L2CAP_H + +-#include <asm/types.h> +-#include <asm/byteorder.h> +- + /* L2CAP defaults */ + #define L2CAP_DEFAULT_MTU 672 + #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF + + #define L2CAP_CONN_TIMEOUT (HZ * 40) +-#define L2CAP_DISCONN_TIMEOUT (HZ * 2) +-#define L2CAP_CONN_IDLE_TIMEOUT (HZ * 60) + + /* L2CAP socket address */ + struct sockaddr_l2 { +@@ -47,17 +42,12 @@ + bdaddr_t l2_bdaddr; + }; + +-/* set/get sockopt defines */ +-#define L2CAP_OPTIONS 0x01 ++/* Socket options */ ++#define L2CAP_OPTIONS 0x01 + struct l2cap_options { + __u16 omtu; + __u16 imtu; + __u16 flush_to; +- __u32 token_rate; +- __u32 bucket_size; +- __u32 pick_band; +- __u32 latency; +- __u32 delay_var; + }; + + #define L2CAP_CONNINFO 0x02 +@@ -65,6 +55,27 @@ + __u16 hci_handle; + }; + ++#define L2CAP_LM 0x03 ++#define L2CAP_LM_MASTER 0x0001 ++#define L2CAP_LM_AUTH 0x0002 ++#define L2CAP_LM_ENCRYPT 0x0004 ++#define L2CAP_LM_TRUSTED 0x0008 ++#define L2CAP_LM_RELIABLE 0x0010 ++ ++#define L2CAP_QOS 0x04 ++struct l2cap_qos { ++ __u16 service_type; ++ __u32 token_rate; ++ __u32 token_bucket_size; ++ __u32 peak_bandwidth; ++ __u32 latency; ++ __u32 delay_variation; ++}; ++ ++#define L2CAP_SERV_NO_TRAFFIC 0x00 ++#define L2CAP_SERV_BEST_EFFORT 0x01 ++#define L2CAP_SERV_GUARANTEED 0x02 ++ + /* L2CAP command codes */ + #define L2CAP_COMMAND_REJ 0x01 + #define L2CAP_CONN_REQ 0x02 +@@ -79,7 +90,6 @@ + #define L2CAP_INFO_RSP 0x0b + + /* L2CAP structures */ +- + typedef struct { + __u16 len; + __u16 cid; +@@ -112,11 +122,17 @@ + } __attribute__ ((packed)) l2cap_conn_rsp; + #define L2CAP_CONN_RSP_SIZE 8 + +-#define L2CAP_CONN_SUCCESS 0x0000 +-#define L2CAP_CONN_PEND 0x0001 +-#define L2CAP_CONN_BAD_PSM 0x0002 +-#define L2CAP_CONN_SEC_BLOCK 0x0003 +-#define L2CAP_CONN_NO_MEM 0x0004 ++/* connect result */ ++#define L2CAP_CR_SUCCESS 0x0000 ++#define L2CAP_CR_PEND 0x0001 ++#define L2CAP_CR_BAD_PSM 0x0002 ++#define L2CAP_CR_SEC_BLOCK 0x0003 ++#define L2CAP_CR_NO_MEM 0x0004 ++ ++/* connect status */ ++#define L2CAP_CS_NO_INFO 0x0000 ++#define L2CAP_CS_AUTHEN_PEND 0x0001 ++#define L2CAP_CS_AUTHOR_PEND 0x0002 + + typedef struct { + __u16 dcid; +@@ -147,6 +163,8 @@ + #define L2CAP_CONF_FLUSH_TO 0x02 + #define L2CAP_CONF_QOS 0x03 + ++#define L2CAP_CONF_MAX_SIZE 22 ++ + typedef struct { + __u16 dcid; + __u16 scid; +@@ -159,4 +177,82 @@ + } __attribute__ ((packed)) l2cap_disconn_rsp; + #define L2CAP_DISCONN_RSP_SIZE 4 + ++typedef struct { ++ __u16 type; ++ __u8 data[0]; ++} __attribute__ ((packed)) l2cap_info_req; ++#define L2CAP_INFO_REQ_SIZE 2 ++ ++typedef struct { ++ __u16 type; ++ __u16 result; ++ __u8 data[0]; ++} __attribute__ ((packed)) l2cap_info_rsp; ++#define L2CAP_INFO_RSP_SIZE 4 ++ ++/* info type */ ++#define L2CAP_IT_CL_MTU 0x0001 ++#define L2CAP_IT_FEAT_MASK 0x0002 ++ ++/* info result */ ++#define L2CAP_IR_SUCCESS 0x0000 ++#define L2CAP_IR_NOTSUPP 0x0001 ++ ++/* ----- L2CAP connections ----- */ ++struct l2cap_chan_list { ++ struct sock *head; ++ rwlock_t lock; ++ long num; ++}; ++ ++struct l2cap_conn { ++ struct hci_conn *hcon; ++ ++ bdaddr_t *dst; ++ bdaddr_t *src; ++ ++ unsigned int mtu; ++ ++ spinlock_t lock; ++ ++ struct sk_buff *rx_skb; ++ __u32 rx_len; ++ __u8 rx_ident; ++ __u8 tx_ident; ++ ++ struct l2cap_chan_list chan_list; ++}; ++ ++/* ----- L2CAP channel and socket info ----- */ ++#define l2cap_pi(sk) ((struct l2cap_pinfo *) &sk->tp_pinfo) ++ ++struct l2cap_pinfo { ++ __u16 psm; ++ __u16 dcid; ++ __u16 scid; ++ ++ __u16 imtu; ++ __u16 omtu; ++ __u16 flush_to; ++ ++ __u32 link_mode; ++ ++ __u8 conf_state; ++ __u8 conf_retry; ++ __u16 conf_mtu; ++ ++ __u8 ident; ++ ++ struct l2cap_conn *conn; ++ struct sock *next_c; ++ struct sock *prev_c; ++}; ++ ++#define L2CAP_CONF_REQ_SENT 0x01 ++#define L2CAP_CONF_INPUT_DONE 0x02 ++#define L2CAP_CONF_OUTPUT_DONE 0x04 ++#define L2CAP_CONF_MAX_RETRIES 2 ++ ++void l2cap_load(void); ++ + #endif /* __L2CAP_H */ +diff -urN linux-2.4.18/include/net/bluetooth/rfcomm.h linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h +--- linux-2.4.18/include/net/bluetooth/rfcomm.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/include/net/bluetooth/rfcomm.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,361 @@ ++/* ++ RFCOMM implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ RPN support - Dirk Husemann <hud@zurich.ibm.com> ++*/ ++ ++/* ++ * $Id: rfcomm.h,v 1.31 2002/10/18 20:12:11 maxk Exp $ ++ */ ++ ++#ifndef __RFCOMM_H ++#define __RFCOMM_H ++ ++#define RFCOMM_PSM 3 ++ ++#define RFCOMM_CONN_TIMEOUT (HZ * 30) ++#define RFCOMM_DISC_TIMEOUT (HZ * 20) ++ ++#define RFCOMM_DEFAULT_MTU 127 ++#define RFCOMM_DEFAULT_CREDITS 7 ++ ++#define RFCOMM_MAX_L2CAP_MTU 1024 ++#define RFCOMM_MAX_CREDITS 40 ++ ++#define RFCOMM_SKB_HEAD_RESERVE 8 ++#define RFCOMM_SKB_TAIL_RESERVE 2 ++#define RFCOMM_SKB_RESERVE (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE) ++ ++#define RFCOMM_SABM 0x2f ++#define RFCOMM_DISC 0x43 ++#define RFCOMM_UA 0x63 ++#define RFCOMM_DM 0x0f ++#define RFCOMM_UIH 0xef ++ ++#define RFCOMM_TEST 0x08 ++#define RFCOMM_FCON 0x28 ++#define RFCOMM_FCOFF 0x18 ++#define RFCOMM_MSC 0x38 ++#define RFCOMM_RPN 0x24 ++#define RFCOMM_RLS 0x14 ++#define RFCOMM_PN 0x20 ++#define RFCOMM_NSC 0x04 ++ ++#define RFCOMM_V24_FC 0x02 ++#define RFCOMM_V24_RTC 0x04 ++#define RFCOMM_V24_RTR 0x08 ++#define RFCOMM_V24_IC 0x40 ++#define RFCOMM_V24_DV 0x80 ++ ++#define RFCOMM_RPN_BR_2400 0x0 ++#define RFCOMM_RPN_BR_4800 0x1 ++#define RFCOMM_RPN_BR_7200 0x2 ++#define RFCOMM_RPN_BR_9600 0x3 ++#define RFCOMM_RPN_BR_19200 0x4 ++#define RFCOMM_RPN_BR_38400 0x5 ++#define RFCOMM_RPN_BR_57600 0x6 ++#define RFCOMM_RPN_BR_115200 0x7 ++#define RFCOMM_RPN_BR_230400 0x8 ++ ++#define RFCOMM_RPN_DATA_5 0x0 ++#define RFCOMM_RPN_DATA_6 0x1 ++#define RFCOMM_RPN_DATA_7 0x2 ++#define RFCOMM_RPN_DATA_8 0x3 ++ ++#define RFCOMM_RPN_STOP_1 0 ++#define RFCOMM_RPN_STOP_15 1 ++ ++#define RFCOMM_RPN_PARITY_NONE 0x0 ++#define RFCOMM_RPN_PARITY_ODD 0x4 ++#define RFCOMM_RPN_PARITY_EVEN 0x5 ++#define RFCOMM_RPN_PARITY_MARK 0x6 ++#define RFCOMM_RPN_PARITY_SPACE 0x7 ++ ++#define RFCOMM_RPN_FLOW_NONE 0x00 ++ ++#define RFCOMM_RPN_XON_CHAR 0x11 ++#define RFCOMM_RPN_XOFF_CHAR 0x13 ++ ++#define RFCOMM_RPN_PM_BITRATE 0x0001 ++#define RFCOMM_RPN_PM_DATA 0x0002 ++#define RFCOMM_RPN_PM_STOP 0x0004 ++#define RFCOMM_RPN_PM_PARITY 0x0008 ++#define RFCOMM_RPN_PM_PARITY_TYPE 0x0010 ++#define RFCOMM_RPN_PM_XON 0x0020 ++#define RFCOMM_RPN_PM_XOFF 0x0040 ++#define RFCOMM_RPN_PM_FLOW 0x3F00 ++ ++#define RFCOMM_RPN_PM_ALL 0x3F7F ++ ++struct rfcomm_hdr { ++ u8 addr; ++ u8 ctrl; ++ u8 len; // Actual size can be 2 bytes ++} __attribute__ ((packed)); ++ ++struct rfcomm_cmd { ++ u8 addr; ++ u8 ctrl; ++ u8 len; ++ u8 fcs; ++} __attribute__ ((packed)); ++ ++struct rfcomm_mcc { ++ u8 type; ++ u8 len; ++} __attribute__ ((packed)); ++ ++struct rfcomm_pn { ++ u8 dlci; ++ u8 flow_ctrl; ++ u8 priority; ++ u8 ack_timer; ++ u16 mtu; ++ u8 max_retrans; ++ u8 credits; ++} __attribute__ ((packed)); ++ ++struct rfcomm_rpn { ++ u8 dlci; ++ u8 bit_rate; ++ u8 line_settings; ++ u8 flow_ctrl; ++ u8 xon_char; ++ u8 xoff_char; ++ u16 param_mask; ++} __attribute__ ((packed)); ++ ++struct rfcomm_rls { ++ u8 dlci; ++ u8 status; ++} __attribute__ ((packed)); ++ ++struct rfcomm_msc { ++ u8 dlci; ++ u8 v24_sig; ++} __attribute__ ((packed)); ++ ++/* ---- Core structures, flags etc ---- */ ++ ++struct rfcomm_session { ++ struct list_head list; ++ struct socket *sock; ++ unsigned long state; ++ unsigned long flags; ++ atomic_t refcnt; ++ int initiator; ++ ++ /* Default DLC parameters */ ++ int cfc; ++ uint mtu; ++ ++ struct list_head dlcs; ++}; ++ ++struct rfcomm_dlc { ++ struct list_head list; ++ struct rfcomm_session *session; ++ struct sk_buff_head tx_queue; ++ struct timer_list timer; ++ ++ spinlock_t lock; ++ unsigned long state; ++ unsigned long flags; ++ atomic_t refcnt; ++ u8 dlci; ++ u8 addr; ++ u8 priority; ++ u8 v24_sig; ++ u8 mscex; ++ ++ uint mtu; ++ uint cfc; ++ uint rx_credits; ++ uint tx_credits; ++ ++ void *owner; ++ ++ void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb); ++ void (*state_change)(struct rfcomm_dlc *d, int err); ++ void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig); ++}; ++ ++/* DLC and session flags */ ++#define RFCOMM_RX_THROTTLED 0 ++#define RFCOMM_TX_THROTTLED 1 ++#define RFCOMM_MSC_PENDING 2 ++#define RFCOMM_TIMED_OUT 3 ++ ++/* Scheduling flags and events */ ++#define RFCOMM_SCHED_STATE 0 ++#define RFCOMM_SCHED_RX 1 ++#define RFCOMM_SCHED_TX 2 ++#define RFCOMM_SCHED_TIMEO 3 ++#define RFCOMM_SCHED_WAKEUP 31 ++ ++/* MSC exchange flags */ ++#define RFCOMM_MSCEX_TX 1 ++#define RFCOMM_MSCEX_RX 2 ++#define RFCOMM_MSCEX_OK (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX) ++ ++/* CFC states */ ++#define RFCOMM_CFC_UNKNOWN -1 ++#define RFCOMM_CFC_DISABLED 0 ++#define RFCOMM_CFC_ENABLED RFCOMM_MAX_CREDITS ++ ++extern struct task_struct *rfcomm_thread; ++extern unsigned long rfcomm_event; ++ ++static inline void rfcomm_schedule(uint event) ++{ ++ if (!rfcomm_thread) ++ return; ++ set_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event); ++ wake_up_process(rfcomm_thread); ++} ++ ++extern struct semaphore rfcomm_sem; ++#define rfcomm_lock() down(&rfcomm_sem); ++#define rfcomm_unlock() up(&rfcomm_sem); ++ ++/* ---- RFCOMM DLCs (channels) ---- */ ++struct rfcomm_dlc *rfcomm_dlc_alloc(int prio); ++void rfcomm_dlc_free(struct rfcomm_dlc *d); ++int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel); ++int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason); ++int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb); ++int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig); ++int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig); ++ ++#define rfcomm_dlc_lock(d) spin_lock(&d->lock) ++#define rfcomm_dlc_unlock(d) spin_unlock(&d->lock) ++ ++static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d) ++{ ++ atomic_inc(&d->refcnt); ++} ++ ++static inline void rfcomm_dlc_put(struct rfcomm_dlc *d) ++{ ++ if (atomic_dec_and_test(&d->refcnt)) ++ rfcomm_dlc_free(d); ++} ++ ++extern void FASTCALL(__rfcomm_dlc_throttle(struct rfcomm_dlc *d)); ++extern void FASTCALL(__rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)); ++ ++static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d) ++{ ++ if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags)) ++ __rfcomm_dlc_throttle(d); ++} ++ ++static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d) ++{ ++ if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags)) ++ __rfcomm_dlc_unthrottle(d); ++} ++ ++/* ---- RFCOMM sessions ---- */ ++struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state); ++struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst); ++struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err); ++void rfcomm_session_del(struct rfcomm_session *s); ++void rfcomm_session_close(struct rfcomm_session *s, int err); ++void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst); ++ ++static inline void rfcomm_session_hold(struct rfcomm_session *s) ++{ ++ atomic_inc(&s->refcnt); ++} ++ ++static inline void rfcomm_session_put(struct rfcomm_session *s) ++{ ++ if (atomic_dec_and_test(&s->refcnt)) ++ rfcomm_session_del(s); ++} ++ ++/* ---- RFCOMM chechsum ---- */ ++extern u8 rfcomm_crc_table[]; ++ ++/* ---- RFCOMM sockets ---- */ ++struct sockaddr_rc { ++ sa_family_t rc_family; ++ bdaddr_t rc_bdaddr; ++ u8 rc_channel; ++}; ++ ++#define rfcomm_pi(sk) ((struct rfcomm_pinfo *) &sk->tp_pinfo) ++ ++struct rfcomm_pinfo { ++ struct rfcomm_dlc *dlc; ++ u8 channel; ++}; ++ ++int rfcomm_init_sockets(void); ++void rfcomm_cleanup_sockets(void); ++ ++int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d); ++ ++/* ---- RFCOMM TTY ---- */ ++#define RFCOMM_MAX_DEV 256 ++ ++#define RFCOMMCREATEDEV _IOW('R', 200, int) ++#define RFCOMMRELEASEDEV _IOW('R', 201, int) ++#define RFCOMMGETDEVLIST _IOR('R', 210, int) ++#define RFCOMMGETDEVINFO _IOR('R', 211, int) ++#define RFCOMMSTEALDLC _IOW('R', 220, int) ++ ++#define RFCOMM_REUSE_DLC 0 ++#define RFCOMM_RELEASE_ONHUP 1 ++#define RFCOMM_HANGUP_NOW 2 ++#define RFCOMM_TTY_ATTACHED 3 ++ ++struct rfcomm_dev_req { ++ s16 dev_id; ++ u32 flags; ++ bdaddr_t src; ++ bdaddr_t dst; ++ u8 channel; ++}; ++ ++struct rfcomm_dev_info { ++ s16 id; ++ u32 flags; ++ u16 state; ++ bdaddr_t src; ++ bdaddr_t dst; ++ u8 channel; ++}; ++ ++struct rfcomm_dev_list_req { ++ u16 dev_num; ++ struct rfcomm_dev_info dev_info[0]; ++}; ++ ++int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg); ++int rfcomm_init_ttys(void); ++void rfcomm_cleanup_ttys(void); ++ ++#endif /* __RFCOMM_H */ +diff -urN linux-2.4.18/include/net/bluetooth/sco.h linux-2.4.18-mh15/include/net/bluetooth/sco.h +--- linux-2.4.18/include/net/bluetooth/sco.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/include/net/bluetooth/sco.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,81 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: sco.h,v 1.1.1.1 2002/03/08 21:03:15 maxk Exp $ ++ */ ++ ++#ifndef __SCO_H ++#define __SCO_H ++ ++/* SCO defaults */ ++#define SCO_DEFAULT_MTU 500 ++#define SCO_DEFAULT_FLUSH_TO 0xFFFF ++ ++#define SCO_CONN_TIMEOUT (HZ * 40) ++#define SCO_DISCONN_TIMEOUT (HZ * 2) ++#define SCO_CONN_IDLE_TIMEOUT (HZ * 60) ++ ++/* SCO socket address */ ++struct sockaddr_sco { ++ sa_family_t sco_family; ++ bdaddr_t sco_bdaddr; ++}; ++ ++/* set/get sockopt defines */ ++#define SCO_OPTIONS 0x01 ++struct sco_options { ++ __u16 mtu; ++}; ++ ++#define SCO_CONNINFO 0x02 ++struct sco_conninfo { ++ __u16 hci_handle; ++}; ++ ++/* ---- SCO connections ---- */ ++struct sco_conn { ++ struct hci_conn *hcon; ++ ++ bdaddr_t *dst; ++ bdaddr_t *src; ++ ++ spinlock_t lock; ++ struct sock *sk; ++ ++ unsigned int mtu; ++}; ++ ++#define sco_conn_lock(c) spin_lock(&c->lock); ++#define sco_conn_unlock(c) spin_unlock(&c->lock); ++ ++/* ----- SCO socket info ----- */ ++#define sco_pi(sk) ((struct sco_pinfo *) &sk->tp_pinfo) ++ ++struct sco_pinfo { ++ __u32 flags; ++ struct sco_conn *conn; ++}; ++ ++#endif /* __SCO_H */ +diff -urN linux-2.4.18/include/pcmcia/ciscode.h linux-2.4.18-mh15/include/pcmcia/ciscode.h +--- linux-2.4.18/include/pcmcia/ciscode.h 2001-12-21 18:42:04.000000000 +0100 ++++ linux-2.4.18-mh15/include/pcmcia/ciscode.h 2004-08-01 16:26:23.000000000 +0200 +@@ -1,5 +1,5 @@ + /* +- * ciscode.h 1.48 2001/08/24 12:16:12 ++ * ciscode.h 1.57 2002/11/03 20:38:14 + * + * The contents of this file are subject to the Mozilla Public License + * Version 1.1 (the "License"); you may not use this file except in +@@ -60,6 +60,10 @@ + #define PRODID_INTEL_DUAL_RS232 0x0301 + #define PRODID_INTEL_2PLUS 0x8422 + ++#define MANFID_KME 0x0032 ++#define PRODID_KME_KXLC005_A 0x0704 ++#define PRODID_KME_KXLC005_B 0x2904 ++ + #define MANFID_LINKSYS 0x0143 + #define PRODID_LINKSYS_PCMLM28 0xc0ab + #define PRODID_LINKSYS_3400 0x3341 +@@ -94,6 +98,8 @@ + #define PRODID_OSITECH_JACK_336 0x0007 + #define PRODID_OSITECH_SEVEN 0x0008 + ++#define MANFID_OXSEMI 0x0279 ++ + #define MANFID_PIONEER 0x000b + + #define MANFID_PSION 0x016c +@@ -103,6 +109,7 @@ + #define PRODID_QUATECH_SPP100 0x0003 + #define PRODID_QUATECH_DUAL_RS232 0x0012 + #define PRODID_QUATECH_DUAL_RS232_D1 0x0007 ++#define PRODID_QUATECH_DUAL_RS232_D2 0x0052 + #define PRODID_QUATECH_QUAD_RS232 0x001b + #define PRODID_QUATECH_DUAL_RS422 0x000e + #define PRODID_QUATECH_QUAD_RS422 0x0045 +@@ -120,9 +127,12 @@ + + #define MANFID_TDK 0x0105 + #define PRODID_TDK_CF010 0x0900 ++#define PRODID_TDK_GN3410 0x4815 + + #define MANFID_TOSHIBA 0x0098 + ++#define MANFID_UNGERMANN 0x02c0 ++ + #define MANFID_XIRCOM 0x0105 + + #endif /* _LINUX_CISCODE_H */ +diff -urN linux-2.4.18/kernel/ksyms.c linux-2.4.18-mh15/kernel/ksyms.c +--- linux-2.4.18/kernel/ksyms.c 2002-02-25 20:38:13.000000000 +0100 ++++ linux-2.4.18-mh15/kernel/ksyms.c 2004-08-01 16:26:23.000000000 +0200 +@@ -47,6 +47,7 @@ + #include <linux/in6.h> + #include <linux/completion.h> + #include <linux/seq_file.h> ++#include <linux/firmware.h> + #include <asm/checksum.h> + + #if defined(CONFIG_PROC_FS) +@@ -538,6 +539,13 @@ + EXPORT_SYMBOL(strspn); + EXPORT_SYMBOL(strsep); + ++#ifdef CONFIG_FW_LOADER ++EXPORT_SYMBOL(release_firmware); ++EXPORT_SYMBOL(request_firmware); ++EXPORT_SYMBOL(request_firmware_nowait); ++EXPORT_SYMBOL(register_firmware); ++#endif ++ + /* software interrupts */ + EXPORT_SYMBOL(tasklet_hi_vec); + EXPORT_SYMBOL(tasklet_vec); +diff -urN linux-2.4.18/lib/Config.in linux-2.4.18-mh15/lib/Config.in +--- linux-2.4.18/lib/Config.in 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/lib/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,12 @@ ++# ++# Library configuration ++# ++mainmenu_option next_comment ++comment 'Library routines' ++ ++if [ "$CONFIG_EXPERIMENTAL" = "y" -a \ ++ "$CONFIG_HOTPLUG" = "y" ]; then ++ tristate 'Hotplug firmware loading support (EXPERIMENTAL)' CONFIG_FW_LOADER ++fi ++ ++endmenu +diff -urN linux-2.4.18/lib/firmware_class.c linux-2.4.18-mh15/lib/firmware_class.c +--- linux-2.4.18/lib/firmware_class.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/lib/firmware_class.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,573 @@ ++/* ++ * firmware_class.c - Multi purpose firmware loading support ++ * ++ * Copyright (c) 2003 Manuel Estrada Sainz <ranty@debian.org> ++ * ++ * Please see Documentation/firmware_class/ for more information. ++ * ++ */ ++/* ++ * Based on kernel/kmod.c and drivers/usb/usb.c ++ */ ++/* ++ kernel/kmod.c ++ Kirk Petersen ++ ++ Reorganized not to be a daemon by Adam Richter, with guidance ++ from Greg Zornetzer. ++ ++ Modified to avoid chroot and file sharing problems. ++ Mikael Pettersson ++ ++ Limit the concurrent number of kmod modprobes to catch loops from ++ "modprobe needs a service that is in a module". ++ Keith Owens <kaos@ocs.com.au> December 1999 ++ ++ Unblock all signals when we exec a usermode process. ++ Shuu Yamaguchi <shuu@wondernetworkresources.com> December 2000 ++*/ ++/* ++ * drivers/usb/usb.c ++ * ++ * (C) Copyright Linus Torvalds 1999 ++ * (C) Copyright Johannes Erdfelt 1999-2001 ++ * (C) Copyright Andreas Gal 1999 ++ * (C) Copyright Gregory P. Smith 1999 ++ * (C) Copyright Deti Fliegl 1999 (new USB architecture) ++ * (C) Copyright Randy Dunlap 2000 ++ * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id) ++ * (C) Copyright Yggdrasil Computing, Inc. 2000 ++ * (usb_device_id matching changes by Adam J. Richter) ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/string.h> ++#include <linux/types.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/kmod.h> ++#include <linux/proc_fs.h> ++#include <linux/vmalloc.h> ++#include <asm/hardirq.h> ++ ++#include "linux/firmware.h" ++ ++MODULE_AUTHOR("Manuel Estrada Sainz <ranty@debian.org>"); ++MODULE_DESCRIPTION("Multi purpose firmware loading support"); ++MODULE_LICENSE("GPL"); ++ ++#define err(format, arg...) \ ++ printk(KERN_ERR "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg) ++#define warn(format, arg...) \ ++ printk(KERN_WARNING "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg) ++#define dbg(format, arg...) \ ++ printk(KERN_DEBUG "%s:%s: " format "\n",__FILE__, __FUNCTION__ , ## arg) ++ ++static int loading_timeout = 10; /* In seconds */ ++static struct proc_dir_entry *proc_dir_timeout; ++static struct proc_dir_entry *proc_dir; ++ ++#ifdef CONFIG_HOTPLUG ++ ++static int ++call_helper(char *verb, const char *name, const char *device) ++{ ++ char *argv[3], **envp, *buf, *scratch; ++ int i = 0; ++ ++ int retval = 0; ++ ++ if (!hotplug_path[0]) ++ return -ENOENT; ++ if (in_interrupt()) { ++ err("in_interrupt"); ++ return -EFAULT; ++ } ++ if (!current->fs->root) { ++ warn("call_policy %s -- no FS yet", verb); ++ return -EPERM; ++ } ++ ++ if (!(envp = (char **) kmalloc(20 * sizeof (char *), GFP_KERNEL))) { ++ err("unable to allocate envp"); ++ return -ENOMEM; ++ } ++ if (!(buf = kmalloc(256, GFP_KERNEL))) { ++ kfree(envp); ++ err("unable to allocate buf"); ++ return -ENOMEM; ++ } ++ ++ /* only one standardized param to hotplug command: type */ ++ argv[0] = hotplug_path; ++ argv[1] = "firmware"; ++ argv[2] = 0; ++ ++ /* minimal command environment */ ++ envp[i++] = "HOME=/"; ++ envp[i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; ++ ++#ifdef DEBUG ++ /* hint that policy agent should enter no-stdout debug mode */ ++ envp[i++] = "DEBUG=kernel"; ++#endif ++ scratch = buf; ++ ++ if (device) { ++ envp[i++] = scratch; ++ scratch += snprintf(scratch, FIRMWARE_NAME_MAX+25, ++ "DEVPATH=/driver/firmware/%s", device) + 1; ++ } ++ ++ envp[i++] = scratch; ++ scratch += sprintf(scratch, "ACTION=%s", verb) + 1; ++ ++ envp[i++] = scratch; ++ scratch += snprintf(scratch, FIRMWARE_NAME_MAX, ++ "FIRMWARE=%s", name) + 1; ++ ++ envp[i++] = 0; ++ ++#ifdef DEBUG ++ dbg("firmware: %s %s %s", argv[0], argv[1], verb); ++#endif ++ ++ retval = call_usermodehelper(argv[0], argv, envp); ++ if (retval) { ++ printk("call_usermodehelper return %d\n", retval); ++ } ++ ++ kfree(buf); ++ kfree(envp); ++ return retval; ++} ++#else ++ ++static inline int ++call_helper(char *verb, const char *name, const char *device) ++{ ++ return -ENOENT; ++} ++ ++#endif /* CONFIG_HOTPLUG */ ++ ++struct firmware_priv { ++ struct completion completion; ++ struct proc_dir_entry *proc_dir; ++ struct proc_dir_entry *attr_data; ++ struct proc_dir_entry *attr_loading; ++ struct firmware *fw; ++ int loading; ++ int abort; ++ int alloc_size; ++ struct timer_list timeout; ++}; ++ ++static int ++firmware_timeout_show(char *buf, char **start, off_t off, ++ int count, int *eof, void *data) ++{ ++ return sprintf(buf, "%d\n", loading_timeout); ++} ++ ++/** ++ * firmware_timeout_store: ++ * Description: ++ * Sets the number of seconds to wait for the firmware. Once ++ * this expires an error will be return to the driver and no ++ * firmware will be provided. ++ * ++ * Note: zero means 'wait for ever' ++ * ++ **/ ++static int ++firmware_timeout_store(struct file *file, const char *buf, ++ unsigned long count, void *data) ++{ ++ loading_timeout = simple_strtol(buf, NULL, 10); ++ return count; ++} ++ ++static int ++firmware_loading_show(char *buf, char **start, off_t off, ++ int count, int *eof, void *data) ++{ ++ struct firmware_priv *fw_priv = data; ++ return sprintf(buf, "%d\n", fw_priv->loading); ++} ++ ++/** ++ * firmware_loading_store: - loading control file ++ * Description: ++ * The relevant values are: ++ * ++ * 1: Start a load, discarding any previous partial load. ++ * 0: Conclude the load and handle the data to the driver code. ++ * -1: Conclude the load with an error and discard any written data. ++ **/ ++static int ++firmware_loading_store(struct file *file, const char *buf, ++ unsigned long count, void *data) ++{ ++ struct firmware_priv *fw_priv = data; ++ int prev_loading = fw_priv->loading; ++ ++ fw_priv->loading = simple_strtol(buf, NULL, 10); ++ ++ switch (fw_priv->loading) { ++ case -1: ++ fw_priv->abort = 1; ++ wmb(); ++ complete(&fw_priv->completion); ++ break; ++ case 1: ++ kfree(fw_priv->fw->data); ++ fw_priv->fw->data = NULL; ++ fw_priv->fw->size = 0; ++ fw_priv->alloc_size = 0; ++ break; ++ case 0: ++ if (prev_loading == 1) ++ complete(&fw_priv->completion); ++ break; ++ } ++ ++ return count; ++} ++ ++static int ++firmware_data_read(char *buffer, char **start, off_t offset, ++ int count, int *eof, void *data) ++{ ++ struct firmware_priv *fw_priv = data; ++ struct firmware *fw = fw_priv->fw; ++ ++ if (offset > fw->size) ++ return 0; ++ if (offset + count > fw->size) ++ count = fw->size - offset; ++ ++ memcpy(buffer, fw->data + offset, count); ++ *start = (void *) ((long) count); ++ return count; ++} ++static int ++fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size) ++{ ++ u8 *new_data; ++ int new_size; ++ ++ if (min_size <= fw_priv->alloc_size) ++ return 0; ++ if((min_size % PAGE_SIZE) == 0) ++ new_size = min_size; ++ else ++ new_size = (min_size + PAGE_SIZE) & PAGE_MASK; ++ new_data = vmalloc(new_size); ++ if (!new_data) { ++ printk(KERN_ERR "%s: unable to alloc buffer\n", __FUNCTION__); ++ /* Make sure that we don't keep incomplete data */ ++ fw_priv->abort = 1; ++ return -ENOMEM; ++ } ++ fw_priv->alloc_size = new_size; ++ if (fw_priv->fw->data) { ++ memcpy(new_data, fw_priv->fw->data, fw_priv->fw->size); ++ vfree(fw_priv->fw->data); ++ } ++ fw_priv->fw->data = new_data; ++ BUG_ON(min_size > fw_priv->alloc_size); ++ return 0; ++} ++ ++/** ++ * firmware_data_write: ++ * ++ * Description: ++ * ++ * Data written to the 'data' attribute will be later handled to ++ * the driver as a firmware image. ++ **/ ++static int ++firmware_data_write(struct file *file, const char *buffer, ++ unsigned long count, void *data) ++{ ++ struct firmware_priv *fw_priv = data; ++ struct firmware *fw = fw_priv->fw; ++ int offset = file->f_pos; ++ int retval; ++ ++ retval = fw_realloc_buffer(fw_priv, offset + count); ++ if (retval) { ++ printk("%s: retval:%d\n", __FUNCTION__, retval); ++ return retval; ++ } ++ ++ memcpy(fw->data + offset, buffer, count); ++ ++ fw->size = max_t(size_t, offset + count, fw->size); ++ file->f_pos += count; ++ return count; ++} ++ ++static void ++firmware_class_timeout(u_long data) ++{ ++ struct firmware_priv *fw_priv = (struct firmware_priv *) data; ++ fw_priv->abort = 1; ++ wmb(); ++ complete(&fw_priv->completion); ++} ++static int ++fw_setup_class_device(struct firmware_priv **fw_priv_p, ++ const char *fw_name, const char *device) ++{ ++ int retval; ++ struct firmware_priv *fw_priv = kmalloc(sizeof (struct firmware_priv), ++ GFP_KERNEL); ++ *fw_priv_p = fw_priv; ++ if (!fw_priv) { ++ retval = -ENOMEM; ++ goto out; ++ } ++ memset(fw_priv, 0, sizeof (*fw_priv)); ++ ++ init_completion(&fw_priv->completion); ++ ++ fw_priv->timeout.function = firmware_class_timeout; ++ fw_priv->timeout.data = (u_long) fw_priv; ++ init_timer(&fw_priv->timeout); ++ ++ retval = -EAGAIN; ++ fw_priv->proc_dir = create_proc_entry(device, 0644 | S_IFDIR, proc_dir); ++ if (!fw_priv->proc_dir) ++ goto err_free_fw_priv; ++ ++ fw_priv->attr_data = create_proc_entry("data", 0644 | S_IFREG, ++ fw_priv->proc_dir); ++ if (!fw_priv->attr_data) ++ goto err_remove_dir; ++ ++ fw_priv->attr_data->read_proc = firmware_data_read; ++ fw_priv->attr_data->write_proc = firmware_data_write; ++ fw_priv->attr_data->data = fw_priv; ++ ++ fw_priv->attr_loading = create_proc_entry("loading", 0644 | S_IFREG, ++ fw_priv->proc_dir); ++ if (!fw_priv->attr_loading) ++ goto err_remove_data; ++ ++ fw_priv->attr_loading->read_proc = firmware_loading_show; ++ fw_priv->attr_loading->write_proc = firmware_loading_store; ++ fw_priv->attr_loading->data = fw_priv; ++ ++ retval = 0; ++ fw_priv->fw = kmalloc(sizeof (struct firmware), GFP_KERNEL); ++ if (!fw_priv->fw) { ++ printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n", ++ __FUNCTION__); ++ retval = -ENOMEM; ++ goto err_remove_loading; ++ } ++ memset(fw_priv->fw, 0, sizeof (*fw_priv->fw)); ++ ++ goto out; ++ ++err_remove_loading: ++ remove_proc_entry("loading", fw_priv->proc_dir); ++err_remove_data: ++ remove_proc_entry("data", fw_priv->proc_dir); ++err_remove_dir: ++ remove_proc_entry(device, proc_dir); ++err_free_fw_priv: ++ kfree(fw_priv); ++out: ++ return retval; ++} ++static void ++fw_remove_class_device(struct firmware_priv *fw_priv) ++{ ++ remove_proc_entry("loading", fw_priv->proc_dir); ++ remove_proc_entry("data", fw_priv->proc_dir); ++ remove_proc_entry(fw_priv->proc_dir->name, proc_dir); ++} ++ ++/** ++ * request_firmware: - request firmware to hotplug and wait for it ++ * Description: ++ * @firmware will be used to return a firmware image by the name ++ * of @name for device @device. ++ * ++ * Should be called from user context where sleeping is allowed. ++ * ++ * @name will be use as $FIRMWARE in the hotplug environment and ++ * should be distinctive enough not to be confused with any other ++ * firmware image for this or any other device. ++ **/ ++int ++request_firmware(const struct firmware **firmware, const char *name, ++ const char *device) ++{ ++ struct firmware_priv *fw_priv; ++ int retval; ++ ++ if (!firmware) { ++ retval = -EINVAL; ++ goto out; ++ } ++ *firmware = NULL; ++ ++ retval = fw_setup_class_device(&fw_priv, name, device); ++ if (retval) ++ goto out; ++ ++ retval = call_helper("add", name, device); ++ if (retval) ++ goto out; ++ if (loading_timeout) { ++ fw_priv->timeout.expires = jiffies + loading_timeout * HZ; ++ add_timer(&fw_priv->timeout); ++ } ++ ++ wait_for_completion(&fw_priv->completion); ++ ++ del_timer(&fw_priv->timeout); ++ fw_remove_class_device(fw_priv); ++ ++ if (fw_priv->fw->size && !fw_priv->abort) { ++ *firmware = fw_priv->fw; ++ } else { ++ retval = -ENOENT; ++ vfree(fw_priv->fw->data); ++ kfree(fw_priv->fw); ++ } ++out: ++ kfree(fw_priv); ++ return retval; ++} ++ ++void ++release_firmware(const struct firmware *fw) ++{ ++ if (fw) { ++ vfree(fw->data); ++ kfree(fw); ++ } ++} ++ ++/** ++ * register_firmware: - provide a firmware image for later usage ++ * ++ * Description: ++ * Make sure that @data will be available by requesting firmware @name. ++ * ++ * Note: This will not be possible until some kind of persistence ++ * is available. ++ **/ ++void ++register_firmware(const char *name, const u8 *data, size_t size) ++{ ++ /* This is meaningless without firmware caching, so until we ++ * decide if firmware caching is reasonable just leave it as a ++ * noop */ ++} ++ ++/* Async support */ ++struct firmware_work { ++ struct tq_struct work; ++ struct module *module; ++ const char *name; ++ const char *device; ++ void *context; ++ void (*cont)(const struct firmware *fw, void *context); ++}; ++ ++static void ++request_firmware_work_func(void *arg) ++{ ++ struct firmware_work *fw_work = arg; ++ const struct firmware *fw; ++ if (!arg) ++ return; ++ request_firmware(&fw, fw_work->name, fw_work->device); ++ fw_work->cont(fw, fw_work->context); ++ release_firmware(fw); ++ __MOD_DEC_USE_COUNT(fw_work->module); ++ kfree(fw_work); ++} ++ ++/** ++ * request_firmware_nowait: ++ * ++ * Description: ++ * Asynchronous variant of request_firmware() for contexts where ++ * it is not possible to sleep. ++ * ++ * @cont will be called asynchronously when the firmware request is over. ++ * ++ * @context will be passed over to @cont. ++ * ++ * @fw may be %NULL if firmware request fails. ++ * ++ **/ ++int ++request_firmware_nowait( ++ struct module *module, ++ const char *name, const char *device, void *context, ++ void (*cont)(const struct firmware *fw, void *context)) ++{ ++ struct firmware_work *fw_work = kmalloc(sizeof (struct firmware_work), ++ GFP_ATOMIC); ++ if (!fw_work) ++ return -ENOMEM; ++ if (!try_inc_mod_count(module)) { ++ kfree(fw_work); ++ return -EFAULT; ++ } ++ ++ *fw_work = (struct firmware_work) { ++ .module = module, ++ .name = name, ++ .device = device, ++ .context = context, ++ .cont = cont, ++ }; ++ INIT_TQUEUE(&fw_work->work, request_firmware_work_func, fw_work); ++ ++ schedule_task(&fw_work->work); ++ return 0; ++} ++ ++static int __init ++firmware_class_init(void) ++{ ++ proc_dir = create_proc_entry("driver/firmware", 0755 | S_IFDIR, NULL); ++ if (!proc_dir) ++ return -EAGAIN; ++ proc_dir_timeout = create_proc_entry("timeout", ++ 0644 | S_IFREG, proc_dir); ++ if (!proc_dir_timeout) { ++ remove_proc_entry("driver/firmware", NULL); ++ return -EAGAIN; ++ } ++ proc_dir_timeout->read_proc = firmware_timeout_show; ++ proc_dir_timeout->write_proc = firmware_timeout_store; ++ return 0; ++} ++static void __exit ++firmware_class_exit(void) ++{ ++ remove_proc_entry("timeout", proc_dir); ++ remove_proc_entry("driver/firmware", NULL); ++} ++ ++module_init(firmware_class_init); ++module_exit(firmware_class_exit); ++ ++#ifndef CONFIG_FW_LOADER ++EXPORT_SYMBOL(release_firmware); ++EXPORT_SYMBOL(request_firmware); ++EXPORT_SYMBOL(request_firmware_nowait); ++EXPORT_SYMBOL(register_firmware); ++#endif +diff -urN linux-2.4.18/lib/Makefile linux-2.4.18-mh15/lib/Makefile +--- linux-2.4.18/lib/Makefile 2001-09-18 00:31:15.000000000 +0200 ++++ linux-2.4.18-mh15/lib/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -8,13 +8,17 @@ + + L_TARGET := lib.a + +-export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o ++export-objs := cmdline.o dec_and_lock.o rwsem-spinlock.o rwsem.o \ ++ firmware_class.o + + obj-y := errno.o ctype.o string.o vsprintf.o brlock.o cmdline.o bust_spinlocks.o rbtree.o + ++obj-$(CONFIG_FW_LOADER) += firmware_class.o + obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o + obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem.o + ++include $(TOPDIR)/drivers/bluetooth/Makefile.lib ++ + ifneq ($(CONFIG_HAVE_DEC_LOCK),y) + obj-y += dec_and_lock.o + endif +diff -urN linux-2.4.18/MAINTAINERS linux-2.4.18-mh15/MAINTAINERS +--- linux-2.4.18/MAINTAINERS 2002-02-25 20:37:52.000000000 +0100 ++++ linux-2.4.18-mh15/MAINTAINERS 2004-08-01 16:26:23.000000000 +0200 +@@ -252,10 +252,88 @@ + L: linux-kernel@vger.kernel.org + S: Maintained + +-BLUETOOTH SUBSYSTEM (BlueZ) ++BLUETOOTH SUBSYSTEM ++P: Marcel Holtmann ++M: marcel@holtmann.org + P: Maxim Krasnyansky + M: maxk@qualcomm.com ++L: bluez-devel@lists.sf.net + W: http://bluez.sf.net ++W: http://www.bluez.org ++W: http://www.holtmann.org/linux/bluetooth/ ++S: Maintained ++ ++BLUETOOTH RFCOMM LAYER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++P: Maxim Krasnyansky ++M: maxk@qualcomm.com ++S: Maintained ++ ++BLUETOOTH BNEP LAYER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++P: Maxim Krasnyansky ++M: maxk@qualcomm.com ++S: Maintained ++ ++BLUETOOTH CMTP LAYER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HIDP LAYER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI UART DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++P: Maxim Krasnyansky ++M: maxk@qualcomm.com ++S: Maintained ++ ++BLUETOOTH HCI USB DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++P: Maxim Krasnyansky ++M: maxk@qualcomm.com ++S: Maintained ++ ++BLUETOOTH HCI BCM203X DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI BFUSB DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI DTL1 DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI BLUECARD DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI BT3C DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI BTUART DRIVER ++P: Marcel Holtmann ++M: marcel@holtmann.org ++S: Maintained ++ ++BLUETOOTH HCI VHCI DRIVER ++P: Maxim Krasnyansky ++M: maxk@qualcomm.com + S: Maintained + + BTTV VIDEO4LINUX DRIVER +diff -urN linux-2.4.18/net/bluetooth/af_bluetooth.c linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c +--- linux-2.4.18/net/bluetooth/af_bluetooth.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/af_bluetooth.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,14 +25,15 @@ + /* + * BlueZ Bluetooth address family and sockets. + * +- * $Id: af_bluetooth.c,v 1.4 2001/07/05 18:42:44 maxk Exp $ ++ * $Id: af_bluetooth.c,v 1.8 2002/07/22 20:32:54 maxk Exp $ + */ +-#define VERSION "1.1" ++#define VERSION "2.4" + + #include <linux/config.h> + #include <linux/module.h> + + #include <linux/types.h> ++#include <linux/list.h> + #include <linux/errno.h> + #include <linux/kernel.h> + #include <linux/major.h> +@@ -40,6 +41,7 @@ + #include <linux/slab.h> + #include <linux/skbuff.h> + #include <linux/init.h> ++#include <linux/poll.h> + #include <linux/proc_fs.h> + #include <net/sock.h> + +@@ -48,70 +50,79 @@ + #endif + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> ++ ++#ifndef AF_BLUETOOTH_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif + + /* Bluetooth sockets */ +-static struct net_proto_family *bluez_sock[BLUEZ_MAX_PROTO]; ++#define BLUEZ_MAX_PROTO 7 ++static struct net_proto_family *bluez_proto[BLUEZ_MAX_PROTO]; + + int bluez_sock_register(int proto, struct net_proto_family *ops) + { +- if (proto > BLUEZ_MAX_PROTO) ++ if (proto >= BLUEZ_MAX_PROTO) + return -EINVAL; + +- if (bluez_sock[proto]) ++ if (bluez_proto[proto]) + return -EEXIST; + +- bluez_sock[proto] = ops; ++ bluez_proto[proto] = ops; + return 0; + } + + int bluez_sock_unregister(int proto) + { +- if (proto > BLUEZ_MAX_PROTO) ++ if (proto >= BLUEZ_MAX_PROTO) + return -EINVAL; + +- if (!bluez_sock[proto]) ++ if (!bluez_proto[proto]) + return -ENOENT; + +- bluez_sock[proto] = NULL; ++ bluez_proto[proto] = NULL; + return 0; + } + + static int bluez_sock_create(struct socket *sock, int proto) + { +- if (proto > BLUEZ_MAX_PROTO) ++ if (proto >= BLUEZ_MAX_PROTO) + return -EINVAL; + + #if defined(CONFIG_KMOD) +- if (!bluez_sock[proto]) { ++ if (!bluez_proto[proto]) { + char module_name[30]; + sprintf(module_name, "bt-proto-%d", proto); + request_module(module_name); + } + #endif + +- if (!bluez_sock[proto]) ++ if (!bluez_proto[proto]) + return -ENOENT; + +- return bluez_sock[proto]->create(sock, proto); ++ return bluez_proto[proto]->create(sock, proto); ++} ++ ++void bluez_sock_init(struct socket *sock, struct sock *sk) ++{ ++ sock_init_data(sock, sk); ++ INIT_LIST_HEAD(&bluez_pi(sk)->accept_q); + } + + void bluez_sock_link(struct bluez_sock_list *l, struct sock *sk) + { +- write_lock(&l->lock); +- ++ write_lock_bh(&l->lock); + sk->next = l->head; + l->head = sk; + sock_hold(sk); +- +- write_unlock(&l->lock); ++ write_unlock_bh(&l->lock); + } + + void bluez_sock_unlink(struct bluez_sock_list *l, struct sock *sk) + { + struct sock **skp; + +- write_lock(&l->lock); ++ write_lock_bh(&l->lock); + for (skp = &l->head; *skp; skp = &((*skp)->next)) { + if (*skp == sk) { + *skp = sk->next; +@@ -119,7 +130,163 @@ + break; + } + } +- write_unlock(&l->lock); ++ write_unlock_bh(&l->lock); ++} ++ ++void bluez_accept_enqueue(struct sock *parent, struct sock *sk) ++{ ++ BT_DBG("parent %p, sk %p", parent, sk); ++ ++ sock_hold(sk); ++ list_add_tail(&bluez_pi(sk)->accept_q, &bluez_pi(parent)->accept_q); ++ bluez_pi(sk)->parent = parent; ++ parent->ack_backlog++; ++} ++ ++static void bluez_accept_unlink(struct sock *sk) ++{ ++ BT_DBG("sk %p state %d", sk, sk->state); ++ ++ list_del_init(&bluez_pi(sk)->accept_q); ++ bluez_pi(sk)->parent->ack_backlog--; ++ bluez_pi(sk)->parent = NULL; ++ sock_put(sk); ++} ++ ++struct sock *bluez_accept_dequeue(struct sock *parent, struct socket *newsock) ++{ ++ struct list_head *p, *n; ++ struct bluez_pinfo *pi; ++ struct sock *sk; ++ ++ BT_DBG("parent %p", parent); ++ ++ list_for_each_safe(p, n, &bluez_pi(parent)->accept_q) { ++ pi = list_entry(p, struct bluez_pinfo, accept_q); ++ sk = bluez_sk(pi); ++ ++ lock_sock(sk); ++ if (sk->state == BT_CLOSED) { ++ release_sock(sk); ++ bluez_accept_unlink(sk); ++ continue; ++ } ++ ++ if (sk->state == BT_CONNECTED || !newsock) { ++ bluez_accept_unlink(sk); ++ if (newsock) ++ sock_graft(sk, newsock); ++ release_sock(sk); ++ return sk; ++ } ++ release_sock(sk); ++ } ++ return NULL; ++} ++ ++int bluez_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm) ++{ ++ int noblock = flags & MSG_DONTWAIT; ++ struct sock *sk = sock->sk; ++ struct sk_buff *skb; ++ int copied, err; ++ ++ BT_DBG("sock %p sk %p len %d", sock, sk, len); ++ ++ if (flags & (MSG_OOB)) ++ return -EOPNOTSUPP; ++ ++ if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) { ++ if (sk->shutdown & RCV_SHUTDOWN) ++ return 0; ++ return err; ++ } ++ ++ msg->msg_namelen = 0; ++ ++ copied = skb->len; ++ if (len < copied) { ++ msg->msg_flags |= MSG_TRUNC; ++ copied = len; ++ } ++ ++ skb->h.raw = skb->data; ++ err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); ++ ++ skb_free_datagram(sk, skb); ++ ++ return err ? : copied; ++} ++ ++unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait) ++{ ++ struct sock *sk = sock->sk; ++ unsigned int mask = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ poll_wait(file, sk->sleep, wait); ++ ++ if (sk->err || !skb_queue_empty(&sk->error_queue)) ++ mask |= POLLERR; ++ ++ if (sk->shutdown == SHUTDOWN_MASK) ++ mask |= POLLHUP; ++ ++ if (!skb_queue_empty(&sk->receive_queue) || ++ !list_empty(&bluez_pi(sk)->accept_q) || ++ (sk->shutdown & RCV_SHUTDOWN)) ++ mask |= POLLIN | POLLRDNORM; ++ ++ if (sk->state == BT_CLOSED) ++ mask |= POLLHUP; ++ ++ if (sk->state == BT_CONNECT || ++ sk->state == BT_CONNECT2 || ++ sk->state == BT_CONFIG) ++ return mask; ++ ++ if (sock_writeable(sk)) ++ mask |= POLLOUT | POLLWRNORM | POLLWRBAND; ++ else ++ set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags); ++ ++ return mask; ++} ++ ++int bluez_sock_wait_state(struct sock *sk, int state, unsigned long timeo) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ int err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ add_wait_queue(sk->sleep, &wait); ++ while (sk->state != state) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (!timeo) { ++ err = -EAGAIN; ++ break; ++ } ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeo); ++ break; ++ } ++ ++ release_sock(sk); ++ timeo = schedule_timeout(timeo); ++ lock_sock(sk); ++ ++ if (sk->err) { ++ err = sock_error(sk); ++ break; ++ } ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ return err; + } + + struct net_proto_family bluez_sock_family_ops = +@@ -129,9 +296,9 @@ + + int bluez_init(void) + { +- INF("BlueZ HCI Core ver %s Copyright (C) 2000,2001 Qualcomm Inc", ++ BT_INFO("BlueZ Core ver %s Copyright (C) 2000,2001 Qualcomm Inc", + VERSION); +- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); + + proc_mkdir("bluetooth", NULL); + +@@ -164,5 +331,6 @@ + module_exit(bluez_cleanup); + + MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); +-MODULE_DESCRIPTION("BlueZ HCI Core ver " VERSION); ++MODULE_DESCRIPTION("BlueZ Core ver " VERSION); ++MODULE_LICENSE("GPL"); + #endif +diff -urN linux-2.4.18/net/bluetooth/bnep/bnep.h linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h +--- linux-2.4.18/net/bluetooth/bnep/bnep.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/bnep.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,185 @@ ++/* ++ BNEP protocol definition for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License, version 2, as ++ published by the Free Software Foundation. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++ ++/* ++ * $Id: bnep2.h,v 1.9 2002/07/14 07:09:19 maxk Exp $ ++ */ ++ ++#ifndef _BNEP_H ++#define _BNEP_H ++ ++#include <linux/types.h> ++#include <net/bluetooth/bluetooth.h> ++ ++#include "crc32.h" ++ ++// Limits ++#define BNEP_MAX_PROTO_FILTERS 5 ++#define BNEP_MAX_MULTICAST_FILTERS 20 ++ ++// UUIDs ++#define BNEP_BASE_UUID 0x0000000000001000800000805F9B34FB ++#define BNEP_UUID16 0x02 ++#define BNEP_UUID32 0x04 ++#define BNEP_UUID128 0x16 ++ ++#define BNEP_SVC_PANU 0x1115 ++#define BNEP_SVC_NAP 0x1116 ++#define BNEP_SVC_GN 0x1117 ++ ++// Packet types ++#define BNEP_GENERAL 0x00 ++#define BNEP_CONTROL 0x01 ++#define BNEP_COMPRESSED 0x02 ++#define BNEP_COMPRESSED_SRC_ONLY 0x03 ++#define BNEP_COMPRESSED_DST_ONLY 0x04 ++ ++// Control types ++#define BNEP_CMD_NOT_UNDERSTOOD 0x00 ++#define BNEP_SETUP_CONN_REQ 0x01 ++#define BNEP_SETUP_CONN_RSP 0x02 ++#define BNEP_FILTER_NET_TYPE_SET 0x03 ++#define BNEP_FILTER_NET_TYPE_RSP 0x04 ++#define BNEP_FILTER_MULTI_ADDR_SET 0x05 ++#define BNEP_FILTER_MULTI_ADDR_RSP 0x06 ++ ++// Extension types ++#define BNEP_EXT_CONTROL 0x00 ++ ++// Response messages ++#define BNEP_SUCCESS 0x00 ++ ++#define BNEP_CONN_INVALID_DST 0x01 ++#define BNEP_CONN_INVALID_SRC 0x02 ++#define BNEP_CONN_INVALID_SVC 0x03 ++#define BNEP_CONN_NOT_ALLOWED 0x04 ++ ++#define BNEP_FILTER_UNSUPPORTED_REQ 0x01 ++#define BNEP_FILTER_INVALID_RANGE 0x02 ++#define BNEP_FILTER_INVALID_MCADDR 0x02 ++#define BNEP_FILTER_LIMIT_REACHED 0x03 ++#define BNEP_FILTER_DENIED_SECURITY 0x04 ++ ++// L2CAP settings ++#define BNEP_MTU 1691 ++#define BNEP_PSM 0x0f ++#define BNEP_FLUSH_TO 0xffff ++#define BNEP_CONNECT_TO 15 ++#define BNEP_FILTER_TO 15 ++ ++// Headers ++#define BNEP_TYPE_MASK 0x7f ++#define BNEP_EXT_HEADER 0x80 ++ ++struct bnep_setup_conn_req { ++ __u8 type; ++ __u8 ctrl; ++ __u8 uuid_size; ++ __u8 service[0]; ++} __attribute__((packed)); ++ ++struct bnep_set_filter_req { ++ __u8 type; ++ __u8 ctrl; ++ __u16 len; ++ __u8 list[0]; ++} __attribute__((packed)); ++ ++struct bnep_control_rsp { ++ __u8 type; ++ __u8 ctrl; ++ __u16 resp; ++} __attribute__((packed)); ++ ++struct bnep_ext_hdr { ++ __u8 type; ++ __u8 len; ++ __u8 data[0]; ++} __attribute__((packed)); ++ ++/* BNEP ioctl defines */ ++#define BNEPCONNADD _IOW('B', 200, int) ++#define BNEPCONNDEL _IOW('B', 201, int) ++#define BNEPGETCONNLIST _IOR('B', 210, int) ++#define BNEPGETCONNINFO _IOR('B', 211, int) ++ ++struct bnep_connadd_req { ++ int sock; // Connected socket ++ __u32 flags; ++ __u16 role; ++ char device[16]; // Name of the Ethernet device ++}; ++ ++struct bnep_conndel_req { ++ __u32 flags; ++ __u8 dst[ETH_ALEN]; ++}; ++ ++struct bnep_conninfo { ++ __u32 flags; ++ __u16 role; ++ __u16 state; ++ __u8 dst[ETH_ALEN]; ++ char device[16]; ++}; ++ ++struct bnep_connlist_req { ++ __u32 cnum; ++ struct bnep_conninfo *ci; ++}; ++ ++struct bnep_proto_filter { ++ __u16 start; ++ __u16 end; ++}; ++ ++int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock); ++int bnep_del_connection(struct bnep_conndel_req *req); ++int bnep_get_connlist(struct bnep_connlist_req *req); ++int bnep_get_conninfo(struct bnep_conninfo *ci); ++ ++// BNEP sessions ++struct bnep_session { ++ struct list_head list; ++ ++ unsigned int role; ++ unsigned long state; ++ unsigned long flags; ++ atomic_t killed; ++ ++ struct ethhdr eh; ++ struct msghdr msg; ++ ++ struct bnep_proto_filter proto_filter[BNEP_MAX_PROTO_FILTERS]; ++ u64 mc_filter; ++ ++ struct socket *sock; ++ struct net_device dev; ++ struct net_device_stats stats; ++}; ++ ++int bnep_net_init(struct net_device *dev); ++int bnep_sock_init(void); ++int bnep_sock_cleanup(void); ++ ++static inline int bnep_mc_hash(__u8 *addr) ++{ ++ return (bnep_crc32(~0, addr, ETH_ALEN) >> 26); ++} ++ ++#endif +diff -urN linux-2.4.18/net/bluetooth/bnep/Config.in linux-2.4.18-mh15/net/bluetooth/bnep/Config.in +--- linux-2.4.18/net/bluetooth/bnep/Config.in 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,11 @@ ++# ++# Bluetooth BNEP layer configuration ++# ++ ++dep_tristate 'BNEP protocol support' CONFIG_BLUEZ_BNEP $CONFIG_BLUEZ_L2CAP ++ ++if [ "$CONFIG_BLUEZ_BNEP" != "n" ]; then ++ bool ' Multicast filter support' CONFIG_BLUEZ_BNEP_MC_FILTER ++ bool ' Protocol filter support' CONFIG_BLUEZ_BNEP_PROTO_FILTER ++fi ++ +diff -urN linux-2.4.18/net/bluetooth/bnep/core.c linux-2.4.18-mh15/net/bluetooth/bnep/core.c +--- linux-2.4.18/net/bluetooth/bnep/core.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,718 @@ ++/* ++ BNEP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2001-2002 Inventel Systemes ++ Written 2001-2002 by ++ Clément Moreau <clement.moreau@inventel.fr> ++ David Libault <david.libault@inventel.fr> ++ ++ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: core.c,v 1.18 2002/07/14 07:09:19 maxk Exp $ ++ */ ++ ++#define __KERNEL_SYSCALLS__ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/signal.h> ++#include <linux/init.h> ++#include <linux/wait.h> ++#include <linux/errno.h> ++#include <linux/smp_lock.h> ++#include <linux/net.h> ++#include <net/sock.h> ++ ++#include <linux/socket.h> ++#include <linux/file.h> ++ ++#include <linux/netdevice.h> ++#include <linux/etherdevice.h> ++#include <linux/skbuff.h> ++ ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/l2cap.h> ++ ++#include "bnep.h" ++ ++#ifndef CONFIG_BLUEZ_BNEP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define VERSION "1.2" ++ ++static LIST_HEAD(bnep_session_list); ++static DECLARE_RWSEM(bnep_session_sem); ++ ++static struct bnep_session *__bnep_get_session(u8 *dst) ++{ ++ struct bnep_session *s; ++ struct list_head *p; ++ ++ BT_DBG(""); ++ ++ list_for_each(p, &bnep_session_list) { ++ s = list_entry(p, struct bnep_session, list); ++ if (!memcmp(dst, s->eh.h_source, ETH_ALEN)) ++ return s; ++ } ++ return NULL; ++} ++ ++static void __bnep_link_session(struct bnep_session *s) ++{ ++ MOD_INC_USE_COUNT; ++ list_add(&s->list, &bnep_session_list); ++} ++ ++static void __bnep_unlink_session(struct bnep_session *s) ++{ ++ list_del(&s->list); ++ MOD_DEC_USE_COUNT; ++} ++ ++static int bnep_send(struct bnep_session *s, void *data, size_t len) ++{ ++ struct socket *sock = s->sock; ++ struct iovec iv = { data, len }; ++ s->msg.msg_iov = &iv; ++ s->msg.msg_iovlen = 1; ++ return sock->ops->sendmsg(sock, &s->msg, len, NULL); ++} ++ ++static int bnep_send_rsp(struct bnep_session *s, u8 ctrl, u16 resp) ++{ ++ struct bnep_control_rsp rsp; ++ rsp.type = BNEP_CONTROL; ++ rsp.ctrl = ctrl; ++ rsp.resp = htons(resp); ++ return bnep_send(s, &rsp, sizeof(rsp)); ++} ++ ++#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER ++static inline void bnep_set_default_proto_filter(struct bnep_session *s) ++{ ++ /* (IPv4, ARP) */ ++ s->proto_filter[0].start = htons(0x0800); ++ s->proto_filter[0].end = htons(0x0806); ++ /* (RARP, AppleTalk) */ ++ s->proto_filter[1].start = htons(0x8035); ++ s->proto_filter[1].end = htons(0x80F3); ++ /* (IPX, IPv6) */ ++ s->proto_filter[2].start = htons(0x8137); ++ s->proto_filter[2].end = htons(0x86DD); ++} ++#endif ++ ++static int bnep_ctrl_set_netfilter(struct bnep_session *s, u16 *data, int len) ++{ ++ int n; ++ ++ if (len < 2) ++ return -EILSEQ; ++ ++ n = ntohs(get_unaligned(data)); ++ data++; len -= 2; ++ ++ if (len < n) ++ return -EILSEQ; ++ ++ BT_DBG("filter len %d", n); ++ ++#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER ++ n /= 4; ++ if (n <= BNEP_MAX_PROTO_FILTERS) { ++ struct bnep_proto_filter *f = s->proto_filter; ++ int i; ++ ++ for (i = 0; i < n; i++) { ++ f[i].start = get_unaligned(data++); ++ f[i].end = get_unaligned(data++); ++ ++ BT_DBG("proto filter start %d end %d", ++ f[i].start, f[i].end); ++ } ++ ++ if (i < BNEP_MAX_PROTO_FILTERS) ++ memset(f + i, 0, sizeof(*f)); ++ ++ if (n == 0) ++ bnep_set_default_proto_filter(s); ++ ++ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_SUCCESS); ++ } else { ++ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_LIMIT_REACHED); ++ } ++#else ++ bnep_send_rsp(s, BNEP_FILTER_NET_TYPE_RSP, BNEP_FILTER_UNSUPPORTED_REQ); ++#endif ++ return 0; ++} ++ ++static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len) ++{ ++ int n; ++ ++ if (len < 2) ++ return -EILSEQ; ++ ++ n = ntohs(get_unaligned((u16 *) data)); ++ data += 2; len -= 2; ++ ++ if (len < n) ++ return -EILSEQ; ++ ++ BT_DBG("filter len %d", n); ++ ++#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER ++ n /= (ETH_ALEN * 2); ++ ++ if (n > 0) { ++ s->mc_filter = 0; ++ ++ /* Always send broadcast */ ++ set_bit(bnep_mc_hash(s->dev.broadcast), &s->mc_filter); ++ ++ /* Add address ranges to the multicast hash */ ++ for (; n > 0; n--) { ++ u8 a1[6], *a2; ++ ++ memcpy(a1, data, ETH_ALEN); data += ETH_ALEN; ++ a2 = data; data += ETH_ALEN; ++ ++ BT_DBG("mc filter %s -> %s", ++ batostr((void *) a1), batostr((void *) a2)); ++ ++ #define INCA(a) { int i = 5; while (i >=0 && ++a[i--] == 0); } ++ ++ /* Iterate from a1 to a2 */ ++ set_bit(bnep_mc_hash(a1), &s->mc_filter); ++ while (memcmp(a1, a2, 6) < 0 && s->mc_filter != ~0LL) { ++ INCA(a1); ++ set_bit(bnep_mc_hash(a1), &s->mc_filter); ++ } ++ } ++ } ++ ++ BT_DBG("mc filter hash 0x%llx", s->mc_filter); ++ ++ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_SUCCESS); ++#else ++ bnep_send_rsp(s, BNEP_FILTER_MULTI_ADDR_RSP, BNEP_FILTER_UNSUPPORTED_REQ); ++#endif ++ return 0; ++} ++ ++static int bnep_rx_control(struct bnep_session *s, void *data, int len) ++{ ++ u8 cmd = *(u8 *)data; ++ int err = 0; ++ ++ data++; len--; ++ ++ switch (cmd) { ++ case BNEP_CMD_NOT_UNDERSTOOD: ++ case BNEP_SETUP_CONN_REQ: ++ case BNEP_SETUP_CONN_RSP: ++ case BNEP_FILTER_NET_TYPE_RSP: ++ case BNEP_FILTER_MULTI_ADDR_RSP: ++ /* Ignore these for now */ ++ break; ++ ++ case BNEP_FILTER_NET_TYPE_SET: ++ err = bnep_ctrl_set_netfilter(s, data, len); ++ break; ++ ++ case BNEP_FILTER_MULTI_ADDR_SET: ++ err = bnep_ctrl_set_mcfilter(s, data, len); ++ break; ++ ++ default: { ++ u8 pkt[3]; ++ pkt[0] = BNEP_CONTROL; ++ pkt[1] = BNEP_CMD_NOT_UNDERSTOOD; ++ pkt[2] = cmd; ++ bnep_send(s, pkt, sizeof(pkt)); ++ } ++ break; ++ } ++ ++ return err; ++} ++ ++static int bnep_rx_extension(struct bnep_session *s, struct sk_buff *skb) ++{ ++ struct bnep_ext_hdr *h; ++ int err = 0; ++ ++ do { ++ h = (void *) skb->data; ++ if (!skb_pull(skb, sizeof(*h))) { ++ err = -EILSEQ; ++ break; ++ } ++ ++ BT_DBG("type 0x%x len %d", h->type, h->len); ++ ++ switch (h->type & BNEP_TYPE_MASK) { ++ case BNEP_EXT_CONTROL: ++ bnep_rx_control(s, skb->data, skb->len); ++ break; ++ ++ default: ++ /* Unknown extension, skip it. */ ++ break; ++ } ++ ++ if (!skb_pull(skb, h->len)) { ++ err = -EILSEQ; ++ break; ++ } ++ } while (!err && (h->type & BNEP_EXT_HEADER)); ++ ++ return err; ++} ++ ++static u8 __bnep_rx_hlen[] = { ++ ETH_HLEN, /* BNEP_GENERAL */ ++ 0, /* BNEP_CONTROL */ ++ 2, /* BNEP_COMPRESSED */ ++ ETH_ALEN + 2, /* BNEP_COMPRESSED_SRC_ONLY */ ++ ETH_ALEN + 2 /* BNEP_COMPRESSED_DST_ONLY */ ++}; ++#define BNEP_RX_TYPES (sizeof(__bnep_rx_hlen) - 1) ++ ++static inline int bnep_rx_frame(struct bnep_session *s, struct sk_buff *skb) ++{ ++ struct net_device *dev = &s->dev; ++ struct sk_buff *nskb; ++ u8 type; ++ ++ dev->last_rx = jiffies; ++ s->stats.rx_bytes += skb->len; ++ ++ type = *(u8 *) skb->data; skb_pull(skb, 1); ++ ++ if ((type & BNEP_TYPE_MASK) > BNEP_RX_TYPES) ++ goto badframe; ++ ++ if ((type & BNEP_TYPE_MASK) == BNEP_CONTROL) { ++ bnep_rx_control(s, skb->data, skb->len); ++ kfree_skb(skb); ++ return 0; ++ } ++ ++ skb->mac.raw = skb->data; ++ ++ /* Verify and pull out header */ ++ if (!skb_pull(skb, __bnep_rx_hlen[type & BNEP_TYPE_MASK])) ++ goto badframe; ++ ++ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2)); ++ ++ if (type & BNEP_EXT_HEADER) { ++ if (bnep_rx_extension(s, skb) < 0) ++ goto badframe; ++ } ++ ++ /* Strip 802.1p header */ ++ if (ntohs(s->eh.h_proto) == 0x8100) { ++ if (!skb_pull(skb, 4)) ++ goto badframe; ++ s->eh.h_proto = get_unaligned((u16 *) (skb->data - 2)); ++ } ++ ++ /* We have to alloc new skb and copy data here :(. Because original skb ++ * may not be modified and because of the alignment requirements. */ ++ nskb = alloc_skb(2 + ETH_HLEN + skb->len, GFP_KERNEL); ++ if (!nskb) { ++ s->stats.rx_dropped++; ++ kfree_skb(skb); ++ return -ENOMEM; ++ } ++ skb_reserve(nskb, 2); ++ ++ /* Decompress header and construct ether frame */ ++ switch (type & BNEP_TYPE_MASK) { ++ case BNEP_COMPRESSED: ++ memcpy(__skb_put(nskb, ETH_HLEN), &s->eh, ETH_HLEN); ++ break; ++ ++ case BNEP_COMPRESSED_SRC_ONLY: ++ memcpy(__skb_put(nskb, ETH_ALEN), s->eh.h_dest, ETH_ALEN); ++ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN); ++ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2)); ++ break; ++ ++ case BNEP_COMPRESSED_DST_ONLY: ++ memcpy(__skb_put(nskb, ETH_ALEN), skb->mac.raw, ETH_ALEN); ++ memcpy(__skb_put(nskb, ETH_ALEN + 2), s->eh.h_source, ETH_ALEN + 2); ++ break; ++ ++ case BNEP_GENERAL: ++ memcpy(__skb_put(nskb, ETH_ALEN * 2), skb->mac.raw, ETH_ALEN * 2); ++ put_unaligned(s->eh.h_proto, (u16 *) __skb_put(nskb, 2)); ++ break; ++ } ++ ++ memcpy(__skb_put(nskb, skb->len), skb->data, skb->len); ++ kfree_skb(skb); ++ ++ s->stats.rx_packets++; ++ nskb->dev = dev; ++ nskb->ip_summed = CHECKSUM_UNNECESSARY; ++ nskb->protocol = eth_type_trans(nskb, dev); ++ netif_rx_ni(nskb); ++ return 0; ++ ++badframe: ++ s->stats.rx_errors++; ++ kfree_skb(skb); ++ return 0; ++} ++ ++static u8 __bnep_tx_types[] = { ++ BNEP_GENERAL, ++ BNEP_COMPRESSED_SRC_ONLY, ++ BNEP_COMPRESSED_DST_ONLY, ++ BNEP_COMPRESSED ++}; ++ ++static inline int bnep_tx_frame(struct bnep_session *s, struct sk_buff *skb) ++{ ++ struct ethhdr *eh = (void *) skb->data; ++ struct socket *sock = s->sock; ++ struct iovec iv[3]; ++ int len = 0, il = 0; ++ u8 type = 0; ++ ++ BT_DBG("skb %p dev %p type %d", skb, skb->dev, skb->pkt_type); ++ ++ if (!skb->dev) { ++ /* Control frame sent by us */ ++ goto send; ++ } ++ ++ iv[il++] = (struct iovec) { &type, 1 }; ++ len++; ++ ++ if (!memcmp(eh->h_dest, s->eh.h_source, ETH_ALEN)) ++ type |= 0x01; ++ ++ if (!memcmp(eh->h_source, s->eh.h_dest, ETH_ALEN)) ++ type |= 0x02; ++ ++ if (type) ++ skb_pull(skb, ETH_ALEN * 2); ++ ++ type = __bnep_tx_types[type]; ++ switch (type) { ++ case BNEP_COMPRESSED_SRC_ONLY: ++ iv[il++] = (struct iovec) { eh->h_source, ETH_ALEN }; ++ len += ETH_ALEN; ++ break; ++ ++ case BNEP_COMPRESSED_DST_ONLY: ++ iv[il++] = (struct iovec) { eh->h_dest, ETH_ALEN }; ++ len += ETH_ALEN; ++ break; ++ } ++ ++send: ++ iv[il++] = (struct iovec) { skb->data, skb->len }; ++ len += skb->len; ++ ++ /* FIXME: linearize skb */ ++ ++ s->msg.msg_iov = iv; ++ s->msg.msg_iovlen = il; ++ len = sock->ops->sendmsg(sock, &s->msg, len, NULL); ++ kfree_skb(skb); ++ ++ if (len > 0) { ++ s->stats.tx_bytes += len; ++ s->stats.tx_packets++; ++ return 0; ++ } ++ ++ return len; ++} ++ ++static int bnep_session(void *arg) ++{ ++ struct bnep_session *s = arg; ++ struct net_device *dev = &s->dev; ++ struct sock *sk = s->sock->sk; ++ struct sk_buff *skb; ++ wait_queue_t wait; ++ ++ BT_DBG(""); ++ ++ daemonize(); reparent_to_init(); ++ ++ sprintf(current->comm, "kbnepd %s", dev->name); ++ ++ sigfillset(¤t->blocked); ++ flush_signals(current); ++ ++ current->nice = -15; ++ ++ set_fs(KERNEL_DS); ++ ++ init_waitqueue_entry(&wait, current); ++ add_wait_queue(sk->sleep, &wait); ++ while (!atomic_read(&s->killed)) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ // RX ++ while ((skb = skb_dequeue(&sk->receive_queue))) { ++ skb_orphan(skb); ++ bnep_rx_frame(s, skb); ++ } ++ ++ if (sk->state != BT_CONNECTED) ++ break; ++ ++ // TX ++ while ((skb = skb_dequeue(&sk->write_queue))) ++ if (bnep_tx_frame(s, skb)) ++ break; ++ netif_wake_queue(dev); ++ ++ schedule(); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ ++ /* Cleanup session */ ++ down_write(&bnep_session_sem); ++ ++ /* Delete network device */ ++ unregister_netdev(dev); ++ ++ /* Release the socket */ ++ fput(s->sock->file); ++ ++ __bnep_unlink_session(s); ++ ++ up_write(&bnep_session_sem); ++ kfree(s); ++ return 0; ++} ++ ++int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock) ++{ ++ struct net_device *dev; ++ struct bnep_session *s, *ss; ++ u8 dst[ETH_ALEN], src[ETH_ALEN]; ++ int err; ++ ++ BT_DBG(""); ++ ++ baswap((void *) dst, &bluez_pi(sock->sk)->dst); ++ baswap((void *) src, &bluez_pi(sock->sk)->src); ++ ++ s = kmalloc(sizeof(struct bnep_session), GFP_KERNEL); ++ if (!s) ++ return -ENOMEM; ++ memset(s, 0, sizeof(struct bnep_session)); ++ ++ down_write(&bnep_session_sem); ++ ++ ss = __bnep_get_session(dst); ++ if (ss && ss->state == BT_CONNECTED) { ++ err = -EEXIST; ++ goto failed; ++ } ++ ++ dev = &s->dev; ++ ++ if (*req->device) ++ strcpy(dev->name, req->device); ++ else ++ strcpy(dev->name, "bnep%d"); ++ ++ memset(dev->broadcast, 0xff, ETH_ALEN); ++ ++ /* This is rx header therefor addresses are swaped. ++ * ie eh.h_dest is our local address. */ ++ memcpy(s->eh.h_dest, &src, ETH_ALEN); ++ memcpy(s->eh.h_source, &dst, ETH_ALEN); ++ ++ s->sock = sock; ++ s->role = req->role; ++ s->state = BT_CONNECTED; ++ ++ s->msg.msg_flags = MSG_NOSIGNAL; ++ ++#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER ++ /* Set default mc filter */ ++ set_bit(bnep_mc_hash(dev->broadcast), &s->mc_filter); ++#endif ++ ++#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER ++ /* Set default protocol filter */ ++ bnep_set_default_proto_filter(s); ++#endif ++ ++ dev->init = bnep_net_init; ++ dev->priv = s; ++ err = register_netdev(dev); ++ if (err) { ++ goto failed; ++ } ++ ++ __bnep_link_session(s); ++ ++ err = kernel_thread(bnep_session, s, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); ++ if (err < 0) { ++ /* Session thread start failed, gotta cleanup. */ ++ unregister_netdev(dev); ++ __bnep_unlink_session(s); ++ goto failed; ++ } ++ ++ up_write(&bnep_session_sem); ++ strcpy(req->device, dev->name); ++ return 0; ++ ++failed: ++ up_write(&bnep_session_sem); ++ kfree(s); ++ return err; ++} ++ ++int bnep_del_connection(struct bnep_conndel_req *req) ++{ ++ struct bnep_session *s; ++ int err = 0; ++ ++ BT_DBG(""); ++ ++ down_read(&bnep_session_sem); ++ ++ s = __bnep_get_session(req->dst); ++ if (s) { ++ /* Wakeup user-space which is polling for socket errors. ++ * This is temporary hack untill we have shutdown in L2CAP */ ++ s->sock->sk->err = EUNATCH; ++ ++ /* Kill session thread */ ++ atomic_inc(&s->killed); ++ wake_up_interruptible(s->sock->sk->sleep); ++ } else ++ err = -ENOENT; ++ ++ up_read(&bnep_session_sem); ++ return err; ++} ++ ++static void __bnep_copy_ci(struct bnep_conninfo *ci, struct bnep_session *s) ++{ ++ memcpy(ci->dst, s->eh.h_source, ETH_ALEN); ++ strcpy(ci->device, s->dev.name); ++ ci->flags = s->flags; ++ ci->state = s->state; ++ ci->role = s->role; ++} ++ ++int bnep_get_connlist(struct bnep_connlist_req *req) ++{ ++ struct list_head *p; ++ int err = 0, n = 0; ++ ++ down_read(&bnep_session_sem); ++ ++ list_for_each(p, &bnep_session_list) { ++ struct bnep_session *s; ++ struct bnep_conninfo ci; ++ ++ s = list_entry(p, struct bnep_session, list); ++ ++ __bnep_copy_ci(&ci, s); ++ ++ if (copy_to_user(req->ci, &ci, sizeof(ci))) { ++ err = -EFAULT; ++ break; ++ } ++ ++ if (++n >= req->cnum) ++ break; ++ ++ req->ci++; ++ } ++ req->cnum = n; ++ ++ up_read(&bnep_session_sem); ++ return err; ++} ++ ++int bnep_get_conninfo(struct bnep_conninfo *ci) ++{ ++ struct bnep_session *s; ++ int err = 0; ++ ++ down_read(&bnep_session_sem); ++ ++ s = __bnep_get_session(ci->dst); ++ if (s) ++ __bnep_copy_ci(ci, s); ++ else ++ err = -ENOENT; ++ ++ up_read(&bnep_session_sem); ++ return err; ++} ++ ++static int __init bnep_init_module(void) ++{ ++ l2cap_load(); ++ ++ bnep_crc32_init(); ++ bnep_sock_init(); ++ ++ BT_INFO("BlueZ BNEP ver %s", VERSION); ++ BT_INFO("Copyright (C) 2001,2002 Inventel Systemes"); ++ BT_INFO("Written 2001,2002 by Clement Moreau <clement.moreau@inventel.fr>"); ++ BT_INFO("Written 2001,2002 by David Libault <david.libault@inventel.fr>"); ++ BT_INFO("Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com>"); ++ ++ return 0; ++} ++ ++static void __exit bnep_cleanup_module(void) ++{ ++ bnep_sock_cleanup(); ++ bnep_crc32_cleanup(); ++} ++ ++module_init(bnep_init_module); ++module_exit(bnep_cleanup_module); ++ ++MODULE_DESCRIPTION("BlueZ BNEP ver " VERSION); ++MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyanskiy <maxk@qualcomm.com>"); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.c linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c +--- linux-2.4.18/net/bluetooth/bnep/crc32.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,59 @@ ++/* ++ * Based on linux-2.5/lib/crc32 by Matt Domsch <Matt_Domsch@dell.com> ++ * ++ * FIXME: Remove in 2.5 ++ */ ++ ++#include <linux/kernel.h> ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/slab.h> ++#include <linux/init.h> ++#include <asm/atomic.h> ++ ++#include "crc32.h" ++ ++#define CRCPOLY_BE 0x04c11db7 ++#define CRC_BE_BITS 8 ++ ++static u32 *bnep_crc32_table; ++ ++/* ++ * This code is in the public domain; copyright abandoned. ++ * Liability for non-performance of this code is limited to the amount ++ * you paid for it. Since it is distributed for free, your refund will ++ * be very very small. If it breaks, you get to keep both pieces. ++ */ ++u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len) ++{ ++ while (len--) ++ crc = (crc << 8) ^ bnep_crc32_table[(crc >> 24) ^ *p++]; ++ ++ return crc; ++} ++ ++int __init bnep_crc32_init(void) ++{ ++ unsigned i, j; ++ u32 crc = 0x80000000; ++ ++ bnep_crc32_table = kmalloc((1 << CRC_BE_BITS) * sizeof(u32), GFP_KERNEL); ++ if (!bnep_crc32_table) ++ return -ENOMEM; ++ ++ bnep_crc32_table[0] = 0; ++ ++ for (i = 1; i < 1 << CRC_BE_BITS; i <<= 1) { ++ crc = (crc << 1) ^ ((crc & 0x80000000) ? CRCPOLY_BE : 0); ++ for (j = 0; j < i; j++) ++ bnep_crc32_table[i + j] = crc ^ bnep_crc32_table[j]; ++ } ++ return 0; ++} ++ ++void __exit bnep_crc32_cleanup(void) ++{ ++ if (bnep_crc32_table) ++ kfree(bnep_crc32_table); ++ bnep_crc32_table = NULL; ++} +diff -urN linux-2.4.18/net/bluetooth/bnep/crc32.h linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h +--- linux-2.4.18/net/bluetooth/bnep/crc32.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/crc32.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,10 @@ ++/* ++ * crc32.h ++ * See crc32.c for license and changes ++ * ++ * FIXME: Remove in 2.5 ++ */ ++ ++int bnep_crc32_init(void); ++void bnep_crc32_cleanup(void); ++u32 bnep_crc32(u32 crc, unsigned char const *p, size_t len); +diff -urN linux-2.4.18/net/bluetooth/bnep/Makefile linux-2.4.18-mh15/net/bluetooth/bnep/Makefile +--- linux-2.4.18/net/bluetooth/bnep/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,10 @@ ++# ++# Makefile for the Linux Bluetooth BNEP layer ++# ++ ++O_TARGET := bnep.o ++ ++obj-y := core.o sock.o netdev.o crc32.o ++obj-m += $(O_TARGET) ++ ++include $(TOPDIR)/Rules.make +diff -urN linux-2.4.18/net/bluetooth/bnep/netdev.c linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c +--- linux-2.4.18/net/bluetooth/bnep/netdev.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/netdev.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,254 @@ ++/* ++ BNEP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2001-2002 Inventel Systemes ++ Written 2001-2002 by ++ Clément Moreau <clement.moreau@inventel.fr> ++ David Libault <david.libault@inventel.fr> ++ ++ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: netdev.c,v 1.7 2002/07/14 05:39:26 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/socket.h> ++#include <linux/netdevice.h> ++#include <linux/etherdevice.h> ++#include <linux/skbuff.h> ++#include <linux/wait.h> ++ ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include <net/bluetooth/l2cap.h> ++ ++#include "bnep.h" ++ ++#ifndef CONFIG_BLUEZ_BNEP_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++#define BNEP_TX_QUEUE_LEN 20 ++ ++static int bnep_net_open(struct net_device *dev) ++{ ++ netif_start_queue(dev); ++ return 0; ++} ++ ++static int bnep_net_close(struct net_device *dev) ++{ ++ netif_stop_queue(dev); ++ return 0; ++} ++ ++static struct net_device_stats *bnep_net_get_stats(struct net_device *dev) ++{ ++ struct bnep_session *s = dev->priv; ++ return &s->stats; ++} ++ ++static void bnep_net_set_mc_list(struct net_device *dev) ++{ ++#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER ++ struct bnep_session *s = dev->priv; ++ struct sock *sk = s->sock->sk; ++ struct bnep_set_filter_req *r; ++ struct sk_buff *skb; ++ int size; ++ ++ BT_DBG("%s mc_count %d", dev->name, dev->mc_count); ++ ++ size = sizeof(*r) + (BNEP_MAX_MULTICAST_FILTERS + 1) * ETH_ALEN * 2; ++ skb = alloc_skb(size, GFP_ATOMIC); ++ if (!skb) { ++ BT_ERR("%s Multicast list allocation failed", dev->name); ++ return; ++ } ++ ++ r = (void *) skb->data; ++ __skb_put(skb, sizeof(*r)); ++ ++ r->type = BNEP_CONTROL; ++ r->ctrl = BNEP_FILTER_MULTI_ADDR_SET; ++ ++ if (dev->flags & (IFF_PROMISC | IFF_ALLMULTI)) { ++ u8 start[ETH_ALEN] = { 0x01 }; ++ ++ /* Request all addresses */ ++ memcpy(__skb_put(skb, ETH_ALEN), start, ETH_ALEN); ++ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN); ++ r->len = htons(ETH_ALEN * 2); ++ } else { ++ struct dev_mc_list *dmi = dev->mc_list; ++ int i, len = skb->len; ++ ++ if (dev->flags & IFF_BROADCAST) { ++ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN); ++ memcpy(__skb_put(skb, ETH_ALEN), dev->broadcast, ETH_ALEN); ++ } ++ ++ /* FIXME: We should group addresses here. */ ++ ++ for (i = 0; i < dev->mc_count && i < BNEP_MAX_MULTICAST_FILTERS; i++) { ++ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN); ++ memcpy(__skb_put(skb, ETH_ALEN), dmi->dmi_addr, ETH_ALEN); ++ dmi = dmi->next; ++ } ++ r->len = htons(skb->len - len); ++ } ++ ++ skb_queue_tail(&sk->write_queue, skb); ++ wake_up_interruptible(sk->sleep); ++#endif ++} ++ ++static int bnep_net_set_mac_addr(struct net_device *dev, void *arg) ++{ ++ BT_DBG("%s", dev->name); ++ return 0; ++} ++ ++static void bnep_net_timeout(struct net_device *dev) ++{ ++ BT_DBG("net_timeout"); ++ netif_wake_queue(dev); ++} ++ ++static int bnep_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) ++{ ++ return -EINVAL; ++} ++ ++#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER ++static inline int bnep_net_mc_filter(struct sk_buff *skb, struct bnep_session *s) ++{ ++ struct ethhdr *eh = (void *) skb->data; ++ ++ if ((eh->h_dest[0] & 1) && !test_bit(bnep_mc_hash(eh->h_dest), &s->mc_filter)) { ++ BT_DBG("BNEP: filtered skb %p, dst %.2x:%.2x:%.2x:%.2x:%.2x:%.2x", skb, ++ eh->h_dest[0], eh->h_dest[1], eh->h_dest[2], ++ eh->h_dest[3], eh->h_dest[4], eh->h_dest[5]); ++ return 1; ++ } ++ return 0; ++} ++#endif ++ ++#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER ++/* Determine ether protocol. Based on eth_type_trans. */ ++static inline u16 bnep_net_eth_proto(struct sk_buff *skb) ++{ ++ struct ethhdr *eh = (void *) skb->data; ++ ++ if (ntohs(eh->h_proto) >= 1536) ++ return eh->h_proto; ++ ++ if (get_unaligned((u16 *) skb->data) == 0xFFFF) ++ return htons(ETH_P_802_3); ++ ++ return htons(ETH_P_802_2); ++} ++ ++static inline int bnep_net_proto_filter(struct sk_buff *skb, struct bnep_session *s) ++{ ++ u16 proto = bnep_net_eth_proto(skb); ++ struct bnep_proto_filter *f = s->proto_filter; ++ int i; ++ ++ for (i = 0; i < BNEP_MAX_PROTO_FILTERS && f[i].end; i++) { ++ if (proto >= f[i].start && proto <= f[i].end) ++ return 0; ++ } ++ ++ BT_DBG("BNEP: filtered skb %p, proto 0x%.4x", skb, proto); ++ return 1; ++} ++#endif ++ ++static int bnep_net_xmit(struct sk_buff *skb, struct net_device *dev) ++{ ++ struct bnep_session *s = dev->priv; ++ struct sock *sk = s->sock->sk; ++ ++ BT_DBG("skb %p, dev %p", skb, dev); ++ ++#ifdef CONFIG_BLUEZ_BNEP_MC_FILTER ++ if (bnep_net_mc_filter(skb, s)) { ++ kfree_skb(skb); ++ return 0; ++ } ++#endif ++ ++#ifdef CONFIG_BLUEZ_BNEP_PROTO_FILTER ++ if (bnep_net_proto_filter(skb, s)) { ++ kfree_skb(skb); ++ return 0; ++ } ++#endif ++ ++ /* ++ * We cannot send L2CAP packets from here as we are potentially in a bh. ++ * So we have to queue them and wake up session thread which is sleeping ++ * on the sk->sleep. ++ */ ++ dev->trans_start = jiffies; ++ skb_queue_tail(&sk->write_queue, skb); ++ wake_up_interruptible(sk->sleep); ++ ++ if (skb_queue_len(&sk->write_queue) >= BNEP_TX_QUEUE_LEN) { ++ BT_DBG("tx queue is full"); ++ ++ /* Stop queuing. ++ * Session thread will do netif_wake_queue() */ ++ netif_stop_queue(dev); ++ } ++ ++ return 0; ++} ++ ++int bnep_net_init(struct net_device *dev) ++{ ++ struct bnep_session *s = dev->priv; ++ ++ memcpy(dev->dev_addr, s->eh.h_dest, ETH_ALEN); ++ dev->addr_len = ETH_ALEN; ++ ++ ether_setup(dev); ++ ++ dev->open = bnep_net_open; ++ dev->stop = bnep_net_close; ++ dev->hard_start_xmit = bnep_net_xmit; ++ dev->get_stats = bnep_net_get_stats; ++ dev->do_ioctl = bnep_net_ioctl; ++ dev->set_mac_address = bnep_net_set_mac_addr; ++ dev->set_multicast_list = bnep_net_set_mc_list; ++ ++ dev->watchdog_timeo = HZ * 2; ++ dev->tx_timeout = bnep_net_timeout; ++ ++ return 0; ++} +diff -urN linux-2.4.18/net/bluetooth/bnep/sock.c linux-2.4.18-mh15/net/bluetooth/bnep/sock.c +--- linux-2.4.18/net/bluetooth/bnep/sock.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/bnep/sock.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,210 @@ ++/* ++ BNEP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2001-2002 Inventel Systemes ++ Written 2001-2002 by ++ David Libault <david.libault@inventel.fr> ++ ++ Copyright (C) 2002 Maxim Krasnyanskiy <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * $Id: sock.c,v 1.3 2002/07/10 22:59:52 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++ ++#include "bnep.h" ++ ++#ifndef CONFIG_BLUEZ_BNEP_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++static int bnep_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p sk %p", sock, sk); ++ ++ if (!sk) ++ return 0; ++ ++ sock_orphan(sk); ++ sock_put(sk); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static int bnep_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++{ ++ struct bnep_connlist_req cl; ++ struct bnep_connadd_req ca; ++ struct bnep_conndel_req cd; ++ struct bnep_conninfo ci; ++ struct socket *nsock; ++ int err; ++ ++ BT_DBG("cmd %x arg %lx", cmd, arg); ++ ++ switch (cmd) { ++ case BNEPCONNADD: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&ca, (void *) arg, sizeof(ca))) ++ return -EFAULT; ++ ++ nsock = sockfd_lookup(ca.sock, &err); ++ if (!nsock) ++ return err; ++ ++ if (nsock->sk->state != BT_CONNECTED) { ++ fput(nsock->file); ++ return -EBADFD; ++ } ++ ++ err = bnep_add_connection(&ca, nsock); ++ if (!err) { ++ if (copy_to_user((void *) arg, &ca, sizeof(ca))) ++ err = -EFAULT; ++ } else ++ fput(nsock->file); ++ ++ return err; ++ ++ case BNEPCONNDEL: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&cd, (void *) arg, sizeof(cd))) ++ return -EFAULT; ++ ++ return bnep_del_connection(&cd); ++ ++ case BNEPGETCONNLIST: ++ if (copy_from_user(&cl, (void *) arg, sizeof(cl))) ++ return -EFAULT; ++ ++ if (cl.cnum <= 0) ++ return -EINVAL; ++ ++ err = bnep_get_connlist(&cl); ++ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl))) ++ return -EFAULT; ++ ++ return err; ++ ++ case BNEPGETCONNINFO: ++ if (copy_from_user(&ci, (void *) arg, sizeof(ci))) ++ return -EFAULT; ++ ++ err = bnep_get_conninfo(&ci); ++ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci))) ++ return -EFAULT; ++ ++ return err; ++ ++ default: ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++static struct proto_ops bnep_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: bnep_sock_release, ++ ioctl: bnep_sock_ioctl, ++ bind: sock_no_bind, ++ getname: sock_no_getname, ++ sendmsg: sock_no_sendmsg, ++ recvmsg: sock_no_recvmsg, ++ poll: sock_no_poll, ++ listen: sock_no_listen, ++ shutdown: sock_no_shutdown, ++ setsockopt: sock_no_setsockopt, ++ getsockopt: sock_no_getsockopt, ++ connect: sock_no_connect, ++ socketpair: sock_no_socketpair, ++ accept: sock_no_accept, ++ mmap: sock_no_mmap ++}; ++ ++static int bnep_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ if (sock->type != SOCK_RAW) ++ return -ESOCKTNOSUPPORT; ++ ++ sock->ops = &bnep_sock_ops; ++ ++ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1))) ++ return -ENOMEM; ++ ++ MOD_INC_USE_COUNT; ++ ++ sock->state = SS_UNCONNECTED; ++ sock_init_data(sock, sk); ++ ++ sk->destruct = NULL; ++ sk->protocol = protocol; ++ ++ return 0; ++} ++ ++static struct net_proto_family bnep_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: bnep_sock_create ++}; ++ ++int bnep_sock_init(void) ++{ ++ bluez_sock_register(BTPROTO_BNEP, &bnep_sock_family_ops); ++ return 0; ++} ++ ++int bnep_sock_cleanup(void) ++{ ++ if (bluez_sock_unregister(BTPROTO_BNEP)) ++ BT_ERR("Can't unregister BNEP socket"); ++ return 0; ++} +diff -urN linux-2.4.18/net/bluetooth/cmtp/capi.c linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c +--- linux-2.4.18/net/bluetooth/cmtp/capi.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/capi.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,707 @@ ++/* ++ CMTP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <net/sock.h> ++ ++#include <linux/capi.h> ++ ++#include "../drivers/isdn/avmb1/capilli.h" ++#include "../drivers/isdn/avmb1/capicmd.h" ++#include "../drivers/isdn/avmb1/capiutil.h" ++ ++#include "cmtp.h" ++ ++#ifndef CONFIG_BLUEZ_CMTP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define REVISION "1.0" ++ ++#define CAPI_INTEROPERABILITY 0x20 ++ ++#define CAPI_INTEROPERABILITY_REQ CAPICMD(CAPI_INTEROPERABILITY, CAPI_REQ) ++#define CAPI_INTEROPERABILITY_CONF CAPICMD(CAPI_INTEROPERABILITY, CAPI_CONF) ++#define CAPI_INTEROPERABILITY_IND CAPICMD(CAPI_INTEROPERABILITY, CAPI_IND) ++#define CAPI_INTEROPERABILITY_RESP CAPICMD(CAPI_INTEROPERABILITY, CAPI_RESP) ++ ++#define CAPI_INTEROPERABILITY_REQ_LEN (CAPI_MSG_BASELEN + 2) ++#define CAPI_INTEROPERABILITY_CONF_LEN (CAPI_MSG_BASELEN + 4) ++#define CAPI_INTEROPERABILITY_IND_LEN (CAPI_MSG_BASELEN + 2) ++#define CAPI_INTEROPERABILITY_RESP_LEN (CAPI_MSG_BASELEN + 2) ++ ++#define CAPI_FUNCTION_REGISTER 0 ++#define CAPI_FUNCTION_RELEASE 1 ++#define CAPI_FUNCTION_GET_PROFILE 2 ++#define CAPI_FUNCTION_GET_MANUFACTURER 3 ++#define CAPI_FUNCTION_GET_VERSION 4 ++#define CAPI_FUNCTION_GET_SERIAL_NUMBER 5 ++#define CAPI_FUNCTION_MANUFACTURER 6 ++#define CAPI_FUNCTION_LOOPBACK 7 ++ ++static struct capi_driver_interface *di; ++ ++ ++#define CMTP_MSGNUM 1 ++#define CMTP_APPLID 2 ++#define CMTP_MAPPING 3 ++ ++static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl) ++{ ++ struct cmtp_application *app = kmalloc(sizeof(*app), GFP_KERNEL); ++ ++ BT_DBG("session %p application %p appl %d", session, app, appl); ++ ++ if (!app) ++ return NULL; ++ ++ memset(app, 0, sizeof(*app)); ++ ++ app->state = BT_OPEN; ++ app->appl = appl; ++ ++ list_add_tail(&app->list, &session->applications); ++ ++ return app; ++} ++ ++static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app) ++{ ++ BT_DBG("session %p application %p", session, app); ++ ++ if (app) { ++ list_del(&app->list); ++ kfree(app); ++ } ++} ++ ++static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value) ++{ ++ struct cmtp_application *app; ++ struct list_head *p, *n; ++ ++ list_for_each_safe(p, n, &session->applications) { ++ app = list_entry(p, struct cmtp_application, list); ++ switch (pattern) { ++ case CMTP_MSGNUM: ++ if (app->msgnum == value) ++ return app; ++ break; ++ case CMTP_APPLID: ++ if (app->appl == value) ++ return app; ++ break; ++ case CMTP_MAPPING: ++ if (app->mapping == value) ++ return app; ++ break; ++ } ++ } ++ ++ return NULL; ++} ++ ++static int cmtp_msgnum_get(struct cmtp_session *session) ++{ ++ session->msgnum++; ++ ++ if ((session->msgnum & 0xff) > 200) ++ session->msgnum = CMTP_INITIAL_MSGNUM + 1; ++ ++ return session->msgnum; ++} ++ ++ ++static void cmtp_send_interopmsg(struct cmtp_session *session, ++ __u8 subcmd, __u16 appl, __u16 msgnum, ++ __u16 function, unsigned char *buf, int len) ++{ ++ struct sk_buff *skb; ++ unsigned char *s; ++ ++ BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum); ++ ++ if (!(skb = alloc_skb(CAPI_MSG_BASELEN + 6 + len, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for interoperability packet"); ++ return; ++ } ++ ++ s = skb_put(skb, CAPI_MSG_BASELEN + 6 + len); ++ ++ capimsg_setu16(s, 0, CAPI_MSG_BASELEN + 6 + len); ++ capimsg_setu16(s, 2, appl); ++ capimsg_setu8 (s, 4, CAPI_INTEROPERABILITY); ++ capimsg_setu8 (s, 5, subcmd); ++ capimsg_setu16(s, 6, msgnum); ++ ++ /* Interoperability selector (Bluetooth Device Management) */ ++ capimsg_setu16(s, 8, 0x0001); ++ ++ capimsg_setu8 (s, 10, 3 + len); ++ capimsg_setu16(s, 11, function); ++ capimsg_setu8 (s, 13, len); ++ ++ if (len > 0) ++ memcpy(s + 14, buf, len); ++ ++ cmtp_send_capimsg(session, skb); ++} ++ ++static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb) ++{ ++ struct capi_ctr *ctrl = session->ctrl; ++ struct cmtp_application *application; ++ __u16 appl, msgnum, func, info; ++ __u32 controller; ++ ++ BT_DBG("session %p skb %p len %d", session, skb, skb->len); ++ ++ switch (CAPIMSG_SUBCOMMAND(skb->data)) { ++ case CAPI_CONF: ++ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 5); ++ info = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 8); ++ ++ switch (func) { ++ case CAPI_FUNCTION_REGISTER: ++ msgnum = CAPIMSG_MSGID(skb->data); ++ ++ application = cmtp_application_get(session, CMTP_MSGNUM, msgnum); ++ if (application) { ++ application->state = BT_CONNECTED; ++ application->msgnum = 0; ++ application->mapping = CAPIMSG_APPID(skb->data); ++ wake_up_interruptible(&session->wait); ++ } ++ ++ break; ++ ++ case CAPI_FUNCTION_RELEASE: ++ appl = CAPIMSG_APPID(skb->data); ++ ++ application = cmtp_application_get(session, CMTP_MAPPING, appl); ++ if (application) { ++ application->state = BT_CLOSED; ++ application->msgnum = 0; ++ wake_up_interruptible(&session->wait); ++ } ++ ++ break; ++ ++ case CAPI_FUNCTION_GET_PROFILE: ++ controller = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 11); ++ msgnum = CAPIMSG_MSGID(skb->data); ++ ++ if (!info && (msgnum == CMTP_INITIAL_MSGNUM)) { ++ session->ncontroller = controller; ++ wake_up_interruptible(&session->wait); ++ break; ++ } ++ ++ if (!info && ctrl) { ++ memcpy(&ctrl->profile, ++ skb->data + CAPI_MSG_BASELEN + 11, ++ sizeof(capi_profile)); ++ session->state = BT_CONNECTED; ++ ctrl->ready(ctrl); ++ } ++ ++ break; ++ ++ case CAPI_FUNCTION_GET_MANUFACTURER: ++ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 10); ++ ++ if (!info && ctrl) { ++ strncpy(ctrl->manu, ++ skb->data + CAPI_MSG_BASELEN + 15, ++ skb->data[CAPI_MSG_BASELEN + 14]); ++ } ++ ++ break; ++ ++ case CAPI_FUNCTION_GET_VERSION: ++ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); ++ ++ if (!info && ctrl) { ++ ctrl->version.majorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 16); ++ ctrl->version.minorversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 20); ++ ctrl->version.majormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 24); ++ ctrl->version.minormanuversion = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 28); ++ } ++ ++ break; ++ ++ case CAPI_FUNCTION_GET_SERIAL_NUMBER: ++ controller = CAPIMSG_U32(skb->data, CAPI_MSG_BASELEN + 12); ++ ++ if (!info && ctrl) { ++ memset(ctrl->serial, 0, CAPI_SERIAL_LEN); ++ strncpy(ctrl->serial, ++ skb->data + CAPI_MSG_BASELEN + 17, ++ skb->data[CAPI_MSG_BASELEN + 16]); ++ } ++ ++ break; ++ } ++ ++ break; ++ ++ case CAPI_IND: ++ func = CAPIMSG_U16(skb->data, CAPI_MSG_BASELEN + 3); ++ ++ if (func == CAPI_FUNCTION_LOOPBACK) { ++ appl = CAPIMSG_APPID(skb->data); ++ msgnum = CAPIMSG_MSGID(skb->data); ++ cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, ++ skb->data + CAPI_MSG_BASELEN + 6, ++ skb->data[CAPI_MSG_BASELEN + 5]); ++ } ++ ++ break; ++ } ++ ++ kfree_skb(skb); ++} ++ ++void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) ++{ ++ struct capi_ctr *ctrl = session->ctrl; ++ struct cmtp_application *application; ++ __u16 cmd, appl, info; ++ __u32 ncci, contr; ++ ++ BT_DBG("session %p skb %p len %d", session, skb, skb->len); ++ ++ if (CAPIMSG_COMMAND(skb->data) == CAPI_INTEROPERABILITY) { ++ cmtp_recv_interopmsg(session, skb); ++ return; ++ } ++ ++ if (session->flags & (1 << CMTP_LOOPBACK)) { ++ kfree_skb(skb); ++ return; ++ } ++ ++ cmd = CAPICMD(CAPIMSG_COMMAND(skb->data), CAPIMSG_SUBCOMMAND(skb->data)); ++ appl = CAPIMSG_APPID(skb->data); ++ contr = CAPIMSG_CONTROL(skb->data); ++ ++ application = cmtp_application_get(session, CMTP_MAPPING, appl); ++ if (application) { ++ appl = application->appl; ++ CAPIMSG_SETAPPID(skb->data, appl); ++ } else { ++ BT_ERR("Can't find application with id %d", appl); ++ kfree_skb(skb); ++ return; ++ } ++ ++ if ((contr & 0x7f) == 0x01) { ++ contr = (contr & 0xffffff80) | session->num; ++ CAPIMSG_SETCONTROL(skb->data, contr); ++ } ++ ++ if (!ctrl) { ++ BT_ERR("Can't find controller %d for message", session->num); ++ kfree_skb(skb); ++ return; ++ } ++ ++ switch (cmd) { ++ case CAPI_CONNECT_B3_CONF: ++ ncci = CAPIMSG_NCCI(skb->data); ++ info = CAPIMSG_U16(skb->data, 12); ++ ++ BT_DBG("CONNECT_B3_CONF ncci 0x%02x info 0x%02x", ncci, info); ++ ++ if (info == 0) ++ ctrl->new_ncci(ctrl, appl, ncci, 8); ++ ++ ctrl->handle_capimsg(ctrl, appl, skb); ++ break; ++ ++ case CAPI_CONNECT_B3_IND: ++ ncci = CAPIMSG_NCCI(skb->data); ++ ++ BT_DBG("CONNECT_B3_IND ncci 0x%02x", ncci); ++ ++ ctrl->new_ncci(ctrl, appl, ncci, 8); ++ ctrl->handle_capimsg(ctrl, appl, skb); ++ break; ++ ++ case CAPI_DISCONNECT_B3_IND: ++ ncci = CAPIMSG_NCCI(skb->data); ++ ++ BT_DBG("DISCONNECT_B3_IND ncci 0x%02x", ncci); ++ ++ if (ncci == 0xffffffff) ++ BT_ERR("DISCONNECT_B3_IND with ncci 0xffffffff"); ++ ++ ctrl->handle_capimsg(ctrl, appl, skb); ++ ctrl->free_ncci(ctrl, appl, ncci); ++ break; ++ ++ default: ++ ctrl->handle_capimsg(ctrl, appl, skb); ++ break; ++ } ++} ++ ++void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb) ++{ ++ struct cmtp_scb *scb = (void *) skb->cb; ++ ++ BT_DBG("session %p skb %p len %d", session, skb, skb->len); ++ ++ scb->id = -1; ++ scb->data = (CAPIMSG_COMMAND(skb->data) == CAPI_DATA_B3); ++ ++ skb_queue_tail(&session->transmit, skb); ++ ++ cmtp_schedule(session); ++} ++ ++ ++static int cmtp_load_firmware(struct capi_ctr *ctrl, capiloaddata *data) ++{ ++ BT_DBG("ctrl %p data %p", ctrl, data); ++ ++ return -EIO; ++} ++ ++static void cmtp_reset_ctr(struct capi_ctr *ctrl) ++{ ++ BT_DBG("ctrl %p", ctrl); ++ ++ ctrl->reseted(ctrl); ++} ++ ++static void cmtp_remove_ctr(struct capi_ctr *ctrl) ++{ ++ struct cmtp_session *session = ctrl->driverdata; ++ ++ BT_DBG("ctrl %p", ctrl); ++ ++ ctrl->suspend_output(ctrl); ++ ++ atomic_inc(&session->terminate); ++ cmtp_schedule(session); ++} ++ ++static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_params *rp) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct cmtp_session *session = ctrl->driverdata; ++ struct cmtp_application *application; ++ unsigned long timeo = CMTP_INTEROP_TIMEOUT; ++ unsigned char buf[8]; ++ int err = 0, nconn, want = rp->level3cnt; ++ ++ BT_DBG("ctrl %p appl %d level3cnt %d datablkcnt %d datablklen %d", ++ ctrl, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen); ++ ++ application = cmtp_application_add(session, appl); ++ if (!application) { ++ BT_ERR("Can't allocate memory for new application"); ++ ctrl->appl_released(ctrl, appl); ++ return; ++ } ++ ++ if (want < 0) ++ nconn = ctrl->profile.nbchannel * -want; ++ else ++ nconn = want; ++ ++ if (nconn == 0) ++ nconn = ctrl->profile.nbchannel; ++ ++ capimsg_setu16(buf, 0, nconn); ++ capimsg_setu16(buf, 2, rp->datablkcnt); ++ capimsg_setu16(buf, 4, rp->datablklen); ++ ++ application->state = BT_CONFIG; ++ application->msgnum = cmtp_msgnum_get(session); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum, ++ CAPI_FUNCTION_REGISTER, buf, 6); ++ ++ add_wait_queue(&session->wait, &wait); ++ while (1) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (!timeo) { ++ err = -EAGAIN; ++ break; ++ } ++ ++ if (application->state == BT_CLOSED) { ++ err = -application->err; ++ break; ++ } ++ ++ if (application->state == BT_CONNECTED) ++ break; ++ ++ if (signal_pending(current)) { ++ err = -EINTR; ++ break; ++ } ++ ++ timeo = schedule_timeout(timeo); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&session->wait, &wait); ++ ++ if (err) { ++ ctrl->appl_released(ctrl, appl); ++ cmtp_application_del(session, application); ++ return; ++ } ++ ++ ctrl->appl_registered(ctrl, appl); ++} ++ ++static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct cmtp_session *session = ctrl->driverdata; ++ struct cmtp_application *application; ++ unsigned long timeo = CMTP_INTEROP_TIMEOUT; ++ ++ BT_DBG("ctrl %p appl %d", ctrl, appl); ++ ++ application = cmtp_application_get(session, CMTP_APPLID, appl); ++ if (!application) { ++ BT_ERR("Can't find application"); ++ return; ++ } ++ ++ application->msgnum = cmtp_msgnum_get(session); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, ++ CAPI_FUNCTION_RELEASE, NULL, 0); ++ ++ add_wait_queue(&session->wait, &wait); ++ while (timeo) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (application->state == BT_CLOSED) ++ break; ++ ++ if (signal_pending(current)) ++ break; ++ ++ timeo = schedule_timeout(timeo); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&session->wait, &wait); ++ ++ cmtp_application_del(session, application); ++ ctrl->appl_released(ctrl, appl); ++} ++ ++static void cmtp_send_message(struct capi_ctr *ctrl, struct sk_buff *skb) ++{ ++ struct cmtp_session *session = ctrl->driverdata; ++ struct cmtp_application *application; ++ __u16 appl; ++ __u32 contr; ++ ++ BT_DBG("ctrl %p skb %p", ctrl, skb); ++ ++ appl = CAPIMSG_APPID(skb->data); ++ contr = CAPIMSG_CONTROL(skb->data); ++ ++ application = cmtp_application_get(session, CMTP_APPLID, appl); ++ if ((!application) || (application->state != BT_CONNECTED)) { ++ BT_ERR("Can't find application with id %d", appl); ++ kfree_skb(skb); ++ return; ++ } ++ ++ CAPIMSG_SETAPPID(skb->data, application->mapping); ++ ++ if ((contr & 0x7f) == session->num) { ++ contr = (contr & 0xffffff80) | 0x01; ++ CAPIMSG_SETCONTROL(skb->data, contr); ++ } ++ ++ cmtp_send_capimsg(session, skb); ++} ++ ++static char *cmtp_procinfo(struct capi_ctr *ctrl) ++{ ++ return "CAPI Message Transport Protocol"; ++} ++ ++static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, int *eof, struct capi_ctr *ctrl) ++{ ++ struct cmtp_session *session = ctrl->driverdata; ++ struct cmtp_application *app; ++ struct list_head *p, *n; ++ int len = 0; ++ ++ len += sprintf(page + len, "%s (Revision %s)\n\n", cmtp_procinfo(ctrl), REVISION); ++ len += sprintf(page + len, "addr %s\n", session->name); ++ len += sprintf(page + len, "ctrl %d\n", session->num); ++ ++ list_for_each_safe(p, n, &session->applications) { ++ app = list_entry(p, struct cmtp_application, list); ++ len += sprintf(page + len, "appl %d -> %d\n", app->appl, app->mapping); ++ } ++ ++ if (off + count >= len) ++ *eof = 1; ++ ++ if (len < off) ++ return 0; ++ ++ *start = page + off; ++ ++ return ((count < len - off) ? count : len - off); ++} ++ ++static struct capi_driver cmtp_driver = { ++ name: "cmtp", ++ revision: REVISION, ++ load_firmware: cmtp_load_firmware, ++ reset_ctr: cmtp_reset_ctr, ++ remove_ctr: cmtp_remove_ctr, ++ register_appl: cmtp_register_appl, ++ release_appl: cmtp_release_appl, ++ send_message: cmtp_send_message, ++ procinfo: cmtp_procinfo, ++ ctr_read_proc: cmtp_ctr_read_proc, ++ ++ driver_read_proc: 0, ++ add_card: 0, ++}; ++ ++ ++int cmtp_attach_device(struct cmtp_session *session) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ unsigned long timeo = CMTP_INTEROP_TIMEOUT; ++ unsigned char buf[4]; ++ ++ BT_DBG("session %p", session); ++ ++ capimsg_setu32(buf, 0, 0); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, ++ CAPI_FUNCTION_GET_PROFILE, buf, 4); ++ ++ add_wait_queue(&session->wait, &wait); ++ while (timeo) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (session->ncontroller) ++ break; ++ ++ if (signal_pending(current)) ++ break; ++ ++ timeo = schedule_timeout(timeo); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&session->wait, &wait); ++ ++ BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); ++ ++ if (!timeo) ++ return -ETIMEDOUT; ++ ++ if (!session->ncontroller) ++ return -ENODEV; ++ ++ ++ if (session->ncontroller > 1) ++ BT_INFO("Setting up only CAPI controller 1"); ++ ++ if (!(session->ctrl = di->attach_ctr(&cmtp_driver, session->name, session))) { ++ BT_ERR("Can't attach new controller"); ++ return -EBUSY; ++ } ++ ++ session->num = session->ctrl->cnr; ++ ++ BT_DBG("session %p ctrl %p num %d", session, session->ctrl, session->num); ++ ++ capimsg_setu32(buf, 0, 1); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), ++ CAPI_FUNCTION_GET_MANUFACTURER, buf, 4); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), ++ CAPI_FUNCTION_GET_VERSION, buf, 4); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), ++ CAPI_FUNCTION_GET_SERIAL_NUMBER, buf, 4); ++ ++ cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), ++ CAPI_FUNCTION_GET_PROFILE, buf, 4); ++ ++ return 0; ++} ++ ++void cmtp_detach_device(struct cmtp_session *session) ++{ ++ struct capi_ctr *ctrl = session->ctrl; ++ ++ BT_DBG("session %p ctrl %p", session, ctrl); ++ ++ if (!ctrl) ++ return; ++ ++ ctrl->reseted(ctrl); ++ ++ di->detach_ctr(ctrl); ++} ++ ++int cmtp_init_capi(void) ++{ ++ if (!(di = attach_capi_driver(&cmtp_driver))) { ++ BT_ERR("Can't attach CAPI driver"); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++void cmtp_cleanup_capi(void) ++{ ++ detach_capi_driver(&cmtp_driver); ++} +diff -urN linux-2.4.18/net/bluetooth/cmtp/cmtp.h linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h +--- linux-2.4.18/net/bluetooth/cmtp/cmtp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/cmtp.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,138 @@ ++/* ++ CMTP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#ifndef __CMTP_H ++#define __CMTP_H ++ ++#include <linux/types.h> ++#include <net/bluetooth/bluetooth.h> ++ ++#define BTNAMSIZ 18 ++ ++/* CMTP ioctl defines */ ++#define CMTPCONNADD _IOW('C', 200, int) ++#define CMTPCONNDEL _IOW('C', 201, int) ++#define CMTPGETCONNLIST _IOR('C', 210, int) ++#define CMTPGETCONNINFO _IOR('C', 211, int) ++ ++#define CMTP_LOOPBACK 0 ++ ++struct cmtp_connadd_req { ++ int sock; // Connected socket ++ __u32 flags; ++}; ++ ++struct cmtp_conndel_req { ++ bdaddr_t bdaddr; ++ __u32 flags; ++}; ++ ++struct cmtp_conninfo { ++ bdaddr_t bdaddr; ++ __u32 flags; ++ __u16 state; ++ int num; ++}; ++ ++struct cmtp_connlist_req { ++ __u32 cnum; ++ struct cmtp_conninfo *ci; ++}; ++ ++int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock); ++int cmtp_del_connection(struct cmtp_conndel_req *req); ++int cmtp_get_connlist(struct cmtp_connlist_req *req); ++int cmtp_get_conninfo(struct cmtp_conninfo *ci); ++ ++/* CMTP session defines */ ++#define CMTP_INTEROP_TIMEOUT (HZ * 5) ++#define CMTP_INITIAL_MSGNUM 0xff00 ++ ++struct cmtp_session { ++ struct list_head list; ++ ++ struct socket *sock; ++ ++ bdaddr_t bdaddr; ++ ++ unsigned long state; ++ unsigned long flags; ++ ++ uint mtu; ++ ++ char name[BTNAMSIZ]; ++ ++ atomic_t terminate; ++ ++ wait_queue_head_t wait; ++ ++ int ncontroller; ++ int num; ++ struct capi_ctr *ctrl; ++ ++ struct list_head applications; ++ ++ unsigned long blockids; ++ int msgnum; ++ ++ struct sk_buff_head transmit; ++ ++ struct sk_buff *reassembly[16]; ++}; ++ ++struct cmtp_application { ++ struct list_head list; ++ ++ unsigned long state; ++ int err; ++ ++ __u16 appl; ++ __u16 mapping; ++ ++ __u16 msgnum; ++}; ++ ++struct cmtp_scb { ++ int id; ++ int data; ++}; ++ ++int cmtp_attach_device(struct cmtp_session *session); ++void cmtp_detach_device(struct cmtp_session *session); ++ ++void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb); ++void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb); ++ ++static inline void cmtp_schedule(struct cmtp_session *session) ++{ ++ struct sock *sk = session->sock->sk; ++ ++ wake_up_interruptible(sk->sleep); ++} ++ ++/* CMTP init defines */ ++int cmtp_init_capi(void); ++int cmtp_init_sockets(void); ++void cmtp_cleanup_capi(void); ++void cmtp_cleanup_sockets(void); ++ ++#endif /* __CMTP_H */ +diff -urN linux-2.4.18/net/bluetooth/cmtp/Config.in linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in +--- linux-2.4.18/net/bluetooth/cmtp/Config.in 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,7 @@ ++# ++# Bluetooth CMTP layer configuration ++# ++ ++if [ "$CONFIG_ISDN" = "y" -o "$CONFIG_ISDN" = "m" ]; then ++ dep_tristate 'CMTP protocol support' CONFIG_BLUEZ_CMTP $CONFIG_ISDN_CAPI $CONFIG_BLUEZ_L2CAP ++fi +diff -urN linux-2.4.18/net/bluetooth/cmtp/core.c linux-2.4.18-mh15/net/bluetooth/cmtp/core.c +--- linux-2.4.18/net/bluetooth/cmtp/core.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,515 @@ ++/* ++ CMTP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <linux/init.h> ++#include <net/sock.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/l2cap.h> ++ ++#include "cmtp.h" ++ ++#ifndef CONFIG_BLUEZ_CMTP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define VERSION "1.0" ++ ++static DECLARE_RWSEM(cmtp_session_sem); ++static LIST_HEAD(cmtp_session_list); ++ ++static struct cmtp_session *__cmtp_get_session(bdaddr_t *bdaddr) ++{ ++ struct cmtp_session *session; ++ struct list_head *p; ++ ++ BT_DBG(""); ++ ++ list_for_each(p, &cmtp_session_list) { ++ session = list_entry(p, struct cmtp_session, list); ++ if (!bacmp(bdaddr, &session->bdaddr)) ++ return session; ++ } ++ return NULL; ++} ++ ++static void __cmtp_link_session(struct cmtp_session *session) ++{ ++ MOD_INC_USE_COUNT; ++ list_add(&session->list, &cmtp_session_list); ++} ++ ++static void __cmtp_unlink_session(struct cmtp_session *session) ++{ ++ list_del(&session->list); ++ MOD_DEC_USE_COUNT; ++} ++ ++static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) ++{ ++ bacpy(&ci->bdaddr, &session->bdaddr); ++ ++ ci->flags = session->flags; ++ ci->state = session->state; ++ ++ ci->num = session->num; ++} ++ ++ ++static inline int cmtp_alloc_block_id(struct cmtp_session *session) ++{ ++ int i, id = -1; ++ ++ for (i = 0; i < 16; i++) ++ if (!test_and_set_bit(i, &session->blockids)) { ++ id = i; ++ break; ++ } ++ ++ return id; ++} ++ ++static inline void cmtp_free_block_id(struct cmtp_session *session, int id) ++{ ++ clear_bit(id, &session->blockids); ++} ++ ++static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count) ++{ ++ struct sk_buff *skb = session->reassembly[id], *nskb; ++ int size; ++ ++ BT_DBG("session %p buf %p count %d", session, buf, count); ++ ++ size = (skb) ? skb->len + count : count; ++ ++ if (!(nskb = alloc_skb(size, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for CAPI message"); ++ return; ++ } ++ ++ if (skb && (skb->len > 0)) ++ memcpy(skb_put(nskb, skb->len), skb->data, skb->len); ++ ++ memcpy(skb_put(nskb, count), buf, count); ++ ++ session->reassembly[id] = nskb; ++ ++ if (skb) ++ kfree_skb(skb); ++} ++ ++static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb) ++{ ++ __u8 hdr, hdrlen, id; ++ __u16 len; ++ ++ BT_DBG("session %p skb %p len %d", session, skb, skb->len); ++ ++ while (skb->len > 0) { ++ hdr = skb->data[0]; ++ ++ switch (hdr & 0xc0) { ++ case 0x40: ++ hdrlen = 2; ++ len = skb->data[1]; ++ break; ++ case 0x80: ++ hdrlen = 3; ++ len = skb->data[1] | (skb->data[2] << 8); ++ break; ++ default: ++ hdrlen = 1; ++ len = 0; ++ break; ++ } ++ ++ id = (hdr & 0x3c) >> 2; ++ ++ BT_DBG("hdr 0x%02x hdrlen %d len %d id %d", hdr, hdrlen, len, id); ++ ++ if (hdrlen + len > skb->len) { ++ BT_ERR("Wrong size or header information in CMTP frame"); ++ break; ++ } ++ ++ if (len == 0) { ++ skb_pull(skb, hdrlen); ++ continue; ++ } ++ ++ switch (hdr & 0x03) { ++ case 0x00: ++ cmtp_add_msgpart(session, id, skb->data + hdrlen, len); ++ cmtp_recv_capimsg(session, session->reassembly[id]); ++ session->reassembly[id] = NULL; ++ break; ++ case 0x01: ++ cmtp_add_msgpart(session, id, skb->data + hdrlen, len); ++ break; ++ default: ++ if (session->reassembly[id] != NULL) ++ kfree_skb(session->reassembly[id]); ++ session->reassembly[id] = NULL; ++ break; ++ } ++ ++ skb_pull(skb, hdrlen + len); ++ } ++ ++ kfree_skb(skb); ++ return 0; ++} ++ ++static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len) ++{ ++ struct socket *sock = session->sock; ++ struct iovec iv = { data, len }; ++ struct msghdr msg; ++ int err; ++ ++ BT_DBG("session %p data %p len %d", session, data, len); ++ ++ if (!len) ++ return 0; ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.msg_iovlen = 1; ++ msg.msg_iov = &iv; ++ ++ err = sock->ops->sendmsg(sock, &msg, len, 0); ++ return err; ++} ++ ++static int cmtp_process_transmit(struct cmtp_session *session) ++{ ++ struct sk_buff *skb, *nskb; ++ unsigned char *hdr; ++ unsigned int size, tail; ++ ++ BT_DBG("session %p", session); ++ ++ if (!(nskb = alloc_skb(session->mtu, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for new frame"); ++ return -ENOMEM; ++ } ++ ++ while ((skb = skb_dequeue(&session->transmit))) { ++ struct cmtp_scb *scb = (void *) skb->cb; ++ ++ if ((tail = (session->mtu - nskb->len)) < 5) { ++ cmtp_send_frame(session, nskb->data, nskb->len); ++ skb_trim(nskb, 0); ++ tail = session->mtu; ++ } ++ ++ size = min_t(uint, ((tail < 258) ? (tail - 2) : (tail - 3)), skb->len); ++ ++ if ((scb->id < 0) && ((scb->id = cmtp_alloc_block_id(session)) < 0)) { ++ skb_queue_head(&session->transmit, skb); ++ break; ++ } ++ ++ if (size < 256) { ++ hdr = skb_put(nskb, 2); ++ hdr[0] = 0x40 ++ | ((scb->id << 2) & 0x3c) ++ | ((skb->len == size) ? 0x00 : 0x01); ++ hdr[1] = size; ++ } else { ++ hdr = skb_put(nskb, 3); ++ hdr[0] = 0x80 ++ | ((scb->id << 2) & 0x3c) ++ | ((skb->len == size) ? 0x00 : 0x01); ++ hdr[1] = size & 0xff; ++ hdr[2] = size >> 8; ++ } ++ ++ memcpy(skb_put(nskb, size), skb->data, size); ++ skb_pull(skb, size); ++ ++ if (skb->len > 0) { ++ skb_queue_head(&session->transmit, skb); ++ } else { ++ cmtp_free_block_id(session, scb->id); ++ if (scb->data) { ++ cmtp_send_frame(session, nskb->data, nskb->len); ++ skb_trim(nskb, 0); ++ } ++ kfree_skb(skb); ++ } ++ } ++ ++ cmtp_send_frame(session, nskb->data, nskb->len); ++ ++ kfree_skb(nskb); ++ ++ return skb_queue_len(&session->transmit); ++} ++ ++static int cmtp_session(void *arg) ++{ ++ struct cmtp_session *session = arg; ++ struct sock *sk = session->sock->sk; ++ struct sk_buff *skb; ++ wait_queue_t wait; ++ ++ BT_DBG("session %p", session); ++ ++ daemonize(); reparent_to_init(); ++ ++ sprintf(current->comm, "kcmtpd_ctr_%d", session->num); ++ ++ sigfillset(¤t->blocked); ++ flush_signals(current); ++ ++ current->nice = -15; ++ ++ set_fs(KERNEL_DS); ++ ++ init_waitqueue_entry(&wait, current); ++ add_wait_queue(sk->sleep, &wait); ++ while (!atomic_read(&session->terminate)) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (sk->state != BT_CONNECTED) ++ break; ++ ++ while ((skb = skb_dequeue(&sk->receive_queue))) { ++ skb_orphan(skb); ++ cmtp_recv_frame(session, skb); ++ } ++ ++ cmtp_process_transmit(session); ++ ++ schedule(); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ ++ down_write(&cmtp_session_sem); ++ ++ if (!(session->flags & (1 << CMTP_LOOPBACK))) ++ cmtp_detach_device(session); ++ ++ fput(session->sock->file); ++ ++ __cmtp_unlink_session(session); ++ ++ up_write(&cmtp_session_sem); ++ ++ kfree(session); ++ return 0; ++} ++ ++int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock) ++{ ++ struct cmtp_session *session, *s; ++ bdaddr_t src, dst; ++ int i, err; ++ ++ BT_DBG(""); ++ ++ baswap(&src, &bluez_pi(sock->sk)->src); ++ baswap(&dst, &bluez_pi(sock->sk)->dst); ++ ++ session = kmalloc(sizeof(struct cmtp_session), GFP_KERNEL); ++ if (!session) ++ return -ENOMEM; ++ memset(session, 0, sizeof(struct cmtp_session)); ++ ++ down_write(&cmtp_session_sem); ++ ++ s = __cmtp_get_session(&bluez_pi(sock->sk)->dst); ++ if (s && s->state == BT_CONNECTED) { ++ err = -EEXIST; ++ goto failed; ++ } ++ ++ bacpy(&session->bdaddr, &bluez_pi(sock->sk)->dst); ++ ++ session->mtu = min_t(uint, l2cap_pi(sock->sk)->omtu, l2cap_pi(sock->sk)->imtu); ++ ++ BT_DBG("mtu %d", session->mtu); ++ ++ sprintf(session->name, "%s", batostr(&dst)); ++ ++ session->sock = sock; ++ session->state = BT_CONFIG; ++ ++ init_waitqueue_head(&session->wait); ++ ++ session->ctrl = NULL; ++ session->msgnum = CMTP_INITIAL_MSGNUM; ++ ++ INIT_LIST_HEAD(&session->applications); ++ ++ skb_queue_head_init(&session->transmit); ++ ++ for (i = 0; i < 16; i++) ++ session->reassembly[i] = NULL; ++ ++ session->flags = req->flags; ++ ++ __cmtp_link_session(session); ++ ++ err = kernel_thread(cmtp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); ++ if (err < 0) ++ goto unlink; ++ ++ if (!(session->flags & (1 << CMTP_LOOPBACK))) { ++ err = cmtp_attach_device(session); ++ if (err < 0) ++ goto detach; ++ } ++ ++ up_write(&cmtp_session_sem); ++ return 0; ++ ++detach: ++ cmtp_detach_device(session); ++ ++unlink: ++ __cmtp_unlink_session(session); ++ ++failed: ++ up_write(&cmtp_session_sem); ++ kfree(session); ++ return err; ++} ++ ++int cmtp_del_connection(struct cmtp_conndel_req *req) ++{ ++ struct cmtp_session *session; ++ int err = 0; ++ ++ BT_DBG(""); ++ ++ down_read(&cmtp_session_sem); ++ ++ session = __cmtp_get_session(&req->bdaddr); ++ if (session) { ++ /* Flush the transmit queue */ ++ skb_queue_purge(&session->transmit); ++ ++ /* Kill session thread */ ++ atomic_inc(&session->terminate); ++ cmtp_schedule(session); ++ } else ++ err = -ENOENT; ++ ++ up_read(&cmtp_session_sem); ++ return err; ++} ++ ++int cmtp_get_connlist(struct cmtp_connlist_req *req) ++{ ++ struct list_head *p; ++ int err = 0, n = 0; ++ ++ BT_DBG(""); ++ ++ down_read(&cmtp_session_sem); ++ ++ list_for_each(p, &cmtp_session_list) { ++ struct cmtp_session *session; ++ struct cmtp_conninfo ci; ++ ++ session = list_entry(p, struct cmtp_session, list); ++ ++ __cmtp_copy_session(session, &ci); ++ ++ if (copy_to_user(req->ci, &ci, sizeof(ci))) { ++ err = -EFAULT; ++ break; ++ } ++ ++ if (++n >= req->cnum) ++ break; ++ ++ req->ci++; ++ } ++ req->cnum = n; ++ ++ up_read(&cmtp_session_sem); ++ return err; ++} ++ ++int cmtp_get_conninfo(struct cmtp_conninfo *ci) ++{ ++ struct cmtp_session *session; ++ int err = 0; ++ ++ down_read(&cmtp_session_sem); ++ ++ session = __cmtp_get_session(&ci->bdaddr); ++ if (session) ++ __cmtp_copy_session(session, ci); ++ else ++ err = -ENOENT; ++ ++ up_read(&cmtp_session_sem); ++ return err; ++} ++ ++ ++int __init init_cmtp(void) ++{ ++ l2cap_load(); ++ ++ cmtp_init_capi(); ++ cmtp_init_sockets(); ++ ++ BT_INFO("BlueZ CMTP ver %s", VERSION); ++ BT_INFO("Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org>"); ++ ++ return 0; ++} ++ ++void __exit exit_cmtp(void) ++{ ++ cmtp_cleanup_sockets(); ++ cmtp_cleanup_capi(); ++} ++ ++module_init(init_cmtp); ++module_exit(exit_cmtp); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueZ CMTP ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/cmtp/Makefile linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile +--- linux-2.4.18/net/bluetooth/cmtp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,10 @@ ++# ++# Makefile for the Linux Bluetooth CMTP layer ++# ++ ++O_TARGET := cmtp.o ++ ++obj-y := core.o sock.o capi.o ++obj-m += $(O_TARGET) ++ ++include $(TOPDIR)/Rules.make +diff -urN linux-2.4.18/net/bluetooth/cmtp/sock.c linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c +--- linux-2.4.18/net/bluetooth/cmtp/sock.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/cmtp/sock.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,208 @@ ++/* ++ CMTP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002-2003 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++ ++#include "cmtp.h" ++ ++#ifndef CONFIG_BLUEZ_CMTP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++static int cmtp_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p sk %p", sock, sk); ++ ++ if (!sk) ++ return 0; ++ ++ sock_orphan(sk); ++ sock_put(sk); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static int cmtp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++{ ++ struct cmtp_connadd_req ca; ++ struct cmtp_conndel_req cd; ++ struct cmtp_connlist_req cl; ++ struct cmtp_conninfo ci; ++ struct socket *nsock; ++ int err; ++ ++ BT_DBG("cmd %x arg %lx", cmd, arg); ++ ++ switch (cmd) { ++ case CMTPCONNADD: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&ca, (void *) arg, sizeof(ca))) ++ return -EFAULT; ++ ++ nsock = sockfd_lookup(ca.sock, &err); ++ if (!nsock) ++ return err; ++ ++ if (nsock->sk->state != BT_CONNECTED) { ++ fput(nsock->file); ++ return -EBADFD; ++ } ++ ++ err = cmtp_add_connection(&ca, nsock); ++ if (!err) { ++ if (copy_to_user((void *) arg, &ca, sizeof(ca))) ++ err = -EFAULT; ++ } else ++ fput(nsock->file); ++ ++ return err; ++ ++ case CMTPCONNDEL: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&cd, (void *) arg, sizeof(cd))) ++ return -EFAULT; ++ ++ return cmtp_del_connection(&cd); ++ ++ case CMTPGETCONNLIST: ++ if (copy_from_user(&cl, (void *) arg, sizeof(cl))) ++ return -EFAULT; ++ ++ if (cl.cnum <= 0) ++ return -EINVAL; ++ ++ err = cmtp_get_connlist(&cl); ++ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl))) ++ return -EFAULT; ++ ++ return err; ++ ++ case CMTPGETCONNINFO: ++ if (copy_from_user(&ci, (void *) arg, sizeof(ci))) ++ return -EFAULT; ++ ++ err = cmtp_get_conninfo(&ci); ++ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci))) ++ return -EFAULT; ++ ++ return err; ++ } ++ ++ return -EINVAL; ++} ++ ++static struct proto_ops cmtp_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: cmtp_sock_release, ++ ioctl: cmtp_sock_ioctl, ++ bind: sock_no_bind, ++ getname: sock_no_getname, ++ sendmsg: sock_no_sendmsg, ++ recvmsg: sock_no_recvmsg, ++ poll: sock_no_poll, ++ listen: sock_no_listen, ++ shutdown: sock_no_shutdown, ++ setsockopt: sock_no_setsockopt, ++ getsockopt: sock_no_getsockopt, ++ connect: sock_no_connect, ++ socketpair: sock_no_socketpair, ++ accept: sock_no_accept, ++ mmap: sock_no_mmap ++}; ++ ++static int cmtp_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ if (sock->type != SOCK_RAW) ++ return -ESOCKTNOSUPPORT; ++ ++ sock->ops = &cmtp_sock_ops; ++ ++ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1))) ++ return -ENOMEM; ++ ++ MOD_INC_USE_COUNT; ++ ++ sock->state = SS_UNCONNECTED; ++ sock_init_data(sock, sk); ++ ++ sk->destruct = NULL; ++ sk->protocol = protocol; ++ ++ return 0; ++} ++ ++static struct net_proto_family cmtp_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: cmtp_sock_create ++}; ++ ++int cmtp_init_sockets(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_register(BTPROTO_CMTP, &cmtp_sock_family_ops))) { ++ BT_ERR("Can't register CMTP socket layer (%d)", err); ++ return err; ++ } ++ ++ return 0; ++} ++ ++void cmtp_cleanup_sockets(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_unregister(BTPROTO_CMTP))) ++ BT_ERR("Can't unregister CMTP socket layer (%d)", err); ++ ++ return; ++} +diff -urN linux-2.4.18/net/bluetooth/Config.in linux-2.4.18-mh15/net/bluetooth/Config.in +--- linux-2.4.18/net/bluetooth/Config.in 2001-06-12 04:15:27.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -1,16 +1,23 @@ + # +-# Bluetooth configuration ++# Bluetooth subsystem configuration + # + + if [ "$CONFIG_NET" != "n" ]; then ++ + mainmenu_option next_comment + comment 'Bluetooth support' + dep_tristate 'Bluetooth subsystem support' CONFIG_BLUEZ $CONFIG_NET + + if [ "$CONFIG_BLUEZ" != "n" ]; then + dep_tristate 'L2CAP protocol support' CONFIG_BLUEZ_L2CAP $CONFIG_BLUEZ ++ dep_tristate 'SCO links support' CONFIG_BLUEZ_SCO $CONFIG_BLUEZ ++ source net/bluetooth/rfcomm/Config.in ++ source net/bluetooth/bnep/Config.in ++ source net/bluetooth/cmtp/Config.in ++ source net/bluetooth/hidp/Config.in + source drivers/bluetooth/Config.in + fi ++ + endmenu + fi + +diff -urN linux-2.4.18/net/bluetooth/hci_conn.c linux-2.4.18-mh15/net/bluetooth/hci_conn.c +--- linux-2.4.18/net/bluetooth/hci_conn.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hci_conn.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,435 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * HCI Connection handling. ++ * ++ * $Id: hci_conn.c,v 1.5 2002/07/17 18:46:25 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/init.h> ++#include <linux/skbuff.h> ++#include <linux/interrupt.h> ++#include <linux/notifier.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++#ifndef HCI_CORE_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++void hci_acl_connect(struct hci_conn *conn) ++{ ++ struct hci_dev *hdev = conn->hdev; ++ struct inquiry_entry *ie; ++ create_conn_cp cp; ++ ++ BT_DBG("%p", conn); ++ ++ conn->state = BT_CONNECT; ++ conn->out = 1; ++ conn->link_mode = HCI_LM_MASTER; ++ ++ memset(&cp, 0, sizeof(cp)); ++ bacpy(&cp.bdaddr, &conn->dst); ++ cp.pscan_rep_mode = 0x02; ++ ++ if ((ie = inquiry_cache_lookup(hdev, &conn->dst)) && ++ inquiry_entry_age(ie) <= INQUIRY_ENTRY_AGE_MAX) { ++ cp.pscan_rep_mode = ie->info.pscan_rep_mode; ++ cp.pscan_mode = ie->info.pscan_mode; ++ cp.clock_offset = ie->info.clock_offset | __cpu_to_le16(0x8000); ++ } ++ ++ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK); ++ if (lmp_rswitch_capable(hdev) && !(hdev->link_mode & HCI_LM_MASTER)) ++ cp.role_switch = 0x01; ++ else ++ cp.role_switch = 0x00; ++ ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, ++ CREATE_CONN_CP_SIZE, &cp); ++} ++ ++void hci_acl_disconn(struct hci_conn *conn, __u8 reason) ++{ ++ disconnect_cp cp; ++ ++ BT_DBG("%p", conn); ++ ++ conn->state = BT_DISCONN; ++ ++ cp.handle = __cpu_to_le16(conn->handle); ++ cp.reason = reason; ++ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT, ++ DISCONNECT_CP_SIZE, &cp); ++} ++ ++void hci_add_sco(struct hci_conn *conn, __u16 handle) ++{ ++ struct hci_dev *hdev = conn->hdev; ++ add_sco_cp cp; ++ ++ BT_DBG("%p", conn); ++ ++ conn->state = BT_CONNECT; ++ conn->out = 1; ++ ++ cp.pkt_type = __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK); ++ cp.handle = __cpu_to_le16(handle); ++ ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ADD_SCO, ADD_SCO_CP_SIZE, &cp); ++} ++ ++static void hci_conn_timeout(unsigned long arg) ++{ ++ struct hci_conn *conn = (void *)arg; ++ struct hci_dev *hdev = conn->hdev; ++ ++ BT_DBG("conn %p state %d", conn, conn->state); ++ ++ if (atomic_read(&conn->refcnt)) ++ return; ++ ++ hci_dev_lock(hdev); ++ if (conn->state == BT_CONNECTED) ++ hci_acl_disconn(conn, 0x13); ++ else ++ conn->state = BT_CLOSED; ++ hci_dev_unlock(hdev); ++ return; ++} ++ ++static void hci_conn_init_timer(struct hci_conn *conn) ++{ ++ init_timer(&conn->timer); ++ conn->timer.function = hci_conn_timeout; ++ conn->timer.data = (unsigned long)conn; ++} ++ ++struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst) ++{ ++ struct hci_conn *conn; ++ ++ BT_DBG("%s dst %s", hdev->name, batostr(dst)); ++ ++ if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC))) ++ return NULL; ++ memset(conn, 0, sizeof(struct hci_conn)); ++ ++ bacpy(&conn->dst, dst); ++ conn->type = type; ++ conn->hdev = hdev; ++ conn->state = BT_OPEN; ++ ++ skb_queue_head_init(&conn->data_q); ++ hci_conn_init_timer(conn); ++ ++ atomic_set(&conn->refcnt, 0); ++ ++ hci_dev_hold(hdev); ++ ++ tasklet_disable(&hdev->tx_task); ++ conn_hash_add(hdev, conn); ++ tasklet_enable(&hdev->tx_task); ++ ++ return conn; ++} ++ ++int hci_conn_del(struct hci_conn *conn) ++{ ++ struct hci_dev *hdev = conn->hdev; ++ ++ BT_DBG("%s conn %p handle %d", hdev->name, conn, conn->handle); ++ ++ hci_conn_del_timer(conn); ++ ++ if (conn->type == SCO_LINK) { ++ struct hci_conn *acl = conn->link; ++ if (acl) { ++ acl->link = NULL; ++ hci_conn_put(acl); ++ } ++ } else { ++ struct hci_conn *sco = conn->link; ++ if (sco) ++ sco->link = NULL; ++ ++ /* Unacked frames */ ++ hdev->acl_cnt += conn->sent; ++ } ++ ++ tasklet_disable(&hdev->tx_task); ++ conn_hash_del(hdev, conn); ++ tasklet_enable(&hdev->tx_task); ++ ++ skb_queue_purge(&conn->data_q); ++ ++ hci_dev_put(hdev); ++ ++ kfree(conn); ++ return 0; ++} ++ ++struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src) ++{ ++ int use_src = bacmp(src, BDADDR_ANY); ++ struct hci_dev *hdev = NULL; ++ struct list_head *p; ++ ++ BT_DBG("%s -> %s", batostr(src), batostr(dst)); ++ ++ read_lock_bh(&hdev_list_lock); ++ ++ list_for_each(p, &hdev_list) { ++ struct hci_dev *d; ++ d = list_entry(p, struct hci_dev, list); ++ ++ if (!test_bit(HCI_UP, &d->flags)) ++ continue; ++ ++ /* Simple routing: ++ * No source address - find interface with bdaddr != dst ++ * Source address - find interface with bdaddr == src ++ */ ++ ++ if (use_src) { ++ if (!bacmp(&d->bdaddr, src)) { ++ hdev = d; break; ++ } ++ } else { ++ if (bacmp(&d->bdaddr, dst)) { ++ hdev = d; break; ++ } ++ } ++ } ++ ++ if (hdev) ++ hci_dev_hold(hdev); ++ ++ read_unlock_bh(&hdev_list_lock); ++ return hdev; ++} ++ ++/* Create SCO or ACL connection. ++ * Device _must_ be locked */ ++struct hci_conn * hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst) ++{ ++ struct hci_conn *acl; ++ ++ BT_DBG("%s dst %s", hdev->name, batostr(dst)); ++ ++ if (!(acl = conn_hash_lookup_ba(hdev, ACL_LINK, dst))) { ++ if (!(acl = hci_conn_add(hdev, ACL_LINK, dst))) ++ return NULL; ++ } ++ ++ hci_conn_hold(acl); ++ ++ if (acl->state == BT_OPEN || acl->state == BT_CLOSED) ++ hci_acl_connect(acl); ++ ++ if (type == SCO_LINK) { ++ struct hci_conn *sco; ++ ++ if (!(sco = conn_hash_lookup_ba(hdev, SCO_LINK, dst))) { ++ if (!(sco = hci_conn_add(hdev, SCO_LINK, dst))) { ++ hci_conn_put(acl); ++ return NULL; ++ } ++ } ++ acl->link = sco; ++ sco->link = acl; ++ ++ hci_conn_hold(sco); ++ ++ if (acl->state == BT_CONNECTED && ++ (sco->state == BT_OPEN || sco->state == BT_CLOSED)) ++ hci_add_sco(sco, acl->handle); ++ ++ return sco; ++ } else { ++ return acl; ++ } ++} ++ ++/* Authenticate remote device */ ++int hci_conn_auth(struct hci_conn *conn) ++{ ++ BT_DBG("conn %p", conn); ++ ++ if (conn->link_mode & HCI_LM_AUTH) ++ return 1; ++ ++ if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { ++ auth_requested_cp ar; ++ ar.handle = __cpu_to_le16(conn->handle); ++ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_AUTH_REQUESTED, ++ AUTH_REQUESTED_CP_SIZE, &ar); ++ } ++ return 0; ++} ++ ++/* Enable encryption */ ++int hci_conn_encrypt(struct hci_conn *conn) ++{ ++ BT_DBG("conn %p", conn); ++ ++ if (conn->link_mode & HCI_LM_ENCRYPT) ++ return 1; ++ ++ if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) ++ return 0; ++ ++ if (hci_conn_auth(conn)) { ++ set_conn_encrypt_cp ce; ++ ce.handle = __cpu_to_le16(conn->handle); ++ ce.encrypt = 1; ++ hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_SET_CONN_ENCRYPT, ++ SET_CONN_ENCRYPT_CP_SIZE, &ce); ++ } ++ return 0; ++} ++ ++/* Drop all connection on the device */ ++void hci_conn_hash_flush(struct hci_dev *hdev) ++{ ++ struct conn_hash *h = &hdev->conn_hash; ++ struct list_head *p; ++ ++ BT_DBG("hdev %s", hdev->name); ++ ++ p = h->list.next; ++ while (p != &h->list) { ++ struct hci_conn *c; ++ ++ c = list_entry(p, struct hci_conn, list); ++ p = p->next; ++ ++ c->state = BT_CLOSED; ++ ++ hci_proto_disconn_ind(c, 0x16); ++ hci_conn_del(c); ++ } ++} ++ ++int hci_get_conn_list(unsigned long arg) ++{ ++ struct hci_conn_list_req req, *cl; ++ struct hci_conn_info *ci; ++ struct hci_dev *hdev; ++ struct list_head *p; ++ int n = 0, size, err; ++ ++ if (copy_from_user(&req, (void *) arg, sizeof(req))) ++ return -EFAULT; ++ ++ if (!req.conn_num || req.conn_num > (PAGE_SIZE * 2) / sizeof(*ci)) ++ return -EINVAL; ++ ++ size = sizeof(req) + req.conn_num * sizeof(*ci); ++ ++ if (!(cl = (void *) kmalloc(size, GFP_KERNEL))) ++ return -ENOMEM; ++ ++ if (!(hdev = hci_dev_get(req.dev_id))) { ++ kfree(cl); ++ return -ENODEV; ++ } ++ ++ ci = cl->conn_info; ++ ++ hci_dev_lock_bh(hdev); ++ list_for_each(p, &hdev->conn_hash.list) { ++ register struct hci_conn *c; ++ c = list_entry(p, struct hci_conn, list); ++ ++ bacpy(&(ci + n)->bdaddr, &c->dst); ++ (ci + n)->handle = c->handle; ++ (ci + n)->type = c->type; ++ (ci + n)->out = c->out; ++ (ci + n)->state = c->state; ++ (ci + n)->link_mode = c->link_mode; ++ if (++n >= req.conn_num) ++ break; ++ } ++ hci_dev_unlock_bh(hdev); ++ ++ cl->dev_id = hdev->id; ++ cl->conn_num = n; ++ size = sizeof(req) + n * sizeof(*ci); ++ ++ hci_dev_put(hdev); ++ ++ err = copy_to_user((void *) arg, cl, size); ++ kfree(cl); ++ ++ return err ? -EFAULT : 0; ++} ++ ++int hci_get_conn_info(struct hci_dev *hdev, unsigned long arg) ++{ ++ struct hci_conn_info_req req; ++ struct hci_conn_info ci; ++ struct hci_conn *conn; ++ char *ptr = (void *) arg + sizeof(req); ++ ++ if (copy_from_user(&req, (void *) arg, sizeof(req))) ++ return -EFAULT; ++ ++ hci_dev_lock_bh(hdev); ++ conn = conn_hash_lookup_ba(hdev, req.type, &req.bdaddr); ++ if (conn) { ++ bacpy(&ci.bdaddr, &conn->dst); ++ ci.handle = conn->handle; ++ ci.type = conn->type; ++ ci.out = conn->out; ++ ci.state = conn->state; ++ ci.link_mode = conn->link_mode; ++ } ++ hci_dev_unlock_bh(hdev); ++ ++ if (!conn) ++ return -ENOENT; ++ ++ return copy_to_user(ptr, &ci, sizeof(ci)) ? -EFAULT : 0; ++} +diff -urN linux-2.4.18/net/bluetooth/hci_core.c linux-2.4.18-mh15/net/bluetooth/hci_core.c +--- linux-2.4.18/net/bluetooth/hci_core.c 2001-11-09 23:21:21.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hci_core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,11 +25,12 @@ + /* + * BlueZ HCI Core. + * +- * $Id: hci_core.c,v 1.22 2001/08/03 04:19:50 maxk Exp $ ++ * $Id: hci_core.c,v 1.14 2002/08/26 16:57:57 maxk Exp $ + */ + + #include <linux/config.h> + #include <linux/module.h> ++#include <linux/kmod.h> + + #include <linux/types.h> + #include <linux/errno.h> +@@ -50,12 +51,11 @@ + #include <asm/unaligned.h> + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> + #include <net/bluetooth/hci_core.h> + + #ifndef HCI_CORE_DEBUG +-#undef DBG +-#define DBG( A... ) ++#undef BT_DBG ++#define BT_DBG( A... ) + #endif + + static void hci_cmd_task(unsigned long arg); +@@ -63,279 +63,69 @@ + static void hci_tx_task(unsigned long arg); + static void hci_notify(struct hci_dev *hdev, int event); + +-static rwlock_t hci_task_lock = RW_LOCK_UNLOCKED; ++rwlock_t hci_task_lock = RW_LOCK_UNLOCKED; + + /* HCI device list */ +-struct hci_dev *hdev_list[HCI_MAX_DEV]; +-spinlock_t hdev_list_lock; +-#define GET_HDEV(a) (hdev_list[a]) +- +-/* HCI protocol list */ +-struct hci_proto *hproto_list[HCI_MAX_PROTO]; +-#define GET_HPROTO(a) (hproto_list[a]) ++LIST_HEAD(hdev_list); ++rwlock_t hdev_list_lock = RW_LOCK_UNLOCKED; + +-/* HCI notifiers list */ +-struct notifier_block *hci_dev_notifier; +- +-/* HCI device notifications */ +-int hci_register_notifier(struct notifier_block *nb) +-{ +- int err, i; +- struct hci_dev *hdev; +- +- if ((err = notifier_chain_register(&hci_dev_notifier, nb))) +- return err; +- +- /* Notify about already registered devices */ +- spin_lock(&hdev_list_lock); +- for (i = 0; i < HCI_MAX_DEV; i++) { +- if (!(hdev = GET_HDEV(i))) +- continue; +- if (hdev->flags & HCI_UP) +- (*nb->notifier_call)(nb, HCI_DEV_UP, hdev); +- } +- spin_unlock(&hdev_list_lock); +- +- return 0; +-} +- +-int hci_unregister_notifier(struct notifier_block *nb) +-{ +- return notifier_chain_unregister(&hci_dev_notifier, nb); +-} +- +-static inline void hci_notify(struct hci_dev *hdev, int event) +-{ +- notifier_call_chain(&hci_dev_notifier, event, hdev); +-} +- +-/* Get HCI device by index (device is locked on return)*/ +-struct hci_dev *hci_dev_get(int index) +-{ +- struct hci_dev *hdev; +- DBG("%d", index); +- +- if (index < 0 || index >= HCI_MAX_DEV) +- return NULL; +- +- spin_lock(&hdev_list_lock); +- if ((hdev = GET_HDEV(index))) +- hci_dev_hold(hdev); +- spin_unlock(&hdev_list_lock); +- +- return hdev; +-} +- +-/* Flush inquiry cache */ +-void inquiry_cache_flush(struct inquiry_cache *cache) +-{ +- struct inquiry_entry *next = cache->list, *e; +- +- DBG("cache %p", cache); +- +- cache->list = NULL; +- while ((e = next)) { +- next = e->next; +- kfree(e); +- } +-} +- +-/* Lookup by bdaddr. +- * Cache must be locked. */ +-static struct inquiry_entry * __inquiry_cache_lookup(struct inquiry_cache *cache, bdaddr_t *bdaddr) +-{ +- struct inquiry_entry *e; +- +- DBG("cache %p, %s", cache, batostr(bdaddr)); +- +- for (e = cache->list; e; e = e->next) +- if (!bacmp(&e->info.bdaddr, bdaddr)) +- break; +- +- return e; +-} +- +-static void inquiry_cache_update(struct inquiry_cache *cache, inquiry_info *info) +-{ +- struct inquiry_entry *e; +- +- DBG("cache %p, %s", cache, batostr(&info->bdaddr)); +- +- inquiry_cache_lock(cache); +- +- if (!(e = __inquiry_cache_lookup(cache, &info->bdaddr))) { +- /* Entry not in the cache. Add new one. */ +- if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC))) +- goto unlock; +- memset(e, 0, sizeof(struct inquiry_entry)); +- e->next = cache->list; +- cache->list = e; +- } +- +- memcpy(&e->info, info, sizeof(inquiry_info)); +- e->timestamp = jiffies; +- cache->timestamp = jiffies; +-unlock: +- inquiry_cache_unlock(cache); +-} +- +-static int inquiry_cache_dump(struct inquiry_cache *cache, int num, __u8 *buf) +-{ +- inquiry_info *info = (inquiry_info *) buf; +- struct inquiry_entry *e; +- int copied = 0; ++/* HCI protocols */ ++#define HCI_MAX_PROTO 2 ++struct hci_proto *hci_proto[HCI_MAX_PROTO]; + +- inquiry_cache_lock(cache); +- +- for (e = cache->list; e && copied < num; e = e->next, copied++) +- memcpy(info++, &e->info, sizeof(inquiry_info)); ++/* HCI notifiers list */ ++static struct notifier_block *hci_notifier; + +- inquiry_cache_unlock(cache); + +- DBG("cache %p, copied %d", cache, copied); +- return copied; +-} ++/* ---- HCI notifications ---- */ + +-/* --------- BaseBand connections --------- */ +-static struct hci_conn *hci_conn_add(struct hci_dev *hdev, __u16 handle, __u8 type, bdaddr_t *dst) ++int hci_register_notifier(struct notifier_block *nb) + { +- struct hci_conn *conn; +- +- DBG("%s handle %d dst %s", hdev->name, handle, batostr(dst)); +- +- if ( conn_hash_lookup(&hdev->conn_hash, handle)) { +- ERR("%s handle 0x%x already exists", hdev->name, handle); +- return NULL; +- } +- +- if (!(conn = kmalloc(sizeof(struct hci_conn), GFP_ATOMIC))) +- return NULL; +- memset(conn, 0, sizeof(struct hci_conn)); +- +- bacpy(&conn->dst, dst); +- conn->handle = handle; +- conn->type = type; +- conn->hdev = hdev; +- +- skb_queue_head_init(&conn->data_q); +- +- hci_dev_hold(hdev); +- conn_hash_add(&hdev->conn_hash, handle, conn); +- +- return conn; ++ return notifier_chain_register(&hci_notifier, nb); + } + +-static int hci_conn_del(struct hci_dev *hdev, struct hci_conn *conn) ++int hci_unregister_notifier(struct notifier_block *nb) + { +- DBG("%s conn %p handle %d", hdev->name, conn, conn->handle); +- +- conn_hash_del(&hdev->conn_hash, conn); +- hci_dev_put(hdev); +- +- /* Unacked frames */ +- hdev->acl_cnt += conn->sent; +- +- skb_queue_purge(&conn->data_q); +- +- kfree(conn); +- return 0; ++ return notifier_chain_unregister(&hci_notifier, nb); + } + +-/* Drop all connection on the device */ +-static void hci_conn_hash_flush(struct hci_dev *hdev) ++void hci_notify(struct hci_dev *hdev, int event) + { +- struct conn_hash *h = &hdev->conn_hash; +- struct hci_proto *hp; +- struct list_head *p; +- +- DBG("hdev %s", hdev->name); +- +- p = h->list.next; +- while (p != &h->list) { +- struct hci_conn *c; +- +- c = list_entry(p, struct hci_conn, list); +- p = p->next; +- +- if (c->type == ACL_LINK) { +- /* ACL link notify L2CAP layer */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind) +- hp->disconn_ind(c, 0x16); +- } else { +- /* SCO link (no notification) */ +- } +- +- hci_conn_del(hdev, c); +- } ++ notifier_call_chain(&hci_notifier, event, hdev); + } + +-int hci_connect(struct hci_dev *hdev, bdaddr_t *bdaddr) +-{ +- struct inquiry_cache *cache = &hdev->inq_cache; +- struct inquiry_entry *e; +- create_conn_cp cc; +- __u16 clock_offset; +- +- DBG("%s bdaddr %s", hdev->name, batostr(bdaddr)); +- +- if (!(hdev->flags & HCI_UP)) +- return -ENODEV; +- +- inquiry_cache_lock_bh(cache); +- +- if (!(e = __inquiry_cache_lookup(cache, bdaddr)) || inquiry_entry_age(e) > INQUIRY_ENTRY_AGE_MAX) { +- cc.pscan_rep_mode = 0; +- cc.pscan_mode = 0; +- clock_offset = 0; +- } else { +- cc.pscan_rep_mode = e->info.pscan_rep_mode; +- cc.pscan_mode = e->info.pscan_mode; +- clock_offset = __le16_to_cpu(e->info.clock_offset) & 0x8000; +- } +- +- inquiry_cache_unlock_bh(cache); +- +- bacpy(&cc.bdaddr, bdaddr); +- cc.pkt_type = __cpu_to_le16(hdev->pkt_type); +- cc.clock_offset = __cpu_to_le16(clock_offset); +- +- if (lmp_rswitch_capable(hdev)) +- cc.role_switch = 0x01; +- else +- cc.role_switch = 0x00; +- +- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, CREATE_CONN_CP_SIZE, &cc); ++/* ---- HCI hotplug support ---- */ + +- return 0; +-} ++#ifdef CONFIG_HOTPLUG + +-int hci_disconnect(struct hci_conn *conn, __u8 reason) ++static int hci_run_hotplug(char *dev, char *action) + { +- disconnect_cp dc; +- +- DBG("conn %p handle %d", conn, conn->handle); ++ char *argv[3], *envp[5], dstr[20], astr[32]; + +- dc.handle = __cpu_to_le16(conn->handle); +- dc.reason = reason; +- hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_DISCONNECT, DISCONNECT_CP_SIZE, &dc); ++ sprintf(dstr, "DEVICE=%s", dev); ++ sprintf(astr, "ACTION=%s", action); + +- return 0; +-} ++ argv[0] = hotplug_path; ++ argv[1] = "bluetooth"; ++ argv[2] = NULL; + +-/* --------- HCI request handling ------------ */ +-static inline void hci_req_lock(struct hci_dev *hdev) +-{ +- down(&hdev->req_lock); ++ envp[0] = "HOME=/"; ++ envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin"; ++ envp[2] = dstr; ++ envp[3] = astr; ++ envp[4] = NULL; ++ ++ return call_usermodehelper(argv[0], argv, envp); + } ++#else ++#define hci_run_hotplug(A...) ++#endif + +-static inline void hci_req_unlock(struct hci_dev *hdev) +-{ +- up(&hdev->req_lock); +-} ++/* ---- HCI requests ---- */ + +-static inline void hci_req_complete(struct hci_dev *hdev, int result) ++void hci_req_complete(struct hci_dev *hdev, int result) + { +- DBG("%s result 0x%2.2x", hdev->name, result); ++ BT_DBG("%s result 0x%2.2x", hdev->name, result); + + if (hdev->req_status == HCI_REQ_PEND) { + hdev->req_result = result; +@@ -344,9 +134,9 @@ + } + } + +-static inline void hci_req_cancel(struct hci_dev *hdev, int err) ++void hci_req_cancel(struct hci_dev *hdev, int err) + { +- DBG("%s err 0x%2.2x", hdev->name, err); ++ BT_DBG("%s err 0x%2.2x", hdev->name, err); + + if (hdev->req_status == HCI_REQ_PEND) { + hdev->req_result = err; +@@ -356,23 +146,22 @@ + } + + /* Execute request and wait for completion. */ +-static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt), +- unsigned long opt, __u32 timeout) ++static int __hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *hdev, unsigned long opt), unsigned long opt, __u32 timeout) + { + DECLARE_WAITQUEUE(wait, current); + int err = 0; + +- DBG("%s start", hdev->name); ++ BT_DBG("%s start", hdev->name); + + hdev->req_status = HCI_REQ_PEND; + + add_wait_queue(&hdev->req_wait_q, &wait); +- current->state = TASK_INTERRUPTIBLE; ++ set_current_state(TASK_INTERRUPTIBLE); + + req(hdev, opt); + schedule_timeout(timeout); + +- current->state = TASK_RUNNING; ++ set_current_state(TASK_RUNNING); + remove_wait_queue(&hdev->req_wait_q, &wait); + + if (signal_pending(current)) +@@ -394,7 +183,7 @@ + + hdev->req_status = hdev->req_result = 0; + +- DBG("%s end: err %d", hdev->name, err); ++ BT_DBG("%s end: err %d", hdev->name, err); + + return err; + } +@@ -412,10 +201,9 @@ + return ret; + } + +-/* --------- HCI requests ---------- */ + static void hci_reset_req(struct hci_dev *hdev, unsigned long opt) + { +- DBG("%s %ld", hdev->name, opt); ++ BT_DBG("%s %ld", hdev->name, opt); + + /* Reset device */ + hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL); +@@ -423,27 +211,44 @@ + + static void hci_init_req(struct hci_dev *hdev, unsigned long opt) + { +- set_event_flt_cp ec; ++ set_event_flt_cp ef; + __u16 param; + +- DBG("%s %ld", hdev->name, opt); ++ BT_DBG("%s %ld", hdev->name, opt); + + /* Mandatory initialization */ + ++ /* Reset */ ++ if (test_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks)) ++ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_RESET, 0, NULL); ++ + /* Read Local Supported Features */ + hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_LOCAL_FEATURES, 0, NULL); + + /* Read Buffer Size (ACL mtu, max pkt, etc.) */ + hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BUFFER_SIZE, 0, NULL); + ++#if 0 ++ /* Host buffer size */ ++ { ++ host_buffer_size_cp bs; ++ bs.acl_mtu = __cpu_to_le16(HCI_MAX_ACL_SIZE); ++ bs.sco_mtu = HCI_MAX_SCO_SIZE; ++ bs.acl_max_pkt = __cpu_to_le16(0xffff); ++ bs.sco_max_pkt = __cpu_to_le16(0xffff); ++ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_HOST_BUFFER_SIZE, ++ HOST_BUFFER_SIZE_CP_SIZE, &bs); ++ } ++#endif ++ + /* Read BD Address */ + hci_send_cmd(hdev, OGF_INFO_PARAM, OCF_READ_BD_ADDR, 0, NULL); + + /* Optional initialization */ + + /* Clear Event Filters */ +- ec.flt_type = FLT_CLEAR_ALL; +- hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ec); ++ ef.flt_type = FLT_CLEAR_ALL; ++ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_SET_EVENT_FLT, 1, &ef); + + /* Page timeout ~20 secs */ + param = __cpu_to_le16(0x8000); +@@ -458,7 +263,7 @@ + { + __u8 scan = opt; + +- DBG("%s %x", hdev->name, scan); ++ BT_DBG("%s %x", hdev->name, scan); + + /* Inquiry and Page scans */ + hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE, 1, &scan); +@@ -468,116 +273,273 @@ + { + __u8 auth = opt; + +- DBG("%s %x", hdev->name, auth); ++ BT_DBG("%s %x", hdev->name, auth); + + /* Authentication */ + hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE, 1, &auth); + } + +-static void hci_inq_req(struct hci_dev *hdev, unsigned long opt) ++static void hci_encrypt_req(struct hci_dev *hdev, unsigned long opt) + { +- struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt; +- inquiry_cp ic; ++ __u8 encrypt = opt; + +- DBG("%s", hdev->name); ++ BT_DBG("%s %x", hdev->name, encrypt); + +- /* Start Inquiry */ +- memcpy(&ic.lap, &ir->lap, 3); +- ic.lenght = ir->length; +- ic.num_rsp = ir->num_rsp; +- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic); ++ /* Authentication */ ++ hci_send_cmd(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE, 1, &encrypt); + } + +-/* HCI ioctl helpers */ +-int hci_dev_open(__u16 dev) ++/* Get HCI device by index. ++ * Device is locked on return. */ ++struct hci_dev *hci_dev_get(int index) + { + struct hci_dev *hdev; +- int ret = 0; +- +- if (!(hdev = hci_dev_get(dev))) +- return -ENODEV; ++ struct list_head *p; + +- DBG("%s %p", hdev->name, hdev); ++ BT_DBG("%d", index); + +- hci_req_lock(hdev); ++ if (index < 0) ++ return NULL; + +- if (hdev->flags & HCI_UP) { +- ret = -EALREADY; +- goto done; ++ read_lock(&hdev_list_lock); ++ list_for_each(p, &hdev_list) { ++ hdev = list_entry(p, struct hci_dev, list); ++ if (hdev->id == index) { ++ hci_dev_hold(hdev); ++ goto done; ++ } + } ++ hdev = NULL; ++done: ++ read_unlock(&hdev_list_lock); ++ return hdev; ++} + +- if (hdev->open(hdev)) { +- ret = -EIO; +- goto done; +- } ++/* ---- Inquiry support ---- */ ++void inquiry_cache_flush(struct hci_dev *hdev) ++{ ++ struct inquiry_cache *cache = &hdev->inq_cache; ++ struct inquiry_entry *next = cache->list, *e; + +- if (hdev->flags & HCI_NORMAL) { +- atomic_set(&hdev->cmd_cnt, 1); +- hdev->flags |= HCI_INIT; ++ BT_DBG("cache %p", cache); + +- //__hci_request(hdev, hci_reset_req, 0, HZ); +- ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT); +- +- hdev->flags &= ~HCI_INIT; ++ cache->list = NULL; ++ while ((e = next)) { ++ next = e->next; ++ kfree(e); + } ++} + +- if (!ret) { +- hdev->flags |= HCI_UP; +- hci_notify(hdev, HCI_DEV_UP); +- } else { +- /* Init failed, cleanup */ +- tasklet_kill(&hdev->rx_task); +- tasklet_kill(&hdev->tx_task); +- tasklet_kill(&hdev->cmd_task); ++struct inquiry_entry *inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr) ++{ ++ struct inquiry_cache *cache = &hdev->inq_cache; ++ struct inquiry_entry *e; + +- skb_queue_purge(&hdev->cmd_q); +- skb_queue_purge(&hdev->rx_q); ++ BT_DBG("cache %p, %s", cache, batostr(bdaddr)); + +- if (hdev->flush) +- hdev->flush(hdev); ++ for (e = cache->list; e; e = e->next) ++ if (!bacmp(&e->info.bdaddr, bdaddr)) ++ break; ++ return e; ++} + +- if (hdev->sent_cmd) { +- kfree_skb(hdev->sent_cmd); +- hdev->sent_cmd = NULL; +- } ++void inquiry_cache_update(struct hci_dev *hdev, inquiry_info *info) ++{ ++ struct inquiry_cache *cache = &hdev->inq_cache; ++ struct inquiry_entry *e; + +- hdev->close(hdev); +- } ++ BT_DBG("cache %p, %s", cache, batostr(&info->bdaddr)); + +-done: +- hci_req_unlock(hdev); +- hci_dev_put(hdev); ++ if (!(e = inquiry_cache_lookup(hdev, &info->bdaddr))) { ++ /* Entry not in the cache. Add new one. */ ++ if (!(e = kmalloc(sizeof(struct inquiry_entry), GFP_ATOMIC))) ++ return; ++ memset(e, 0, sizeof(struct inquiry_entry)); ++ e->next = cache->list; ++ cache->list = e; ++ } + +- return ret; ++ memcpy(&e->info, info, sizeof(inquiry_info)); ++ e->timestamp = jiffies; ++ cache->timestamp = jiffies; + } + +-int hci_dev_close(__u16 dev) ++int inquiry_cache_dump(struct hci_dev *hdev, int num, __u8 *buf) + { +- struct hci_dev *hdev; +- +- if (!(hdev = hci_dev_get(dev))) +- return -ENODEV; ++ struct inquiry_cache *cache = &hdev->inq_cache; ++ inquiry_info *info = (inquiry_info *) buf; ++ struct inquiry_entry *e; ++ int copied = 0; + +- DBG("%s %p", hdev->name, hdev); ++ for (e = cache->list; e && copied < num; e = e->next, copied++) ++ memcpy(info++, &e->info, sizeof(inquiry_info)); + +- hci_req_cancel(hdev, ENODEV); +- hci_req_lock(hdev); ++ BT_DBG("cache %p, copied %d", cache, copied); ++ return copied; ++} + +- if (!(hdev->flags & HCI_UP)) +- goto done; ++static void hci_inq_req(struct hci_dev *hdev, unsigned long opt) ++{ ++ struct hci_inquiry_req *ir = (struct hci_inquiry_req *) opt; ++ inquiry_cp ic; + +- /* Kill RX and TX tasks */ +- tasklet_kill(&hdev->rx_task); +- tasklet_kill(&hdev->tx_task); ++ BT_DBG("%s", hdev->name); + +- inquiry_cache_flush(&hdev->inq_cache); ++ if (test_bit(HCI_INQUIRY, &hdev->flags)) ++ return; + +- hci_conn_hash_flush(hdev); ++ /* Start Inquiry */ ++ memcpy(&ic.lap, &ir->lap, 3); ++ ic.length = ir->length; ++ ic.num_rsp = ir->num_rsp; ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_INQUIRY, INQUIRY_CP_SIZE, &ic); ++} + +- /* Clear flags */ +- hdev->flags &= HCI_SOCK; +- hdev->flags |= HCI_NORMAL; ++int hci_inquiry(unsigned long arg) ++{ ++ struct hci_inquiry_req ir; ++ struct hci_dev *hdev; ++ int err = 0, do_inquiry = 0, max_rsp; ++ long timeo; ++ __u8 *buf, *ptr; + ++ ptr = (void *) arg; ++ if (copy_from_user(&ir, ptr, sizeof(ir))) ++ return -EFAULT; ++ ++ if (!(hdev = hci_dev_get(ir.dev_id))) ++ return -ENODEV; ++ ++ hci_dev_lock_bh(hdev); ++ if (inquiry_cache_age(hdev) > INQUIRY_CACHE_AGE_MAX || ++ inquiry_cache_empty(hdev) || ++ ir.flags & IREQ_CACHE_FLUSH) { ++ inquiry_cache_flush(hdev); ++ do_inquiry = 1; ++ } ++ hci_dev_unlock_bh(hdev); ++ ++ timeo = ir.length * 2 * HZ; ++ if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0) ++ goto done; ++ ++ /* for unlimited number of responses we will use buffer with 255 entries */ ++ max_rsp = (ir.num_rsp == 0) ? 255 : ir.num_rsp; ++ ++ /* cache_dump can't sleep. Therefore we allocate temp buffer and then ++ * copy it to the user space. ++ */ ++ if (!(buf = kmalloc(sizeof(inquiry_info) * max_rsp, GFP_KERNEL))) { ++ err = -ENOMEM; ++ goto done; ++ } ++ ++ hci_dev_lock_bh(hdev); ++ ir.num_rsp = inquiry_cache_dump(hdev, max_rsp, buf); ++ hci_dev_unlock_bh(hdev); ++ ++ BT_DBG("num_rsp %d", ir.num_rsp); ++ ++ if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) + ++ (sizeof(inquiry_info) * ir.num_rsp))) { ++ copy_to_user(ptr, &ir, sizeof(ir)); ++ ptr += sizeof(ir); ++ copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp); ++ } else ++ err = -EFAULT; ++ ++ kfree(buf); ++ ++done: ++ hci_dev_put(hdev); ++ return err; ++} ++ ++/* ---- HCI ioctl helpers ---- */ ++ ++int hci_dev_open(__u16 dev) ++{ ++ struct hci_dev *hdev; ++ int ret = 0; ++ ++ if (!(hdev = hci_dev_get(dev))) ++ return -ENODEV; ++ ++ BT_DBG("%s %p", hdev->name, hdev); ++ ++ hci_req_lock(hdev); ++ ++ if (test_bit(HCI_UP, &hdev->flags)) { ++ ret = -EALREADY; ++ goto done; ++ } ++ ++ if (hdev->open(hdev)) { ++ ret = -EIO; ++ goto done; ++ } ++ ++ if (!test_bit(HCI_RAW, &hdev->flags)) { ++ atomic_set(&hdev->cmd_cnt, 1); ++ set_bit(HCI_INIT, &hdev->flags); ++ ++ //__hci_request(hdev, hci_reset_req, 0, HZ); ++ ret = __hci_request(hdev, hci_init_req, 0, HCI_INIT_TIMEOUT); ++ ++ clear_bit(HCI_INIT, &hdev->flags); ++ } ++ ++ if (!ret) { ++ set_bit(HCI_UP, &hdev->flags); ++ hci_notify(hdev, HCI_DEV_UP); ++ } else { ++ /* Init failed, cleanup */ ++ tasklet_kill(&hdev->rx_task); ++ tasklet_kill(&hdev->tx_task); ++ tasklet_kill(&hdev->cmd_task); ++ ++ skb_queue_purge(&hdev->cmd_q); ++ skb_queue_purge(&hdev->rx_q); ++ ++ if (hdev->flush) ++ hdev->flush(hdev); ++ ++ if (hdev->sent_cmd) { ++ kfree_skb(hdev->sent_cmd); ++ hdev->sent_cmd = NULL; ++ } ++ ++ hdev->close(hdev); ++ hdev->flags = 0; ++ } ++ ++done: ++ hci_req_unlock(hdev); ++ hci_dev_put(hdev); ++ return ret; ++} ++ ++static int hci_dev_do_close(struct hci_dev *hdev) ++{ ++ BT_DBG("%s %p", hdev->name, hdev); ++ ++ hci_req_cancel(hdev, ENODEV); ++ hci_req_lock(hdev); ++ ++ if (!test_and_clear_bit(HCI_UP, &hdev->flags)) { ++ hci_req_unlock(hdev); ++ return 0; ++ } ++ ++ /* Kill RX and TX tasks */ ++ tasklet_kill(&hdev->rx_task); ++ tasklet_kill(&hdev->tx_task); ++ ++ hci_dev_lock_bh(hdev); ++ inquiry_cache_flush(hdev); ++ hci_conn_hash_flush(hdev); ++ hci_dev_unlock_bh(hdev); ++ + hci_notify(hdev, HCI_DEV_DOWN); + + if (hdev->flush) +@@ -586,9 +548,9 @@ + /* Reset device */ + skb_queue_purge(&hdev->cmd_q); + atomic_set(&hdev->cmd_cnt, 1); +- hdev->flags |= HCI_INIT; +- __hci_request(hdev, hci_reset_req, 0, HZ); +- hdev->flags &= ~HCI_INIT; ++ set_bit(HCI_INIT, &hdev->flags); ++ __hci_request(hdev, hci_reset_req, 0, HZ/4); ++ clear_bit(HCI_INIT, &hdev->flags); + + /* Kill cmd task */ + tasklet_kill(&hdev->cmd_task); +@@ -605,17 +567,28 @@ + } + + /* After this point our queues are empty +- * and no tasks are scheduled. +- */ ++ * and no tasks are scheduled. */ + hdev->close(hdev); + +-done: +- hci_req_unlock(hdev); +- hci_dev_put(hdev); ++ /* Clear flags */ ++ hdev->flags = 0; + ++ hci_req_unlock(hdev); + return 0; + } + ++int hci_dev_close(__u16 dev) ++{ ++ struct hci_dev *hdev; ++ int err; ++ ++ if (!(hdev = hci_dev_get(dev))) ++ return -ENODEV; ++ err = hci_dev_do_close(hdev); ++ hci_dev_put(hdev); ++ return err; ++} ++ + int hci_dev_reset(__u16 dev) + { + struct hci_dev *hdev; +@@ -627,16 +600,17 @@ + hci_req_lock(hdev); + tasklet_disable(&hdev->tx_task); + +- if (!(hdev->flags & HCI_UP)) ++ if (!test_bit(HCI_UP, &hdev->flags)) + goto done; + + /* Drop queues */ + skb_queue_purge(&hdev->rx_q); + skb_queue_purge(&hdev->cmd_q); + +- inquiry_cache_flush(&hdev->inq_cache); +- ++ hci_dev_lock_bh(hdev); ++ inquiry_cache_flush(hdev); + hci_conn_hash_flush(hdev); ++ hci_dev_unlock_bh(hdev); + + if (hdev->flush) + hdev->flush(hdev); +@@ -650,7 +624,6 @@ + tasklet_enable(&hdev->tx_task); + hci_req_unlock(hdev); + hci_dev_put(hdev); +- + return ret; + } + +@@ -669,30 +642,11 @@ + return ret; + } + +-int hci_dev_setauth(unsigned long arg) +-{ +- struct hci_dev *hdev; +- struct hci_dev_req dr; +- int ret = 0; +- +- if (copy_from_user(&dr, (void *) arg, sizeof(dr))) +- return -EFAULT; +- +- if (!(hdev = hci_dev_get(dr.dev_id))) +- return -ENODEV; +- +- ret = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT); +- +- hci_dev_put(hdev); +- +- return ret; +-} +- +-int hci_dev_setscan(unsigned long arg) ++int hci_dev_cmd(unsigned int cmd, unsigned long arg) + { + struct hci_dev *hdev; + struct hci_dev_req dr; +- int ret = 0; ++ int err = 0; + + if (copy_from_user(&dr, (void *) arg, sizeof(dr))) + return -EFAULT; +@@ -700,75 +654,105 @@ + if (!(hdev = hci_dev_get(dr.dev_id))) + return -ENODEV; + +- ret = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT); +- +- hci_dev_put(hdev); ++ switch (cmd) { ++ case HCISETAUTH: ++ err = hci_request(hdev, hci_auth_req, dr.dev_opt, HCI_INIT_TIMEOUT); ++ break; + +- return ret; +-} ++ case HCISETENCRYPT: ++ if (!lmp_encrypt_capable(hdev)) { ++ err = -EOPNOTSUPP; ++ break; ++ } + +-int hci_dev_setptype(unsigned long arg) +-{ +- struct hci_dev *hdev; +- struct hci_dev_req dr; +- int ret = 0; ++ if (!test_bit(HCI_AUTH, &hdev->flags)) { ++ /* Auth must be enabled first */ ++ err = hci_request(hdev, hci_auth_req, ++ dr.dev_opt, HCI_INIT_TIMEOUT); ++ if (err) ++ break; ++ } ++ ++ err = hci_request(hdev, hci_encrypt_req, ++ dr.dev_opt, HCI_INIT_TIMEOUT); ++ break; ++ ++ case HCISETSCAN: ++ err = hci_request(hdev, hci_scan_req, dr.dev_opt, HCI_INIT_TIMEOUT); ++ break; ++ ++ case HCISETPTYPE: ++ hdev->pkt_type = (__u16) dr.dev_opt; ++ break; ++ ++ case HCISETLINKPOL: ++ hdev->link_policy = (__u16) dr.dev_opt; ++ break; + +- if (copy_from_user(&dr, (void *) arg, sizeof(dr))) +- return -EFAULT; ++ case HCISETLINKMODE: ++ hdev->link_mode = ((__u16) dr.dev_opt) & (HCI_LM_MASTER | HCI_LM_ACCEPT); ++ break; + +- if (!(hdev = hci_dev_get(dr.dev_id))) +- return -ENODEV; ++ case HCISETACLMTU: ++ hdev->acl_mtu = *((__u16 *)&dr.dev_opt + 1); ++ hdev->acl_pkts = *((__u16 *)&dr.dev_opt + 0); ++ break; + +- hdev->pkt_type = (__u16) dr.dev_opt; ++ case HCISETSCOMTU: ++ hdev->sco_mtu = *((__u16 *)&dr.dev_opt + 1); ++ hdev->sco_pkts = *((__u16 *)&dr.dev_opt + 0); ++ break; + ++ default: ++ err = -EINVAL; ++ break; ++ } + hci_dev_put(hdev); +- +- return ret; ++ return err; + } + +-int hci_dev_list(unsigned long arg) ++int hci_get_dev_list(unsigned long arg) + { + struct hci_dev_list_req *dl; + struct hci_dev_req *dr; +- struct hci_dev *hdev; +- int i, n, size; ++ struct list_head *p; ++ int n = 0, size, err; + __u16 dev_num; + + if (get_user(dev_num, (__u16 *) arg)) + return -EFAULT; + +- /* Avoid long loop, overflow */ +- if (dev_num > 2048) ++ if (!dev_num || dev_num > (PAGE_SIZE * 2) / sizeof(*dr)) + return -EINVAL; +- +- size = dev_num * sizeof(struct hci_dev_req) + sizeof(__u16); + +- if (verify_area(VERIFY_WRITE, (void *) arg, size)) +- return -EFAULT; ++ size = sizeof(*dl) + dev_num * sizeof(*dr); + + if (!(dl = kmalloc(size, GFP_KERNEL))) + return -ENOMEM; ++ + dr = dl->dev_req; + +- spin_lock_bh(&hdev_list_lock); +- for (i = 0, n = 0; i < HCI_MAX_DEV && n < dev_num; i++) { +- if ((hdev = hdev_list[i])) { +- (dr + n)->dev_id = hdev->id; +- (dr + n)->dev_opt = hdev->flags; +- n++; +- } ++ read_lock_bh(&hdev_list_lock); ++ list_for_each(p, &hdev_list) { ++ struct hci_dev *hdev; ++ hdev = list_entry(p, struct hci_dev, list); ++ (dr + n)->dev_id = hdev->id; ++ (dr + n)->dev_opt = hdev->flags; ++ if (++n >= dev_num) ++ break; + } +- spin_unlock_bh(&hdev_list_lock); ++ read_unlock_bh(&hdev_list_lock); + + dl->dev_num = n; +- size = n * sizeof(struct hci_dev_req) + sizeof(__u16); ++ size = sizeof(*dl) + n * sizeof(*dr); + +- copy_to_user((void *) arg, dl, size); ++ err = copy_to_user((void *) arg, dl, size); ++ kfree(dl); + +- return 0; ++ return err ? -EFAULT : 0; + } + +-int hci_dev_info(unsigned long arg) ++int hci_get_dev_info(unsigned long arg) + { + struct hci_dev *hdev; + struct hci_dev_info di; +@@ -786,9 +770,11 @@ + di.flags = hdev->flags; + di.pkt_type = hdev->pkt_type; + di.acl_mtu = hdev->acl_mtu; +- di.acl_max = hdev->acl_max; ++ di.acl_pkts = hdev->acl_pkts; + di.sco_mtu = hdev->sco_mtu; +- di.sco_max = hdev->sco_max; ++ di.sco_pkts = hdev->sco_pkts; ++ di.link_policy = hdev->link_policy; ++ di.link_mode = hdev->link_mode; + + memcpy(&di.stat, &hdev->stat, sizeof(di.stat)); + memcpy(&di.features, &hdev->features, sizeof(di.features)); +@@ -801,258 +787,168 @@ + return err; + } + +-__u32 hci_dev_setmode(struct hci_dev *hdev, __u32 mode) +-{ +- __u32 omode = hdev->flags & HCI_MODE_MASK; +- +- hdev->flags &= ~HCI_MODE_MASK; +- hdev->flags |= (mode & HCI_MODE_MASK); + +- return omode; +-} ++/* ---- Interface to HCI drivers ---- */ + +-__u32 hci_dev_getmode(struct hci_dev *hdev) ++/* Register HCI device */ ++int hci_register_dev(struct hci_dev *hdev) + { +- return hdev->flags & HCI_MODE_MASK; +-} ++ struct list_head *head = &hdev_list, *p; ++ int id = 0; + +-int hci_conn_list(unsigned long arg) +-{ +- struct hci_conn_list_req req, *cl; +- struct hci_conn_info *ci; +- struct hci_dev *hdev; +- struct list_head *p; +- int n = 0, size; ++ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type); + +- if (copy_from_user(&req, (void *) arg, sizeof(req))) +- return -EFAULT; ++ if (!hdev->open || !hdev->close || !hdev->destruct) ++ return -EINVAL; + +- if (!(hdev = hci_dev_get(req.dev_id))) +- return -ENODEV; ++ write_lock_bh(&hdev_list_lock); + +- /* Set a limit to avoid overlong loops, and also numeric overflow - AC */ +- if(req.conn_num < 2048) +- return -EINVAL; ++ /* Find first available device id */ ++ list_for_each(p, &hdev_list) { ++ if (list_entry(p, struct hci_dev, list)->id != id) ++ break; ++ head = p; id++; ++ } + +- size = req.conn_num * sizeof(struct hci_conn_info) + sizeof(req); ++ sprintf(hdev->name, "hci%d", id); ++ hdev->id = id; ++ list_add(&hdev->list, head); + +- if (!(cl = kmalloc(size, GFP_KERNEL))) +- return -ENOMEM; +- ci = cl->conn_info; +- +- local_bh_disable(); +- conn_hash_lock(&hdev->conn_hash); +- list_for_each(p, &hdev->conn_hash.list) { +- register struct hci_conn *c; +- c = list_entry(p, struct hci_conn, list); ++ atomic_set(&hdev->refcnt, 1); ++ spin_lock_init(&hdev->lock); ++ ++ hdev->flags = 0; ++ hdev->pkt_type = (HCI_DM1 | HCI_DH1 | HCI_HV1); ++ hdev->link_mode = (HCI_LM_ACCEPT); + +- (ci + n)->handle = c->handle; +- bacpy(&(ci + n)->bdaddr, &c->dst); +- n++; +- } +- conn_hash_unlock(&hdev->conn_hash); +- local_bh_enable(); +- +- cl->dev_id = hdev->id; +- cl->conn_num = n; +- size = n * sizeof(struct hci_conn_info) + sizeof(req); ++ tasklet_init(&hdev->cmd_task, hci_cmd_task,(unsigned long) hdev); ++ tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev); ++ tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev); + +- hci_dev_put(hdev); ++ skb_queue_head_init(&hdev->rx_q); ++ skb_queue_head_init(&hdev->cmd_q); ++ skb_queue_head_init(&hdev->raw_q); + +- if(copy_to_user((void *) arg, cl, size)) +- return -EFAULT; +- return 0; +-} ++ init_waitqueue_head(&hdev->req_wait_q); ++ init_MUTEX(&hdev->req_lock); + +-int hci_inquiry(unsigned long arg) +-{ +- struct inquiry_cache *cache; +- struct hci_inquiry_req ir; +- struct hci_dev *hdev; +- int err = 0, do_inquiry = 0; +- long timeo; +- __u8 *buf, *ptr; ++ inquiry_cache_init(hdev); + +- ptr = (void *) arg; +- if (copy_from_user(&ir, ptr, sizeof(ir))) +- return -EFAULT; ++ conn_hash_init(hdev); + +- if (!(hdev = hci_dev_get(ir.dev_id))) +- return -ENODEV; ++ memset(&hdev->stat, 0, sizeof(struct hci_dev_stats)); + +- cache = &hdev->inq_cache; ++ atomic_set(&hdev->promisc, 0); + +- inquiry_cache_lock(cache); +- if (inquiry_cache_age(cache) > INQUIRY_CACHE_AGE_MAX || ir.flags & IREQ_CACHE_FLUSH) { +- inquiry_cache_flush(cache); +- do_inquiry = 1; +- } +- inquiry_cache_unlock(cache); ++ MOD_INC_USE_COUNT; + +- /* Limit inquiry time, also avoid overflows */ ++ write_unlock_bh(&hdev_list_lock); + +- if(ir.length > 2048 || ir.num_rsp > 2048) +- { +- err = -EINVAL; +- goto done; +- } ++ hci_notify(hdev, HCI_DEV_REG); ++ hci_run_hotplug(hdev->name, "register"); + +- timeo = ir.length * 2 * HZ; +- if (do_inquiry && (err = hci_request(hdev, hci_inq_req, (unsigned long)&ir, timeo)) < 0) +- goto done; ++ return id; ++} + +- /* cache_dump can't sleep. Therefore we allocate temp buffer and then +- * copy it to the user space. +- */ +- if (!(buf = kmalloc(sizeof(inquiry_info) * ir.num_rsp, GFP_KERNEL))) { +- err = -ENOMEM; +- goto done; +- } +- ir.num_rsp = inquiry_cache_dump(cache, ir.num_rsp, buf); ++/* Unregister HCI device */ ++int hci_unregister_dev(struct hci_dev *hdev) ++{ ++ BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type); + +- DBG("num_rsp %d", ir.num_rsp); ++ write_lock_bh(&hdev_list_lock); ++ list_del(&hdev->list); ++ write_unlock_bh(&hdev_list_lock); + +- if (!verify_area(VERIFY_WRITE, ptr, sizeof(ir) + (sizeof(inquiry_info) * ir.num_rsp))) { +- copy_to_user(ptr, &ir, sizeof(ir)); +- ptr += sizeof(ir); +- copy_to_user(ptr, buf, sizeof(inquiry_info) * ir.num_rsp); +- } else +- err = -EFAULT; ++ hci_dev_do_close(hdev); + +- kfree(buf); ++ hci_notify(hdev, HCI_DEV_UNREG); ++ hci_run_hotplug(hdev->name, "unregister"); + +-done: + hci_dev_put(hdev); + +- return err; ++ MOD_DEC_USE_COUNT; ++ return 0; + } + +-/* Interface to HCI drivers */ +- +-/* Register HCI device */ +-int hci_register_dev(struct hci_dev *hdev) ++/* Suspend HCI device */ ++int hci_suspend_dev(struct hci_dev *hdev) + { +- int i; ++ hci_notify(hdev, HCI_DEV_SUSPEND); ++ hci_run_hotplug(hdev->name, "suspend"); ++ return 0; ++} + +- DBG("%p name %s type %d", hdev, hdev->name, hdev->type); ++/* Resume HCI device */ ++int hci_resume_dev(struct hci_dev *hdev) ++{ ++ hci_notify(hdev, HCI_DEV_RESUME); ++ hci_run_hotplug(hdev->name, "resume"); ++ return 0; ++} + +- /* Find free slot */ +- spin_lock_bh(&hdev_list_lock); +- for (i = 0; i < HCI_MAX_DEV; i++) { +- if (!hdev_list[i]) { +- hdev_list[i] = hdev; +- +- sprintf(hdev->name, "hci%d", i); +- atomic_set(&hdev->refcnt, 0); +- hdev->id = i; +- hdev->flags = HCI_NORMAL; +- +- hdev->pkt_type = (HCI_DM1 | HCI_DH1); +- +- tasklet_init(&hdev->cmd_task, hci_cmd_task, (unsigned long) hdev); +- tasklet_init(&hdev->rx_task, hci_rx_task, (unsigned long) hdev); +- tasklet_init(&hdev->tx_task, hci_tx_task, (unsigned long) hdev); +- +- skb_queue_head_init(&hdev->rx_q); +- skb_queue_head_init(&hdev->cmd_q); +- skb_queue_head_init(&hdev->raw_q); +- +- init_waitqueue_head(&hdev->req_wait_q); +- init_MUTEX(&hdev->req_lock); +- +- inquiry_cache_init(&hdev->inq_cache); +- +- conn_hash_init(&hdev->conn_hash); +- +- memset(&hdev->stat, 0, sizeof(struct hci_dev_stats)); +- +- hci_notify(hdev, HCI_DEV_REG); +- +- MOD_INC_USE_COUNT; +- break; +- } +- } +- spin_unlock_bh(&hdev_list_lock); +- +- return (i == HCI_MAX_DEV) ? -1 : i; +-} +- +-/* Unregister HCI device */ +-int hci_unregister_dev(struct hci_dev *hdev) ++/* Receive frame from HCI drivers */ ++int hci_recv_frame(struct sk_buff *skb) + { +- int i; +- +- DBG("%p name %s type %d", hdev, hdev->name, hdev->type); +- +- if (hdev->flags & HCI_UP) +- hci_dev_close(hdev->id); ++ struct hci_dev *hdev = (struct hci_dev *) skb->dev; + +- /* Find device slot */ +- spin_lock(&hdev_list_lock); +- for (i = 0; i < HCI_MAX_DEV; i++) { +- if (hdev_list[i] == hdev) { +- hdev_list[i] = NULL; +- MOD_DEC_USE_COUNT; +- break; +- } ++ if (!hdev || (!test_bit(HCI_UP, &hdev->flags) && ++ !test_bit(HCI_INIT, &hdev->flags)) ) { ++ kfree_skb(skb); ++ return -1; + } +- spin_unlock(&hdev_list_lock); + +- hci_notify(hdev, HCI_DEV_UNREG); +- +- /* Sleep while device is in use */ +- while (atomic_read(&hdev->refcnt)) { +- int sleep_cnt = 100; ++ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); + +- DBG("%s sleeping on lock %d", hdev->name, atomic_read(&hdev->refcnt)); ++ /* Incomming skb */ ++ bluez_cb(skb)->incomming = 1; + +- sleep_on_timeout(&hdev->req_wait_q, HZ*10); +- if (!(--sleep_cnt)) +- break; +- } ++ /* Time stamp */ ++ do_gettimeofday(&skb->stamp); + ++ /* Queue frame for rx task */ ++ skb_queue_tail(&hdev->rx_q, skb); ++ hci_sched_rx(hdev); + return 0; + } + +-/* Interface to upper protocols */ ++/* ---- Interface to upper protocols ---- */ + + /* Register/Unregister protocols. +- * hci_task_lock is used to ensure that no tasks are running. +- */ +-int hci_register_proto(struct hci_proto *hproto) ++ * hci_task_lock is used to ensure that no tasks are running. */ ++int hci_register_proto(struct hci_proto *hp) + { + int err = 0; + +- DBG("%p name %s", hproto, hproto->name); ++ BT_DBG("%p name %s id %d", hp, hp->name, hp->id); + +- if (hproto->id >= HCI_MAX_PROTO) ++ if (hp->id >= HCI_MAX_PROTO) + return -EINVAL; + + write_lock_bh(&hci_task_lock); + +- if (!hproto_list[hproto->id]) +- hproto_list[hproto->id] = hproto; ++ if (!hci_proto[hp->id]) ++ hci_proto[hp->id] = hp; + else +- err = -1; ++ err = -EEXIST; + + write_unlock_bh(&hci_task_lock); + + return err; + } + +-int hci_unregister_proto(struct hci_proto *hproto) ++int hci_unregister_proto(struct hci_proto *hp) + { + int err = 0; + +- DBG("%p name %s", hproto, hproto->name); ++ BT_DBG("%p name %s id %d", hp, hp->name, hp->id); + +- if (hproto->id > HCI_MAX_PROTO) ++ if (hp->id >= HCI_MAX_PROTO) + return -EINVAL; + + write_lock_bh(&hci_task_lock); + +- if (hproto_list[hproto->id]) +- hproto_list[hproto->id] = NULL; ++ if (hci_proto[hp->id]) ++ hci_proto[hp->id] = NULL; + else + err = -ENOENT; + +@@ -1070,10 +966,14 @@ + return -ENODEV; + } + +- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); ++ BT_DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); ++ ++ if (atomic_read(&hdev->promisc)) { ++ /* Time stamp */ ++ do_gettimeofday(&skb->stamp); + +- if (hdev->flags & HCI_SOCK) + hci_send_to_sock(hdev, skb); ++ } + + /* Get rid of skb owner, prior to sending to the driver. */ + skb_orphan(skb); +@@ -1081,128 +981,6 @@ + return hdev->send(skb); + } + +-/* Connection scheduler */ +-static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote) +-{ +- struct conn_hash *h = &hdev->conn_hash; +- struct hci_conn *conn = NULL; +- int num = 0, min = 0xffff; +- struct list_head *p; +- +- conn_hash_lock(h); +- list_for_each(p, &h->list) { +- register struct hci_conn *c; +- +- c = list_entry(p, struct hci_conn, list); +- +- if (c->type != type || skb_queue_empty(&c->data_q)) +- continue; +- num++; +- +- if (c->sent < min) { +- min = c->sent; +- conn = c; +- } +- } +- conn_hash_unlock(h); +- +- if (conn) { +- int q = hdev->acl_cnt / num; +- *quote = q ? q : 1; +- } else +- *quote = 0; +- +- DBG("conn %p quote %d", conn, *quote); +- +- return conn; +-} +- +-static inline void hci_sched_acl(struct hci_dev *hdev) +-{ +- struct hci_conn *conn; +- struct sk_buff *skb; +- int quote; +- +- DBG("%s", hdev->name); +- +- while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, "e))) { +- while (quote && (skb = skb_dequeue(&conn->data_q))) { +- DBG("skb %p len %d", skb, skb->len); +- +- hci_send_frame(skb); +- +- conn->sent++; +- hdev->acl_cnt--; +- quote--; +- } +- } +-} +- +-/* Schedule SCO */ +-static inline void hci_sched_sco(struct hci_dev *hdev) +-{ +- /* FIXME: For now we queue SCO packets to the raw queue +- +- while (hdev->sco_cnt && (skb = skb_dequeue(&conn->data_q))) { +- hci_send_frame(skb); +- conn->sco_sent++; +- hdev->sco_cnt--; +- } +- */ +-} +- +-/* Get data from the previously sent command */ +-static void * hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf) +-{ +- hci_command_hdr *hc; +- +- if (!hdev->sent_cmd) +- return NULL; +- +- hc = (void *) hdev->sent_cmd->data; +- +- if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf))) +- return NULL; +- +- DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf); +- +- return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE; +-} +- +-/* Send raw HCI frame */ +-int hci_send_raw(struct sk_buff *skb) +-{ +- struct hci_dev *hdev = (struct hci_dev *) skb->dev; +- +- if (!hdev) { +- kfree_skb(skb); +- return -ENODEV; +- } +- +- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); +- +- if (hdev->flags & HCI_NORMAL) { +- /* Queue frame according it's type */ +- switch (skb->pkt_type) { +- case HCI_COMMAND_PKT: +- skb_queue_tail(&hdev->cmd_q, skb); +- hci_sched_cmd(hdev); +- return 0; +- +- case HCI_ACLDATA_PKT: +- case HCI_SCODATA_PKT: +- /* FIXME: +- * Check header here and queue to apropriate connection. +- */ +- break; +- } +- } +- +- skb_queue_tail(&hdev->raw_q, skb); +- hci_sched_tx(hdev); +- return 0; +-} +- + /* Send HCI command */ + int hci_send_cmd(struct hci_dev *hdev, __u16 ogf, __u16 ocf, __u32 plen, void *param) + { +@@ -1210,10 +988,10 @@ + hci_command_hdr *hc; + struct sk_buff *skb; + +- DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen); ++ BT_DBG("%s ogf 0x%x ocf 0x%x plen %d", hdev->name, ogf, ocf, plen); + + if (!(skb = bluez_skb_alloc(len, GFP_ATOMIC))) { +- ERR("%s Can't allocate memory for HCI command", hdev->name); ++ BT_ERR("%s Can't allocate memory for HCI command", hdev->name); + return -ENOMEM; + } + +@@ -1224,7 +1002,7 @@ + if (plen) + memcpy(skb_put(skb, plen), param, plen); + +- DBG("skb len %d", skb->len); ++ BT_DBG("skb len %d", skb->len); + + skb->pkt_type = HCI_COMMAND_PKT; + skb->dev = (void *) hdev; +@@ -1234,10 +1012,28 @@ + return 0; + } + ++/* Get data from the previously sent command */ ++void *hci_sent_cmd_data(struct hci_dev *hdev, __u16 ogf, __u16 ocf) ++{ ++ hci_command_hdr *hc; ++ ++ if (!hdev->sent_cmd) ++ return NULL; ++ ++ hc = (void *) hdev->sent_cmd->data; ++ ++ if (hc->opcode != __cpu_to_le16(cmd_opcode_pack(ogf, ocf))) ++ return NULL; ++ ++ BT_DBG("%s ogf 0x%x ocf 0x%x", hdev->name, ogf, ocf); ++ ++ return hdev->sent_cmd->data + HCI_COMMAND_HDR_SIZE; ++} ++ + /* Send ACL data */ + static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags) + { +- int len = skb->len; ++ int len = skb->len; + hci_acl_hdr *ah; + + ah = (hci_acl_hdr *) skb_push(skb, HCI_ACL_HDR_SIZE); +@@ -1252,7 +1048,7 @@ + struct hci_dev *hdev = conn->hdev; + struct sk_buff *list; + +- DBG("%s conn %p flags 0x%x", hdev->name, conn, flags); ++ BT_DBG("%s conn %p flags 0x%x", hdev->name, conn, flags); + + skb->dev = (void *) hdev; + skb->pkt_type = HCI_ACLDATA_PKT; +@@ -1260,12 +1056,12 @@ + + if (!(list = skb_shinfo(skb)->frag_list)) { + /* Non fragmented */ +- DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len); ++ BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len); + + skb_queue_tail(&conn->data_q, skb); + } else { + /* Fragmented */ +- DBG("%s frag %p len %d", hdev->name, skb, skb->len); ++ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len); + + skb_shinfo(skb)->frag_list = NULL; + +@@ -1280,7 +1076,7 @@ + skb->pkt_type = HCI_ACLDATA_PKT; + hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT); + +- DBG("%s frag %p len %d", hdev->name, skb, skb->len); ++ BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len); + + __skb_queue_tail(&conn->data_q, skb); + } while (list); +@@ -1298,7 +1094,7 @@ + struct hci_dev *hdev = conn->hdev; + hci_sco_hdr hs; + +- DBG("%s len %d", hdev->name, skb->len); ++ BT_DBG("%s len %d", hdev->name, skb->len); + + if (skb->len > hdev->sco_mtu) { + kfree_skb(skb); +@@ -1315,544 +1111,136 @@ + skb->pkt_type = HCI_SCODATA_PKT; + skb_queue_tail(&conn->data_q, skb); + hci_sched_tx(hdev); +- + return 0; + } + +-/* Handle HCI Event packets */ +- +-/* Command Complete OGF LINK_CTL */ +-static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) +-{ +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- default: +- DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Complete OGF LINK_POLICY */ +-static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) +-{ +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- default: +- DBG("%s: Command complete: ogf LINK_POLICY ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Complete OGF HOST_CTL */ +-static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) +-{ +- __u8 status, param; +- void *sent; +- +- +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- case OCF_RESET: +- status = *((__u8 *) skb->data); +- +- hci_req_complete(hdev, status); +- break; +- +- case OCF_SET_EVENT_FLT: +- status = *((__u8 *) skb->data); +- +- if (status) { +- DBG("%s SET_EVENT_FLT failed %d", hdev->name, status); +- } else { +- DBG("%s SET_EVENT_FLT succeseful", hdev->name); +- } +- break; +- +- case OCF_WRITE_AUTH_ENABLE: +- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE))) +- break; +- +- status = *((__u8 *) skb->data); +- param = *((__u8 *) sent); +- +- if (!status) { +- if (param == AUTH_ENABLED) +- hdev->flags |= HCI_AUTH; +- else +- hdev->flags &= ~HCI_AUTH; +- } +- hci_req_complete(hdev, status); +- break; +- +- case OCF_WRITE_CA_TIMEOUT: +- status = *((__u8 *) skb->data); +- +- if (status) { +- DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status); +- } else { +- DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name); +- } +- break; +- +- case OCF_WRITE_PG_TIMEOUT: +- status = *((__u8 *) skb->data); +- +- if (status) { +- DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status); +- } else { +- DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name); +- } +- break; +- +- case OCF_WRITE_SCAN_ENABLE: +- if (!(sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE))) +- break; +- status = *((__u8 *) skb->data); +- param = *((__u8 *) sent); +- +- DBG("param 0x%x", param); +- +- if (!status) { +- switch (param) { +- case IS_ENA_PS_ENA: +- hdev->flags |= HCI_PSCAN | HCI_ISCAN; +- break; +- +- case IS_ENA_PS_DIS: +- hdev->flags &= ~HCI_PSCAN; +- hdev->flags |= HCI_ISCAN; +- break; ++/* ---- HCI TX task (outgoing data) ---- */ + +- case IS_DIS_PS_ENA: +- hdev->flags &= ~HCI_ISCAN; +- hdev->flags |= HCI_PSCAN; +- break; +- +- default: +- hdev->flags &= ~(HCI_ISCAN | HCI_PSCAN); +- break; +- }; +- } +- hci_req_complete(hdev, status); +- break; +- +- default: +- DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Complete OGF INFO_PARAM */ +-static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) ++/* HCI Connection scheduler */ ++static inline struct hci_conn *hci_low_sent(struct hci_dev *hdev, __u8 type, int *quote) + { +- read_local_features_rp *lf; +- read_buffer_size_rp *bs; +- read_bd_addr_rp *ba; +- +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- case OCF_READ_LOCAL_FEATURES: +- lf = (read_local_features_rp *) skb->data; +- +- if (lf->status) { +- DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status); +- break; +- } +- +- memcpy(hdev->features, lf->features, sizeof(hdev->features)); +- +- /* Adjust default settings according to features +- * supported by device. */ +- if (hdev->features[0] & LMP_3SLOT) +- hdev->pkt_type |= (HCI_DM3 | HCI_DH3); +- +- if (hdev->features[0] & LMP_5SLOT) +- hdev->pkt_type |= (HCI_DM5 | HCI_DH5); +- +- DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]); +- +- break; +- +- case OCF_READ_BUFFER_SIZE: +- bs = (read_buffer_size_rp *) skb->data; +- +- if (bs->status) { +- DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status); +- break; +- } +- +- hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu); +- hdev->sco_mtu = bs->sco_mtu; +- hdev->acl_max = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt); +- hdev->sco_max = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt); +- +- DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name, +- hdev->acl_mtu, hdev->sco_mtu, hdev->acl_max, hdev->sco_max); ++ struct conn_hash *h = &hdev->conn_hash; ++ struct hci_conn *conn = NULL; ++ int num = 0, min = ~0; ++ struct list_head *p; + +- break; ++ /* We don't have to lock device here. Connections are always ++ * added and removed with TX task disabled. */ ++ list_for_each(p, &h->list) { ++ struct hci_conn *c; ++ c = list_entry(p, struct hci_conn, list); + +- case OCF_READ_BD_ADDR: +- ba = (read_bd_addr_rp *) skb->data; ++ if (c->type != type || c->state != BT_CONNECTED ++ || skb_queue_empty(&c->data_q)) ++ continue; ++ num++; + +- if (!ba->status) { +- bacpy(&hdev->bdaddr, &ba->bdaddr); +- } else { +- DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status); ++ if (c->sent < min) { ++ min = c->sent; ++ conn = c; + } ++ } + +- hci_req_complete(hdev, ba->status); +- break; ++ if (conn) { ++ int cnt = (type == ACL_LINK ? hdev->acl_cnt : hdev->sco_cnt); ++ int q = cnt / num; ++ *quote = q ? q : 1; ++ } else ++ *quote = 0; + +- default: +- DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf); +- break; +- }; ++ BT_DBG("conn %p quote %d", conn, *quote); ++ return conn; + } + +-/* Command Status OGF LINK_CTL */ +-static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status) ++static inline void hci_acl_tx_to(struct hci_dev *hdev) + { +- struct hci_proto * hp; +- +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- case OCF_CREATE_CONN: +- if (status) { +- create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN); +- +- if (!cc) +- break; +- +- DBG("%s Create connection error: status 0x%x %s", hdev->name, +- status, batostr(&cc->bdaddr)); ++ struct conn_hash *h = &hdev->conn_hash; ++ struct list_head *p; ++ struct hci_conn *c; + +- /* Notify upper protocols */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm) { +- tasklet_disable(&hdev->tx_task); +- hp->connect_cfm(hdev, &cc->bdaddr, status, NULL); +- tasklet_enable(&hdev->tx_task); +- } +- } +- break; ++ BT_ERR("%s ACL tx timeout", hdev->name); + +- case OCF_INQUIRY: +- if (status) { +- DBG("%s Inquiry error: status 0x%x", hdev->name, status); +- hci_req_complete(hdev, status); ++ /* Kill stalled connections */ ++ list_for_each(p, &h->list) { ++ c = list_entry(p, struct hci_conn, list); ++ if (c->type == ACL_LINK && c->sent) { ++ BT_ERR("%s killing stalled ACL connection %s", ++ hdev->name, batostr(&c->dst)); ++ hci_acl_disconn(c, 0x13); + } +- break; +- +- default: +- DBG("%s Command status: ogf LINK_CTL ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Status OGF LINK_POLICY */ +-static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status) +-{ +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- default: +- DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Status OGF HOST_CTL */ +-static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status) +-{ +- DBG("%s ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- default: +- DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Command Status OGF INFO_PARAM */ +-static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status) +-{ +- DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf); +- +- switch (ocf) { +- default: +- DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf); +- break; +- }; +-} +- +-/* Inquiry Complete */ +-static void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) +-{ +- __u8 status = *((__u8 *) skb->data); +- +- DBG("%s status %d", hdev->name, status); +- +- hci_req_complete(hdev, status); ++ } + } + +-/* Inquiry Result */ +-static void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) ++static inline void hci_sched_acl(struct hci_dev *hdev) + { +- inquiry_info *info = (inquiry_info *) (skb->data + 1); +- int num_rsp = *((__u8 *) skb->data); +- +- DBG("%s num_rsp %d", hdev->name, num_rsp); ++ struct hci_conn *conn; ++ struct sk_buff *skb; ++ int quote; + +- for (; num_rsp; num_rsp--) +- inquiry_cache_update(&hdev->inq_cache, info++); +-} ++ BT_DBG("%s", hdev->name); + +-/* Connect Request */ +-static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb) +-{ +- evt_conn_request *cr = (evt_conn_request *) skb->data; +- struct hci_proto *hp; +- accept_conn_req_cp ac; +- int accept = 0; ++ /* ACL tx timeout must be longer than maximum ++ * link supervision timeout (40.9 seconds) */ ++ if (!hdev->acl_cnt && (jiffies - hdev->acl_last_tx) > (HZ * 45)) ++ hci_acl_tx_to(hdev); + +- DBG("%s Connection request: %s type 0x%x", hdev->name, batostr(&cr->bdaddr), cr->link_type); ++ while (hdev->acl_cnt && (conn = hci_low_sent(hdev, ACL_LINK, "e))) { ++ while (quote-- && (skb = skb_dequeue(&conn->data_q))) { ++ BT_DBG("skb %p len %d", skb, skb->len); ++ hci_send_frame(skb); ++ hdev->acl_last_tx = jiffies; + +- /* Notify upper protocols */ +- if (cr->link_type == ACL_LINK) { +- /* ACL link notify L2CAP */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_ind) { +- tasklet_disable(&hdev->tx_task); +- accept = hp->connect_ind(hdev, &cr->bdaddr); +- tasklet_enable(&hdev->tx_task); ++ hdev->acl_cnt--; ++ conn->sent++; + } +- } else { +- /* SCO link (no notification) */ +- /* FIXME: Should be accept it here or let the requester (app) accept it ? */ +- accept = 1; +- } +- +- if (accept) { +- /* Connection accepted by upper layer */ +- bacpy(&ac.bdaddr, &cr->bdaddr); +- ac.role = 0x01; /* Remain slave */ +- hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ, ACCEPT_CONN_REQ_CP_SIZE, &ac); +- } else { +- /* Connection rejected by upper layer */ +- /* FIXME: +- * Should we use HCI reject here ? +- */ +- return; + } + } + +-/* Connect Complete */ +-static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) ++/* Schedule SCO */ ++static inline void hci_sched_sco(struct hci_dev *hdev) + { +- evt_conn_complete *cc = (evt_conn_complete *) skb->data; +- struct hci_conn *conn = NULL; +- struct hci_proto *hp; +- +- DBG("%s", hdev->name); +- +- tasklet_disable(&hdev->tx_task); +- +- if (!cc->status) +- conn = hci_conn_add(hdev, __le16_to_cpu(cc->handle), cc->link_type, &cc->bdaddr); ++ struct hci_conn *conn; ++ struct sk_buff *skb; ++ int quote; + +- /* Notify upper protocols */ +- if (cc->link_type == ACL_LINK) { +- /* ACL link notify L2CAP layer */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->connect_cfm) +- hp->connect_cfm(hdev, &cc->bdaddr, cc->status, conn); +- } else { +- /* SCO link (no notification) */ +- } ++ BT_DBG("%s", hdev->name); + +- tasklet_enable(&hdev->tx_task); +-} ++ while (hdev->sco_cnt && (conn = hci_low_sent(hdev, SCO_LINK, "e))) { ++ while (quote-- && (skb = skb_dequeue(&conn->data_q))) { ++ BT_DBG("skb %p len %d", skb, skb->len); ++ hci_send_frame(skb); + +-/* Disconnect Complete */ +-static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) +-{ +- evt_disconn_complete *dc = (evt_disconn_complete *) skb->data; +- struct hci_conn *conn = NULL; +- struct hci_proto *hp; +- __u16 handle = __le16_to_cpu(dc->handle); +- +- DBG("%s", hdev->name); +- +- if (!dc->status && (conn = conn_hash_lookup(&hdev->conn_hash, handle))) { +- tasklet_disable(&hdev->tx_task); +- +- /* Notify upper protocols */ +- if (conn->type == ACL_LINK) { +- /* ACL link notify L2CAP layer */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->disconn_ind) +- hp->disconn_ind(conn, dc->reason); +- } else { +- /* SCO link (no notification) */ ++ conn->sent++; ++ if (conn->sent == ~0) ++ conn->sent = 0; + } +- +- hci_conn_del(hdev, conn); +- +- tasklet_enable(&hdev->tx_task); + } + } + +-/* Number of completed packets */ +-static void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb) ++static void hci_tx_task(unsigned long arg) + { +- evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data; +- __u16 *ptr; +- int i; +- +- skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE); +- +- DBG("%s num_hndl %d", hdev->name, nc->num_hndl); ++ struct hci_dev *hdev = (struct hci_dev *) arg; ++ struct sk_buff *skb; + +- if (skb->len < nc->num_hndl * 4) { +- DBG("%s bad parameters", hdev->name); +- return; +- } ++ read_lock(&hci_task_lock); + +- tasklet_disable(&hdev->tx_task); ++ BT_DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt); + +- for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) { +- struct hci_conn *conn; +- __u16 handle, count; ++ /* Schedule queues and send stuff to HCI driver */ + +- handle = __le16_to_cpu(get_unaligned(ptr++)); +- count = __le16_to_cpu(get_unaligned(ptr++)); ++ hci_sched_acl(hdev); + +- hdev->acl_cnt += count; ++ hci_sched_sco(hdev); + +- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle))) +- conn->sent -= count; +- } ++ /* Send next queued raw (unknown type) packet */ ++ while ((skb = skb_dequeue(&hdev->raw_q))) ++ hci_send_frame(skb); + +- tasklet_enable(&hdev->tx_task); +- +- hci_sched_tx(hdev); ++ read_unlock(&hci_task_lock); + } + +-static inline void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb) +-{ +- hci_event_hdr *he = (hci_event_hdr *) skb->data; +- evt_cmd_status *cs; +- evt_cmd_complete *ec; +- __u16 opcode, ocf, ogf; +- +- skb_pull(skb, HCI_EVENT_HDR_SIZE); +- +- DBG("%s evt 0x%x", hdev->name, he->evt); +- +- switch (he->evt) { +- case EVT_NUM_COMP_PKTS: +- hci_num_comp_pkts_evt(hdev, skb); +- break; +- +- case EVT_INQUIRY_COMPLETE: +- hci_inquiry_complete_evt(hdev, skb); +- break; + +- case EVT_INQUIRY_RESULT: +- hci_inquiry_result_evt(hdev, skb); +- break; +- +- case EVT_CONN_REQUEST: +- hci_conn_request_evt(hdev, skb); +- break; +- +- case EVT_CONN_COMPLETE: +- hci_conn_complete_evt(hdev, skb); +- break; +- +- case EVT_DISCONN_COMPLETE: +- hci_disconn_complete_evt(hdev, skb); +- break; +- +- case EVT_CMD_STATUS: +- cs = (evt_cmd_status *) skb->data; +- skb_pull(skb, EVT_CMD_STATUS_SIZE); +- +- opcode = __le16_to_cpu(cs->opcode); +- ogf = cmd_opcode_ogf(opcode); +- ocf = cmd_opcode_ocf(opcode); +- +- switch (ogf) { +- case OGF_INFO_PARAM: +- hci_cs_info_param(hdev, ocf, cs->status); +- break; +- +- case OGF_HOST_CTL: +- hci_cs_host_ctl(hdev, ocf, cs->status); +- break; +- +- case OGF_LINK_CTL: +- hci_cs_link_ctl(hdev, ocf, cs->status); +- break; +- +- case OGF_LINK_POLICY: +- hci_cs_link_policy(hdev, ocf, cs->status); +- break; +- +- default: +- DBG("%s Command Status OGF %x", hdev->name, ogf); +- break; +- }; +- +- if (cs->ncmd) { +- atomic_set(&hdev->cmd_cnt, 1); +- if (!skb_queue_empty(&hdev->cmd_q)) +- hci_sched_cmd(hdev); +- } +- break; +- +- case EVT_CMD_COMPLETE: +- ec = (evt_cmd_complete *) skb->data; +- skb_pull(skb, EVT_CMD_COMPLETE_SIZE); +- +- opcode = __le16_to_cpu(ec->opcode); +- ogf = cmd_opcode_ogf(opcode); +- ocf = cmd_opcode_ocf(opcode); +- +- switch (ogf) { +- case OGF_INFO_PARAM: +- hci_cc_info_param(hdev, ocf, skb); +- break; +- +- case OGF_HOST_CTL: +- hci_cc_host_ctl(hdev, ocf, skb); +- break; +- +- case OGF_LINK_CTL: +- hci_cc_link_ctl(hdev, ocf, skb); +- break; +- +- case OGF_LINK_POLICY: +- hci_cc_link_policy(hdev, ocf, skb); +- break; +- +- default: +- DBG("%s Command Completed OGF %x", hdev->name, ogf); +- break; +- }; +- +- if (ec->ncmd) { +- atomic_set(&hdev->cmd_cnt, 1); +- if (!skb_queue_empty(&hdev->cmd_q)) +- hci_sched_cmd(hdev); +- } +- break; +- }; +- +- kfree_skb(skb); +- hdev->stat.evt_rx++; +-} ++/* ----- HCI RX task (incomming data proccessing) ----- */ + + /* ACL data packet */ + static inline void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb) +@@ -1867,51 +1255,86 @@ + flags = acl_flags(handle); + handle = acl_handle(handle); + +- DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags); ++ BT_DBG("%s len %d handle 0x%x flags 0x%x", hdev->name, skb->len, handle, flags); ++ ++ hdev->stat.acl_rx++; + +- if ((conn = conn_hash_lookup(&hdev->conn_hash, handle))) { ++ hci_dev_lock(hdev); ++ conn = conn_hash_lookup_handle(hdev, handle); ++ hci_dev_unlock(hdev); ++ ++ if (conn) { + register struct hci_proto *hp; + + /* Send to upper protocol */ +- if ((hp = GET_HPROTO(HCI_PROTO_L2CAP)) && hp->recv_acldata) { ++ if ((hp = hci_proto[HCI_PROTO_L2CAP]) && hp->recv_acldata) { + hp->recv_acldata(conn, skb, flags); +- goto sent; ++ return; + } + } else { +- ERR("%s ACL packet for unknown connection handle %d", hdev->name, handle); ++ BT_ERR("%s ACL packet for unknown connection handle %d", ++ hdev->name, handle); + } + + kfree_skb(skb); +-sent: +- hdev->stat.acl_rx++; + } + + /* SCO data packet */ + static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb) + { +- DBG("%s len %d", hdev->name, skb->len); ++ hci_sco_hdr *sh = (void *) skb->data; ++ struct hci_conn *conn; ++ __u16 handle; ++ ++ skb_pull(skb, HCI_SCO_HDR_SIZE); ++ ++ handle = __le16_to_cpu(sh->handle); ++ ++ BT_DBG("%s len %d handle 0x%x", hdev->name, skb->len, handle); + +- kfree_skb(skb); + hdev->stat.sco_rx++; ++ ++ hci_dev_lock(hdev); ++ conn = conn_hash_lookup_handle(hdev, handle); ++ hci_dev_unlock(hdev); ++ ++ if (conn) { ++ register struct hci_proto *hp; ++ ++ /* Send to upper protocol */ ++ if ((hp = hci_proto[HCI_PROTO_SCO]) && hp->recv_scodata) { ++ hp->recv_scodata(conn, skb); ++ return; ++ } ++ } else { ++ BT_ERR("%s SCO packet for unknown connection handle %d", ++ hdev->name, handle); ++ } ++ ++ kfree_skb(skb); + } + +-/* ----- HCI tasks ----- */ + void hci_rx_task(unsigned long arg) + { + struct hci_dev *hdev = (struct hci_dev *) arg; + struct sk_buff *skb; + +- DBG("%s", hdev->name); ++ BT_DBG("%s", hdev->name); + + read_lock(&hci_task_lock); + + while ((skb = skb_dequeue(&hdev->rx_q))) { +- if (hdev->flags & HCI_SOCK) { ++ if (atomic_read(&hdev->promisc)) { + /* Send copy to the sockets */ + hci_send_to_sock(hdev, skb); + } + +- if (hdev->flags & HCI_INIT) { ++ if (test_bit(HCI_RAW, &hdev->flags)) { ++ kfree_skb(skb); ++ continue; ++ } ++ ++ if (test_bit(HCI_INIT, &hdev->flags)) { + /* Don't process data packets in this states. */ + switch (skb->pkt_type) { + case HCI_ACLDATA_PKT: +@@ -1921,64 +1344,43 @@ + }; + } + +- if (hdev->flags & HCI_NORMAL) { +- /* Process frame */ +- switch (skb->pkt_type) { +- case HCI_EVENT_PKT: +- hci_event_packet(hdev, skb); +- break; ++ /* Process frame */ ++ switch (skb->pkt_type) { ++ case HCI_EVENT_PKT: ++ hci_event_packet(hdev, skb); ++ break; + +- case HCI_ACLDATA_PKT: +- DBG("%s ACL data packet", hdev->name); +- hci_acldata_packet(hdev, skb); +- break; ++ case HCI_ACLDATA_PKT: ++ BT_DBG("%s ACL data packet", hdev->name); ++ hci_acldata_packet(hdev, skb); ++ break; + +- case HCI_SCODATA_PKT: +- DBG("%s SCO data packet", hdev->name); +- hci_scodata_packet(hdev, skb); +- break; ++ case HCI_SCODATA_PKT: ++ BT_DBG("%s SCO data packet", hdev->name); ++ hci_scodata_packet(hdev, skb); ++ break; + +- default: +- kfree_skb(skb); +- break; +- }; +- } else { ++ default: + kfree_skb(skb); ++ break; + } + } + + read_unlock(&hci_task_lock); + } + +-static void hci_tx_task(unsigned long arg) +-{ +- struct hci_dev *hdev = (struct hci_dev *) arg; +- struct sk_buff *skb; +- +- read_lock(&hci_task_lock); +- +- DBG("%s acl %d sco %d", hdev->name, hdev->acl_cnt, hdev->sco_cnt); +- +- /* Schedule queues and send stuff to HCI driver */ +- +- hci_sched_acl(hdev); +- +- hci_sched_sco(hdev); +- +- /* Send next queued raw (unknown type) packet */ +- while ((skb = skb_dequeue(&hdev->raw_q))) +- hci_send_frame(skb); +- +- read_unlock(&hci_task_lock); +-} +- + static void hci_cmd_task(unsigned long arg) + { + struct hci_dev *hdev = (struct hci_dev *) arg; + struct sk_buff *skb; + +- DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt)); ++ BT_DBG("%s cmd %d", hdev->name, atomic_read(&hdev->cmd_cnt)); + ++ if (!atomic_read(&hdev->cmd_cnt) && (jiffies - hdev->cmd_last_tx) > HZ) { ++ BT_ERR("%s command tx timeout", hdev->name); ++ atomic_set(&hdev->cmd_cnt, 1); ++ } ++ + /* Send queued commands */ + if (atomic_read(&hdev->cmd_cnt) && (skb = skb_dequeue(&hdev->cmd_q))) { + if (hdev->sent_cmd) +@@ -1987,6 +1389,7 @@ + if ((hdev->sent_cmd = skb_clone(skb, GFP_ATOMIC))) { + atomic_dec(&hdev->cmd_cnt); + hci_send_frame(skb); ++ hdev->cmd_last_tx = jiffies; + } else { + skb_queue_head(&hdev->cmd_q, skb); + hci_sched_cmd(hdev); +@@ -1994,33 +1397,10 @@ + } + } + +-/* Receive frame from HCI drivers */ +-int hci_recv_frame(struct sk_buff *skb) +-{ +- struct hci_dev *hdev = (struct hci_dev *) skb->dev; +- +- if (!hdev || !(hdev->flags & (HCI_UP | HCI_INIT))) { +- kfree_skb(skb); +- return -1; +- } +- +- DBG("%s type %d len %d", hdev->name, skb->pkt_type, skb->len); +- +- /* Incomming skb */ +- bluez_cb(skb)->incomming = 1; +- +- /* Queue frame for rx task */ +- skb_queue_tail(&hdev->rx_q, skb); +- hci_sched_rx(hdev); +- +- return 0; +-} ++/* ---- Initialization ---- */ + + int hci_core_init(void) + { +- /* Init locks */ +- spin_lock_init(&hdev_list_lock); +- + return 0; + } + +@@ -2028,5 +1408,3 @@ + { + return 0; + } +- +-MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/hci_event.c linux-2.4.18-mh15/net/bluetooth/hci_event.c +--- linux-2.4.18/net/bluetooth/hci_event.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hci_event.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,910 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * HCI Events. ++ * ++ * $Id: hci_event.c,v 1.4 2002/07/27 18:14:38 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/init.h> ++#include <linux/skbuff.h> ++#include <linux/interrupt.h> ++#include <linux/notifier.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++#ifndef HCI_CORE_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++/* Handle HCI Event packets */ ++ ++/* Command Complete OGF LINK_CTL */ ++static void hci_cc_link_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) ++{ ++ __u8 status; ++ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ case OCF_INQUIRY_CANCEL: ++ status = *((__u8 *) skb->data); ++ ++ if (status) { ++ BT_DBG("%s Inquiry cancel error: status 0x%x", hdev->name, status); ++ } else { ++ clear_bit(HCI_INQUIRY, &hdev->flags); ++ hci_req_complete(hdev, status); ++ } ++ break; ++ ++ default: ++ BT_DBG("%s Command complete: ogf LINK_CTL ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Complete OGF LINK_POLICY */ ++static void hci_cc_link_policy(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) ++{ ++ struct hci_conn *conn; ++ role_discovery_rp *rd; ++ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ case OCF_ROLE_DISCOVERY: ++ rd = (void *) skb->data; ++ ++ if (rd->status) ++ break; ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_handle(hdev, __le16_to_cpu(rd->handle)); ++ if (conn) { ++ if (rd->role) ++ conn->link_mode &= ~HCI_LM_MASTER; ++ else ++ conn->link_mode |= HCI_LM_MASTER; ++ } ++ ++ hci_dev_unlock(hdev); ++ break; ++ ++ default: ++ BT_DBG("%s: Command complete: ogf LINK_POLICY ocf %x", ++ hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Complete OGF HOST_CTL */ ++static void hci_cc_host_ctl(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) ++{ ++ __u8 status, param; ++ void *sent; ++ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ case OCF_RESET: ++ status = *((__u8 *) skb->data); ++ hci_req_complete(hdev, status); ++ break; ++ ++ case OCF_SET_EVENT_FLT: ++ status = *((__u8 *) skb->data); ++ if (status) { ++ BT_DBG("%s SET_EVENT_FLT failed %d", hdev->name, status); ++ } else { ++ BT_DBG("%s SET_EVENT_FLT succeseful", hdev->name); ++ } ++ break; ++ ++ case OCF_WRITE_AUTH_ENABLE: ++ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_AUTH_ENABLE); ++ if (!sent) ++ break; ++ ++ status = *((__u8 *) skb->data); ++ param = *((__u8 *) sent); ++ ++ if (!status) { ++ if (param == AUTH_ENABLED) ++ set_bit(HCI_AUTH, &hdev->flags); ++ else ++ clear_bit(HCI_AUTH, &hdev->flags); ++ } ++ hci_req_complete(hdev, status); ++ break; ++ ++ case OCF_WRITE_ENCRYPT_MODE: ++ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_ENCRYPT_MODE); ++ if (!sent) ++ break; ++ ++ status = *((__u8 *) skb->data); ++ param = *((__u8 *) sent); ++ ++ if (!status) { ++ if (param) ++ set_bit(HCI_ENCRYPT, &hdev->flags); ++ else ++ clear_bit(HCI_ENCRYPT, &hdev->flags); ++ } ++ hci_req_complete(hdev, status); ++ break; ++ ++ case OCF_WRITE_CA_TIMEOUT: ++ status = *((__u8 *) skb->data); ++ if (status) { ++ BT_DBG("%s OCF_WRITE_CA_TIMEOUT failed %d", hdev->name, status); ++ } else { ++ BT_DBG("%s OCF_WRITE_CA_TIMEOUT succeseful", hdev->name); ++ } ++ break; ++ ++ case OCF_WRITE_PG_TIMEOUT: ++ status = *((__u8 *) skb->data); ++ if (status) { ++ BT_DBG("%s OCF_WRITE_PG_TIMEOUT failed %d", hdev->name, status); ++ } else { ++ BT_DBG("%s: OCF_WRITE_PG_TIMEOUT succeseful", hdev->name); ++ } ++ break; ++ ++ case OCF_WRITE_SCAN_ENABLE: ++ sent = hci_sent_cmd_data(hdev, OGF_HOST_CTL, OCF_WRITE_SCAN_ENABLE); ++ if (!sent) ++ break; ++ status = *((__u8 *) skb->data); ++ param = *((__u8 *) sent); ++ ++ BT_DBG("param 0x%x", param); ++ ++ if (!status) { ++ clear_bit(HCI_PSCAN, &hdev->flags); ++ clear_bit(HCI_ISCAN, &hdev->flags); ++ if (param & SCAN_INQUIRY) ++ set_bit(HCI_ISCAN, &hdev->flags); ++ ++ if (param & SCAN_PAGE) ++ set_bit(HCI_PSCAN, &hdev->flags); ++ } ++ hci_req_complete(hdev, status); ++ break; ++ ++ case OCF_HOST_BUFFER_SIZE: ++ status = *((__u8 *) skb->data); ++ if (status) { ++ BT_DBG("%s OCF_BUFFER_SIZE failed %d", hdev->name, status); ++ hci_req_complete(hdev, status); ++ } ++ break; ++ ++ default: ++ BT_DBG("%s Command complete: ogf HOST_CTL ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Complete OGF INFO_PARAM */ ++static void hci_cc_info_param(struct hci_dev *hdev, __u16 ocf, struct sk_buff *skb) ++{ ++ read_local_features_rp *lf; ++ read_buffer_size_rp *bs; ++ read_bd_addr_rp *ba; ++ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ case OCF_READ_LOCAL_FEATURES: ++ lf = (read_local_features_rp *) skb->data; ++ ++ if (lf->status) { ++ BT_DBG("%s READ_LOCAL_FEATURES failed %d", hdev->name, lf->status); ++ break; ++ } ++ ++ memcpy(hdev->features, lf->features, sizeof(hdev->features)); ++ ++ /* Adjust default settings according to features ++ * supported by device. */ ++ if (hdev->features[0] & LMP_3SLOT) ++ hdev->pkt_type |= (HCI_DM3 | HCI_DH3); ++ ++ if (hdev->features[0] & LMP_5SLOT) ++ hdev->pkt_type |= (HCI_DM5 | HCI_DH5); ++ ++ if (hdev->features[1] & LMP_HV2) ++ hdev->pkt_type |= (HCI_HV2); ++ ++ if (hdev->features[1] & LMP_HV3) ++ hdev->pkt_type |= (HCI_HV3); ++ ++ BT_DBG("%s: features 0x%x 0x%x 0x%x", hdev->name, lf->features[0], lf->features[1], lf->features[2]); ++ ++ break; ++ ++ case OCF_READ_BUFFER_SIZE: ++ bs = (read_buffer_size_rp *) skb->data; ++ ++ if (bs->status) { ++ BT_DBG("%s READ_BUFFER_SIZE failed %d", hdev->name, bs->status); ++ hci_req_complete(hdev, bs->status); ++ break; ++ } ++ ++ hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu); ++ hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64; ++ hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt); ++ hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt); ++ ++ BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name, ++ hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts); ++ break; ++ ++ case OCF_READ_BD_ADDR: ++ ba = (read_bd_addr_rp *) skb->data; ++ ++ if (!ba->status) { ++ bacpy(&hdev->bdaddr, &ba->bdaddr); ++ } else { ++ BT_DBG("%s: READ_BD_ADDR failed %d", hdev->name, ba->status); ++ } ++ ++ hci_req_complete(hdev, ba->status); ++ break; ++ ++ default: ++ BT_DBG("%s Command complete: ogf INFO_PARAM ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Status OGF LINK_CTL */ ++static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status) ++{ ++ struct hci_conn *conn; ++ create_conn_cp *cc = hci_sent_cmd_data(hdev, OGF_LINK_CTL, OCF_CREATE_CONN); ++ ++ if (!cc) ++ return; ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &cc->bdaddr); ++ ++ BT_DBG("%s status 0x%x bdaddr %s conn %p", hdev->name, ++ status, batostr(&cc->bdaddr), conn); ++ ++ if (status) { ++ if (conn && conn->state == BT_CONNECT) { ++ conn->state = BT_CLOSED; ++ hci_proto_connect_cfm(conn, status); ++ hci_conn_del(conn); ++ } ++ } else { ++ if (!conn) { ++ conn = hci_conn_add(hdev, ACL_LINK, &cc->bdaddr); ++ if (conn) { ++ conn->out = 1; ++ conn->link_mode |= HCI_LM_MASTER; ++ } else ++ BT_ERR("No memmory for new connection"); ++ } ++ } ++ ++ hci_dev_unlock(hdev); ++} ++ ++static void hci_cs_link_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status) ++{ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ case OCF_CREATE_CONN: ++ hci_cs_create_conn(hdev, status); ++ break; ++ ++ case OCF_ADD_SCO: ++ if (status) { ++ struct hci_conn *acl, *sco; ++ add_sco_cp *cp = hci_sent_cmd_data(hdev, ++ OGF_LINK_CTL, OCF_ADD_SCO); ++ __u16 handle; ++ ++ if (!cp) ++ break; ++ ++ handle = __le16_to_cpu(cp->handle); ++ ++ BT_DBG("%s Add SCO error: handle %d status 0x%x", hdev->name, handle, status); ++ ++ hci_dev_lock(hdev); ++ ++ acl = conn_hash_lookup_handle(hdev, handle); ++ if (acl && (sco = acl->link)) { ++ sco->state = BT_CLOSED; ++ hci_proto_connect_cfm(sco, status); ++ hci_conn_del(sco); ++ } ++ ++ hci_dev_unlock(hdev); ++ } ++ break; ++ ++ case OCF_INQUIRY: ++ if (status) { ++ BT_DBG("%s Inquiry error: status 0x%x", hdev->name, status); ++ hci_req_complete(hdev, status); ++ } else { ++ set_bit(HCI_INQUIRY, &hdev->flags); ++ } ++ break; ++ ++ default: ++ BT_DBG("%s Command status: ogf LINK_CTL ocf %x status %d", ++ hdev->name, ocf, status); ++ break; ++ }; ++} ++ ++/* Command Status OGF LINK_POLICY */ ++static void hci_cs_link_policy(struct hci_dev *hdev, __u16 ocf, __u8 status) ++{ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ default: ++ BT_DBG("%s Command status: ogf HOST_POLICY ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Status OGF HOST_CTL */ ++static void hci_cs_host_ctl(struct hci_dev *hdev, __u16 ocf, __u8 status) ++{ ++ BT_DBG("%s ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ default: ++ BT_DBG("%s Command status: ogf HOST_CTL ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Command Status OGF INFO_PARAM */ ++static void hci_cs_info_param(struct hci_dev *hdev, __u16 ocf, __u8 status) ++{ ++ BT_DBG("%s: hci_cs_info_param: ocf 0x%x", hdev->name, ocf); ++ ++ switch (ocf) { ++ default: ++ BT_DBG("%s Command status: ogf INFO_PARAM ocf %x", hdev->name, ocf); ++ break; ++ }; ++} ++ ++/* Inquiry Complete */ ++static inline void hci_inquiry_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ __u8 status = *((__u8 *) skb->data); ++ ++ BT_DBG("%s status %d", hdev->name, status); ++ ++ clear_bit(HCI_INQUIRY, &hdev->flags); ++ hci_req_complete(hdev, status); ++} ++ ++/* Inquiry Result */ ++static inline void hci_inquiry_result_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ inquiry_info *info = (inquiry_info *) (skb->data + 1); ++ int num_rsp = *((__u8 *) skb->data); ++ ++ BT_DBG("%s num_rsp %d", hdev->name, num_rsp); ++ ++ hci_dev_lock(hdev); ++ for (; num_rsp; num_rsp--) ++ inquiry_cache_update(hdev, info++); ++ hci_dev_unlock(hdev); ++} ++ ++/* Inquiry Result With RSSI */ ++static inline void hci_inquiry_result_with_rssi_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ inquiry_info_with_rssi *info = (inquiry_info_with_rssi *) (skb->data + 1); ++ int num_rsp = *((__u8 *) skb->data); ++ ++ BT_DBG("%s num_rsp %d", hdev->name, num_rsp); ++ ++ hci_dev_lock(hdev); ++ for (; num_rsp; num_rsp--) { ++ inquiry_info tmp; ++ bacpy(&tmp.bdaddr, &info->bdaddr); ++ tmp.pscan_rep_mode = info->pscan_rep_mode; ++ tmp.pscan_period_mode = info->pscan_period_mode; ++ tmp.pscan_mode = 0x00; ++ memcpy(tmp.dev_class, &info->dev_class, 3); ++ tmp.clock_offset = info->clock_offset; ++ info++; ++ inquiry_cache_update(hdev, &tmp); ++ } ++ hci_dev_unlock(hdev); ++} ++ ++/* Connect Request */ ++static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_conn_request *cr = (evt_conn_request *) skb->data; ++ int mask = hdev->link_mode; ++ ++ BT_DBG("%s Connection request: %s type 0x%x", hdev->name, ++ batostr(&cr->bdaddr), cr->link_type); ++ ++ mask |= hci_proto_connect_ind(hdev, &cr->bdaddr, cr->link_type); ++ ++ if (mask & HCI_LM_ACCEPT) { ++ /* Connection accepted */ ++ struct hci_conn *conn; ++ accept_conn_req_cp ac; ++ ++ hci_dev_lock(hdev); ++ conn = conn_hash_lookup_ba(hdev, cr->link_type, &cr->bdaddr); ++ if (!conn) { ++ if (!(conn = hci_conn_add(hdev, cr->link_type, &cr->bdaddr))) { ++ BT_ERR("No memmory for new connection"); ++ hci_dev_unlock(hdev); ++ return; ++ } ++ } ++ conn->state = BT_CONNECT; ++ hci_dev_unlock(hdev); ++ ++ bacpy(&ac.bdaddr, &cr->bdaddr); ++ ++ if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER)) ++ ac.role = 0x00; /* Become master */ ++ else ++ ac.role = 0x01; /* Remain slave */ ++ ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ACCEPT_CONN_REQ, ++ ACCEPT_CONN_REQ_CP_SIZE, &ac); ++ } else { ++ /* Connection rejected */ ++ reject_conn_req_cp rc; ++ ++ bacpy(&rc.bdaddr, &cr->bdaddr); ++ rc.reason = 0x0f; ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_REJECT_CONN_REQ, ++ REJECT_CONN_REQ_CP_SIZE, &rc); ++ } ++} ++ ++/* Connect Complete */ ++static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_conn_complete *cc = (evt_conn_complete *) skb->data; ++ struct hci_conn *conn = NULL; ++ ++ BT_DBG("%s", hdev->name); ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_ba(hdev, cc->link_type, &cc->bdaddr); ++ if (!conn) { ++ hci_dev_unlock(hdev); ++ return; ++ } ++ ++ if (!cc->status) { ++ conn->handle = __le16_to_cpu(cc->handle); ++ conn->state = BT_CONNECTED; ++ ++ if (test_bit(HCI_AUTH, &hdev->flags)) ++ conn->link_mode |= HCI_LM_AUTH; ++ ++ if (test_bit(HCI_ENCRYPT, &hdev->flags)) ++ conn->link_mode |= HCI_LM_ENCRYPT; ++ ++ ++ /* Set link policy */ ++ if (conn->type == ACL_LINK && hdev->link_policy) { ++ write_link_policy_cp lp; ++ lp.handle = cc->handle; ++ lp.policy = __cpu_to_le16(hdev->link_policy); ++ hci_send_cmd(hdev, OGF_LINK_POLICY, OCF_WRITE_LINK_POLICY, ++ WRITE_LINK_POLICY_CP_SIZE, &lp); ++ } ++ ++ /* Set packet type for incomming connection */ ++ if (!conn->out) { ++ change_conn_ptype_cp cp; ++ cp.handle = cc->handle; ++ cp.pkt_type = (conn->type == ACL_LINK) ? ++ __cpu_to_le16(hdev->pkt_type & ACL_PTYPE_MASK): ++ __cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK); ++ ++ hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CHANGE_CONN_PTYPE, ++ CHANGE_CONN_PTYPE_CP_SIZE, &cp); ++ } ++ } else ++ conn->state = BT_CLOSED; ++ ++ if (conn->type == ACL_LINK) { ++ struct hci_conn *sco = conn->link; ++ if (sco) { ++ if (!cc->status) ++ hci_add_sco(sco, conn->handle); ++ else { ++ hci_proto_connect_cfm(sco, cc->status); ++ hci_conn_del(sco); ++ } ++ } ++ } ++ ++ hci_proto_connect_cfm(conn, cc->status); ++ if (cc->status) ++ hci_conn_del(conn); ++ ++ hci_dev_unlock(hdev); ++} ++ ++/* Disconnect Complete */ ++static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_disconn_complete *dc = (evt_disconn_complete *) skb->data; ++ struct hci_conn *conn = NULL; ++ __u16 handle = __le16_to_cpu(dc->handle); ++ ++ BT_DBG("%s status %d", hdev->name, dc->status); ++ ++ if (dc->status) ++ return; ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_handle(hdev, handle); ++ if (conn) { ++ conn->state = BT_CLOSED; ++ hci_proto_disconn_ind(conn, dc->reason); ++ hci_conn_del(conn); ++ } ++ ++ hci_dev_unlock(hdev); ++} ++ ++/* Number of completed packets */ ++static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_num_comp_pkts *nc = (evt_num_comp_pkts *) skb->data; ++ __u16 *ptr; ++ int i; ++ ++ skb_pull(skb, EVT_NUM_COMP_PKTS_SIZE); ++ ++ BT_DBG("%s num_hndl %d", hdev->name, nc->num_hndl); ++ ++ if (skb->len < nc->num_hndl * 4) { ++ BT_DBG("%s bad parameters", hdev->name); ++ return; ++ } ++ ++ tasklet_disable(&hdev->tx_task); ++ ++ for (i = 0, ptr = (__u16 *) skb->data; i < nc->num_hndl; i++) { ++ struct hci_conn *conn; ++ __u16 handle, count; ++ ++ handle = __le16_to_cpu(get_unaligned(ptr++)); ++ count = __le16_to_cpu(get_unaligned(ptr++)); ++ ++ conn = conn_hash_lookup_handle(hdev, handle); ++ if (conn) { ++ conn->sent -= count; ++ ++ if (conn->type == SCO_LINK) { ++ if ((hdev->sco_cnt += count) > hdev->sco_pkts) ++ hdev->sco_cnt = hdev->sco_pkts; ++ } else { ++ if ((hdev->acl_cnt += count) > hdev->acl_pkts) ++ hdev->acl_cnt = hdev->acl_pkts; ++ } ++ } ++ } ++ hci_sched_tx(hdev); ++ ++ tasklet_enable(&hdev->tx_task); ++} ++ ++/* Role Change */ ++static inline void hci_role_change_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_role_change *rc = (evt_role_change *) skb->data; ++ struct hci_conn *conn = NULL; ++ ++ BT_DBG("%s status %d", hdev->name, rc->status); ++ ++ if (rc->status) ++ return; ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_ba(hdev, ACL_LINK, &rc->bdaddr); ++ if (conn) { ++ if (rc->role) ++ conn->link_mode &= ~HCI_LM_MASTER; ++ else ++ conn->link_mode |= HCI_LM_MASTER; ++ } ++ ++ hci_dev_unlock(hdev); ++} ++ ++/* Authentication Complete */ ++static inline void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_auth_complete *ac = (evt_auth_complete *) skb->data; ++ struct hci_conn *conn = NULL; ++ __u16 handle = __le16_to_cpu(ac->handle); ++ ++ BT_DBG("%s status %d", hdev->name, ac->status); ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_handle(hdev, handle); ++ if (conn) { ++ if (!ac->status) ++ conn->link_mode |= HCI_LM_AUTH; ++ clear_bit(HCI_CONN_AUTH_PEND, &conn->pend); ++ ++ hci_proto_auth_cfm(conn, ac->status); ++ ++ if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend)) { ++ if (!ac->status) { ++ set_conn_encrypt_cp ce; ++ ce.handle = __cpu_to_le16(conn->handle); ++ ce.encrypt = 1; ++ hci_send_cmd(conn->hdev, OGF_LINK_CTL, ++ OCF_SET_CONN_ENCRYPT, ++ SET_CONN_ENCRYPT_CP_SIZE, &ce); ++ } else { ++ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend); ++ hci_proto_encrypt_cfm(conn, ac->status); ++ } ++ } ++ } ++ ++ hci_dev_unlock(hdev); ++} ++ ++/* Encryption Change */ ++static inline void hci_encrypt_change_evt(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ evt_encrypt_change *ec = (evt_encrypt_change *) skb->data; ++ struct hci_conn *conn = NULL; ++ __u16 handle = __le16_to_cpu(ec->handle); ++ ++ BT_DBG("%s status %d", hdev->name, ec->status); ++ ++ hci_dev_lock(hdev); ++ ++ conn = conn_hash_lookup_handle(hdev, handle); ++ if (conn) { ++ if (!ec->status) { ++ if (ec->encrypt) ++ conn->link_mode |= HCI_LM_ENCRYPT; ++ else ++ conn->link_mode &= ~HCI_LM_ENCRYPT; ++ } ++ clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend); ++ ++ hci_proto_encrypt_cfm(conn, ec->status); ++ } ++ ++ hci_dev_unlock(hdev); ++} ++ ++void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb) ++{ ++ hci_event_hdr *he = (hci_event_hdr *) skb->data; ++ evt_cmd_status *cs; ++ evt_cmd_complete *ec; ++ __u16 opcode, ocf, ogf; ++ ++ skb_pull(skb, HCI_EVENT_HDR_SIZE); ++ ++ BT_DBG("%s evt 0x%x", hdev->name, he->evt); ++ ++ switch (he->evt) { ++ case EVT_NUM_COMP_PKTS: ++ hci_num_comp_pkts_evt(hdev, skb); ++ break; ++ ++ case EVT_INQUIRY_COMPLETE: ++ hci_inquiry_complete_evt(hdev, skb); ++ break; ++ ++ case EVT_INQUIRY_RESULT: ++ hci_inquiry_result_evt(hdev, skb); ++ break; ++ ++ case EVT_INQUIRY_RESULT_WITH_RSSI: ++ hci_inquiry_result_with_rssi_evt(hdev, skb); ++ break; ++ ++ case EVT_CONN_REQUEST: ++ hci_conn_request_evt(hdev, skb); ++ break; ++ ++ case EVT_CONN_COMPLETE: ++ hci_conn_complete_evt(hdev, skb); ++ break; ++ ++ case EVT_DISCONN_COMPLETE: ++ hci_disconn_complete_evt(hdev, skb); ++ break; ++ ++ case EVT_ROLE_CHANGE: ++ hci_role_change_evt(hdev, skb); ++ break; ++ ++ case EVT_AUTH_COMPLETE: ++ hci_auth_complete_evt(hdev, skb); ++ break; ++ ++ case EVT_ENCRYPT_CHANGE: ++ hci_encrypt_change_evt(hdev, skb); ++ break; ++ ++ case EVT_CMD_STATUS: ++ cs = (evt_cmd_status *) skb->data; ++ skb_pull(skb, EVT_CMD_STATUS_SIZE); ++ ++ opcode = __le16_to_cpu(cs->opcode); ++ ogf = cmd_opcode_ogf(opcode); ++ ocf = cmd_opcode_ocf(opcode); ++ ++ switch (ogf) { ++ case OGF_INFO_PARAM: ++ hci_cs_info_param(hdev, ocf, cs->status); ++ break; ++ ++ case OGF_HOST_CTL: ++ hci_cs_host_ctl(hdev, ocf, cs->status); ++ break; ++ ++ case OGF_LINK_CTL: ++ hci_cs_link_ctl(hdev, ocf, cs->status); ++ break; ++ ++ case OGF_LINK_POLICY: ++ hci_cs_link_policy(hdev, ocf, cs->status); ++ break; ++ ++ default: ++ BT_DBG("%s Command Status OGF %x", hdev->name, ogf); ++ break; ++ }; ++ ++ if (cs->ncmd) { ++ atomic_set(&hdev->cmd_cnt, 1); ++ if (!skb_queue_empty(&hdev->cmd_q)) ++ hci_sched_cmd(hdev); ++ } ++ break; ++ ++ case EVT_CMD_COMPLETE: ++ ec = (evt_cmd_complete *) skb->data; ++ skb_pull(skb, EVT_CMD_COMPLETE_SIZE); ++ ++ opcode = __le16_to_cpu(ec->opcode); ++ ogf = cmd_opcode_ogf(opcode); ++ ocf = cmd_opcode_ocf(opcode); ++ ++ switch (ogf) { ++ case OGF_INFO_PARAM: ++ hci_cc_info_param(hdev, ocf, skb); ++ break; ++ ++ case OGF_HOST_CTL: ++ hci_cc_host_ctl(hdev, ocf, skb); ++ break; ++ ++ case OGF_LINK_CTL: ++ hci_cc_link_ctl(hdev, ocf, skb); ++ break; ++ ++ case OGF_LINK_POLICY: ++ hci_cc_link_policy(hdev, ocf, skb); ++ break; ++ ++ default: ++ BT_DBG("%s Command Completed OGF %x", hdev->name, ogf); ++ break; ++ }; ++ ++ if (ec->ncmd) { ++ atomic_set(&hdev->cmd_cnt, 1); ++ if (!skb_queue_empty(&hdev->cmd_q)) ++ hci_sched_cmd(hdev); ++ } ++ break; ++ }; ++ ++ kfree_skb(skb); ++ hdev->stat.evt_rx++; ++} ++ ++/* General internal stack event */ ++void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data) ++{ ++ hci_event_hdr *eh; ++ evt_stack_internal *si; ++ struct sk_buff *skb; ++ int size; ++ void *ptr; ++ ++ size = HCI_EVENT_HDR_SIZE + EVT_STACK_INTERNAL_SIZE + dlen; ++ skb = bluez_skb_alloc(size, GFP_ATOMIC); ++ if (!skb) ++ return; ++ ++ ptr = skb_put(skb, size); ++ ++ eh = ptr; ++ eh->evt = EVT_STACK_INTERNAL; ++ eh->plen = EVT_STACK_INTERNAL_SIZE + dlen; ++ ptr += HCI_EVENT_HDR_SIZE; ++ ++ si = ptr; ++ si->type = type; ++ memcpy(si->data, data, dlen); ++ ++ skb->pkt_type = HCI_EVENT_PKT; ++ skb->dev = (void *) hdev; ++ hci_send_to_sock(hdev, skb); ++ kfree_skb(skb); ++} +diff -urN linux-2.4.18/net/bluetooth/hci_sock.c linux-2.4.18-mh15/net/bluetooth/hci_sock.c +--- linux-2.4.18/net/bluetooth/hci_sock.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/hci_sock.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,7 +25,7 @@ + /* + * BlueZ HCI socket layer. + * +- * $Id: hci_sock.c,v 1.9 2001/08/05 06:02:16 maxk Exp $ ++ * $Id: hci_sock.c,v 1.5 2002/07/22 20:32:54 maxk Exp $ + */ + + #include <linux/config.h> +@@ -49,45 +49,54 @@ + + #include <asm/system.h> + #include <asm/uaccess.h> ++#include <asm/unaligned.h> + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> + #include <net/bluetooth/hci_core.h> + + #ifndef HCI_SOCK_DEBUG +-#undef DBG +-#define DBG( A... ) ++#undef BT_DBG ++#define BT_DBG( A... ) + #endif + +-/* HCI socket interface */ ++/* ----- HCI socket interface ----- */ ++ ++/* Security filter */ ++static struct hci_sec_filter hci_sec_filter = { ++ /* Packet types */ ++ 0x10, ++ /* Events */ ++ { 0x1000d9fe, 0x0000300c }, ++ /* Commands */ ++ { ++ { 0x0 }, ++ /* OGF_LINK_CTL */ ++ { 0xbe000006, 0x00000001, 0x0000, 0x00 }, ++ /* OGF_LINK_POLICY */ ++ { 0x00005200, 0x00000000, 0x0000, 0x00 }, ++ /* OGF_HOST_CTL */ ++ { 0xaab00200, 0x2b402aaa, 0x0154, 0x00 }, ++ /* OGF_INFO_PARAM */ ++ { 0x000002be, 0x00000000, 0x0000, 0x00 }, ++ /* OGF_STATUS_PARAM */ ++ { 0x000000ea, 0x00000000, 0x0000, 0x00 } ++ } ++}; + + static struct bluez_sock_list hci_sk_list = { + lock: RW_LOCK_UNLOCKED + }; + +-static struct sock *hci_sock_lookup(struct hci_dev *hdev) +-{ +- struct sock *sk; +- +- read_lock(&hci_sk_list.lock); +- for (sk = hci_sk_list.head; sk; sk = sk->next) { +- if (hci_pi(sk)->hdev == hdev) +- break; +- } +- read_unlock(&hci_sk_list.lock); +- return sk; +-} +- + /* Send frame to RAW socket */ + void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb) + { + struct sock * sk; + +- DBG("hdev %p len %d", hdev, skb->len); ++ BT_DBG("hdev %p len %d", hdev, skb->len); + + read_lock(&hci_sk_list.lock); + for (sk = hci_sk_list.head; sk; sk = sk->next) { +- struct hci_filter *flt; ++ struct hci_filter *flt; + struct sk_buff *nskb; + + if (sk->state != BT_BOUND || hci_pi(sk)->hdev != hdev) +@@ -100,13 +109,19 @@ + /* Apply filter */ + flt = &hci_pi(sk)->filter; + +- if (!test_bit(skb->pkt_type, &flt->type_mask)) ++ if (!hci_test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask)) + continue; + + if (skb->pkt_type == HCI_EVENT_PKT) { +- register int evt = (*(__u8 *)skb->data & 63); ++ register int evt = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS); ++ ++ if (!hci_test_bit(evt, &flt->event_mask)) ++ continue; + +- if (!test_bit(evt, &flt->event_mask)) ++ if (flt->opcode && ((evt == EVT_CMD_COMPLETE && ++ flt->opcode != *(__u16 *)(skb->data + 3)) || ++ (evt == EVT_CMD_STATUS && ++ flt->opcode != *(__u16 *)(skb->data + 4)))) + continue; + } + +@@ -116,8 +131,8 @@ + /* Put type byte before the data */ + memcpy(skb_push(nskb, 1), &nskb->pkt_type, 1); + +- skb_queue_tail(&sk->receive_queue, nskb); +- sk->data_ready(sk, nskb->len); ++ if (sock_queue_rcv_skb(sk, nskb)) ++ kfree_skb(nskb); + } + read_unlock(&hci_sk_list.lock); + } +@@ -127,7 +142,7 @@ + struct sock *sk = sock->sk; + struct hci_dev *hdev = hci_pi(sk)->hdev; + +- DBG("sock %p sk %p", sock, sk); ++ BT_DBG("sock %p sk %p", sock, sk); + + if (!sk) + return 0; +@@ -135,9 +150,7 @@ + bluez_sock_unlink(&hci_sk_list, sk); + + if (hdev) { +- if (!hci_sock_lookup(hdev)) +- hdev->flags &= ~HCI_SOCK; +- ++ atomic_dec(&hdev->promisc); + hci_dev_put(hdev); + } + +@@ -149,24 +162,55 @@ + sock_put(sk); + + MOD_DEC_USE_COUNT; +- + return 0; + } + +-static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++/* Ioctls that require bound socket */ ++static inline int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg) + { +- struct sock *sk = sock->sk; + struct hci_dev *hdev = hci_pi(sk)->hdev; +- __u32 mode; + +- DBG("cmd %x arg %lx", cmd, arg); ++ if (!hdev) ++ return -EBADFD; + + switch (cmd) { +- case HCIGETINFO: +- return hci_dev_info(arg); ++ case HCISETRAW: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; + ++ if (arg) ++ set_bit(HCI_RAW, &hdev->flags); ++ else ++ clear_bit(HCI_RAW, &hdev->flags); ++ ++ return 0; ++ ++ case HCIGETCONNINFO: ++ return hci_get_conn_info(hdev, arg); ++ ++ default: ++ if (hdev->ioctl) ++ return hdev->ioctl(hdev, cmd, arg); ++ return -EINVAL; ++ } ++} ++ ++static int hci_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++{ ++ struct sock *sk = sock->sk; ++ int err; ++ ++ BT_DBG("cmd %x arg %lx", cmd, arg); ++ ++ switch (cmd) { + case HCIGETDEVLIST: +- return hci_dev_list(arg); ++ return hci_get_dev_list(arg); ++ ++ case HCIGETDEVINFO: ++ return hci_get_dev_info(arg); ++ ++ case HCIGETCONNLIST: ++ return hci_get_conn_list(arg); + + case HCIDEVUP: + if (!capable(CAP_NET_ADMIN)) +@@ -183,48 +227,31 @@ + return -EACCES; + return hci_dev_reset(arg); + +- case HCIRESETSTAT: ++ case HCIDEVRESTAT: + if (!capable(CAP_NET_ADMIN)) + return -EACCES; + return hci_dev_reset_stat(arg); + + case HCISETSCAN: +- if (!capable(CAP_NET_ADMIN)) +- return -EACCES; +- return hci_dev_setscan(arg); +- + case HCISETAUTH: +- if (!capable(CAP_NET_ADMIN)) +- return -EACCES; +- return hci_dev_setauth(arg); +- +- case HCISETRAW: +- if (!capable(CAP_NET_ADMIN)) +- return -EACCES; +- +- if (!hdev) +- return -EBADFD; +- +- if (arg) +- mode = HCI_RAW; +- else +- mode = HCI_NORMAL; +- +- return hci_dev_setmode(hdev, mode); +- ++ case HCISETENCRYPT: + case HCISETPTYPE: ++ case HCISETLINKPOL: ++ case HCISETLINKMODE: ++ case HCISETACLMTU: ++ case HCISETSCOMTU: + if (!capable(CAP_NET_ADMIN)) + return -EACCES; +- return hci_dev_setptype(arg); ++ return hci_dev_cmd(cmd, arg); + + case HCIINQUIRY: + return hci_inquiry(arg); + +- case HCIGETCONNLIST: +- return hci_conn_list(arg); +- + default: +- return -EINVAL; ++ lock_sock(sk); ++ err = hci_sock_bound_ioctl(sk, cmd, arg); ++ release_sock(sk); ++ return err; + }; + } + +@@ -233,28 +260,35 @@ + struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr; + struct sock *sk = sock->sk; + struct hci_dev *hdev = NULL; ++ int err = 0; + +- DBG("sock %p sk %p", sock, sk); ++ BT_DBG("sock %p sk %p", sock, sk); + + if (!haddr || haddr->hci_family != AF_BLUETOOTH) + return -EINVAL; + ++ lock_sock(sk); ++ + if (hci_pi(sk)->hdev) { +- /* Already bound */ +- return 0; ++ err = -EALREADY; ++ goto done; + } + + if (haddr->hci_dev != HCI_DEV_NONE) { +- if (!(hdev = hci_dev_get(haddr->hci_dev))) +- return -ENODEV; ++ if (!(hdev = hci_dev_get(haddr->hci_dev))) { ++ err = -ENODEV; ++ goto done; ++ } + +- hdev->flags |= HCI_SOCK; ++ atomic_inc(&hdev->promisc); + } + + hci_pi(sk)->hdev = hdev; + sk->state = BT_BOUND; + +- return 0; ++done: ++ release_sock(sk); ++ return err; + } + + static int hci_sock_getname(struct socket *sock, struct sockaddr *addr, int *addr_len, int peer) +@@ -262,73 +296,44 @@ + struct sockaddr_hci *haddr = (struct sockaddr_hci *) addr; + struct sock *sk = sock->sk; + +- DBG("sock %p sk %p", sock, sk); ++ BT_DBG("sock %p sk %p", sock, sk); ++ ++ lock_sock(sk); + + *addr_len = sizeof(*haddr); + haddr->hci_family = AF_BLUETOOTH; + haddr->hci_dev = hci_pi(sk)->hdev->id; + ++ release_sock(sk); + return 0; + } + +-static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, +- struct scm_cookie *scm) +-{ +- struct sock *sk = sock->sk; +- struct hci_dev *hdev = hci_pi(sk)->hdev; +- struct sk_buff *skb; +- int err; +- +- DBG("sock %p sk %p", sock, sk); +- +- if (msg->msg_flags & MSG_OOB) +- return -EOPNOTSUPP; +- +- if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE)) +- return -EINVAL; +- +- if (!hdev) +- return -EBADFD; +- +- if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err))) +- return err; +- +- if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) { +- kfree_skb(skb); +- return -EFAULT; +- } +- +- skb->dev = (void *) hdev; +- skb->pkt_type = *((unsigned char *) skb->data); +- skb_pull(skb, 1); +- +- /* Send frame to HCI core */ +- hci_send_raw(skb); +- +- return len; +-} +- + static inline void hci_sock_cmsg(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) + { + __u32 mask = hci_pi(sk)->cmsg_mask; + + if (mask & HCI_CMSG_DIR) + put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(int), &bluez_cb(skb)->incomming); ++ ++ if (mask & HCI_CMSG_TSTAMP) ++ put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, sizeof(skb->stamp), &skb->stamp); + } + +-static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, +- int flags, struct scm_cookie *scm) ++static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm) + { + int noblock = flags & MSG_DONTWAIT; + struct sock *sk = sock->sk; + struct sk_buff *skb; + int copied, err; + +- DBG("sock %p sk %p", sock, sk); ++ BT_DBG("sock %p, sk %p", sock, sk); + +- if (flags & (MSG_OOB | MSG_PEEK)) ++ if (flags & (MSG_OOB)) + return -EOPNOTSUPP; + ++ if (sk->state == BT_CLOSED) ++ return 0; ++ + if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) + return err; + +@@ -343,28 +348,107 @@ + skb->h.raw = skb->data; + err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); + +- if (hci_pi(sk)->cmsg_mask) +- hci_sock_cmsg(sk, msg, skb); +- ++ hci_sock_cmsg(sk, msg, skb); ++ + skb_free_datagram(sk, skb); + + return err ? : copied; + } + ++static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, ++ struct scm_cookie *scm) ++{ ++ struct sock *sk = sock->sk; ++ struct hci_dev *hdev; ++ struct sk_buff *skb; ++ int err; ++ ++ BT_DBG("sock %p sk %p", sock, sk); ++ ++ if (msg->msg_flags & MSG_OOB) ++ return -EOPNOTSUPP; ++ ++ if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE)) ++ return -EINVAL; ++ ++ if (len < 4) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ if (!(hdev = hci_pi(sk)->hdev)) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ if (!(skb = bluez_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err))) ++ goto done; ++ ++ if (memcpy_fromiovec(skb_put(skb, len), msg->msg_iov, len)) { ++ err = -EFAULT; ++ goto drop; ++ } ++ ++ skb->pkt_type = *((unsigned char *) skb->data); ++ skb_pull(skb, 1); ++ skb->dev = (void *) hdev; ++ ++ if (skb->pkt_type == HCI_COMMAND_PKT) { ++ u16 opcode = __le16_to_cpu(get_unaligned((u16 *)skb->data)); ++ u16 ogf = cmd_opcode_ogf(opcode); ++ u16 ocf = cmd_opcode_ocf(opcode); ++ ++ if (((ogf > HCI_SFLT_MAX_OGF) || ++ !hci_test_bit(ocf & HCI_FLT_OCF_BITS, &hci_sec_filter.ocf_mask[ogf])) && ++ !capable(CAP_NET_RAW)) { ++ err = -EPERM; ++ goto drop; ++ } ++ ++ if (test_bit(HCI_RAW, &hdev->flags) || (ogf == OGF_VENDOR_CMD)) { ++ skb_queue_tail(&hdev->raw_q, skb); ++ hci_sched_tx(hdev); ++ } else { ++ skb_queue_tail(&hdev->cmd_q, skb); ++ hci_sched_cmd(hdev); ++ } ++ } else { ++ if (!capable(CAP_NET_RAW)) { ++ err = -EPERM; ++ goto drop; ++ } ++ ++ skb_queue_tail(&hdev->raw_q, skb); ++ hci_sched_tx(hdev); ++ } ++ ++ err = len; ++ ++done: ++ release_sock(sk); ++ return err; ++ ++drop: ++ kfree_skb(skb); ++ goto done; ++} ++ + int hci_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int len) + { + struct sock *sk = sock->sk; +- struct hci_filter flt; ++ struct hci_filter flt = { opcode: 0 }; + int err = 0, opt = 0; + +- DBG("sk %p, opt %d", sk, optname); ++ BT_DBG("sk %p, opt %d", sk, optname); + + lock_sock(sk); + + switch (optname) { + case HCI_DATA_DIR: +- if (get_user(opt, (int *)optval)) +- return -EFAULT; ++ if (get_user(opt, (int *)optval)) { ++ err = -EFAULT; ++ break; ++ } + + if (opt) + hci_pi(sk)->cmsg_mask |= HCI_CMSG_DIR; +@@ -372,12 +456,31 @@ + hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_DIR; + break; + ++ case HCI_TIME_STAMP: ++ if (get_user(opt, (int *)optval)) { ++ err = -EFAULT; ++ break; ++ } ++ ++ if (opt) ++ hci_pi(sk)->cmsg_mask |= HCI_CMSG_TSTAMP; ++ else ++ hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_TSTAMP; ++ break; ++ + case HCI_FILTER: + len = MIN(len, sizeof(struct hci_filter)); + if (copy_from_user(&flt, optval, len)) { + err = -EFAULT; + break; + } ++ ++ if (!capable(CAP_NET_RAW)) { ++ flt.type_mask &= hci_sec_filter.type_mask; ++ flt.event_mask[0] &= hci_sec_filter.event_mask[0]; ++ flt.event_mask[1] &= hci_sec_filter.event_mask[1]; ++ } ++ + memcpy(&hci_pi(sk)->filter, &flt, len); + break; + +@@ -409,6 +512,16 @@ + return -EFAULT; + break; + ++ case HCI_TIME_STAMP: ++ if (hci_pi(sk)->cmsg_mask & HCI_CMSG_TSTAMP) ++ opt = 1; ++ else ++ opt = 0; ++ ++ if (put_user(opt, optval)) ++ return -EFAULT; ++ break; ++ + case HCI_FILTER: + len = MIN(len, sizeof(struct hci_filter)); + if (copy_to_user(optval, &hci_pi(sk)->filter, len)) +@@ -446,7 +559,7 @@ + { + struct sock *sk; + +- DBG("sock %p", sock); ++ BT_DBG("sock %p", sock); + + if (sock->type != SOCK_RAW) + return -ESOCKTNOSUPPORT; +@@ -464,44 +577,31 @@ + sk->protocol = protocol; + sk->state = BT_OPEN; + +- /* Initialize filter */ +- hci_pi(sk)->filter.type_mask = (1<<HCI_EVENT_PKT); +- hci_pi(sk)->filter.event_mask[0] = ~0L; +- hci_pi(sk)->filter.event_mask[1] = ~0L; +- + bluez_sock_link(&hci_sk_list, sk); + + MOD_INC_USE_COUNT; +- + return 0; + } + + static int hci_sock_dev_event(struct notifier_block *this, unsigned long event, void *ptr) + { + struct hci_dev *hdev = (struct hci_dev *) ptr; +- struct sk_buff *skb; +- +- DBG("hdev %s event %ld", hdev->name, event); ++ evt_si_device sd; ++ ++ BT_DBG("hdev %s event %ld", hdev->name, event); + + /* Send event to sockets */ +- if ((skb = bluez_skb_alloc(HCI_EVENT_HDR_SIZE + EVT_HCI_DEV_EVENT_SIZE, GFP_ATOMIC))) { +- hci_event_hdr eh = { EVT_HCI_DEV_EVENT, EVT_HCI_DEV_EVENT_SIZE }; +- evt_hci_dev_event he = { event, hdev->id }; +- +- skb->pkt_type = HCI_EVENT_PKT; +- memcpy(skb_put(skb, HCI_EVENT_HDR_SIZE), &eh, HCI_EVENT_HDR_SIZE); +- memcpy(skb_put(skb, EVT_HCI_DEV_EVENT_SIZE), &he, EVT_HCI_DEV_EVENT_SIZE); +- +- hci_send_to_sock(NULL, skb); +- kfree_skb(skb); +- } +- ++ sd.event = event; ++ sd.dev_id = hdev->id; ++ hci_si_event(NULL, EVT_SI_DEVICE, EVT_SI_DEVICE_SIZE, &sd); ++ + if (event == HCI_DEV_UNREG) { + struct sock *sk; + + /* Detach sockets from device */ + read_lock(&hci_sk_list.lock); + for (sk = hci_sk_list.head; sk; sk = sk->next) { ++ bh_lock_sock(sk); + if (hci_pi(sk)->hdev == hdev) { + hci_pi(sk)->hdev = NULL; + sk->err = EPIPE; +@@ -510,6 +610,7 @@ + + hci_dev_put(hdev); + } ++ bh_unlock_sock(sk); + } + read_unlock(&hci_sk_list.lock); + } +@@ -529,21 +630,19 @@ + int hci_sock_init(void) + { + if (bluez_sock_register(BTPROTO_HCI, &hci_sock_family_ops)) { +- ERR("Can't register HCI socket"); ++ BT_ERR("Can't register HCI socket"); + return -EPROTO; + } + + hci_register_notifier(&hci_sock_nblock); +- + return 0; + } + + int hci_sock_cleanup(void) + { + if (bluez_sock_unregister(BTPROTO_HCI)) +- ERR("Can't unregister HCI socket"); ++ BT_ERR("Can't unregister HCI socket"); + + hci_unregister_notifier(&hci_sock_nblock); +- + return 0; + } +diff -urN linux-2.4.18/net/bluetooth/hidp/Config.in linux-2.4.18-mh15/net/bluetooth/hidp/Config.in +--- linux-2.4.18/net/bluetooth/hidp/Config.in 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hidp/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,5 @@ ++# ++# Bluetooth HIDP layer configuration ++# ++ ++dep_tristate 'HIDP protocol support' CONFIG_BLUEZ_HIDP $CONFIG_INPUT $CONFIG_BLUEZ_L2CAP +diff -urN linux-2.4.18/net/bluetooth/hidp/core.c linux-2.4.18-mh15/net/bluetooth/hidp/core.c +--- linux-2.4.18/net/bluetooth/hidp/core.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hidp/core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,655 @@ ++/* ++ HIDP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <linux/init.h> ++#include <net/sock.h> ++ ++#include <linux/input.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/l2cap.h> ++ ++#include "hidp.h" ++ ++#ifndef CONFIG_BT_HIDP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define VERSION "1.0" ++ ++static DECLARE_RWSEM(hidp_session_sem); ++static LIST_HEAD(hidp_session_list); ++ ++static unsigned char hidp_keycode[256] = { ++ 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, ++ 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3, ++ 4, 5, 6, 7, 8, 9, 10, 11, 28, 1, 14, 15, 57, 12, 13, 26, ++ 27, 43, 43, 39, 40, 41, 51, 52, 53, 58, 59, 60, 61, 62, 63, 64, ++ 65, 66, 67, 68, 87, 88, 99, 70,119,110,102,104,111,107,109,106, ++ 105,108,103, 69, 98, 55, 74, 78, 96, 79, 80, 81, 75, 76, 77, 71, ++ 72, 73, 82, 83, 86,127,116,117,183,184,185,186,187,188,189,190, ++ 191,192,193,194,134,138,130,132,128,129,131,137,133,135,136,113, ++ 115,114, 0, 0, 0,121, 0, 89, 93,124, 92, 94, 95, 0, 0, 0, ++ 122,123, 90, 91, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113, ++ 150,158,159,128,136,177,178,176,142,152,173,140 ++}; ++ ++static struct hidp_session *__hidp_get_session(bdaddr_t *bdaddr) ++{ ++ struct hidp_session *session; ++ struct list_head *p; ++ ++ BT_DBG(""); ++ ++ list_for_each(p, &hidp_session_list) { ++ session = list_entry(p, struct hidp_session, list); ++ if (!bacmp(bdaddr, &session->bdaddr)) ++ return session; ++ } ++ return NULL; ++} ++ ++static void __hidp_link_session(struct hidp_session *session) ++{ ++ MOD_INC_USE_COUNT; ++ list_add(&session->list, &hidp_session_list); ++} ++ ++static void __hidp_unlink_session(struct hidp_session *session) ++{ ++ list_del(&session->list); ++ MOD_DEC_USE_COUNT; ++} ++ ++static void __hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci) ++{ ++ bacpy(&ci->bdaddr, &session->bdaddr); ++ ++ ci->flags = session->flags; ++ ci->state = session->state; ++ ++ ci->vendor = 0x0000; ++ ci->product = 0x0000; ++ ci->version = 0x0000; ++ memset(ci->name, 0, 128); ++ ++ if (session->input) { ++ ci->vendor = session->input->idvendor; ++ ci->product = session->input->idproduct; ++ ci->version = session->input->idversion; ++ if (session->input->name) ++ strncpy(ci->name, session->input->name, 128); ++ else ++ strncpy(ci->name, "HID Boot Device", 128); ++ } ++} ++ ++static int hidp_input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) ++{ ++ struct hidp_session *session = dev->private; ++ struct sk_buff *skb; ++ unsigned char newleds; ++ ++ BT_DBG("session %p hid %p data %p size %d", session, device, data, size); ++ ++ if (type != EV_LED) ++ return -1; ++ ++ newleds = (!!test_bit(LED_KANA, dev->led) << 3) | ++ (!!test_bit(LED_COMPOSE, dev->led) << 3) | ++ (!!test_bit(LED_SCROLLL, dev->led) << 2) | ++ (!!test_bit(LED_CAPSL, dev->led) << 1) | ++ (!!test_bit(LED_NUML, dev->led)); ++ ++ if (session->leds == newleds) ++ return 0; ++ ++ session->leds = newleds; ++ ++ if (!(skb = alloc_skb(3, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for new frame"); ++ return -ENOMEM; ++ } ++ ++ *skb_put(skb, 1) = 0xa2; ++ *skb_put(skb, 1) = 0x01; ++ *skb_put(skb, 1) = newleds; ++ ++ skb_queue_tail(&session->intr_transmit, skb); ++ ++ hidp_schedule(session); ++ ++ return 0; ++} ++ ++static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb) ++{ ++ struct input_dev *dev = session->input; ++ unsigned char *keys = session->keys; ++ unsigned char *udata = skb->data + 1; ++ signed char *sdata = skb->data + 1; ++ int i, size = skb->len - 1; ++ ++ switch (skb->data[0]) { ++ case 0x01: /* Keyboard report */ ++ for (i = 0; i < 8; i++) ++ input_report_key(dev, hidp_keycode[i + 224], (udata[0] >> i) & 1); ++ ++ for (i = 2; i < 8; i++) { ++ if (keys[i] > 3 && memscan(udata + 2, keys[i], 6) == udata + 8) { ++ if (hidp_keycode[keys[i]]) ++ input_report_key(dev, hidp_keycode[keys[i]], 0); ++ else ++ BT_ERR("Unknown key (scancode %#x) released.", keys[i]); ++ } ++ ++ if (udata[i] > 3 && memscan(keys + 2, udata[i], 6) == keys + 8) { ++ if (hidp_keycode[udata[i]]) ++ input_report_key(dev, hidp_keycode[udata[i]], 1); ++ else ++ BT_ERR("Unknown key (scancode %#x) pressed.", udata[i]); ++ } ++ } ++ ++ memcpy(keys, udata, 8); ++ break; ++ ++ case 0x02: /* Mouse report */ ++ input_report_key(dev, BTN_LEFT, sdata[0] & 0x01); ++ input_report_key(dev, BTN_RIGHT, sdata[0] & 0x02); ++ input_report_key(dev, BTN_MIDDLE, sdata[0] & 0x04); ++ input_report_key(dev, BTN_SIDE, sdata[0] & 0x08); ++ input_report_key(dev, BTN_EXTRA, sdata[0] & 0x10); ++ ++ input_report_rel(dev, REL_X, sdata[1]); ++ input_report_rel(dev, REL_Y, sdata[2]); ++ ++ if (size > 3) ++ input_report_rel(dev, REL_WHEEL, sdata[3]); ++ break; ++ } ++ ++ input_event(dev, EV_RST, 0, 0); ++} ++ ++static void hidp_idle_timeout(unsigned long arg) ++{ ++ struct hidp_session *session = (struct hidp_session *) arg; ++ ++ atomic_inc(&session->terminate); ++ hidp_schedule(session); ++} ++ ++static inline void hidp_set_timer(struct hidp_session *session) ++{ ++ if (session->idle_to > 0) ++ mod_timer(&session->timer, jiffies + HZ * session->idle_to); ++} ++ ++static inline void hidp_del_timer(struct hidp_session *session) ++{ ++ if (session->idle_to > 0) ++ del_timer(&session->timer); ++} ++ ++static inline void hidp_send_message(struct hidp_session *session, unsigned char hdr) ++{ ++ struct sk_buff *skb; ++ ++ BT_DBG("session %p", session); ++ ++ if (!(skb = alloc_skb(1, GFP_ATOMIC))) { ++ BT_ERR("Can't allocate memory for message"); ++ return; ++ } ++ ++ *skb_put(skb, 1) = hdr; ++ ++ skb_queue_tail(&session->ctrl_transmit, skb); ++ ++ hidp_schedule(session); ++} ++ ++static inline int hidp_recv_frame(struct hidp_session *session, struct sk_buff *skb) ++{ ++ __u8 hdr; ++ ++ BT_DBG("session %p skb %p len %d", session, skb, skb->len); ++ ++ hdr = skb->data[0]; ++ skb_pull(skb, 1); ++ ++ if (hdr == 0xa1) { ++ hidp_set_timer(session); ++ ++ if (session->input) ++ hidp_input_report(session, skb); ++ } else { ++ BT_DBG("Unsupported protocol header 0x%02x", hdr); ++ } ++ ++ kfree_skb(skb); ++ return 0; ++} ++ ++static int hidp_send_frame(struct socket *sock, unsigned char *data, int len) ++{ ++ struct iovec iv = { data, len }; ++ struct msghdr msg; ++ ++ BT_DBG("sock %p data %p len %d", sock, data, len); ++ ++ if (!len) ++ return 0; ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.msg_iovlen = 1; ++ msg.msg_iov = &iv; ++ ++ return sock_sendmsg(sock, &msg, len); ++} ++ ++static int hidp_process_transmit(struct hidp_session *session) ++{ ++ struct sk_buff *skb; ++ ++ BT_DBG("session %p", session); ++ ++ while ((skb = skb_dequeue(&session->ctrl_transmit))) { ++ if (hidp_send_frame(session->ctrl_sock, skb->data, skb->len) < 0) { ++ skb_queue_head(&session->ctrl_transmit, skb); ++ break; ++ } ++ ++ hidp_set_timer(session); ++ kfree_skb(skb); ++ } ++ ++ while ((skb = skb_dequeue(&session->intr_transmit))) { ++ if (hidp_send_frame(session->intr_sock, skb->data, skb->len) < 0) { ++ skb_queue_head(&session->intr_transmit, skb); ++ break; ++ } ++ ++ hidp_set_timer(session); ++ kfree_skb(skb); ++ } ++ ++ return skb_queue_len(&session->ctrl_transmit) + ++ skb_queue_len(&session->intr_transmit); ++} ++ ++static int hidp_session(void *arg) ++{ ++ struct hidp_session *session = arg; ++ struct sock *ctrl_sk = session->ctrl_sock->sk; ++ struct sock *intr_sk = session->intr_sock->sk; ++ struct sk_buff *skb; ++ int vendor = 0x0000, product = 0x0000; ++ wait_queue_t ctrl_wait, intr_wait; ++ unsigned long timeo = HZ; ++ ++ BT_DBG("session %p", session); ++ ++ if (session->input) { ++ vendor = session->input->idvendor; ++ product = session->input->idproduct; ++ } ++ ++ daemonize(); reparent_to_init(); ++ ++ sprintf(current->comm, "khidpd_%04x%04x", vendor, product); ++ ++ sigfillset(¤t->blocked); ++ flush_signals(current); ++ ++ current->nice = -15; ++ ++ set_fs(KERNEL_DS); ++ ++ init_waitqueue_entry(&ctrl_wait, current); ++ init_waitqueue_entry(&intr_wait, current); ++ add_wait_queue(ctrl_sk->sleep, &ctrl_wait); ++ add_wait_queue(intr_sk->sleep, &intr_wait); ++ while (!atomic_read(&session->terminate)) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (ctrl_sk->state != BT_CONNECTED || intr_sk->state != BT_CONNECTED) ++ break; ++ ++ while ((skb = skb_dequeue(&ctrl_sk->receive_queue))) { ++ skb_orphan(skb); ++ hidp_recv_frame(session, skb); ++ } ++ ++ while ((skb = skb_dequeue(&intr_sk->receive_queue))) { ++ skb_orphan(skb); ++ hidp_recv_frame(session, skb); ++ } ++ ++ hidp_process_transmit(session); ++ ++ schedule(); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(intr_sk->sleep, &intr_wait); ++ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait); ++ ++ down_write(&hidp_session_sem); ++ ++ hidp_del_timer(session); ++ ++ if (intr_sk->state != BT_CONNECTED) { ++ init_waitqueue_entry(&ctrl_wait, current); ++ add_wait_queue(ctrl_sk->sleep, &ctrl_wait); ++ while (timeo && ctrl_sk->state != BT_CLOSED) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ timeo = schedule_timeout(timeo); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(ctrl_sk->sleep, &ctrl_wait); ++ timeo = HZ; ++ } ++ ++ fput(session->ctrl_sock->file); ++ ++ init_waitqueue_entry(&intr_wait, current); ++ add_wait_queue(intr_sk->sleep, &intr_wait); ++ while (timeo && intr_sk->state != BT_CLOSED) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ timeo = schedule_timeout(timeo); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(intr_sk->sleep, &intr_wait); ++ ++ fput(session->intr_sock->file); ++ ++ __hidp_unlink_session(session); ++ ++ if (session->input) { ++ input_unregister_device(session->input); ++ kfree(session->input); ++ } ++ ++ up_write(&hidp_session_sem); ++ ++ kfree(session); ++ return 0; ++} ++ ++static inline void hidp_setup_input(struct hidp_session *session, struct hidp_connadd_req *req) ++{ ++ struct input_dev *input = session->input; ++ int i; ++ ++ input->private = session; ++ ++ input->idbus = BUS_BLUETOOTH; ++ input->idvendor = req->vendor; ++ input->idproduct = req->product; ++ input->idversion = req->version; ++ ++ if (req->subclass & 0x40) { ++ set_bit(EV_KEY, input->evbit); ++ set_bit(EV_LED, input->evbit); ++ set_bit(EV_REP, input->evbit); ++ ++ set_bit(LED_NUML, input->ledbit); ++ set_bit(LED_CAPSL, input->ledbit); ++ set_bit(LED_SCROLLL, input->ledbit); ++ set_bit(LED_COMPOSE, input->ledbit); ++ set_bit(LED_KANA, input->ledbit); ++ ++ for (i = 0; i < sizeof(hidp_keycode); i++) ++ set_bit(hidp_keycode[i], input->keybit); ++ clear_bit(0, input->keybit); ++ } ++ ++ if (req->subclass & 0x80) { ++ input->evbit[0] = BIT(EV_KEY) | BIT(EV_REL); ++ input->keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE); ++ input->relbit[0] = BIT(REL_X) | BIT(REL_Y); ++ input->keybit[LONG(BTN_MOUSE)] |= BIT(BTN_SIDE) | BIT(BTN_EXTRA); ++ input->relbit[0] |= BIT(REL_WHEEL); ++ } ++ ++ input->event = hidp_input_event; ++ ++ input_register_device(input); ++} ++ ++int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock) ++{ ++ struct hidp_session *session, *s; ++ int err; ++ ++ BT_DBG(""); ++ ++ if (bacmp(&bluez_pi(ctrl_sock->sk)->src, &bluez_pi(intr_sock->sk)->src) || ++ bacmp(&bluez_pi(ctrl_sock->sk)->dst, &bluez_pi(intr_sock->sk)->dst)) ++ return -ENOTUNIQ; ++ ++ session = kmalloc(sizeof(struct hidp_session), GFP_KERNEL); ++ if (!session) ++ return -ENOMEM; ++ memset(session, 0, sizeof(struct hidp_session)); ++ ++ session->input = kmalloc(sizeof(struct input_dev), GFP_KERNEL); ++ if (!session->input) { ++ kfree(session); ++ return -ENOMEM; ++ } ++ memset(session->input, 0, sizeof(struct input_dev)); ++ ++ down_write(&hidp_session_sem); ++ ++ s = __hidp_get_session(&bluez_pi(ctrl_sock->sk)->dst); ++ if (s && s->state == BT_CONNECTED) { ++ err = -EEXIST; ++ goto failed; ++ } ++ ++ bacpy(&session->bdaddr, &bluez_pi(ctrl_sock->sk)->dst); ++ ++ session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl_sock->sk)->omtu, l2cap_pi(ctrl_sock->sk)->imtu); ++ session->intr_mtu = min_t(uint, l2cap_pi(intr_sock->sk)->omtu, l2cap_pi(intr_sock->sk)->imtu); ++ ++ BT_DBG("ctrl mtu %d intr mtu %d", session->ctrl_mtu, session->intr_mtu); ++ ++ session->ctrl_sock = ctrl_sock; ++ session->intr_sock = intr_sock; ++ session->state = BT_CONNECTED; ++ ++ init_timer(&session->timer); ++ ++ session->timer.function = hidp_idle_timeout; ++ session->timer.data = (unsigned long) session; ++ ++ skb_queue_head_init(&session->ctrl_transmit); ++ skb_queue_head_init(&session->intr_transmit); ++ ++ session->flags = req->flags & (1 << HIDP_BLUETOOTH_VENDOR_ID); ++ session->idle_to = req->idle_to; ++ ++ if (session->input) ++ hidp_setup_input(session, req); ++ ++ __hidp_link_session(session); ++ ++ hidp_set_timer(session); ++ ++ err = kernel_thread(hidp_session, session, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); ++ if (err < 0) ++ goto unlink; ++ ++ if (session->input) { ++ hidp_send_message(session, 0x70); ++ session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE); ++ ++ session->leds = 0xff; ++ hidp_input_event(session->input, EV_LED, 0, 0); ++ } ++ ++ up_write(&hidp_session_sem); ++ return 0; ++ ++unlink: ++ hidp_del_timer(session); ++ ++ __hidp_unlink_session(session); ++ ++ if (session->input) ++ input_unregister_device(session->input); ++ ++failed: ++ up_write(&hidp_session_sem); ++ ++ if (session->input) ++ kfree(session->input); ++ ++ kfree(session); ++ return err; ++} ++ ++int hidp_del_connection(struct hidp_conndel_req *req) ++{ ++ struct hidp_session *session; ++ int err = 0; ++ ++ BT_DBG(""); ++ ++ down_read(&hidp_session_sem); ++ ++ session = __hidp_get_session(&req->bdaddr); ++ if (session) { ++ if (req->flags & (1 << HIDP_VIRTUAL_CABLE_UNPLUG)) { ++ hidp_send_message(session, 0x15); ++ } else { ++ /* Flush the transmit queues */ ++ skb_queue_purge(&session->ctrl_transmit); ++ skb_queue_purge(&session->intr_transmit); ++ ++ /* Kill session thread */ ++ atomic_inc(&session->terminate); ++ hidp_schedule(session); ++ } ++ } else ++ err = -ENOENT; ++ ++ up_read(&hidp_session_sem); ++ return err; ++} ++ ++int hidp_get_connlist(struct hidp_connlist_req *req) ++{ ++ struct list_head *p; ++ int err = 0, n = 0; ++ ++ BT_DBG(""); ++ ++ down_read(&hidp_session_sem); ++ ++ list_for_each(p, &hidp_session_list) { ++ struct hidp_session *session; ++ struct hidp_conninfo ci; ++ ++ session = list_entry(p, struct hidp_session, list); ++ ++ __hidp_copy_session(session, &ci); ++ ++ if (copy_to_user(req->ci, &ci, sizeof(ci))) { ++ err = -EFAULT; ++ break; ++ } ++ ++ if (++n >= req->cnum) ++ break; ++ ++ req->ci++; ++ } ++ req->cnum = n; ++ ++ up_read(&hidp_session_sem); ++ return err; ++} ++ ++int hidp_get_conninfo(struct hidp_conninfo *ci) ++{ ++ struct hidp_session *session; ++ int err = 0; ++ ++ down_read(&hidp_session_sem); ++ ++ session = __hidp_get_session(&ci->bdaddr); ++ if (session) ++ __hidp_copy_session(session, ci); ++ else ++ err = -ENOENT; ++ ++ up_read(&hidp_session_sem); ++ return err; ++} ++ ++static int __init hidp_init(void) ++{ ++ l2cap_load(); ++ ++ hidp_init_sockets(); ++ ++ BT_INFO("BlueZ HIDP ver %s", VERSION); ++ BT_INFO("Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>"); ++ ++ return 0; ++} ++ ++static void __exit hidp_exit(void) ++{ ++ hidp_cleanup_sockets(); ++} ++ ++module_init(hidp_init); ++module_exit(hidp_exit); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("Bluetooth HIDP ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/hidp/hidp.h linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h +--- linux-2.4.18/net/bluetooth/hidp/hidp.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hidp/hidp.h 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,122 @@ ++/* ++ HIDP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#ifndef __HIDP_H ++#define __HIDP_H ++ ++#include <linux/types.h> ++#include <net/bluetooth/bluetooth.h> ++ ++/* HIDP ioctl defines */ ++#define HIDPCONNADD _IOW('H', 200, int) ++#define HIDPCONNDEL _IOW('H', 201, int) ++#define HIDPGETCONNLIST _IOR('H', 210, int) ++#define HIDPGETCONNINFO _IOR('H', 211, int) ++ ++#define HIDP_VIRTUAL_CABLE_UNPLUG 0 ++#define HIDP_BOOT_PROTOCOL_MODE 1 ++#define HIDP_BLUETOOTH_VENDOR_ID 9 ++ ++struct hidp_connadd_req { ++ int ctrl_sock; // Connected control socket ++ int intr_sock; // Connteted interrupt socket ++ __u16 parser; ++ __u16 rd_size; ++ __u8 *rd_data; ++ __u8 country; ++ __u8 subclass; ++ __u16 vendor; ++ __u16 product; ++ __u16 version; ++ __u32 flags; ++ __u32 idle_to; ++ char name[128]; ++}; ++ ++struct hidp_conndel_req { ++ bdaddr_t bdaddr; ++ __u32 flags; ++}; ++ ++struct hidp_conninfo { ++ bdaddr_t bdaddr; ++ __u32 flags; ++ __u16 state; ++ __u16 vendor; ++ __u16 product; ++ __u16 version; ++ char name[128]; ++}; ++ ++struct hidp_connlist_req { ++ __u32 cnum; ++ struct hidp_conninfo *ci; ++}; ++ ++int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock, struct socket *intr_sock); ++int hidp_del_connection(struct hidp_conndel_req *req); ++int hidp_get_connlist(struct hidp_connlist_req *req); ++int hidp_get_conninfo(struct hidp_conninfo *ci); ++ ++/* HIDP session defines */ ++struct hidp_session { ++ struct list_head list; ++ ++ struct socket *ctrl_sock; ++ struct socket *intr_sock; ++ ++ bdaddr_t bdaddr; ++ ++ unsigned long state; ++ unsigned long flags; ++ unsigned long idle_to; ++ ++ uint ctrl_mtu; ++ uint intr_mtu; ++ ++ atomic_t terminate; ++ ++ unsigned char keys[8]; ++ unsigned char leds; ++ ++ struct input_dev *input; ++ ++ struct timer_list timer; ++ ++ struct sk_buff_head ctrl_transmit; ++ struct sk_buff_head intr_transmit; ++}; ++ ++static inline void hidp_schedule(struct hidp_session *session) ++{ ++ struct sock *ctrl_sk = session->ctrl_sock->sk; ++ struct sock *intr_sk = session->intr_sock->sk; ++ ++ wake_up_interruptible(ctrl_sk->sleep); ++ wake_up_interruptible(intr_sk->sleep); ++} ++ ++/* HIDP init defines */ ++extern int __init hidp_init_sockets(void); ++extern void __exit hidp_cleanup_sockets(void); ++ ++#endif /* __HIDP_H */ +diff -urN linux-2.4.18/net/bluetooth/hidp/Makefile linux-2.4.18-mh15/net/bluetooth/hidp/Makefile +--- linux-2.4.18/net/bluetooth/hidp/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hidp/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,10 @@ ++# ++# Makefile for the Linux Bluetooth HIDP layer ++# ++ ++O_TARGET := hidp.o ++ ++obj-y := core.o sock.o ++obj-m += $(O_TARGET) ++ ++include $(TOPDIR)/Rules.make +diff -urN linux-2.4.18/net/bluetooth/hidp/sock.c linux-2.4.18-mh15/net/bluetooth/hidp/sock.c +--- linux-2.4.18/net/bluetooth/hidp/sock.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/hidp/sock.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,212 @@ ++/* ++ HIDP implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/skbuff.h> ++#include <linux/socket.h> ++#include <linux/ioctl.h> ++#include <linux/file.h> ++#include <linux/init.h> ++#include <net/sock.h> ++ ++#include "hidp.h" ++ ++#ifndef CONFIG_BT_HIDP_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++static int hidp_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p sk %p", sock, sk); ++ ++ if (!sk) ++ return 0; ++ ++ sock_orphan(sk); ++ sock_put(sk); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++{ ++ struct hidp_connadd_req ca; ++ struct hidp_conndel_req cd; ++ struct hidp_connlist_req cl; ++ struct hidp_conninfo ci; ++ struct socket *csock; ++ struct socket *isock; ++ int err; ++ ++ BT_DBG("cmd %x arg %lx", cmd, arg); ++ ++ switch (cmd) { ++ case HIDPCONNADD: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&ca, (void *) arg, sizeof(ca))) ++ return -EFAULT; ++ ++ csock = sockfd_lookup(ca.ctrl_sock, &err); ++ if (!csock) ++ return err; ++ ++ isock = sockfd_lookup(ca.intr_sock, &err); ++ if (!isock) { ++ fput(csock->file); ++ return err; ++ } ++ ++ if (csock->sk->state != BT_CONNECTED || isock->sk->state != BT_CONNECTED) { ++ fput(csock->file); ++ fput(isock->file); ++ return -EBADFD; ++ } ++ ++ err = hidp_add_connection(&ca, csock, isock); ++ if (!err) { ++ if (copy_to_user((void *) arg, &ca, sizeof(ca))) ++ err = -EFAULT; ++ } else { ++ fput(csock->file); ++ fput(isock->file); ++ } ++ ++ return err; ++ ++ case HIDPCONNDEL: ++ if (!capable(CAP_NET_ADMIN)) ++ return -EACCES; ++ ++ if (copy_from_user(&cd, (void *) arg, sizeof(cd))) ++ return -EFAULT; ++ ++ return hidp_del_connection(&cd); ++ ++ case HIDPGETCONNLIST: ++ if (copy_from_user(&cl, (void *) arg, sizeof(cl))) ++ return -EFAULT; ++ ++ if (cl.cnum <= 0) ++ return -EINVAL; ++ ++ err = hidp_get_connlist(&cl); ++ if (!err && copy_to_user((void *) arg, &cl, sizeof(cl))) ++ return -EFAULT; ++ ++ return err; ++ ++ case HIDPGETCONNINFO: ++ if (copy_from_user(&ci, (void *) arg, sizeof(ci))) ++ return -EFAULT; ++ ++ err = hidp_get_conninfo(&ci); ++ if (!err && copy_to_user((void *) arg, &ci, sizeof(ci))) ++ return -EFAULT; ++ ++ return err; ++ } ++ ++ return -EINVAL; ++} ++ ++static struct proto_ops hidp_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: hidp_sock_release, ++ ioctl: hidp_sock_ioctl, ++ bind: sock_no_bind, ++ getname: sock_no_getname, ++ sendmsg: sock_no_sendmsg, ++ recvmsg: sock_no_recvmsg, ++ poll: sock_no_poll, ++ listen: sock_no_listen, ++ shutdown: sock_no_shutdown, ++ setsockopt: sock_no_setsockopt, ++ getsockopt: sock_no_getsockopt, ++ connect: sock_no_connect, ++ socketpair: sock_no_socketpair, ++ accept: sock_no_accept, ++ mmap: sock_no_mmap ++}; ++ ++static int hidp_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ if (sock->type != SOCK_RAW) ++ return -ESOCKTNOSUPPORT; ++ ++ sock->ops = &hidp_sock_ops; ++ ++ if (!(sk = sk_alloc(PF_BLUETOOTH, GFP_KERNEL, 1))) ++ return -ENOMEM; ++ ++ MOD_INC_USE_COUNT; ++ ++ sock->state = SS_UNCONNECTED; ++ sock_init_data(sock, sk); ++ ++ sk->destruct = NULL; ++ sk->protocol = protocol; ++ ++ return 0; ++} ++ ++static struct net_proto_family hidp_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: hidp_sock_create ++}; ++ ++int __init hidp_init_sockets(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_register(BTPROTO_HIDP, &hidp_sock_family_ops))) ++ BT_ERR("Can't register HIDP socket layer (%d)", err); ++ ++ return err; ++} ++ ++void __exit hidp_cleanup_sockets(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_unregister(BTPROTO_HIDP))) ++ BT_ERR("Can't unregister HIDP socket layer (%d)", err); ++} +diff -urN linux-2.4.18/net/bluetooth/l2cap.c linux-2.4.18-mh15/net/bluetooth/l2cap.c +--- linux-2.4.18/net/bluetooth/l2cap.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/l2cap.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,2222 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * BlueZ L2CAP core and sockets. ++ * ++ * $Id: l2cap.c,v 1.15 2002/09/09 01:14:52 maxk Exp $ ++ */ ++#define VERSION "2.3" ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/init.h> ++#include <linux/skbuff.h> ++#include <linux/interrupt.h> ++#include <linux/socket.h> ++#include <linux/skbuff.h> ++#include <linux/proc_fs.h> ++#include <linux/list.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include <net/bluetooth/l2cap.h> ++ ++#ifndef L2CAP_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++static struct proto_ops l2cap_sock_ops; ++ ++struct bluez_sock_list l2cap_sk_list = { ++ lock: RW_LOCK_UNLOCKED ++}; ++ ++static int l2cap_conn_del(struct hci_conn *conn, int err); ++ ++static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent); ++static void l2cap_chan_del(struct sock *sk, int err); ++static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len); ++ ++static void __l2cap_sock_close(struct sock *sk, int reason); ++static void l2cap_sock_close(struct sock *sk); ++static void l2cap_sock_kill(struct sock *sk); ++ ++static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data); ++static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data); ++ ++/* ----- L2CAP timers ------ */ ++static void l2cap_sock_timeout(unsigned long arg) ++{ ++ struct sock *sk = (struct sock *) arg; ++ ++ BT_DBG("sock %p state %d", sk, sk->state); ++ ++ bh_lock_sock(sk); ++ __l2cap_sock_close(sk, ETIMEDOUT); ++ bh_unlock_sock(sk); ++ ++ l2cap_sock_kill(sk); ++ sock_put(sk); ++} ++ ++static void l2cap_sock_set_timer(struct sock *sk, long timeout) ++{ ++ BT_DBG("sk %p state %d timeout %ld", sk, sk->state, timeout); ++ ++ if (!mod_timer(&sk->timer, jiffies + timeout)) ++ sock_hold(sk); ++} ++ ++static void l2cap_sock_clear_timer(struct sock *sk) ++{ ++ BT_DBG("sock %p state %d", sk, sk->state); ++ ++ if (timer_pending(&sk->timer) && del_timer(&sk->timer)) ++ __sock_put(sk); ++} ++ ++static void l2cap_sock_init_timer(struct sock *sk) ++{ ++ init_timer(&sk->timer); ++ sk->timer.function = l2cap_sock_timeout; ++ sk->timer.data = (unsigned long)sk; ++} ++ ++/* -------- L2CAP connections --------- */ ++static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon, __u8 status) ++{ ++ struct l2cap_conn *conn; ++ ++ if ((conn = hcon->l2cap_data)) ++ return conn; ++ ++ if (status) ++ return conn; ++ ++ if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_ATOMIC))) ++ return NULL; ++ memset(conn, 0, sizeof(struct l2cap_conn)); ++ ++ hcon->l2cap_data = conn; ++ conn->hcon = hcon; ++ ++ conn->mtu = hcon->hdev->acl_mtu; ++ conn->src = &hcon->hdev->bdaddr; ++ conn->dst = &hcon->dst; ++ ++ spin_lock_init(&conn->lock); ++ conn->chan_list.lock = RW_LOCK_UNLOCKED; ++ ++ BT_DBG("hcon %p conn %p", hcon, conn); ++ ++ MOD_INC_USE_COUNT; ++ return conn; ++} ++ ++static int l2cap_conn_del(struct hci_conn *hcon, int err) ++{ ++ struct l2cap_conn *conn; ++ struct sock *sk; ++ ++ if (!(conn = hcon->l2cap_data)) ++ return 0; ++ ++ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); ++ ++ if (conn->rx_skb) ++ kfree_skb(conn->rx_skb); ++ ++ /* Kill channels */ ++ while ((sk = conn->chan_list.head)) { ++ bh_lock_sock(sk); ++ l2cap_chan_del(sk, err); ++ bh_unlock_sock(sk); ++ l2cap_sock_kill(sk); ++ } ++ ++ hcon->l2cap_data = NULL; ++ kfree(conn); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++/* -------- Socket interface ---------- */ ++static struct sock *__l2cap_get_sock_by_addr(__u16 psm, bdaddr_t *src) ++{ ++ struct sock *sk; ++ for (sk = l2cap_sk_list.head; sk; sk = sk->next) { ++ if (sk->sport == psm && !bacmp(&bluez_pi(sk)->src, src)) ++ break; ++ } ++ return sk; ++} ++ ++/* Find socket with psm and source bdaddr. ++ * Returns closest match. ++ */ ++static struct sock *__l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src) ++{ ++ struct sock *sk, *sk1 = NULL; ++ ++ for (sk = l2cap_sk_list.head; sk; sk = sk->next) { ++ if (state && sk->state != state) ++ continue; ++ ++ if (l2cap_pi(sk)->psm == psm) { ++ /* Exact match. */ ++ if (!bacmp(&bluez_pi(sk)->src, src)) ++ break; ++ ++ /* Closest match */ ++ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY)) ++ sk1 = sk; ++ } ++ } ++ return sk ? sk : sk1; ++} ++ ++/* Find socket with given address (psm, src). ++ * Returns locked socket */ ++static inline struct sock *l2cap_get_sock_by_psm(int state, __u16 psm, bdaddr_t *src) ++{ ++ struct sock *s; ++ read_lock(&l2cap_sk_list.lock); ++ s = __l2cap_get_sock_by_psm(state, psm, src); ++ if (s) bh_lock_sock(s); ++ read_unlock(&l2cap_sk_list.lock); ++ return s; ++} ++ ++static void l2cap_sock_destruct(struct sock *sk) ++{ ++ BT_DBG("sk %p", sk); ++ ++ skb_queue_purge(&sk->receive_queue); ++ skb_queue_purge(&sk->write_queue); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++static void l2cap_sock_cleanup_listen(struct sock *parent) ++{ ++ struct sock *sk; ++ ++ BT_DBG("parent %p", parent); ++ ++ /* Close not yet accepted channels */ ++ while ((sk = bluez_accept_dequeue(parent, NULL))) ++ l2cap_sock_close(sk); ++ ++ parent->state = BT_CLOSED; ++ parent->zapped = 1; ++} ++ ++/* Kill socket (only if zapped and orphan) ++ * Must be called on unlocked socket. ++ */ ++static void l2cap_sock_kill(struct sock *sk) ++{ ++ if (!sk->zapped || sk->socket) ++ return; ++ ++ BT_DBG("sk %p state %d", sk, sk->state); ++ ++ /* Kill poor orphan */ ++ bluez_sock_unlink(&l2cap_sk_list, sk); ++ sk->dead = 1; ++ sock_put(sk); ++} ++ ++/* Close socket. ++ */ ++static void __l2cap_sock_close(struct sock *sk, int reason) ++{ ++ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket); ++ ++ switch (sk->state) { ++ case BT_LISTEN: ++ l2cap_sock_cleanup_listen(sk); ++ break; ++ ++ case BT_CONNECTED: ++ case BT_CONFIG: ++ case BT_CONNECT2: ++ if (sk->type == SOCK_SEQPACKET) { ++ struct l2cap_conn *conn = l2cap_pi(sk)->conn; ++ l2cap_disconn_req req; ++ ++ sk->state = BT_DISCONN; ++ l2cap_sock_set_timer(sk, sk->sndtimeo); ++ ++ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req); ++ } else { ++ l2cap_chan_del(sk, reason); ++ } ++ break; ++ ++ case BT_CONNECT: ++ case BT_DISCONN: ++ l2cap_chan_del(sk, reason); ++ break; ++ ++ default: ++ sk->zapped = 1; ++ break; ++ }; ++} ++ ++/* Must be called on unlocked socket. */ ++static void l2cap_sock_close(struct sock *sk) ++{ ++ l2cap_sock_clear_timer(sk); ++ lock_sock(sk); ++ __l2cap_sock_close(sk, ECONNRESET); ++ release_sock(sk); ++ l2cap_sock_kill(sk); ++} ++ ++static void l2cap_sock_init(struct sock *sk, struct sock *parent) ++{ ++ struct l2cap_pinfo *pi = l2cap_pi(sk); ++ ++ BT_DBG("sk %p", sk); ++ ++ if (parent) { ++ sk->type = parent->type; ++ pi->imtu = l2cap_pi(parent)->imtu; ++ pi->omtu = l2cap_pi(parent)->omtu; ++ pi->link_mode = l2cap_pi(parent)->link_mode; ++ } else { ++ pi->imtu = L2CAP_DEFAULT_MTU; ++ pi->omtu = 0; ++ pi->link_mode = 0; ++ } ++ ++ /* Default config options */ ++ pi->conf_mtu = L2CAP_DEFAULT_MTU; ++ pi->flush_to = L2CAP_DEFAULT_FLUSH_TO; ++} ++ ++static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio) ++{ ++ struct sock *sk; ++ ++ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1))) ++ return NULL; ++ ++ bluez_sock_init(sock, sk); ++ ++ sk->zapped = 0; ++ ++ sk->destruct = l2cap_sock_destruct; ++ sk->sndtimeo = L2CAP_CONN_TIMEOUT; ++ ++ sk->protocol = proto; ++ sk->state = BT_OPEN; ++ ++ l2cap_sock_init_timer(sk); ++ ++ bluez_sock_link(&l2cap_sk_list, sk); ++ ++ MOD_INC_USE_COUNT; ++ return sk; ++} ++ ++static int l2cap_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ sock->state = SS_UNCONNECTED; ++ ++ if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_DGRAM && sock->type != SOCK_RAW) ++ return -ESOCKTNOSUPPORT; ++ ++ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW)) ++ return -EPERM; ++ ++ sock->ops = &l2cap_sock_ops; ++ ++ if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL))) ++ return -ENOMEM; ++ ++ l2cap_sock_init(sk, NULL); ++ return 0; ++} ++ ++static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) ++{ ++ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm); ++ ++ if (!addr || addr->sa_family != AF_BLUETOOTH) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_OPEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ write_lock_bh(&l2cap_sk_list.lock); ++ if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) { ++ err = -EADDRINUSE; ++ } else { ++ /* Save source address */ ++ bacpy(&bluez_pi(sk)->src, &la->l2_bdaddr); ++ l2cap_pi(sk)->psm = la->l2_psm; ++ sk->sport = la->l2_psm; ++ sk->state = BT_BOUND; ++ } ++ write_unlock_bh(&l2cap_sk_list.lock); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_do_connect(struct sock *sk) ++{ ++ bdaddr_t *src = &bluez_pi(sk)->src; ++ bdaddr_t *dst = &bluez_pi(sk)->dst; ++ struct l2cap_conn *conn; ++ struct hci_conn *hcon; ++ struct hci_dev *hdev; ++ int err = 0; ++ ++ BT_DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm); ++ ++ if (!(hdev = hci_get_route(dst, src))) ++ return -EHOSTUNREACH; ++ ++ hci_dev_lock_bh(hdev); ++ ++ err = -ENOMEM; ++ ++ hcon = hci_connect(hdev, ACL_LINK, dst); ++ if (!hcon) ++ goto done; ++ ++ conn = l2cap_conn_add(hcon, 0); ++ if (!conn) { ++ hci_conn_put(hcon); ++ goto done; ++ } ++ ++ err = 0; ++ ++ /* Update source addr of the socket */ ++ bacpy(src, conn->src); ++ ++ l2cap_chan_add(conn, sk, NULL); ++ ++ sk->state = BT_CONNECT; ++ l2cap_sock_set_timer(sk, sk->sndtimeo); ++ ++ if (hcon->state == BT_CONNECTED) { ++ if (sk->type == SOCK_SEQPACKET) { ++ l2cap_conn_req req; ++ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ req.psm = l2cap_pi(sk)->psm; ++ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req); ++ } else { ++ l2cap_sock_clear_timer(sk); ++ sk->state = BT_CONNECTED; ++ } ++ } ++ ++done: ++ hci_dev_unlock_bh(hdev); ++ hci_dev_put(hdev); ++ return err; ++} ++ ++static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) ++{ ++ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ lock_sock(sk); ++ ++ BT_DBG("sk %p", sk); ++ ++ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) { ++ err = -EINVAL; ++ goto done; ++ } ++ ++ if (sk->type == SOCK_SEQPACKET && !la->l2_psm) { ++ err = -EINVAL; ++ goto done; ++ } ++ ++ switch(sk->state) { ++ case BT_CONNECT: ++ case BT_CONNECT2: ++ case BT_CONFIG: ++ /* Already connecting */ ++ goto wait; ++ ++ case BT_CONNECTED: ++ /* Already connected */ ++ goto done; ++ ++ case BT_OPEN: ++ case BT_BOUND: ++ /* Can connect */ ++ break; ++ ++ default: ++ err = -EBADFD; ++ goto done; ++ } ++ ++ /* Set destination address and psm */ ++ bacpy(&bluez_pi(sk)->dst, &la->l2_bdaddr); ++ l2cap_pi(sk)->psm = la->l2_psm; ++ ++ if ((err = l2cap_do_connect(sk))) ++ goto done; ++ ++wait: ++ err = bluez_sock_wait_state(sk, BT_CONNECTED, ++ sock_sndtimeo(sk, flags & O_NONBLOCK)); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++int l2cap_sock_listen(struct socket *sock, int backlog) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p backlog %d", sk, backlog); ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ if (!l2cap_pi(sk)->psm) { ++ err = -EINVAL; ++ goto done; ++ } ++ ++ sk->max_ack_backlog = backlog; ++ sk->ack_backlog = 0; ++ sk->state = BT_LISTEN; ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct sock *sk = sock->sk, *nsk; ++ long timeo; ++ int err = 0; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); ++ ++ BT_DBG("sk %p timeo %ld", sk, timeo); ++ ++ /* Wait for an incoming connection. (wake-one). */ ++ add_wait_queue_exclusive(sk->sleep, &wait); ++ while (!(nsk = bluez_accept_dequeue(sk, newsock))) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ if (!timeo) { ++ err = -EAGAIN; ++ break; ++ } ++ ++ release_sock(sk); ++ timeo = schedule_timeout(timeo); ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ break; ++ } ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeo); ++ break; ++ } ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ ++ if (err) ++ goto done; ++ ++ newsock->state = SS_CONNECTED; ++ ++ BT_DBG("new socket %p", nsk); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer) ++{ ++ struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ addr->sa_family = AF_BLUETOOTH; ++ *len = sizeof(struct sockaddr_l2); ++ ++ if (peer) ++ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->dst); ++ else ++ bacpy(&la->l2_bdaddr, &bluez_pi(sk)->src); ++ ++ la->l2_psm = l2cap_pi(sk)->psm; ++ return 0; ++} ++ ++static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (sk->err) ++ return sock_error(sk); ++ ++ if (msg->msg_flags & MSG_OOB) ++ return -EOPNOTSUPP; ++ ++ /* Check outgoing MTU */ ++ if (len > l2cap_pi(sk)->omtu) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ if (sk->state == BT_CONNECTED) ++ err = l2cap_chan_send(sk, msg, len); ++ else ++ err = -ENOTCONN; ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen) ++{ ++ struct sock *sk = sock->sk; ++ struct l2cap_options opts; ++ int err = 0, len; ++ __u32 opt; ++ ++ BT_DBG("sk %p", sk); ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ case L2CAP_OPTIONS: ++ len = MIN(sizeof(opts), optlen); ++ if (copy_from_user((char *)&opts, optval, len)) { ++ err = -EFAULT; ++ break; ++ } ++ l2cap_pi(sk)->imtu = opts.imtu; ++ l2cap_pi(sk)->omtu = opts.omtu; ++ break; ++ ++ case L2CAP_LM: ++ if (get_user(opt, (__u32 *)optval)) { ++ err = -EFAULT; ++ break; ++ } ++ ++ l2cap_pi(sk)->link_mode = opt; ++ break; ++ ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ } ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen) ++{ ++ struct sock *sk = sock->sk; ++ struct l2cap_options opts; ++ struct l2cap_conninfo cinfo; ++ int len, err = 0; ++ ++ if (get_user(len, optlen)) ++ return -EFAULT; ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ case L2CAP_OPTIONS: ++ opts.imtu = l2cap_pi(sk)->imtu; ++ opts.omtu = l2cap_pi(sk)->omtu; ++ opts.flush_to = l2cap_pi(sk)->flush_to; ++ ++ len = MIN(len, sizeof(opts)); ++ if (copy_to_user(optval, (char *)&opts, len)) ++ err = -EFAULT; ++ ++ break; ++ ++ case L2CAP_LM: ++ if (put_user(l2cap_pi(sk)->link_mode, (__u32 *)optval)) ++ err = -EFAULT; ++ break; ++ ++ case L2CAP_CONNINFO: ++ if (sk->state != BT_CONNECTED) { ++ err = -ENOTCONN; ++ break; ++ } ++ ++ cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle; ++ ++ len = MIN(len, sizeof(cinfo)); ++ if (copy_to_user(optval, (char *)&cinfo, len)) ++ err = -EFAULT; ++ ++ break; ++ ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ } ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_sock_shutdown(struct socket *sock, int how) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (!sk) return 0; ++ ++ lock_sock(sk); ++ if (!sk->shutdown) { ++ sk->shutdown = SHUTDOWN_MASK; ++ l2cap_sock_clear_timer(sk); ++ __l2cap_sock_close(sk, 0); ++ ++ if (sk->linger) ++ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime); ++ } ++ release_sock(sk); ++ return err; ++} ++ ++static int l2cap_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ int err; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (!sk) return 0; ++ ++ err = l2cap_sock_shutdown(sock, 2); ++ ++ sock_orphan(sk); ++ l2cap_sock_kill(sk); ++ return err; ++} ++ ++/* --------- L2CAP channels --------- */ ++static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid) ++{ ++ struct sock *s; ++ for (s = l->head; s; s = l2cap_pi(s)->next_c) { ++ if (l2cap_pi(s)->dcid == cid) ++ break; ++ } ++ return s; ++} ++ ++static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid) ++{ ++ struct sock *s; ++ for (s = l->head; s; s = l2cap_pi(s)->next_c) { ++ if (l2cap_pi(s)->scid == cid) ++ break; ++ } ++ return s; ++} ++ ++/* Find channel with given SCID. ++ * Returns locked socket */ ++static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid) ++{ ++ struct sock *s; ++ read_lock(&l->lock); ++ s = __l2cap_get_chan_by_scid(l, cid); ++ if (s) bh_lock_sock(s); ++ read_unlock(&l->lock); ++ return s; ++} ++ ++static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l) ++{ ++ __u16 cid = 0x0040; ++ ++ for (; cid < 0xffff; cid++) { ++ if(!__l2cap_get_chan_by_scid(l, cid)) ++ return cid; ++ } ++ ++ return 0; ++} ++ ++static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk) ++{ ++ sock_hold(sk); ++ ++ if (l->head) ++ l2cap_pi(l->head)->prev_c = sk; ++ ++ l2cap_pi(sk)->next_c = l->head; ++ l2cap_pi(sk)->prev_c = NULL; ++ l->head = sk; ++} ++ ++static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk) ++{ ++ struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c; ++ ++ write_lock(&l->lock); ++ if (sk == l->head) ++ l->head = next; ++ ++ if (next) ++ l2cap_pi(next)->prev_c = prev; ++ if (prev) ++ l2cap_pi(prev)->next_c = next; ++ write_unlock(&l->lock); ++ ++ __sock_put(sk); ++} ++ ++static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) ++{ ++ struct l2cap_chan_list *l = &conn->chan_list; ++ ++ BT_DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid); ++ ++ l2cap_pi(sk)->conn = conn; ++ ++ if (sk->type == SOCK_SEQPACKET) { ++ /* Alloc CID for connection-oriented socket */ ++ l2cap_pi(sk)->scid = l2cap_alloc_cid(l); ++ } else if (sk->type == SOCK_DGRAM) { ++ /* Connectionless socket */ ++ l2cap_pi(sk)->scid = 0x0002; ++ l2cap_pi(sk)->dcid = 0x0002; ++ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU; ++ } else { ++ /* Raw socket can send/recv signalling messages only */ ++ l2cap_pi(sk)->scid = 0x0001; ++ l2cap_pi(sk)->dcid = 0x0001; ++ l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU; ++ } ++ ++ __l2cap_chan_link(l, sk); ++ ++ if (parent) ++ bluez_accept_enqueue(parent, sk); ++} ++ ++static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) ++{ ++ struct l2cap_chan_list *l = &conn->chan_list; ++ write_lock(&l->lock); ++ __l2cap_chan_add(conn, sk, parent); ++ write_unlock(&l->lock); ++} ++ ++/* Delete channel. ++ * Must be called on the locked socket. */ ++static void l2cap_chan_del(struct sock *sk, int err) ++{ ++ struct l2cap_conn *conn = l2cap_pi(sk)->conn; ++ struct sock *parent = bluez_pi(sk)->parent; ++ ++ l2cap_sock_clear_timer(sk); ++ ++ BT_DBG("sk %p, conn %p, err %d", sk, conn, err); ++ ++ if (conn) { ++ /* Unlink from channel list */ ++ l2cap_chan_unlink(&conn->chan_list, sk); ++ l2cap_pi(sk)->conn = NULL; ++ hci_conn_put(conn->hcon); ++ } ++ ++ sk->state = BT_CLOSED; ++ sk->zapped = 1; ++ ++ if (err) ++ sk->err = err; ++ ++ if (parent) ++ parent->data_ready(parent, 0); ++ else ++ sk->state_change(sk); ++} ++ ++static void l2cap_conn_ready(struct l2cap_conn *conn) ++{ ++ struct l2cap_chan_list *l = &conn->chan_list; ++ struct sock *sk; ++ ++ BT_DBG("conn %p", conn); ++ ++ read_lock(&l->lock); ++ ++ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { ++ bh_lock_sock(sk); ++ ++ if (sk->type != SOCK_SEQPACKET) { ++ l2cap_sock_clear_timer(sk); ++ sk->state = BT_CONNECTED; ++ sk->state_change(sk); ++ } else if (sk->state == BT_CONNECT) { ++ l2cap_conn_req req; ++ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ req.psm = l2cap_pi(sk)->psm; ++ l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req); ++ } ++ ++ bh_unlock_sock(sk); ++ } ++ ++ read_unlock(&l->lock); ++} ++ ++/* Notify sockets that we cannot guaranty reliability anymore */ ++static void l2cap_conn_unreliable(struct l2cap_conn *conn, int err) ++{ ++ struct l2cap_chan_list *l = &conn->chan_list; ++ struct sock *sk; ++ ++ BT_DBG("conn %p", conn); ++ ++ read_lock(&l->lock); ++ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { ++ if (l2cap_pi(sk)->link_mode & L2CAP_LM_RELIABLE) ++ sk->err = err; ++ } ++ read_unlock(&l->lock); ++} ++ ++static void l2cap_chan_ready(struct sock *sk) ++{ ++ struct sock *parent = bluez_pi(sk)->parent; ++ ++ BT_DBG("sk %p, parent %p", sk, parent); ++ ++ l2cap_pi(sk)->conf_state = 0; ++ l2cap_sock_clear_timer(sk); ++ ++ if (!parent) { ++ /* Outgoing channel. ++ * Wake up socket sleeping on connect. ++ */ ++ sk->state = BT_CONNECTED; ++ sk->state_change(sk); ++ } else { ++ /* Incomming channel. ++ * Wake up socket sleeping on accept. ++ */ ++ parent->data_ready(parent, 0); ++ } ++} ++ ++/* Copy frame to all raw sockets on that connection */ ++void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb) ++{ ++ struct l2cap_chan_list *l = &conn->chan_list; ++ struct sk_buff *nskb; ++ struct sock * sk; ++ ++ BT_DBG("conn %p", conn); ++ ++ read_lock(&l->lock); ++ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { ++ if (sk->type != SOCK_RAW) ++ continue; ++ ++ /* Don't send frame to the socket it came from */ ++ if (skb->sk == sk) ++ continue; ++ ++ if (!(nskb = skb_clone(skb, GFP_ATOMIC))) ++ continue; ++ ++ if (sock_queue_rcv_skb(sk, nskb)) ++ kfree_skb(nskb); ++ } ++ read_unlock(&l->lock); ++} ++ ++static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len) ++{ ++ struct l2cap_conn *conn = l2cap_pi(sk)->conn; ++ struct sk_buff *skb, **frag; ++ int err, hlen, count, sent=0; ++ l2cap_hdr *lh; ++ ++ BT_DBG("sk %p len %d", sk, len); ++ ++ /* First fragment (with L2CAP header) */ ++ if (sk->type == SOCK_DGRAM) ++ hlen = L2CAP_HDR_SIZE + 2; ++ else ++ hlen = L2CAP_HDR_SIZE; ++ ++ count = MIN(conn->mtu - hlen, len); ++ ++ skb = bluez_skb_send_alloc(sk, hlen + count, ++ msg->msg_flags & MSG_DONTWAIT, &err); ++ if (!skb) ++ return err; ++ ++ /* Create L2CAP header */ ++ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE); ++ lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ lh->len = __cpu_to_le16(len + (hlen - L2CAP_HDR_SIZE)); ++ ++ if (sk->type == SOCK_DGRAM) ++ put_unaligned(l2cap_pi(sk)->psm, (__u16 *) skb_put(skb, 2)); ++ ++ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) { ++ err = -EFAULT; ++ goto fail; ++ } ++ ++ sent += count; ++ len -= count; ++ ++ /* Continuation fragments (no L2CAP header) */ ++ frag = &skb_shinfo(skb)->frag_list; ++ while (len) { ++ count = MIN(conn->mtu, len); ++ ++ *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err); ++ if (!*frag) ++ goto fail; ++ ++ if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) { ++ err = -EFAULT; ++ goto fail; ++ } ++ ++ sent += count; ++ len -= count; ++ ++ frag = &(*frag)->next; ++ } ++ ++ if ((err = hci_send_acl(conn->hcon, skb, 0)) < 0) ++ goto fail; ++ ++ return sent; ++ ++fail: ++ kfree_skb(skb); ++ return err; ++} ++ ++/* --------- L2CAP signalling commands --------- */ ++static inline __u8 l2cap_get_ident(struct l2cap_conn *conn) ++{ ++ __u8 id; ++ ++ /* Get next available identificator. ++ * 1 - 199 are used by kernel. ++ * 200 - 254 are used by utilities like l2ping, etc ++ */ ++ ++ spin_lock(&conn->lock); ++ ++ if (++conn->tx_ident > 199) ++ conn->tx_ident = 1; ++ ++ id = conn->tx_ident; ++ ++ spin_unlock(&conn->lock); ++ ++ return id; ++} ++ ++static struct sk_buff *l2cap_build_cmd(struct l2cap_conn *conn, ++ __u8 code, __u8 ident, __u16 dlen, void *data) ++{ ++ struct sk_buff *skb, **frag; ++ l2cap_cmd_hdr *cmd; ++ l2cap_hdr *lh; ++ int len, count; ++ ++ BT_DBG("conn %p, code 0x%2.2x, ident 0x%2.2x, len %d", conn, code, ident, dlen); ++ ++ len = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + dlen; ++ count = MIN(conn->mtu, len); ++ ++ skb = bluez_skb_alloc(count, GFP_ATOMIC); ++ if (!skb) ++ return NULL; ++ ++ lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE); ++ lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + dlen); ++ lh->cid = __cpu_to_le16(0x0001); ++ ++ cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE); ++ cmd->code = code; ++ cmd->ident = ident; ++ cmd->len = __cpu_to_le16(dlen); ++ ++ if (dlen) { ++ count -= L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE; ++ memcpy(skb_put(skb, count), data, count); ++ data += count; ++ } ++ ++ len -= skb->len; ++ ++ /* Continuation fragments (no L2CAP header) */ ++ frag = &skb_shinfo(skb)->frag_list; ++ while (len) { ++ count = MIN(conn->mtu, len); ++ ++ *frag = bluez_skb_alloc(count, GFP_ATOMIC); ++ if (!*frag) ++ goto fail; ++ ++ memcpy(skb_put(*frag, count), data, count); ++ ++ len -= count; ++ data += count; ++ ++ frag = &(*frag)->next; ++ } ++ ++ return skb; ++ ++fail: ++ kfree_skb(skb); ++ return NULL; ++} ++ ++static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data) ++{ ++ __u8 ident = l2cap_get_ident(conn); ++ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data); ++ ++ BT_DBG("code 0x%2.2x", code); ++ ++ if (!skb) ++ return -ENOMEM; ++ return hci_send_acl(conn->hcon, skb, 0); ++} ++ ++static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data) ++{ ++ struct sk_buff *skb = l2cap_build_cmd(conn, code, ident, len, data); ++ ++ BT_DBG("code 0x%2.2x", code); ++ ++ if (!skb) ++ return -ENOMEM; ++ return hci_send_acl(conn->hcon, skb, 0); ++} ++ ++static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned long *val) ++{ ++ l2cap_conf_opt *opt = *ptr; ++ int len; ++ ++ len = L2CAP_CONF_OPT_SIZE + opt->len; ++ *ptr += len; ++ ++ *type = opt->type; ++ *olen = opt->len; ++ ++ switch (opt->len) { ++ case 1: ++ *val = *((__u8 *) opt->val); ++ break; ++ ++ case 2: ++ *val = __le16_to_cpu(*((__u16 *)opt->val)); ++ break; ++ ++ case 4: ++ *val = __le32_to_cpu(*((__u32 *)opt->val)); ++ break; ++ ++ default: ++ *val = (unsigned long) opt->val; ++ break; ++ }; ++ ++ BT_DBG("type 0x%2.2x len %d val 0x%lx", *type, opt->len, *val); ++ return len; ++} ++ ++static inline void l2cap_parse_conf_req(struct sock *sk, void *data, int len) ++{ ++ int type, hint, olen; ++ unsigned long val; ++ void *ptr = data; ++ ++ BT_DBG("sk %p len %d", sk, len); ++ ++ while (len >= L2CAP_CONF_OPT_SIZE) { ++ len -= l2cap_get_conf_opt(&ptr, &type, &olen, &val); ++ ++ hint = type & 0x80; ++ type &= 0x7f; ++ ++ switch (type) { ++ case L2CAP_CONF_MTU: ++ l2cap_pi(sk)->conf_mtu = val; ++ break; ++ ++ case L2CAP_CONF_FLUSH_TO: ++ l2cap_pi(sk)->flush_to = val; ++ break; ++ ++ case L2CAP_CONF_QOS: ++ break; ++ ++ default: ++ if (hint) ++ break; ++ ++ /* FIXME: Reject unknown option */ ++ break; ++ }; ++ } ++} ++ ++static void l2cap_add_conf_opt(void **ptr, __u8 type, __u8 len, unsigned long val) ++{ ++ register l2cap_conf_opt *opt = *ptr; ++ ++ BT_DBG("type 0x%2.2x len %d val 0x%lx", type, len, val); ++ ++ opt->type = type; ++ opt->len = len; ++ ++ switch (len) { ++ case 1: ++ *((__u8 *) opt->val) = val; ++ break; ++ ++ case 2: ++ *((__u16 *) opt->val) = __cpu_to_le16(val); ++ break; ++ ++ case 4: ++ *((__u32 *) opt->val) = __cpu_to_le32(val); ++ break; ++ ++ default: ++ memcpy(opt->val, (void *) val, len); ++ break; ++ }; ++ ++ *ptr += L2CAP_CONF_OPT_SIZE + len; ++} ++ ++static int l2cap_build_conf_req(struct sock *sk, void *data) ++{ ++ struct l2cap_pinfo *pi = l2cap_pi(sk); ++ l2cap_conf_req *req = (l2cap_conf_req *) data; ++ void *ptr = req->data; ++ ++ BT_DBG("sk %p", sk); ++ ++ if (pi->imtu != L2CAP_DEFAULT_MTU) ++ l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu); ++ ++ /* FIXME. Need actual value of the flush timeout */ ++ //if (flush_to != L2CAP_DEFAULT_FLUSH_TO) ++ // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to); ++ ++ req->dcid = __cpu_to_le16(pi->dcid); ++ req->flags = __cpu_to_le16(0); ++ ++ return ptr - data; ++} ++ ++static inline int l2cap_conf_output(struct sock *sk, void **ptr) ++{ ++ struct l2cap_pinfo *pi = l2cap_pi(sk); ++ int result = 0; ++ ++ /* Configure output options and let the other side know ++ * which ones we don't like. ++ */ ++ if (pi->conf_mtu < pi->omtu) { ++ l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, pi->omtu); ++ result = L2CAP_CONF_UNACCEPT; ++ } else { ++ pi->omtu = pi->conf_mtu; ++ } ++ ++ BT_DBG("sk %p result %d", sk, result); ++ return result; ++} ++ ++static int l2cap_build_conf_rsp(struct sock *sk, void *data, int *result) ++{ ++ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data; ++ void *ptr = rsp->data; ++ u16 flags = 0; ++ ++ BT_DBG("sk %p complete %d", sk, result ? 1 : 0); ++ ++ if (result) ++ *result = l2cap_conf_output(sk, &ptr); ++ else ++ flags |= 0x0001; ++ ++ rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ rsp->result = __cpu_to_le16(result ? *result : 0); ++ rsp->flags = __cpu_to_le16(flags); ++ ++ return ptr - data; ++} ++ ++static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ struct l2cap_chan_list *list = &conn->chan_list; ++ l2cap_conn_req *req = (l2cap_conn_req *) data; ++ l2cap_conn_rsp rsp; ++ struct sock *sk, *parent; ++ int result = 0, status = 0; ++ ++ __u16 dcid = 0, scid = __le16_to_cpu(req->scid); ++ __u16 psm = req->psm; ++ ++ BT_DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid); ++ ++ /* Check if we have socket listening on psm */ ++ parent = l2cap_get_sock_by_psm(BT_LISTEN, psm, conn->src); ++ if (!parent) { ++ result = L2CAP_CR_BAD_PSM; ++ goto sendresp; ++ } ++ ++ result = L2CAP_CR_NO_MEM; ++ ++ /* Check for backlog size */ ++ if (parent->ack_backlog > parent->max_ack_backlog) { ++ BT_DBG("backlog full %d", parent->ack_backlog); ++ goto response; ++ } ++ ++ sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC); ++ if (!sk) ++ goto response; ++ ++ write_lock(&list->lock); ++ ++ /* Check if we already have channel with that dcid */ ++ if (__l2cap_get_chan_by_dcid(list, scid)) { ++ write_unlock(&list->lock); ++ sk->zapped = 1; ++ l2cap_sock_kill(sk); ++ goto response; ++ } ++ ++ hci_conn_hold(conn->hcon); ++ ++ l2cap_sock_init(sk, parent); ++ bacpy(&bluez_pi(sk)->src, conn->src); ++ bacpy(&bluez_pi(sk)->dst, conn->dst); ++ l2cap_pi(sk)->psm = psm; ++ l2cap_pi(sk)->dcid = scid; ++ ++ __l2cap_chan_add(conn, sk, parent); ++ dcid = l2cap_pi(sk)->scid; ++ ++ l2cap_sock_set_timer(sk, sk->sndtimeo); ++ ++ /* Service level security */ ++ result = L2CAP_CR_PEND; ++ status = L2CAP_CS_AUTHEN_PEND; ++ sk->state = BT_CONNECT2; ++ l2cap_pi(sk)->ident = cmd->ident; ++ ++ if (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT) { ++ if (!hci_conn_encrypt(conn->hcon)) ++ goto done; ++ } else if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH) { ++ if (!hci_conn_auth(conn->hcon)) ++ goto done; ++ } ++ ++ sk->state = BT_CONFIG; ++ result = status = 0; ++ ++done: ++ write_unlock(&list->lock); ++ ++response: ++ bh_unlock_sock(parent); ++ ++sendresp: ++ rsp.scid = __cpu_to_le16(scid); ++ rsp.dcid = __cpu_to_le16(dcid); ++ rsp.result = __cpu_to_le16(result); ++ rsp.status = __cpu_to_le16(status); ++ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp); ++ return 0; ++} ++ ++static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data; ++ __u16 scid, dcid, result, status; ++ struct sock *sk; ++ char req[128]; ++ ++ scid = __le16_to_cpu(rsp->scid); ++ dcid = __le16_to_cpu(rsp->dcid); ++ result = __le16_to_cpu(rsp->result); ++ status = __le16_to_cpu(rsp->status); ++ ++ BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status); ++ ++ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) ++ return -ENOENT; ++ ++ switch (result) { ++ case L2CAP_CR_SUCCESS: ++ sk->state = BT_CONFIG; ++ l2cap_pi(sk)->dcid = dcid; ++ l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT; ++ ++ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req); ++ break; ++ ++ case L2CAP_CR_PEND: ++ break; ++ ++ default: ++ l2cap_chan_del(sk, ECONNREFUSED); ++ break; ++ } ++ ++ bh_unlock_sock(sk); ++ return 0; ++} ++ ++static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ l2cap_conf_req * req = (l2cap_conf_req *) data; ++ __u16 dcid, flags; ++ __u8 rsp[64]; ++ struct sock *sk; ++ int result; ++ ++ dcid = __le16_to_cpu(req->dcid); ++ flags = __le16_to_cpu(req->flags); ++ ++ BT_DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags); ++ ++ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid))) ++ return -ENOENT; ++ ++ l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE); ++ ++ if (flags & 0x0001) { ++ /* Incomplete config. Send empty response. */ ++ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp); ++ goto unlock; ++ } ++ ++ /* Complete config. */ ++ l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp); ++ ++ if (result) ++ goto unlock; ++ ++ /* Output config done */ ++ l2cap_pi(sk)->conf_state |= L2CAP_CONF_OUTPUT_DONE; ++ ++ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) { ++ sk->state = BT_CONNECTED; ++ l2cap_chan_ready(sk); ++ } else if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT)) { ++ char req[64]; ++ l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req); ++ } ++ ++unlock: ++ bh_unlock_sock(sk); ++ return 0; ++} ++ ++static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data; ++ __u16 scid, flags, result; ++ struct sock *sk; ++ int err = 0; ++ ++ scid = __le16_to_cpu(rsp->scid); ++ flags = __le16_to_cpu(rsp->flags); ++ result = __le16_to_cpu(rsp->result); ++ ++ BT_DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result); ++ ++ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) ++ return -ENOENT; ++ ++ switch (result) { ++ case L2CAP_CONF_SUCCESS: ++ break; ++ ++ case L2CAP_CONF_UNACCEPT: ++ if (++l2cap_pi(sk)->conf_retry < L2CAP_CONF_MAX_RETRIES) { ++ char req[128]; ++ /* ++ It does not make sense to adjust L2CAP parameters ++ that are currently defined in the spec. We simply ++ resend config request that we sent earlier. It is ++ stupid :) but it helps qualification testing ++ which expects at least some response from us. ++ */ ++ l2cap_send_req(conn, L2CAP_CONF_REQ, ++ l2cap_build_conf_req(sk, req), req); ++ goto done; ++ } ++ default: ++ sk->state = BT_DISCONN; ++ sk->err = ECONNRESET; ++ l2cap_sock_set_timer(sk, HZ * 5); ++ { ++ l2cap_disconn_req req; ++ req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req); ++ } ++ goto done; ++ } ++ ++ if (flags & 0x01) ++ goto done; ++ ++ /* Input config done */ ++ l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE; ++ ++ if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) { ++ sk->state = BT_CONNECTED; ++ l2cap_chan_ready(sk); ++ } ++ ++done: ++ bh_unlock_sock(sk); ++ return err; ++} ++ ++static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ l2cap_disconn_req *req = (l2cap_disconn_req *) data; ++ l2cap_disconn_rsp rsp; ++ __u16 dcid, scid; ++ struct sock *sk; ++ ++ scid = __le16_to_cpu(req->scid); ++ dcid = __le16_to_cpu(req->dcid); ++ ++ BT_DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid); ++ ++ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid))) ++ return 0; ++ ++ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp); ++ ++ sk->shutdown = SHUTDOWN_MASK; ++ ++ l2cap_chan_del(sk, ECONNRESET); ++ bh_unlock_sock(sk); ++ ++ l2cap_sock_kill(sk); ++ return 0; ++} ++ ++static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) ++{ ++ l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data; ++ __u16 dcid, scid; ++ struct sock *sk; ++ ++ scid = __le16_to_cpu(rsp->scid); ++ dcid = __le16_to_cpu(rsp->dcid); ++ ++ BT_DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid); ++ ++ if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) ++ return 0; ++ l2cap_chan_del(sk, 0); ++ bh_unlock_sock(sk); ++ ++ l2cap_sock_kill(sk); ++ return 0; ++} ++ ++static inline int l2cap_information_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data) ++{ ++ l2cap_info_req *req = (l2cap_info_req *) data; ++ l2cap_info_rsp rsp; ++ u16 type; ++ ++ type = __le16_to_cpu(req->type); ++ ++ BT_DBG("type 0x%4.4x", type); ++ ++ rsp.type = __cpu_to_le16(type); ++ rsp.result = __cpu_to_le16(L2CAP_IR_NOTSUPP); ++ l2cap_send_rsp(conn, cmd->ident, L2CAP_INFO_RSP, sizeof(rsp), &rsp); ++ return 0; ++} ++ ++static inline int l2cap_information_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, u8 *data) ++{ ++ l2cap_info_rsp *rsp = (l2cap_info_rsp *) data; ++ u16 type, result; ++ ++ type = __le16_to_cpu(rsp->type); ++ result = __le16_to_cpu(rsp->result); ++ ++ BT_DBG("type 0x%4.4x result 0x%2.2x", type, result); ++ ++ return 0; ++} ++ ++static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb) ++{ ++ __u8 *data = skb->data; ++ int len = skb->len; ++ l2cap_cmd_hdr cmd; ++ int err = 0; ++ ++ l2cap_raw_recv(conn, skb); ++ ++ while (len >= L2CAP_CMD_HDR_SIZE) { ++ memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE); ++ data += L2CAP_CMD_HDR_SIZE; ++ len -= L2CAP_CMD_HDR_SIZE; ++ ++ cmd.len = __le16_to_cpu(cmd.len); ++ ++ BT_DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident); ++ ++ if (cmd.len > len || !cmd.ident) { ++ BT_DBG("corrupted command"); ++ break; ++ } ++ ++ switch (cmd.code) { ++ case L2CAP_COMMAND_REJ: ++ /* FIXME: We should process this */ ++ break; ++ ++ case L2CAP_CONN_REQ: ++ err = l2cap_connect_req(conn, &cmd, data); ++ break; ++ ++ case L2CAP_CONN_RSP: ++ err = l2cap_connect_rsp(conn, &cmd, data); ++ break; ++ ++ case L2CAP_CONF_REQ: ++ err = l2cap_config_req(conn, &cmd, data); ++ break; ++ ++ case L2CAP_CONF_RSP: ++ err = l2cap_config_rsp(conn, &cmd, data); ++ break; ++ ++ case L2CAP_DISCONN_REQ: ++ err = l2cap_disconnect_req(conn, &cmd, data); ++ break; ++ ++ case L2CAP_DISCONN_RSP: ++ err = l2cap_disconnect_rsp(conn, &cmd, data); ++ break; ++ ++ case L2CAP_ECHO_REQ: ++ l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data); ++ break; ++ ++ case L2CAP_ECHO_RSP: ++ break; ++ ++ case L2CAP_INFO_REQ: ++ err = l2cap_information_req(conn, &cmd, data); ++ break; ++ ++ case L2CAP_INFO_RSP: ++ err = l2cap_information_rsp(conn, &cmd, data); ++ break; ++ ++ default: ++ BT_ERR("Unknown signaling command 0x%2.2x", cmd.code); ++ err = -EINVAL; ++ break; ++ }; ++ ++ if (err) { ++ l2cap_cmd_rej rej; ++ BT_DBG("error %d", err); ++ ++ /* FIXME: Map err to a valid reason */ ++ rej.reason = __cpu_to_le16(0); ++ l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej); ++ } ++ ++ data += cmd.len; ++ len -= cmd.len; ++ } ++ ++ kfree_skb(skb); ++} ++ ++static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb) ++{ ++ struct sock *sk; ++ ++ sk = l2cap_get_chan_by_scid(&conn->chan_list, cid); ++ if (!sk) { ++ BT_DBG("unknown cid 0x%4.4x", cid); ++ goto drop; ++ } ++ ++ BT_DBG("sk %p, len %d", sk, skb->len); ++ ++ if (sk->state != BT_CONNECTED) ++ goto drop; ++ ++ if (l2cap_pi(sk)->imtu < skb->len) ++ goto drop; ++ ++ /* If socket recv buffers overflows we drop data here ++ * which is *bad* because L2CAP has to be reliable. ++ * But we don't have any other choice. L2CAP doesn't ++ * provide flow control mechanism */ ++ ++ if (!sock_queue_rcv_skb(sk, skb)) ++ goto done; ++ ++drop: ++ kfree_skb(skb); ++ ++done: ++ if (sk) bh_unlock_sock(sk); ++ return 0; ++} ++ ++static inline int l2cap_conless_channel(struct l2cap_conn *conn, __u16 psm, struct sk_buff *skb) ++{ ++ struct sock *sk; ++ ++ sk = l2cap_get_sock_by_psm(0, psm, conn->src); ++ if (!sk) ++ goto drop; ++ ++ BT_DBG("sk %p, len %d", sk, skb->len); ++ ++ if (sk->state != BT_BOUND && sk->state != BT_CONNECTED) ++ goto drop; ++ ++ if (l2cap_pi(sk)->imtu < skb->len) ++ goto drop; ++ ++ if (!sock_queue_rcv_skb(sk, skb)) ++ goto done; ++ ++drop: ++ kfree_skb(skb); ++ ++done: ++ if (sk) bh_unlock_sock(sk); ++ return 0; ++} ++ ++static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb) ++{ ++ l2cap_hdr *lh = (l2cap_hdr *) skb->data; ++ __u16 cid, psm, len; ++ ++ skb_pull(skb, L2CAP_HDR_SIZE); ++ cid = __le16_to_cpu(lh->cid); ++ len = __le16_to_cpu(lh->len); ++ ++ BT_DBG("len %d, cid 0x%4.4x", len, cid); ++ ++ switch (cid) { ++ case 0x0001: ++ l2cap_sig_channel(conn, skb); ++ break; ++ ++ case 0x0002: ++ psm = get_unaligned((__u16 *) skb->data); ++ skb_pull(skb, 2); ++ l2cap_conless_channel(conn, psm, skb); ++ break; ++ ++ default: ++ l2cap_data_channel(conn, cid, skb); ++ break; ++ } ++} ++ ++/* ------------ L2CAP interface with lower layer (HCI) ------------- */ ++ ++static int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type) ++{ ++ int exact = 0, lm1 = 0, lm2 = 0; ++ register struct sock *sk; ++ ++ if (type != ACL_LINK) ++ return 0; ++ ++ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr)); ++ ++ /* Find listening sockets and check their link_mode */ ++ read_lock(&l2cap_sk_list.lock); ++ for (sk = l2cap_sk_list.head; sk; sk = sk->next) { ++ if (sk->state != BT_LISTEN) ++ continue; ++ ++ if (!bacmp(&bluez_pi(sk)->src, &hdev->bdaddr)) { ++ lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode); ++ exact++; ++ } else if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY)) ++ lm2 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode); ++ } ++ read_unlock(&l2cap_sk_list.lock); ++ ++ return exact ? lm1 : lm2; ++} ++ ++static int l2cap_connect_cfm(struct hci_conn *hcon, __u8 status) ++{ ++ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status); ++ ++ if (hcon->type != ACL_LINK) ++ return 0; ++ ++ if (!status) { ++ struct l2cap_conn *conn; ++ ++ conn = l2cap_conn_add(hcon, status); ++ if (conn) ++ l2cap_conn_ready(conn); ++ } else ++ l2cap_conn_del(hcon, bterr(status)); ++ ++ return 0; ++} ++ ++static int l2cap_disconn_ind(struct hci_conn *hcon, __u8 reason) ++{ ++ BT_DBG("hcon %p reason %d", hcon, reason); ++ ++ if (hcon->type != ACL_LINK) ++ return 0; ++ ++ l2cap_conn_del(hcon, bterr(reason)); ++ return 0; ++} ++ ++static int l2cap_auth_cfm(struct hci_conn *hcon, __u8 status) ++{ ++ struct l2cap_chan_list *l; ++ struct l2cap_conn *conn; ++ l2cap_conn_rsp rsp; ++ struct sock *sk; ++ int result; ++ ++ if (!(conn = hcon->l2cap_data)) ++ return 0; ++ l = &conn->chan_list; ++ ++ BT_DBG("conn %p", conn); ++ ++ read_lock(&l->lock); ++ ++ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { ++ bh_lock_sock(sk); ++ ++ if (sk->state != BT_CONNECT2 || ++ (l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT)) { ++ bh_unlock_sock(sk); ++ continue; ++ } ++ ++ if (!status) { ++ sk->state = BT_CONFIG; ++ result = 0; ++ } else { ++ sk->state = BT_DISCONN; ++ l2cap_sock_set_timer(sk, HZ/10); ++ result = L2CAP_CR_SEC_BLOCK; ++ } ++ ++ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ rsp.result = __cpu_to_le16(result); ++ rsp.status = __cpu_to_le16(0); ++ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP, ++ L2CAP_CONN_RSP_SIZE, &rsp); ++ ++ bh_unlock_sock(sk); ++ } ++ ++ read_unlock(&l->lock); ++ return 0; ++} ++ ++static int l2cap_encrypt_cfm(struct hci_conn *hcon, __u8 status) ++{ ++ struct l2cap_chan_list *l; ++ struct l2cap_conn *conn; ++ l2cap_conn_rsp rsp; ++ struct sock *sk; ++ int result; ++ ++ if (!(conn = hcon->l2cap_data)) ++ return 0; ++ l = &conn->chan_list; ++ ++ BT_DBG("conn %p", conn); ++ ++ read_lock(&l->lock); ++ ++ for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { ++ bh_lock_sock(sk); ++ ++ if (sk->state != BT_CONNECT2) { ++ bh_unlock_sock(sk); ++ continue; ++ } ++ ++ if (!status) { ++ sk->state = BT_CONFIG; ++ result = 0; ++ } else { ++ sk->state = BT_DISCONN; ++ l2cap_sock_set_timer(sk, HZ/10); ++ result = L2CAP_CR_SEC_BLOCK; ++ } ++ ++ rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid); ++ rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid); ++ rsp.result = __cpu_to_le16(result); ++ rsp.status = __cpu_to_le16(0); ++ l2cap_send_rsp(conn, l2cap_pi(sk)->ident, L2CAP_CONN_RSP, ++ L2CAP_CONN_RSP_SIZE, &rsp); ++ ++ bh_unlock_sock(sk); ++ } ++ ++ read_unlock(&l->lock); ++ return 0; ++} ++ ++static int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, __u16 flags) ++{ ++ struct l2cap_conn *conn = hcon->l2cap_data; ++ ++ if (!conn && !(conn = l2cap_conn_add(hcon, 0))) ++ goto drop; ++ ++ BT_DBG("conn %p len %d flags 0x%x", conn, skb->len, flags); ++ ++ if (flags & ACL_START) { ++ l2cap_hdr *hdr; ++ int len; ++ ++ if (conn->rx_len) { ++ BT_ERR("Unexpected start frame (len %d)", skb->len); ++ kfree_skb(conn->rx_skb); ++ conn->rx_skb = NULL; ++ conn->rx_len = 0; ++ l2cap_conn_unreliable(conn, ECOMM); ++ } ++ ++ if (skb->len < 2) { ++ BT_ERR("Frame is too short (len %d)", skb->len); ++ l2cap_conn_unreliable(conn, ECOMM); ++ goto drop; ++ } ++ ++ hdr = (l2cap_hdr *) skb->data; ++ len = __le16_to_cpu(hdr->len) + L2CAP_HDR_SIZE; ++ ++ if (len == skb->len) { ++ /* Complete frame received */ ++ l2cap_recv_frame(conn, skb); ++ return 0; ++ } ++ ++ BT_DBG("Start: total len %d, frag len %d", len, skb->len); ++ ++ if (skb->len > len) { ++ BT_ERR("Frame is too long (len %d, expected len %d)", ++ skb->len, len); ++ l2cap_conn_unreliable(conn, ECOMM); ++ goto drop; ++ } ++ ++ /* Allocate skb for the complete frame including header */ ++ conn->rx_skb = bluez_skb_alloc(len, GFP_ATOMIC); ++ if (!conn->rx_skb) ++ goto drop; ++ ++ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); ++ conn->rx_len = len - skb->len; ++ } else { ++ BT_DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len); ++ ++ if (!conn->rx_len) { ++ BT_ERR("Unexpected continuation frame (len %d)", skb->len); ++ l2cap_conn_unreliable(conn, ECOMM); ++ goto drop; ++ } ++ ++ if (skb->len > conn->rx_len) { ++ BT_ERR("Fragment is too long (len %d, expected %d)", ++ skb->len, conn->rx_len); ++ kfree_skb(conn->rx_skb); ++ conn->rx_skb = NULL; ++ conn->rx_len = 0; ++ l2cap_conn_unreliable(conn, ECOMM); ++ goto drop; ++ } ++ ++ memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); ++ conn->rx_len -= skb->len; ++ ++ if (!conn->rx_len) { ++ /* Complete frame received */ ++ l2cap_recv_frame(conn, conn->rx_skb); ++ conn->rx_skb = NULL; ++ } ++ } ++ ++drop: ++ kfree_skb(skb); ++ return 0; ++} ++ ++/* ----- Proc fs support ------ */ ++static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list) ++{ ++ struct l2cap_pinfo *pi; ++ struct sock *sk; ++ char *ptr = buf; ++ ++ read_lock_bh(&list->lock); ++ ++ for (sk = list->head; sk; sk = sk->next) { ++ pi = l2cap_pi(sk); ++ ptr += sprintf(ptr, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n", ++ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst), ++ sk->state, pi->psm, pi->scid, pi->dcid, pi->imtu, pi->omtu, ++ pi->link_mode); ++ } ++ ++ read_unlock_bh(&list->lock); ++ ++ ptr += sprintf(ptr, "\n"); ++ return ptr - buf; ++} ++ ++static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv) ++{ ++ char *ptr = buf; ++ int len; ++ ++ BT_DBG("count %d, offset %ld", count, offset); ++ ++ ptr += l2cap_sock_dump(ptr, &l2cap_sk_list); ++ len = ptr - buf; ++ ++ if (len <= count + offset) ++ *eof = 1; ++ ++ *start = buf + offset; ++ len -= offset; ++ ++ if (len > count) ++ len = count; ++ if (len < 0) ++ len = 0; ++ ++ return len; ++} ++ ++static struct proto_ops l2cap_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: l2cap_sock_release, ++ bind: l2cap_sock_bind, ++ connect: l2cap_sock_connect, ++ listen: l2cap_sock_listen, ++ accept: l2cap_sock_accept, ++ getname: l2cap_sock_getname, ++ sendmsg: l2cap_sock_sendmsg, ++ recvmsg: bluez_sock_recvmsg, ++ poll: bluez_sock_poll, ++ socketpair: sock_no_socketpair, ++ ioctl: sock_no_ioctl, ++ shutdown: l2cap_sock_shutdown, ++ setsockopt: l2cap_sock_setsockopt, ++ getsockopt: l2cap_sock_getsockopt, ++ mmap: sock_no_mmap ++}; ++ ++static struct net_proto_family l2cap_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: l2cap_sock_create ++}; ++ ++static struct hci_proto l2cap_hci_proto = { ++ name: "L2CAP", ++ id: HCI_PROTO_L2CAP, ++ connect_ind: l2cap_connect_ind, ++ connect_cfm: l2cap_connect_cfm, ++ disconn_ind: l2cap_disconn_ind, ++ recv_acldata: l2cap_recv_acldata, ++ auth_cfm: l2cap_auth_cfm, ++ encrypt_cfm: l2cap_encrypt_cfm ++}; ++ ++int __init l2cap_init(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops))) { ++ BT_ERR("Can't register L2CAP socket"); ++ return err; ++ } ++ ++ if ((err = hci_register_proto(&l2cap_hci_proto))) { ++ BT_ERR("Can't register L2CAP protocol"); ++ return err; ++ } ++ ++ create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL); ++ ++ BT_INFO("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ return 0; ++} ++ ++void l2cap_cleanup(void) ++{ ++ remove_proc_entry("bluetooth/l2cap", NULL); ++ ++ /* Unregister socket and protocol */ ++ if (bluez_sock_unregister(BTPROTO_L2CAP)) ++ BT_ERR("Can't unregister L2CAP socket"); ++ ++ if (hci_unregister_proto(&l2cap_hci_proto)) ++ BT_ERR("Can't unregister L2CAP protocol"); ++} ++ ++void l2cap_load(void) ++{ ++ /* Dummy function to trigger automatic L2CAP module loading by ++ other modules that use L2CAP sockets but do not use any other ++ symbols from it. */ ++ return; ++} ++ ++EXPORT_SYMBOL(l2cap_load); ++ ++module_init(l2cap_init); ++module_exit(l2cap_cleanup); ++ ++MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); ++MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/l2cap_core.c linux-2.4.18-mh15/net/bluetooth/l2cap_core.c +--- linux-2.4.18/net/bluetooth/l2cap_core.c 2001-09-30 21:26:08.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/l2cap_core.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,2316 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * BlueZ L2CAP core and sockets. +- * +- * $Id: l2cap_core.c,v 1.19 2001/08/03 04:19:50 maxk Exp $ +- */ +-#define VERSION "1.1" +- +-#include <linux/config.h> +-#include <linux/module.h> +- +-#include <linux/types.h> +-#include <linux/errno.h> +-#include <linux/kernel.h> +-#include <linux/major.h> +-#include <linux/sched.h> +-#include <linux/slab.h> +-#include <linux/poll.h> +-#include <linux/fcntl.h> +-#include <linux/init.h> +-#include <linux/skbuff.h> +-#include <linux/interrupt.h> +-#include <linux/socket.h> +-#include <linux/skbuff.h> +-#include <linux/proc_fs.h> +-#include <linux/list.h> +-#include <net/sock.h> +- +-#include <asm/system.h> +-#include <asm/uaccess.h> +- +-#include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> +-#include <net/bluetooth/hci_core.h> +-#include <net/bluetooth/l2cap.h> +-#include <net/bluetooth/l2cap_core.h> +- +-#ifndef L2CAP_DEBUG +-#undef DBG +-#define DBG( A... ) +-#endif +- +-struct proto_ops l2cap_sock_ops; +- +-struct bluez_sock_list l2cap_sk_list = { +- lock: RW_LOCK_UNLOCKED +-}; +- +-struct list_head l2cap_iff_list = LIST_HEAD_INIT(l2cap_iff_list); +-rwlock_t l2cap_rt_lock = RW_LOCK_UNLOCKED; +- +-static int l2cap_conn_del(struct l2cap_conn *conn, int err); +- +-static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent); +-static void l2cap_chan_del(struct sock *sk, int err); +-static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len); +- +-static void l2cap_sock_close(struct sock *sk); +-static void l2cap_sock_kill(struct sock *sk); +- +-static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data); +-static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data); +- +-/* -------- L2CAP interfaces & routing --------- */ +-/* Add/delete L2CAP interface. +- * Must be called with locked rt_lock +- */ +- +-static void l2cap_iff_add(struct hci_dev *hdev) +-{ +- struct l2cap_iff *iff; +- +- DBG("%s", hdev->name); +- +- DBG("iff_list %p next %p prev %p", &l2cap_iff_list, l2cap_iff_list.next, l2cap_iff_list.prev); +- +- /* Allocate new interface and lock HCI device */ +- if (!(iff = kmalloc(sizeof(struct l2cap_iff), GFP_KERNEL))) { +- ERR("Can't allocate new interface %s", hdev->name); +- return; +- } +- memset(iff, 0, sizeof(struct l2cap_iff)); +- +- hci_dev_hold(hdev); +- hdev->l2cap_data = iff; +- iff->hdev = hdev; +- iff->mtu = hdev->acl_mtu - HCI_ACL_HDR_SIZE; +- iff->bdaddr = &hdev->bdaddr; +- +- spin_lock_init(&iff->lock); +- INIT_LIST_HEAD(&iff->conn_list); +- +- list_add(&iff->list, &l2cap_iff_list); +-} +- +-static void l2cap_iff_del(struct hci_dev *hdev) +-{ +- struct l2cap_iff *iff; +- +- if (!(iff = hdev->l2cap_data)) +- return; +- +- DBG("%s iff %p", hdev->name, iff); +- +- list_del(&iff->list); +- +- l2cap_iff_lock(iff); +- +- /* Drop connections */ +- while (!list_empty(&iff->conn_list)) { +- struct l2cap_conn *c; +- +- c = list_entry(iff->conn_list.next, struct l2cap_conn, list); +- l2cap_conn_del(c, ENODEV); +- } +- +- l2cap_iff_unlock(iff); +- +- /* Unlock HCI device */ +- hdev->l2cap_data = NULL; +- hci_dev_put(hdev); +- +- kfree(iff); +-} +- +-/* Get route. Returns L2CAP interface. +- * Must be called with locked rt_lock +- */ +-static struct l2cap_iff *l2cap_get_route(bdaddr_t *src, bdaddr_t *dst) +-{ +- struct list_head *p; +- int use_src; +- +- DBG("%s -> %s", batostr(src), batostr(dst)); +- +- use_src = bacmp(src, BDADDR_ANY) ? 0 : 1; +- +- /* Simple routing: +- * No source address - find interface with bdaddr != dst +- * Source address - find interface with bdaddr == src +- */ +- +- list_for_each(p, &l2cap_iff_list) { +- struct l2cap_iff *iff; +- +- iff = list_entry(p, struct l2cap_iff, list); +- +- if (use_src && !bacmp(iff->bdaddr, src)) +- return iff; +- else if (bacmp(iff->bdaddr, dst)) +- return iff; +- } +- return NULL; +-} +- +-/* ----- L2CAP timers ------ */ +-static void l2cap_sock_timeout(unsigned long arg) +-{ +- struct sock *sk = (struct sock *) arg; +- +- DBG("sock %p state %d", sk, sk->state); +- +- bh_lock_sock(sk); +- switch (sk->state) { +- case BT_DISCONN: +- l2cap_chan_del(sk, ETIMEDOUT); +- break; +- +- default: +- sk->err = ETIMEDOUT; +- sk->state_change(sk); +- break; +- }; +- bh_unlock_sock(sk); +- +- l2cap_sock_kill(sk); +- sock_put(sk); +-} +- +-static void l2cap_sock_set_timer(struct sock *sk, long timeout) +-{ +- DBG("sock %p state %d timeout %ld", sk, sk->state, timeout); +- +- if (!mod_timer(&sk->timer, jiffies + timeout)) +- sock_hold(sk); +-} +- +-static void l2cap_sock_clear_timer(struct sock *sk) +-{ +- DBG("sock %p state %d", sk, sk->state); +- +- if (timer_pending(&sk->timer) && del_timer(&sk->timer)) +- __sock_put(sk); +-} +- +-static void l2cap_sock_init_timer(struct sock *sk) +-{ +- init_timer(&sk->timer); +- sk->timer.function = l2cap_sock_timeout; +- sk->timer.data = (unsigned long)sk; +-} +- +-static void l2cap_conn_timeout(unsigned long arg) +-{ +- struct l2cap_conn *conn = (void *)arg; +- +- DBG("conn %p state %d", conn, conn->state); +- +- if (conn->state == BT_CONNECTED) { +- hci_disconnect(conn->hconn, 0x13); +- } +- +- return; +-} +- +-static void l2cap_conn_set_timer(struct l2cap_conn *conn, long timeout) +-{ +- DBG("conn %p state %d timeout %ld", conn, conn->state, timeout); +- +- mod_timer(&conn->timer, jiffies + timeout); +-} +- +-static void l2cap_conn_clear_timer(struct l2cap_conn *conn) +-{ +- DBG("conn %p state %d", conn, conn->state); +- +- del_timer(&conn->timer); +-} +- +-static void l2cap_conn_init_timer(struct l2cap_conn *conn) +-{ +- init_timer(&conn->timer); +- conn->timer.function = l2cap_conn_timeout; +- conn->timer.data = (unsigned long)conn; +-} +- +-/* -------- L2CAP connections --------- */ +-/* Add new connection to the interface. +- * Interface must be locked +- */ +-static struct l2cap_conn *l2cap_conn_add(struct l2cap_iff *iff, bdaddr_t *dst) +-{ +- struct l2cap_conn *conn; +- bdaddr_t *src = iff->bdaddr; +- +- if (!(conn = kmalloc(sizeof(struct l2cap_conn), GFP_KERNEL))) +- return NULL; +- +- memset(conn, 0, sizeof(struct l2cap_conn)); +- +- conn->state = BT_OPEN; +- conn->iff = iff; +- bacpy(&conn->src, src); +- bacpy(&conn->dst, dst); +- +- spin_lock_init(&conn->lock); +- conn->chan_list.lock = RW_LOCK_UNLOCKED; +- +- l2cap_conn_init_timer(conn); +- +- __l2cap_conn_link(iff, conn); +- +- DBG("%s -> %s, %p", batostr(src), batostr(dst), conn); +- +- MOD_INC_USE_COUNT; +- +- return conn; +-} +- +-/* Delete connection on the interface. +- * Interface must be locked +- */ +-static int l2cap_conn_del(struct l2cap_conn *conn, int err) +-{ +- struct sock *sk; +- +- DBG("conn %p, state %d, err %d", conn, conn->state, err); +- +- l2cap_conn_clear_timer(conn); +- __l2cap_conn_unlink(conn->iff, conn); +- +- conn->state = BT_CLOSED; +- +- if (conn->rx_skb) +- kfree_skb(conn->rx_skb); +- +- /* Kill channels */ +- while ((sk = conn->chan_list.head)) { +- bh_lock_sock(sk); +- l2cap_sock_clear_timer(sk); +- l2cap_chan_del(sk, err); +- bh_unlock_sock(sk); +- +- l2cap_sock_kill(sk); +- } +- +- kfree(conn); +- +- MOD_DEC_USE_COUNT; +- return 0; +-} +- +-static inline struct l2cap_conn *l2cap_get_conn_by_addr(struct l2cap_iff *iff, bdaddr_t *dst) +-{ +- struct list_head *p; +- +- list_for_each(p, &iff->conn_list) { +- struct l2cap_conn *c; +- +- c = list_entry(p, struct l2cap_conn, list); +- if (!bacmp(&c->dst, dst)) +- return c; +- } +- return NULL; +-} +- +-int l2cap_connect(struct sock *sk) +-{ +- bdaddr_t *src = &l2cap_pi(sk)->src; +- bdaddr_t *dst = &l2cap_pi(sk)->dst; +- struct l2cap_conn *conn; +- struct l2cap_iff *iff; +- int err = 0; +- +- DBG("%s -> %s psm 0x%2.2x", batostr(src), batostr(dst), l2cap_pi(sk)->psm); +- +- read_lock_bh(&l2cap_rt_lock); +- +- /* Get route to remote BD address */ +- if (!(iff = l2cap_get_route(src, dst))) { +- err = -EHOSTUNREACH; +- goto done; +- } +- +- /* Update source addr of the socket */ +- bacpy(src, iff->bdaddr); +- +- l2cap_iff_lock(iff); +- +- if (!(conn = l2cap_get_conn_by_addr(iff, dst))) { +- /* Connection doesn't exist */ +- if (!(conn = l2cap_conn_add(iff, dst))) { +- l2cap_iff_unlock(iff); +- err = -ENOMEM; +- goto done; +- } +- conn->out = 1; +- } +- +- l2cap_iff_unlock(iff); +- +- l2cap_chan_add(conn, sk, NULL); +- +- sk->state = BT_CONNECT; +- l2cap_sock_set_timer(sk, sk->sndtimeo); +- +- switch (conn->state) { +- case BT_CONNECTED: +- if (sk->type == SOCK_SEQPACKET) { +- l2cap_conn_req req; +- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); +- req.psm = l2cap_pi(sk)->psm; +- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req); +- } else { +- l2cap_sock_clear_timer(sk); +- sk->state = BT_CONNECTED; +- } +- break; +- +- case BT_CONNECT: +- break; +- +- default: +- /* Create ACL connection */ +- conn->state = BT_CONNECT; +- hci_connect(iff->hdev, dst); +- break; +- }; +- +-done: +- read_unlock_bh(&l2cap_rt_lock); +- return err; +-} +- +-/* ------ Channel queues for listening sockets ------ */ +-void l2cap_accept_queue(struct sock *parent, struct sock *sk) +-{ +- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q; +- +- DBG("parent %p, sk %p", parent, sk); +- +- sock_hold(sk); +- l2cap_pi(sk)->parent = parent; +- l2cap_pi(sk)->next_q = NULL; +- +- if (!q->head) { +- q->head = q->tail = sk; +- } else { +- struct sock *tail = q->tail; +- +- l2cap_pi(sk)->prev_q = tail; +- l2cap_pi(tail)->next_q = sk; +- q->tail = sk; +- } +- +- parent->ack_backlog++; +-} +- +-void l2cap_accept_unlink(struct sock *sk) +-{ +- struct sock *parent = l2cap_pi(sk)->parent; +- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q; +- struct sock *next, *prev; +- +- DBG("sk %p", sk); +- +- next = l2cap_pi(sk)->next_q; +- prev = l2cap_pi(sk)->prev_q; +- +- if (sk == q->head) +- q->head = next; +- if (sk == q->tail) +- q->tail = prev; +- +- if (next) +- l2cap_pi(next)->prev_q = prev; +- if (prev) +- l2cap_pi(prev)->next_q = next; +- +- l2cap_pi(sk)->parent = NULL; +- +- parent->ack_backlog--; +- __sock_put(sk); +-} +- +-/* Get next connected channel in queue. */ +-struct sock *l2cap_accept_dequeue(struct sock *parent, int state) +-{ +- struct l2cap_accept_q *q = &l2cap_pi(parent)->accept_q; +- struct sock *sk; +- +- for (sk = q->head; sk; sk = l2cap_pi(sk)->next_q) { +- if (!state || sk->state == state) { +- l2cap_accept_unlink(sk); +- break; +- } +- } +- +- DBG("parent %p, sk %p", parent, sk); +- +- return sk; +-} +- +-/* -------- Socket interface ---------- */ +-static struct sock *__l2cap_get_sock_by_addr(struct sockaddr_l2 *addr) +-{ +- bdaddr_t *src = &addr->l2_bdaddr; +- __u16 psm = addr->l2_psm; +- struct sock *sk; +- +- for (sk = l2cap_sk_list.head; sk; sk = sk->next) { +- if (l2cap_pi(sk)->psm == psm && +- !bacmp(&l2cap_pi(sk)->src, src)) +- break; +- } +- +- return sk; +-} +- +-/* Find socket listening on psm and source bdaddr. +- * Returns closest match. +- */ +-static struct sock *l2cap_get_sock_listen(bdaddr_t *src, __u16 psm) +-{ +- struct sock *sk, *sk1 = NULL; +- +- read_lock(&l2cap_sk_list.lock); +- +- for (sk = l2cap_sk_list.head; sk; sk = sk->next) { +- struct l2cap_pinfo *pi; +- +- if (sk->state != BT_LISTEN) +- continue; +- +- pi = l2cap_pi(sk); +- +- if (pi->psm == psm) { +- /* Exact match. */ +- if (!bacmp(&pi->src, src)) +- break; +- +- /* Closest match */ +- if (!bacmp(&pi->src, BDADDR_ANY)) +- sk1 = sk; +- } +- } +- +- read_unlock(&l2cap_sk_list.lock); +- +- return sk ? sk : sk1; +-} +- +-static void l2cap_sock_destruct(struct sock *sk) +-{ +- DBG("sk %p", sk); +- +- skb_queue_purge(&sk->receive_queue); +- skb_queue_purge(&sk->write_queue); +- +- MOD_DEC_USE_COUNT; +-} +- +-static void l2cap_sock_cleanup_listen(struct sock *parent) +-{ +- struct sock *sk; +- +- DBG("parent %p", parent); +- +- /* Close not yet accepted channels */ +- while ((sk = l2cap_accept_dequeue(parent, 0))) +- l2cap_sock_close(sk); +- +- parent->state = BT_CLOSED; +- parent->zapped = 1; +-} +- +-/* Kill socket (only if zapped and orphan) +- * Must be called on unlocked socket. +- */ +-static void l2cap_sock_kill(struct sock *sk) +-{ +- if (!sk->zapped || sk->socket) +- return; +- +- DBG("sk %p state %d", sk, sk->state); +- +- /* Kill poor orphan */ +- bluez_sock_unlink(&l2cap_sk_list, sk); +- sk->dead = 1; +- sock_put(sk); +-} +- +-/* Close socket. +- * Must be called on unlocked socket. +- */ +-static void l2cap_sock_close(struct sock *sk) +-{ +- struct l2cap_conn *conn; +- +- l2cap_sock_clear_timer(sk); +- +- lock_sock(sk); +- +- conn = l2cap_pi(sk)->conn; +- +- DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket); +- +- switch (sk->state) { +- case BT_LISTEN: +- l2cap_sock_cleanup_listen(sk); +- break; +- +- case BT_CONNECTED: +- case BT_CONFIG: +- if (sk->type == SOCK_SEQPACKET) { +- l2cap_disconn_req req; +- +- sk->state = BT_DISCONN; +- +- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); +- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req); +- +- l2cap_sock_set_timer(sk, sk->sndtimeo); +- } else { +- l2cap_chan_del(sk, ECONNRESET); +- } +- break; +- +- case BT_CONNECT: +- case BT_DISCONN: +- l2cap_chan_del(sk, ECONNRESET); +- break; +- +- default: +- sk->zapped = 1; +- break; +- }; +- +- release_sock(sk); +- +- l2cap_sock_kill(sk); +-} +- +-static void l2cap_sock_init(struct sock *sk, struct sock *parent) +-{ +- struct l2cap_pinfo *pi = l2cap_pi(sk); +- +- DBG("sk %p", sk); +- +- if (parent) { +- sk->type = parent->type; +- +- pi->imtu = l2cap_pi(parent)->imtu; +- pi->omtu = l2cap_pi(parent)->omtu; +- } else { +- pi->imtu = L2CAP_DEFAULT_MTU; +- pi->omtu = 0; +- } +- +- /* Default config options */ +- pi->conf_mtu = L2CAP_DEFAULT_MTU; +- pi->flush_to = L2CAP_DEFAULT_FLUSH_TO; +-} +- +-static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, int prio) +-{ +- struct sock *sk; +- +- if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1))) +- return NULL; +- +- sock_init_data(sock, sk); +- +- sk->zapped = 0; +- +- sk->destruct = l2cap_sock_destruct; +- sk->sndtimeo = L2CAP_CONN_TIMEOUT; +- +- sk->protocol = proto; +- sk->state = BT_OPEN; +- +- l2cap_sock_init_timer(sk); +- +- bluez_sock_link(&l2cap_sk_list, sk); +- +- MOD_INC_USE_COUNT; +- +- return sk; +-} +- +-static int l2cap_sock_create(struct socket *sock, int protocol) +-{ +- struct sock *sk; +- +- DBG("sock %p", sock); +- +- sock->state = SS_UNCONNECTED; +- +- if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_RAW) +- return -ESOCKTNOSUPPORT; +- +- sock->ops = &l2cap_sock_ops; +- +- if (!(sk = l2cap_sock_alloc(sock, protocol, GFP_KERNEL))) +- return -ENOMEM; +- +- l2cap_sock_init(sk, NULL); +- +- return 0; +-} +- +-static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) +-{ +- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; +- struct sock *sk = sock->sk; +- int err = 0; +- +- DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm); +- +- if (!addr || addr->sa_family != AF_BLUETOOTH) +- return -EINVAL; +- +- lock_sock(sk); +- +- if (sk->state != BT_OPEN) { +- err = -EBADFD; +- goto done; +- } +- +- write_lock(&l2cap_sk_list.lock); +- +- if (la->l2_psm && __l2cap_get_sock_by_addr(la)) { +- err = -EADDRINUSE; +- goto unlock; +- } +- +- /* Save source address */ +- bacpy(&l2cap_pi(sk)->src, &la->l2_bdaddr); +- l2cap_pi(sk)->psm = la->l2_psm; +- sk->state = BT_BOUND; +- +-unlock: +- write_unlock(&l2cap_sk_list.lock); +- +-done: +- release_sock(sk); +- +- return err; +-} +- +-static int l2cap_sock_w4_connect(struct sock *sk, int flags) +-{ +- DECLARE_WAITQUEUE(wait, current); +- long timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); +- int err = 0; +- +- DBG("sk %p", sk); +- +- add_wait_queue(sk->sleep, &wait); +- current->state = TASK_INTERRUPTIBLE; +- +- while (sk->state != BT_CONNECTED) { +- if (!timeo) { +- err = -EAGAIN; +- break; +- } +- +- release_sock(sk); +- timeo = schedule_timeout(timeo); +- lock_sock(sk); +- +- err = 0; +- if (sk->state == BT_CONNECTED) +- break; +- +- if (sk->err) { +- err = sock_error(sk); +- break; +- } +- +- if (signal_pending(current)) { +- err = sock_intr_errno(timeo); +- break; +- } +- } +- current->state = TASK_RUNNING; +- remove_wait_queue(sk->sleep, &wait); +- +- return err; +-} +- +-static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) +-{ +- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; +- struct sock *sk = sock->sk; +- int err = 0; +- +- lock_sock(sk); +- +- DBG("sk %p", sk); +- +- if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) { +- err = -EINVAL; +- goto done; +- } +- +- if (sk->state != BT_OPEN && sk->state != BT_BOUND) { +- err = -EBADFD; +- goto done; +- } +- +- if (sk->type == SOCK_SEQPACKET && !la->l2_psm) { +- err = -EINVAL; +- goto done; +- } +- +- /* Set destination address and psm */ +- bacpy(&l2cap_pi(sk)->dst, &la->l2_bdaddr); +- l2cap_pi(sk)->psm = la->l2_psm; +- +- if ((err = l2cap_connect(sk))) +- goto done; +- +- err = l2cap_sock_w4_connect(sk, flags); +- +-done: +- release_sock(sk); +- return err; +-} +- +-int l2cap_sock_listen(struct socket *sock, int backlog) +-{ +- struct sock *sk = sock->sk; +- int err = 0; +- +- DBG("sk %p backlog %d", sk, backlog); +- +- lock_sock(sk); +- +- if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) { +- err = -EBADFD; +- goto done; +- } +- +- if (!l2cap_pi(sk)->psm) { +- err = -EINVAL; +- goto done; +- } +- +- sk->max_ack_backlog = backlog; +- sk->ack_backlog = 0; +- sk->state = BT_LISTEN; +- +-done: +- release_sock(sk); +- return err; +-} +- +-int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags) +-{ +- DECLARE_WAITQUEUE(wait, current); +- struct sock *sk = sock->sk, *ch; +- long timeo; +- int err = 0; +- +- lock_sock(sk); +- +- if (sk->state != BT_LISTEN) { +- err = -EBADFD; +- goto done; +- } +- +- timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); +- +- DBG("sk %p timeo %ld", sk, timeo); +- +- /* Wait for an incoming connection. (wake-one). */ +- add_wait_queue_exclusive(sk->sleep, &wait); +- current->state = TASK_INTERRUPTIBLE; +- while (!(ch = l2cap_accept_dequeue(sk, BT_CONNECTED))) { +- if (!timeo) { +- err = -EAGAIN; +- break; +- } +- +- release_sock(sk); +- timeo = schedule_timeout(timeo); +- lock_sock(sk); +- +- if (sk->state != BT_LISTEN) { +- err = -EBADFD; +- break; +- } +- +- if (signal_pending(current)) { +- err = sock_intr_errno(timeo); +- break; +- } +- } +- current->state = TASK_RUNNING; +- remove_wait_queue(sk->sleep, &wait); +- +- if (err) +- goto done; +- +- sock_graft(ch, newsock); +- newsock->state = SS_CONNECTED; +- +- DBG("new socket %p", ch); +- +-done: +- release_sock(sk); +- +- return err; +-} +- +-static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer) +-{ +- struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr; +- struct sock *sk = sock->sk; +- +- DBG("sock %p, sk %p", sock, sk); +- +- addr->sa_family = AF_BLUETOOTH; +- *len = sizeof(struct sockaddr_l2); +- +- if (peer) +- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->dst); +- else +- bacpy(&la->l2_bdaddr, &l2cap_pi(sk)->src); +- +- la->l2_psm = l2cap_pi(sk)->psm; +- +- return 0; +-} +- +-static int l2cap_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm) +-{ +- struct sock *sk = sock->sk; +- int err = 0; +- +- DBG("sock %p, sk %p", sock, sk); +- +- if (sk->err) +- return sock_error(sk); +- +- if (msg->msg_flags & MSG_OOB) +- return -EOPNOTSUPP; +- +- lock_sock(sk); +- +- if (sk->state == BT_CONNECTED) +- err = l2cap_chan_send(sk, msg, len); +- else +- err = -ENOTCONN; +- +- release_sock(sk); +- return err; +-} +- +-static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg, int len, int flags, struct scm_cookie *scm) +-{ +- struct sock *sk = sock->sk; +- int noblock = flags & MSG_DONTWAIT; +- int copied, err; +- struct sk_buff *skb; +- +- DBG("sock %p, sk %p", sock, sk); +- +- if (flags & (MSG_OOB)) +- return -EOPNOTSUPP; +- +- if (sk->state == BT_CLOSED) +- return 0; +- +- if (!(skb = skb_recv_datagram(sk, flags, noblock, &err))) +- return err; +- +- msg->msg_namelen = 0; +- +- copied = skb->len; +- if (len < copied) { +- msg->msg_flags |= MSG_TRUNC; +- copied = len; +- } +- +- skb->h.raw = skb->data; +- err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); +- +- skb_free_datagram(sk, skb); +- +- return err ? : copied; +-} +- +-int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen) +-{ +- struct sock *sk = sock->sk; +- struct l2cap_options opts; +- int err = 0; +- +- DBG("sk %p", sk); +- +- lock_sock(sk); +- +- switch (optname) { +- case L2CAP_OPTIONS: +- if (copy_from_user((char *)&opts, optval, optlen)) { +- err = -EFAULT; +- break; +- } +- l2cap_pi(sk)->imtu = opts.imtu; +- l2cap_pi(sk)->omtu = opts.omtu; +- break; +- +- default: +- err = -ENOPROTOOPT; +- break; +- }; +- +- release_sock(sk); +- return err; +-} +- +-int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen) +-{ +- struct sock *sk = sock->sk; +- struct l2cap_options opts; +- struct l2cap_conninfo cinfo; +- int len, err = 0; +- +- if (get_user(len, optlen)) +- return -EFAULT; +- +- lock_sock(sk); +- +- switch (optname) { +- case L2CAP_OPTIONS: +- opts.imtu = l2cap_pi(sk)->imtu; +- opts.omtu = l2cap_pi(sk)->omtu; +- opts.flush_to = l2cap_pi(sk)->flush_to; +- +- len = MIN(len, sizeof(opts)); +- if (copy_to_user(optval, (char *)&opts, len)) +- err = -EFAULT; +- +- break; +- +- case L2CAP_CONNINFO: +- if (sk->state != BT_CONNECTED) { +- err = -ENOTCONN; +- break; +- } +- +- cinfo.hci_handle = l2cap_pi(sk)->conn->hconn->handle; +- +- len = MIN(len, sizeof(cinfo)); +- if (copy_to_user(optval, (char *)&cinfo, len)) +- err = -EFAULT; +- +- break; +- +- default: +- err = -ENOPROTOOPT; +- break; +- }; +- +- release_sock(sk); +- return err; +-} +- +-static unsigned int l2cap_sock_poll(struct file * file, struct socket *sock, poll_table *wait) +-{ +- struct sock *sk = sock->sk; +- struct l2cap_accept_q *aq; +- unsigned int mask; +- +- DBG("sock %p, sk %p", sock, sk); +- +- poll_wait(file, sk->sleep, wait); +- mask = 0; +- +- if (sk->err || !skb_queue_empty(&sk->error_queue)) +- mask |= POLLERR; +- +- if (sk->shutdown == SHUTDOWN_MASK) +- mask |= POLLHUP; +- +- aq = &l2cap_pi(sk)->accept_q; +- if (!skb_queue_empty(&sk->receive_queue) || aq->head || (sk->shutdown & RCV_SHUTDOWN)) +- mask |= POLLIN | POLLRDNORM; +- +- if (sk->state == BT_CLOSED) +- mask |= POLLHUP; +- +- if (sock_writeable(sk)) +- mask |= POLLOUT | POLLWRNORM | POLLWRBAND; +- else +- set_bit(SOCK_ASYNC_NOSPACE, &sk->socket->flags); +- +- return mask; +-} +- +-static int l2cap_sock_release(struct socket *sock) +-{ +- struct sock *sk = sock->sk; +- +- DBG("sock %p, sk %p", sock, sk); +- +- if (!sk) +- return 0; +- +- sock_orphan(sk); +- +- l2cap_sock_close(sk); +- +- return 0; +-} +- +-/* --------- L2CAP channels --------- */ +-static struct sock * __l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid) +-{ +- struct sock *s; +- +- for (s = l->head; s; s = l2cap_pi(s)->next_c) { +- if (l2cap_pi(s)->dcid == cid) +- break; +- } +- +- return s; +-} +- +-static inline struct sock *l2cap_get_chan_by_dcid(struct l2cap_chan_list *l, __u16 cid) +-{ +- struct sock *s; +- +- read_lock(&l->lock); +- s = __l2cap_get_chan_by_dcid(l, cid); +- read_unlock(&l->lock); +- +- return s; +-} +- +-static struct sock *__l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid) +-{ +- struct sock *s; +- +- for (s = l->head; s; s = l2cap_pi(s)->next_c) { +- if (l2cap_pi(s)->scid == cid) +- break; +- } +- +- return s; +-} +-static inline struct sock *l2cap_get_chan_by_scid(struct l2cap_chan_list *l, __u16 cid) +-{ +- struct sock *s; +- +- read_lock(&l->lock); +- s = __l2cap_get_chan_by_scid(l, cid); +- read_unlock(&l->lock); +- +- return s; +-} +- +-static struct sock *__l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident) +-{ +- struct sock *s; +- +- for (s = l->head; s; s = l2cap_pi(s)->next_c) { +- if (l2cap_pi(s)->ident == ident) +- break; +- } +- +- return s; +-} +- +-static inline struct sock *l2cap_get_chan_by_ident(struct l2cap_chan_list *l, __u8 ident) +-{ +- struct sock *s; +- +- read_lock(&l->lock); +- s = __l2cap_get_chan_by_ident(l, ident); +- read_unlock(&l->lock); +- +- return s; +-} +- +-static __u16 l2cap_alloc_cid(struct l2cap_chan_list *l) +-{ +- __u16 cid = 0x0040; +- +- for (; cid < 0xffff; cid++) { +- if(!__l2cap_get_chan_by_scid(l, cid)) +- return cid; +- } +- +- return 0; +-} +- +-static inline void __l2cap_chan_link(struct l2cap_chan_list *l, struct sock *sk) +-{ +- sock_hold(sk); +- +- if (l->head) +- l2cap_pi(l->head)->prev_c = sk; +- +- l2cap_pi(sk)->next_c = l->head; +- l2cap_pi(sk)->prev_c = NULL; +- l->head = sk; +-} +- +-static inline void l2cap_chan_unlink(struct l2cap_chan_list *l, struct sock *sk) +-{ +- struct sock *next = l2cap_pi(sk)->next_c, *prev = l2cap_pi(sk)->prev_c; +- +- write_lock(&l->lock); +- if (sk == l->head) +- l->head = next; +- +- if (next) +- l2cap_pi(next)->prev_c = prev; +- if (prev) +- l2cap_pi(prev)->next_c = next; +- write_unlock(&l->lock); +- +- __sock_put(sk); +-} +- +-static void __l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) +-{ +- struct l2cap_chan_list *l = &conn->chan_list; +- +- DBG("conn %p, psm 0x%2.2x, dcid 0x%4.4x", conn, l2cap_pi(sk)->psm, l2cap_pi(sk)->dcid); +- +- l2cap_conn_clear_timer(conn); +- +- atomic_inc(&conn->refcnt); +- l2cap_pi(sk)->conn = conn; +- +- if (sk->type == SOCK_SEQPACKET) { +- /* Alloc CID for normal socket */ +- l2cap_pi(sk)->scid = l2cap_alloc_cid(l); +- } else { +- /* Raw socket can send only signalling messages */ +- l2cap_pi(sk)->scid = 0x0001; +- l2cap_pi(sk)->dcid = 0x0001; +- l2cap_pi(sk)->omtu = L2CAP_DEFAULT_MTU; +- } +- +- __l2cap_chan_link(l, sk); +- +- if (parent) +- l2cap_accept_queue(parent, sk); +-} +- +-static inline void l2cap_chan_add(struct l2cap_conn *conn, struct sock *sk, struct sock *parent) +-{ +- struct l2cap_chan_list *l = &conn->chan_list; +- +- write_lock(&l->lock); +- __l2cap_chan_add(conn, sk, parent); +- write_unlock(&l->lock); +-} +- +-/* Delete channel. +- * Must be called on the locked socket. */ +-static void l2cap_chan_del(struct sock *sk, int err) +-{ +- struct l2cap_conn *conn; +- struct sock *parent; +- +- conn = l2cap_pi(sk)->conn; +- parent = l2cap_pi(sk)->parent; +- +- DBG("sk %p, conn %p, err %d", sk, conn, err); +- +- if (parent) { +- /* Unlink from parent accept queue */ +- bh_lock_sock(parent); +- l2cap_accept_unlink(sk); +- bh_unlock_sock(parent); +- } +- +- if (conn) { +- long timeout; +- +- /* Unlink from channel list */ +- l2cap_chan_unlink(&conn->chan_list, sk); +- l2cap_pi(sk)->conn = NULL; +- +- if (conn->out) +- timeout = L2CAP_DISCONN_TIMEOUT; +- else +- timeout = L2CAP_CONN_IDLE_TIMEOUT; +- +- if (atomic_dec_and_test(&conn->refcnt) && conn->state == BT_CONNECTED) { +- /* Schedule Baseband disconnect */ +- l2cap_conn_set_timer(conn, timeout); +- } +- } +- +- sk->state = BT_CLOSED; +- sk->err = err; +- sk->state_change(sk); +- +- sk->zapped = 1; +-} +- +-static void l2cap_conn_ready(struct l2cap_conn *conn) +-{ +- struct l2cap_chan_list *l = &conn->chan_list; +- struct sock *sk; +- +- DBG("conn %p", conn); +- +- read_lock(&l->lock); +- +- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { +- bh_lock_sock(sk); +- +- if (sk->type != SOCK_SEQPACKET) { +- sk->state = BT_CONNECTED; +- sk->state_change(sk); +- l2cap_sock_clear_timer(sk); +- } else if (sk->state == BT_CONNECT) { +- l2cap_conn_req req; +- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); +- req.psm = l2cap_pi(sk)->psm; +- l2cap_send_req(conn, L2CAP_CONN_REQ, L2CAP_CONN_REQ_SIZE, &req); +- +- l2cap_sock_set_timer(sk, sk->sndtimeo); +- } +- +- bh_unlock_sock(sk); +- } +- +- read_unlock(&l->lock); +-} +- +-static void l2cap_chan_ready(struct sock *sk) +-{ +- struct sock *parent = l2cap_pi(sk)->parent; +- +- DBG("sk %p, parent %p", sk, parent); +- +- l2cap_pi(sk)->conf_state = 0; +- l2cap_sock_clear_timer(sk); +- +- if (!parent) { +- /* Outgoing channel. +- * Wake up socket sleeping on connect. +- */ +- sk->state = BT_CONNECTED; +- sk->state_change(sk); +- } else { +- /* Incomming channel. +- * Wake up socket sleeping on accept. +- */ +- parent->data_ready(parent, 1); +- } +-} +- +-/* Copy frame to all raw sockets on that connection */ +-void l2cap_raw_recv(struct l2cap_conn *conn, struct sk_buff *skb) +-{ +- struct l2cap_chan_list *l = &conn->chan_list; +- struct sk_buff *nskb; +- struct sock * sk; +- +- DBG("conn %p", conn); +- +- read_lock(&l->lock); +- for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) { +- if (sk->type != SOCK_RAW) +- continue; +- +- /* Don't send frame to the socket it came from */ +- if (skb->sk == sk) +- continue; +- +- if (!(nskb = skb_clone(skb, GFP_ATOMIC))) +- continue; +- +- skb_queue_tail(&sk->receive_queue, nskb); +- sk->data_ready(sk, nskb->len); +- } +- read_unlock(&l->lock); +-} +- +-static int l2cap_chan_send(struct sock *sk, struct msghdr *msg, int len) +-{ +- struct l2cap_conn *conn = l2cap_pi(sk)->conn; +- struct sk_buff *skb, **frag; +- int err, size, count, sent=0; +- l2cap_hdr *lh; +- +- /* Check outgoing MTU */ +- if (len > l2cap_pi(sk)->omtu) +- return -EINVAL; +- +- DBG("sk %p len %d", sk, len); +- +- /* First fragment (with L2CAP header) */ +- count = MIN(conn->iff->mtu - L2CAP_HDR_SIZE, len); +- size = L2CAP_HDR_SIZE + count; +- if (!(skb = bluez_skb_send_alloc(sk, size, msg->msg_flags & MSG_DONTWAIT, &err))) +- return err; +- +- /* Create L2CAP header */ +- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE); +- lh->len = __cpu_to_le16(len); +- lh->cid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- +- if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) { +- err = -EFAULT; +- goto fail; +- } +- +- sent += count; +- len -= count; +- +- /* Continuation fragments (no L2CAP header) */ +- frag = &skb_shinfo(skb)->frag_list; +- while (len) { +- count = MIN(conn->iff->mtu, len); +- +- *frag = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err); +- if (!*frag) +- goto fail; +- +- if (memcpy_fromiovec(skb_put(*frag, count), msg->msg_iov, count)) { +- err = -EFAULT; +- goto fail; +- } +- +- sent += count; +- len -= count; +- +- frag = &(*frag)->next; +- } +- +- if ((err = hci_send_acl(conn->hconn, skb, 0)) < 0) +- goto fail; +- +- return sent; +- +-fail: +- kfree_skb(skb); +- return err; +-} +- +-/* --------- L2CAP signalling commands --------- */ +-static inline __u8 l2cap_get_ident(struct l2cap_conn *conn) +-{ +- __u8 id; +- +- /* Get next available identificator. +- * 1 - 199 are used by kernel. +- * 200 - 254 are used by utilities like l2ping, etc +- */ +- +- spin_lock(&conn->lock); +- +- if (++conn->tx_ident > 199) +- conn->tx_ident = 1; +- +- id = conn->tx_ident; +- +- spin_unlock(&conn->lock); +- +- return id; +-} +- +-static inline struct sk_buff *l2cap_build_cmd(__u8 code, __u8 ident, __u16 len, void *data) +-{ +- struct sk_buff *skb; +- l2cap_cmd_hdr *cmd; +- l2cap_hdr *lh; +- int size; +- +- DBG("code 0x%2.2x, ident 0x%2.2x, len %d", code, ident, len); +- +- size = L2CAP_HDR_SIZE + L2CAP_CMD_HDR_SIZE + len; +- if (!(skb = bluez_skb_alloc(size, GFP_ATOMIC))) +- return NULL; +- +- lh = (l2cap_hdr *) skb_put(skb, L2CAP_HDR_SIZE); +- lh->len = __cpu_to_le16(L2CAP_CMD_HDR_SIZE + len); +- lh->cid = __cpu_to_le16(0x0001); +- +- cmd = (l2cap_cmd_hdr *) skb_put(skb, L2CAP_CMD_HDR_SIZE); +- cmd->code = code; +- cmd->ident = ident; +- cmd->len = __cpu_to_le16(len); +- +- if (len) +- memcpy(skb_put(skb, len), data, len); +- +- return skb; +-} +- +-static int l2cap_send_req(struct l2cap_conn *conn, __u8 code, __u16 len, void *data) +-{ +- struct sk_buff *skb; +- __u8 ident; +- +- DBG("code 0x%2.2x", code); +- +- ident = l2cap_get_ident(conn); +- if (!(skb = l2cap_build_cmd(code, ident, len, data))) +- return -ENOMEM; +- return hci_send_acl(conn->hconn, skb, 0); +-} +- +-static int l2cap_send_rsp(struct l2cap_conn *conn, __u8 ident, __u8 code, __u16 len, void *data) +-{ +- struct sk_buff *skb; +- +- DBG("code 0x%2.2x", code); +- +- if (!(skb = l2cap_build_cmd(code, ident, len, data))) +- return -ENOMEM; +- return hci_send_acl(conn->hconn, skb, 0); +-} +- +-static inline int l2cap_get_conf_opt(__u8 **ptr, __u8 *type, __u32 *val) +-{ +- l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr); +- int len; +- +- *type = opt->type; +- switch (opt->len) { +- case 1: +- *val = *((__u8 *) opt->val); +- break; +- +- case 2: +- *val = __le16_to_cpu(*((__u16 *)opt->val)); +- break; +- +- case 4: +- *val = __le32_to_cpu(*((__u32 *)opt->val)); +- break; +- +- default: +- *val = 0L; +- break; +- }; +- +- DBG("type 0x%2.2x len %d val 0x%8.8x", *type, opt->len, *val); +- +- len = L2CAP_CONF_OPT_SIZE + opt->len; +- +- *ptr += len; +- +- return len; +-} +- +-static inline void l2cap_parse_conf_req(struct sock *sk, char *data, int len) +-{ +- __u8 type, hint; __u32 val; +- __u8 *ptr = data; +- +- DBG("sk %p len %d", sk, len); +- +- while (len >= L2CAP_CONF_OPT_SIZE) { +- len -= l2cap_get_conf_opt(&ptr, &type, &val); +- +- hint = type & 0x80; +- type &= 0x7f; +- +- switch (type) { +- case L2CAP_CONF_MTU: +- l2cap_pi(sk)->conf_mtu = val; +- break; +- +- case L2CAP_CONF_FLUSH_TO: +- l2cap_pi(sk)->flush_to = val; +- break; +- +- case L2CAP_CONF_QOS: +- break; +- +- default: +- if (hint) +- break; +- +- /* FIXME: Reject unknon option */ +- break; +- }; +- } +-} +- +-static inline void l2cap_add_conf_opt(__u8 **ptr, __u8 type, __u8 len, __u32 val) +-{ +- register l2cap_conf_opt *opt = (l2cap_conf_opt *) (*ptr); +- +- DBG("type 0x%2.2x len %d val 0x%8.8x", type, len, val); +- +- opt->type = type; +- opt->len = len; +- switch (len) { +- case 1: +- *((__u8 *) opt->val) = val; +- break; +- +- case 2: +- *((__u16 *) opt->val) = __cpu_to_le16(val); +- break; +- +- case 4: +- *((__u32 *) opt->val) = __cpu_to_le32(val); +- break; +- }; +- +- *ptr += L2CAP_CONF_OPT_SIZE + len; +-} +- +-static int l2cap_build_conf_req(struct sock *sk, __u8 *data) +-{ +- struct l2cap_pinfo *pi = l2cap_pi(sk); +- l2cap_conf_req *req = (l2cap_conf_req *) data; +- __u8 *ptr = req->data; +- +- DBG("sk %p", sk); +- +- if (pi->imtu != L2CAP_DEFAULT_MTU) +- l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu); +- +- /* FIXME. Need actual value of the flush timeout */ +- //if (flush_to != L2CAP_DEFAULT_FLUSH_TO) +- // l2cap_add_conf_opt(&ptr, L2CAP_CONF_FLUSH_TO, 2, pi->flush_to); +- +- req->dcid = __cpu_to_le16(pi->dcid); +- req->flags = __cpu_to_le16(0); +- +- return ptr - data; +-} +- +-static int l2cap_conf_output(struct sock *sk, __u8 **ptr) +-{ +- struct l2cap_pinfo *pi = l2cap_pi(sk); +- int result = 0; +- +- /* Configure output options and let other side know +- * which ones we don't like. +- */ +- if (pi->conf_mtu < pi->omtu) { +- l2cap_add_conf_opt(ptr, L2CAP_CONF_MTU, 2, l2cap_pi(sk)->omtu); +- result = L2CAP_CONF_UNACCEPT; +- } else { +- pi->omtu = pi->conf_mtu; +- } +- +- DBG("sk %p result %d", sk, result); +- return result; +-} +- +-static int l2cap_build_conf_rsp(struct sock *sk, __u8 *data, int *result) +-{ +- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *) data; +- __u8 *ptr = rsp->data; +- +- DBG("sk %p complete %d", sk, result ? 1 : 0); +- +- if (result) +- *result = l2cap_conf_output(sk, &ptr); +- +- rsp->scid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- rsp->result = __cpu_to_le16(result ? *result : 0); +- rsp->flags = __cpu_to_le16(0); +- +- return ptr - data; +-} +- +-static inline int l2cap_connect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- struct l2cap_chan_list *list = &conn->chan_list; +- l2cap_conn_req *req = (l2cap_conn_req *) data; +- l2cap_conn_rsp rsp; +- struct sock *sk, *parent; +- +- __u16 scid = __le16_to_cpu(req->scid); +- __u16 psm = req->psm; +- +- DBG("psm 0x%2.2x scid 0x%4.4x", psm, scid); +- +- /* Check if we have socket listening on psm */ +- if (!(parent = l2cap_get_sock_listen(&conn->src, psm))) +- goto reject; +- +- bh_lock_sock(parent); +- write_lock(&list->lock); +- +- /* Check if we already have channel with that dcid */ +- if (__l2cap_get_chan_by_dcid(list, scid)) +- goto unlock; +- +- /* Check for backlog size */ +- if (parent->ack_backlog > parent->max_ack_backlog) +- goto unlock; +- +- if (!(sk = l2cap_sock_alloc(NULL, BTPROTO_L2CAP, GFP_ATOMIC))) +- goto unlock; +- +- l2cap_sock_init(sk, parent); +- +- bacpy(&l2cap_pi(sk)->src, &conn->src); +- bacpy(&l2cap_pi(sk)->dst, &conn->dst); +- l2cap_pi(sk)->psm = psm; +- l2cap_pi(sk)->dcid = scid; +- +- __l2cap_chan_add(conn, sk, parent); +- sk->state = BT_CONFIG; +- +- write_unlock(&list->lock); +- bh_unlock_sock(parent); +- +- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid); +- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- rsp.result = __cpu_to_le16(0); +- rsp.status = __cpu_to_le16(0); +- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp); +- +- return 0; +- +-unlock: +- write_unlock(&list->lock); +- bh_unlock_sock(parent); +- +-reject: +- rsp.scid = __cpu_to_le16(scid); +- rsp.dcid = __cpu_to_le16(0); +- rsp.status = __cpu_to_le16(0); +- rsp.result = __cpu_to_le16(L2CAP_CONN_NO_MEM); +- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONN_RSP, L2CAP_CONN_RSP_SIZE, &rsp); +- +- return 0; +-} +- +-static inline int l2cap_connect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- l2cap_conn_rsp *rsp = (l2cap_conn_rsp *) data; +- __u16 scid, dcid, result, status; +- struct sock *sk; +- +- scid = __le16_to_cpu(rsp->scid); +- dcid = __le16_to_cpu(rsp->dcid); +- result = __le16_to_cpu(rsp->result); +- status = __le16_to_cpu(rsp->status); +- +- DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x", dcid, scid, result, status); +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) +- return -ENOENT; +- +- bh_lock_sock(sk); +- +- if (!result) { +- char req[64]; +- +- sk->state = BT_CONFIG; +- l2cap_pi(sk)->dcid = dcid; +- l2cap_pi(sk)->conf_state |= CONF_REQ_SENT; +- +- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req); +- } else { +- l2cap_chan_del(sk, ECONNREFUSED); +- } +- +- bh_unlock_sock(sk); +- return 0; +-} +- +-static inline int l2cap_config_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- l2cap_conf_req * req = (l2cap_conf_req *) data; +- __u16 dcid, flags; +- __u8 rsp[64]; +- struct sock *sk; +- int result; +- +- dcid = __le16_to_cpu(req->dcid); +- flags = __le16_to_cpu(req->flags); +- +- DBG("dcid 0x%4.4x flags 0x%2.2x", dcid, flags); +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid))) +- return -ENOENT; +- +- bh_lock_sock(sk); +- +- l2cap_parse_conf_req(sk, req->data, cmd->len - L2CAP_CONF_REQ_SIZE); +- +- if (flags & 0x01) { +- /* Incomplete config. Send empty response. */ +- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, NULL), rsp); +- goto unlock; +- } +- +- /* Complete config. */ +- l2cap_send_rsp(conn, cmd->ident, L2CAP_CONF_RSP, l2cap_build_conf_rsp(sk, rsp, &result), rsp); +- +- if (result) +- goto unlock; +- +- /* Output config done */ +- l2cap_pi(sk)->conf_state |= CONF_OUTPUT_DONE; +- +- if (l2cap_pi(sk)->conf_state & CONF_INPUT_DONE) { +- sk->state = BT_CONNECTED; +- l2cap_chan_ready(sk); +- } else if (!(l2cap_pi(sk)->conf_state & CONF_REQ_SENT)) { +- char req[64]; +- l2cap_send_req(conn, L2CAP_CONF_REQ, l2cap_build_conf_req(sk, req), req); +- } +- +-unlock: +- bh_unlock_sock(sk); +- +- return 0; +-} +- +-static inline int l2cap_config_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- l2cap_conf_rsp *rsp = (l2cap_conf_rsp *)data; +- __u16 scid, flags, result; +- struct sock *sk; +- int err = 0; +- +- scid = __le16_to_cpu(rsp->scid); +- flags = __le16_to_cpu(rsp->flags); +- result = __le16_to_cpu(rsp->result); +- +- DBG("scid 0x%4.4x flags 0x%2.2x result 0x%2.2x", scid, flags, result); +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) +- return -ENOENT; +- +- bh_lock_sock(sk); +- +- if (result) { +- l2cap_disconn_req req; +- +- /* They didn't like our options. Well... we do not negotiate. +- * Close channel. +- */ +- sk->state = BT_DISCONN; +- +- req.dcid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- req.scid = __cpu_to_le16(l2cap_pi(sk)->scid); +- l2cap_send_req(conn, L2CAP_DISCONN_REQ, L2CAP_DISCONN_REQ_SIZE, &req); +- +- l2cap_sock_set_timer(sk, sk->sndtimeo); +- goto done; +- } +- +- if (flags & 0x01) +- goto done; +- +- /* Input config done */ +- l2cap_pi(sk)->conf_state |= CONF_INPUT_DONE; +- +- if (l2cap_pi(sk)->conf_state & CONF_OUTPUT_DONE) { +- sk->state = BT_CONNECTED; +- l2cap_chan_ready(sk); +- } +- +-done: +- bh_unlock_sock(sk); +- +- return err; +-} +- +-static inline int l2cap_disconnect_req(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- l2cap_disconn_req *req = (l2cap_disconn_req *) data; +- l2cap_disconn_rsp rsp; +- __u16 dcid, scid; +- struct sock *sk; +- +- scid = __le16_to_cpu(req->scid); +- dcid = __le16_to_cpu(req->dcid); +- +- DBG("scid 0x%4.4x dcid 0x%4.4x", scid, dcid); +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, dcid))) +- return 0; +- +- bh_lock_sock(sk); +- +- rsp.dcid = __cpu_to_le16(l2cap_pi(sk)->scid); +- rsp.scid = __cpu_to_le16(l2cap_pi(sk)->dcid); +- l2cap_send_rsp(conn, cmd->ident, L2CAP_DISCONN_RSP, L2CAP_DISCONN_RSP_SIZE, &rsp); +- +- l2cap_chan_del(sk, ECONNRESET); +- +- bh_unlock_sock(sk); +- +- l2cap_sock_kill(sk); +- +- return 0; +-} +- +-static inline int l2cap_disconnect_rsp(struct l2cap_conn *conn, l2cap_cmd_hdr *cmd, __u8 *data) +-{ +- l2cap_disconn_rsp *rsp = (l2cap_disconn_rsp *) data; +- __u16 dcid, scid; +- struct sock *sk; +- +- scid = __le16_to_cpu(rsp->scid); +- dcid = __le16_to_cpu(rsp->dcid); +- +- DBG("dcid 0x%4.4x scid 0x%4.4x", dcid, scid); +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, scid))) +- return -ENOENT; +- +- bh_lock_sock(sk); +- l2cap_sock_clear_timer(sk); +- l2cap_chan_del(sk, ECONNABORTED); +- bh_unlock_sock(sk); +- +- l2cap_sock_kill(sk); +- +- return 0; +-} +- +-static inline void l2cap_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb) +-{ +- __u8 *data = skb->data; +- int len = skb->len; +- l2cap_cmd_hdr cmd; +- int err = 0; +- +- while (len >= L2CAP_CMD_HDR_SIZE) { +- memcpy(&cmd, data, L2CAP_CMD_HDR_SIZE); +- data += L2CAP_CMD_HDR_SIZE; +- len -= L2CAP_CMD_HDR_SIZE; +- +- cmd.len = __le16_to_cpu(cmd.len); +- +- DBG("code 0x%2.2x len %d id 0x%2.2x", cmd.code, cmd.len, cmd.ident); +- +- if (cmd.len > len || !cmd.ident) { +- DBG("corrupted command"); +- break; +- } +- +- switch (cmd.code) { +- case L2CAP_CONN_REQ: +- err = l2cap_connect_req(conn, &cmd, data); +- break; +- +- case L2CAP_CONN_RSP: +- err = l2cap_connect_rsp(conn, &cmd, data); +- break; +- +- case L2CAP_CONF_REQ: +- err = l2cap_config_req(conn, &cmd, data); +- break; +- +- case L2CAP_CONF_RSP: +- err = l2cap_config_rsp(conn, &cmd, data); +- break; +- +- case L2CAP_DISCONN_REQ: +- err = l2cap_disconnect_req(conn, &cmd, data); +- break; +- +- case L2CAP_DISCONN_RSP: +- err = l2cap_disconnect_rsp(conn, &cmd, data); +- break; +- +- case L2CAP_COMMAND_REJ: +- /* FIXME: We should process this */ +- l2cap_raw_recv(conn, skb); +- break; +- +- case L2CAP_ECHO_REQ: +- l2cap_send_rsp(conn, cmd.ident, L2CAP_ECHO_RSP, cmd.len, data); +- break; +- +- case L2CAP_ECHO_RSP: +- case L2CAP_INFO_REQ: +- case L2CAP_INFO_RSP: +- l2cap_raw_recv(conn, skb); +- break; +- +- default: +- ERR("Uknown signaling command 0x%2.2x", cmd.code); +- err = -EINVAL; +- break; +- }; +- +- if (err) { +- l2cap_cmd_rej rej; +- DBG("error %d", err); +- +- /* FIXME: Map err to a valid reason. */ +- rej.reason = __cpu_to_le16(0); +- l2cap_send_rsp(conn, cmd.ident, L2CAP_COMMAND_REJ, L2CAP_CMD_REJ_SIZE, &rej); +- } +- +- data += cmd.len; +- len -= cmd.len; +- } +- +- kfree_skb(skb); +-} +- +-static inline int l2cap_data_channel(struct l2cap_conn *conn, __u16 cid, struct sk_buff *skb) +-{ +- struct sock *sk; +- +- if (!(sk = l2cap_get_chan_by_scid(&conn->chan_list, cid))) { +- DBG("unknown cid 0x%4.4x", cid); +- goto drop; +- } +- +- DBG("sk %p, len %d", sk, skb->len); +- +- if (sk->state != BT_CONNECTED) +- goto drop; +- +- if (l2cap_pi(sk)->imtu < skb->len) +- goto drop; +- +- skb_queue_tail(&sk->receive_queue, skb); +- sk->data_ready(sk, skb->len); +- +- return 0; +- +-drop: +- kfree_skb(skb); +- +- return 0; +-} +- +-static void l2cap_recv_frame(struct l2cap_conn *conn, struct sk_buff *skb) +-{ +- l2cap_hdr *lh = (l2cap_hdr *) skb->data; +- __u16 cid, len; +- +- skb_pull(skb, L2CAP_HDR_SIZE); +- cid = __le16_to_cpu(lh->cid); +- len = __le16_to_cpu(lh->len); +- +- DBG("len %d, cid 0x%4.4x", len, cid); +- +- if (cid == 0x0001) +- l2cap_sig_channel(conn, skb); +- else +- l2cap_data_channel(conn, cid, skb); +-} +- +-/* ------------ L2CAP interface with lower layer (HCI) ------------- */ +-static int l2cap_dev_event(struct notifier_block *this, unsigned long event, void *ptr) +-{ +- struct hci_dev *hdev = (struct hci_dev *) ptr; +- +- DBG("hdev %s, event %ld", hdev->name, event); +- +- write_lock(&l2cap_rt_lock); +- +- switch (event) { +- case HCI_DEV_UP: +- l2cap_iff_add(hdev); +- break; +- +- case HCI_DEV_DOWN: +- l2cap_iff_del(hdev); +- break; +- }; +- +- write_unlock(&l2cap_rt_lock); +- +- return NOTIFY_DONE; +-} +- +-int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr) +-{ +- struct l2cap_iff *iff; +- +- DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr)); +- +- if (!(iff = hdev->l2cap_data)) { +- ERR("unknown interface"); +- return 0; +- } +- +- /* Always accept connection */ +- return 1; +-} +- +-int l2cap_connect_cfm(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 status, struct hci_conn *hconn) +-{ +- struct l2cap_conn *conn; +- struct l2cap_iff *iff; +- int err = 0; +- +- DBG("hdev %s bdaddr %s hconn %p", hdev->name, batostr(bdaddr), hconn); +- +- if (!(iff = hdev->l2cap_data)) { +- ERR("unknown interface"); +- return 0; +- } +- +- l2cap_iff_lock(iff); +- +- conn = l2cap_get_conn_by_addr(iff, bdaddr); +- +- if (conn) { +- /* Outgoing connection */ +- DBG("Outgoing connection: %s -> %s, %p, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), conn, status); +- +- if (!status && hconn) { +- conn->state = BT_CONNECTED; +- conn->hconn = hconn; +- +- hconn->l2cap_data = (void *)conn; +- +- /* Establish channels */ +- l2cap_conn_ready(conn); +- } else { +- l2cap_conn_del(conn, bterr(status)); +- } +- } else { +- /* Incomming connection */ +- DBG("Incomming connection: %s -> %s, %2.2x", batostr(iff->bdaddr), batostr(bdaddr), status); +- +- if (status || !hconn) +- goto done; +- +- if (!(conn = l2cap_conn_add(iff, bdaddr))) { +- err = -ENOMEM; +- goto done; +- } +- +- conn->hconn = hconn; +- hconn->l2cap_data = (void *)conn; +- +- conn->state = BT_CONNECTED; +- } +- +-done: +- l2cap_iff_unlock(iff); +- +- return err; +-} +- +-int l2cap_disconn_ind(struct hci_conn *hconn, __u8 reason) +-{ +- struct l2cap_conn *conn = hconn->l2cap_data; +- +- DBG("hconn %p reason %d", hconn, reason); +- +- if (!conn) { +- ERR("unknown connection"); +- return 0; +- } +- conn->hconn = NULL; +- +- l2cap_iff_lock(conn->iff); +- l2cap_conn_del(conn, bterr(reason)); +- l2cap_iff_unlock(conn->iff); +- +- return 0; +-} +- +-int l2cap_recv_acldata(struct hci_conn *hconn, struct sk_buff *skb, __u16 flags) +-{ +- struct l2cap_conn *conn = hconn->l2cap_data; +- +- if (!conn) { +- ERR("unknown connection %p", hconn); +- goto drop; +- } +- +- DBG("conn %p len %d flags 0x%x", conn, skb->len, flags); +- +- if (flags & ACL_START) { +- int flen, tlen, size; +- l2cap_hdr *lh; +- +- if (conn->rx_len) { +- ERR("Unexpected start frame (len %d)", skb->len); +- kfree_skb(conn->rx_skb); conn->rx_skb = NULL; +- conn->rx_len = 0; +- } +- +- if (skb->len < L2CAP_HDR_SIZE) { +- ERR("Frame is too small (len %d)", skb->len); +- goto drop; +- } +- +- lh = (l2cap_hdr *)skb->data; +- tlen = __le16_to_cpu(lh->len); +- flen = skb->len - L2CAP_HDR_SIZE; +- +- DBG("Start: total len %d, frag len %d", tlen, flen); +- +- if (flen == tlen) { +- /* Complete frame received */ +- l2cap_recv_frame(conn, skb); +- return 0; +- } +- +- /* Allocate skb for the complete frame (with header) */ +- size = L2CAP_HDR_SIZE + tlen; +- if (!(conn->rx_skb = bluez_skb_alloc(size, GFP_ATOMIC))) +- goto drop; +- +- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); +- +- conn->rx_len = tlen - flen; +- } else { +- DBG("Cont: frag len %d (expecting %d)", skb->len, conn->rx_len); +- +- if (!conn->rx_len) { +- ERR("Unexpected continuation frame (len %d)", skb->len); +- goto drop; +- } +- +- if (skb->len > conn->rx_len) { +- ERR("Fragment is too large (len %d)", skb->len); +- kfree_skb(conn->rx_skb); conn->rx_skb = NULL; +- goto drop; +- } +- +- memcpy(skb_put(conn->rx_skb, skb->len), skb->data, skb->len); +- conn->rx_len -= skb->len; +- +- if (!conn->rx_len) { +- /* Complete frame received */ +- l2cap_recv_frame(conn, conn->rx_skb); +- conn->rx_skb = NULL; +- } +- } +- +-drop: +- kfree_skb(skb); +- return 0; +-} +- +-struct proto_ops l2cap_sock_ops = { +- family: PF_BLUETOOTH, +- release: l2cap_sock_release, +- bind: l2cap_sock_bind, +- connect: l2cap_sock_connect, +- listen: l2cap_sock_listen, +- accept: l2cap_sock_accept, +- getname: l2cap_sock_getname, +- sendmsg: l2cap_sock_sendmsg, +- recvmsg: l2cap_sock_recvmsg, +- poll: l2cap_sock_poll, +- socketpair: sock_no_socketpair, +- ioctl: sock_no_ioctl, +- shutdown: sock_no_shutdown, +- setsockopt: l2cap_sock_setsockopt, +- getsockopt: l2cap_sock_getsockopt, +- mmap: sock_no_mmap +-}; +- +-struct net_proto_family l2cap_sock_family_ops = { +- family: PF_BLUETOOTH, +- create: l2cap_sock_create +-}; +- +-struct hci_proto l2cap_hci_proto = { +- name: "L2CAP", +- id: HCI_PROTO_L2CAP, +- connect_ind: l2cap_connect_ind, +- connect_cfm: l2cap_connect_cfm, +- disconn_ind: l2cap_disconn_ind, +- recv_acldata: l2cap_recv_acldata, +-}; +- +-struct notifier_block l2cap_nblock = { +- notifier_call: l2cap_dev_event +-}; +- +-int __init l2cap_init(void) +-{ +- INF("BlueZ L2CAP ver %s Copyright (C) 2000,2001 Qualcomm Inc", +- VERSION); +- INF("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); +- +- if (bluez_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops)) { +- ERR("Can't register L2CAP socket"); +- return -EPROTO; +- } +- +- if (hci_register_proto(&l2cap_hci_proto) < 0) { +- ERR("Can't register L2CAP protocol"); +- return -EPROTO; +- } +- +- hci_register_notifier(&l2cap_nblock); +- +- l2cap_register_proc(); +- +- return 0; +-} +- +-void l2cap_cleanup(void) +-{ +- l2cap_unregister_proc(); +- +- /* Unregister socket, protocol and notifier */ +- if (bluez_sock_unregister(BTPROTO_L2CAP)) +- ERR("Can't unregister L2CAP socket"); +- +- if (hci_unregister_proto(&l2cap_hci_proto) < 0) +- ERR("Can't unregister L2CAP protocol"); +- +- hci_unregister_notifier(&l2cap_nblock); +- +- /* We _must_ not have any sockets and/or connections +- * at this stage. +- */ +- +- /* Free interface list and unlock HCI devices */ +- { +- struct list_head *list = &l2cap_iff_list; +- +- while (!list_empty(list)) { +- struct l2cap_iff *iff; +- +- iff = list_entry(list->next, struct l2cap_iff, list); +- l2cap_iff_del(iff->hdev); +- } +- } +-} +- +-module_init(l2cap_init); +-module_exit(l2cap_cleanup); +- +-MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); +-MODULE_DESCRIPTION("BlueZ L2CAP ver " VERSION); +-MODULE_LICENSE("GPL"); +- +diff -urN linux-2.4.18/net/bluetooth/l2cap_proc.c linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c +--- linux-2.4.18/net/bluetooth/l2cap_proc.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/l2cap_proc.c 1970-01-01 01:00:00.000000000 +0100 +@@ -1,165 +0,0 @@ +-/* +- BlueZ - Bluetooth protocol stack for Linux +- Copyright (C) 2000-2001 Qualcomm Incorporated +- +- Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> +- +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License version 2 as +- published by the Free Software Foundation; +- +- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +- IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY +- CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES +- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +- +- ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, +- COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS +- SOFTWARE IS DISCLAIMED. +-*/ +- +-/* +- * BlueZ L2CAP proc fs support. +- * +- * $Id: l2cap_proc.c,v 1.2 2001/06/02 01:40:09 maxk Exp $ +- */ +- +-#include <linux/config.h> +-#include <linux/module.h> +- +-#include <linux/types.h> +-#include <linux/errno.h> +-#include <linux/kernel.h> +-#include <linux/major.h> +-#include <linux/sched.h> +-#include <linux/slab.h> +-#include <linux/poll.h> +-#include <linux/fcntl.h> +-#include <linux/init.h> +-#include <linux/skbuff.h> +-#include <linux/interrupt.h> +-#include <linux/socket.h> +-#include <linux/skbuff.h> +-#include <linux/proc_fs.h> +-#include <linux/list.h> +-#include <net/sock.h> +- +-#include <asm/system.h> +-#include <asm/uaccess.h> +- +-#include <net/bluetooth/bluez.h> +-#include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/hci_core.h> +-#include <net/bluetooth/l2cap_core.h> +- +-#ifndef L2CAP_DEBUG +-#undef DBG +-#define DBG( A... ) +-#endif +- +-/* ----- PROC fs support ----- */ +-static int l2cap_conn_dump(char *buf, struct l2cap_iff *iff) +-{ +- struct list_head *p; +- char *ptr = buf; +- +- list_for_each(p, &iff->conn_list) { +- struct l2cap_conn *c; +- +- c = list_entry(p, struct l2cap_conn, list); +- ptr += sprintf(ptr, " %p %d %p %p %s %s\n", +- c, c->state, c->iff, c->hconn, batostr(&c->src), batostr(&c->dst)); +- } +- +- return ptr - buf; +-} +- +-static int l2cap_iff_dump(char *buf) +-{ +- struct list_head *p; +- char *ptr = buf; +- +- ptr += sprintf(ptr, "Interfaces:\n"); +- +- write_lock(&l2cap_rt_lock); +- +- list_for_each(p, &l2cap_iff_list) { +- struct l2cap_iff *iff; +- +- iff = list_entry(p, struct l2cap_iff, list); +- +- ptr += sprintf(ptr, " %s %p %p\n", iff->hdev->name, iff, iff->hdev); +- +- l2cap_iff_lock(iff); +- ptr += l2cap_conn_dump(ptr, iff); +- l2cap_iff_unlock(iff); +- } +- +- write_unlock(&l2cap_rt_lock); +- +- ptr += sprintf(ptr, "\n"); +- +- return ptr - buf; +-} +- +-static int l2cap_sock_dump(char *buf, struct bluez_sock_list *list) +-{ +- struct l2cap_pinfo *pi; +- struct sock *sk; +- char *ptr = buf; +- +- ptr += sprintf(ptr, "Sockets:\n"); +- +- write_lock(&list->lock); +- +- for (sk = list->head; sk; sk = sk->next) { +- pi = l2cap_pi(sk); +- ptr += sprintf(ptr, " %p %d %p %d %s %s 0x%4.4x 0x%4.4x %d %d\n", sk, sk->state, pi->conn, pi->psm, +- batostr(&pi->src), batostr(&pi->dst), pi->scid, pi->dcid, pi->imtu, pi->omtu ); +- } +- +- write_unlock(&list->lock); +- +- ptr += sprintf(ptr, "\n"); +- +- return ptr - buf; +-} +- +-static int l2cap_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv) +-{ +- char *ptr = buf; +- int len; +- +- DBG("count %d, offset %ld", count, offset); +- +- ptr += l2cap_iff_dump(ptr); +- ptr += l2cap_sock_dump(ptr, &l2cap_sk_list); +- len = ptr - buf; +- +- if (len <= count + offset) +- *eof = 1; +- +- *start = buf + offset; +- len -= offset; +- +- if (len > count) +- len = count; +- if (len < 0) +- len = 0; +- +- return len; +-} +- +-void l2cap_register_proc(void) +-{ +- create_proc_read_entry("bluetooth/l2cap", 0, 0, l2cap_read_proc, NULL); +-} +- +-void l2cap_unregister_proc(void) +-{ +- remove_proc_entry("bluetooth/l2cap", NULL); +-} +diff -urN linux-2.4.18/net/bluetooth/lib.c linux-2.4.18-mh15/net/bluetooth/lib.c +--- linux-2.4.18/net/bluetooth/lib.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/lib.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,7 +25,7 @@ + /* + * BlueZ kernel library. + * +- * $Id: lib.c,v 1.3 2001/06/22 23:14:23 maxk Exp $ ++ * $Id: lib.c,v 1.2 2002/06/20 19:55:08 maxk Exp $ + */ + + #include <linux/kernel.h> +@@ -105,7 +105,7 @@ + return EACCES; + + case 0x06: +- return EINVAL; ++ return EBADE; + + case 0x07: + return ENOMEM; +diff -urN linux-2.4.18/net/bluetooth/Makefile linux-2.4.18-mh15/net/bluetooth/Makefile +--- linux-2.4.18/net/bluetooth/Makefile 2001-06-12 04:15:27.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -1,20 +1,40 @@ + # +-# Makefile for the Bluetooth subsystem ++# Makefile for the Linux Bluetooth subsystem + # +-O_TARGET := bluetooth.o + +-list-multi := hci.o l2cap.o +-export-objs := syms.o +-hci-objs := af_bluetooth.o hci_core.o hci_sock.o lib.o syms.o +-l2cap-objs := l2cap_core.o l2cap_proc.o ++O_TARGET := bluetooth.o + +-obj-$(CONFIG_BLUEZ) += hci.o ++list-multi := bluez.o ++export-objs := syms.o l2cap.o ++ ++bluez-objs := af_bluetooth.o hci_core.o hci_conn.o hci_event.o hci_sock.o lib.o syms.o ++ ++obj-$(CONFIG_BLUEZ) += bluez.o + obj-$(CONFIG_BLUEZ_L2CAP) += l2cap.o ++obj-$(CONFIG_BLUEZ_SCO) += sco.o + +-include $(TOPDIR)/Rules.make ++subdir-$(CONFIG_BLUEZ_RFCOMM) += rfcomm ++subdir-$(CONFIG_BLUEZ_BNEP) += bnep ++subdir-$(CONFIG_BLUEZ_CMTP) += cmtp ++subdir-$(CONFIG_BLUEZ_HIDP) += hidp ++ ++ifeq ($(CONFIG_BLUEZ_RFCOMM),y) ++obj-y += rfcomm/rfcomm.o ++endif + +-hci.o: $(hci-objs) +- $(LD) -r -o $@ $(hci-objs) ++ifeq ($(CONFIG_BLUEZ_BNEP),y) ++obj-y += bnep/bnep.o ++endif ++ ++ifeq ($(CONFIG_BLUEZ_CMTP),y) ++obj-y += cmtp/cmtp.o ++endif ++ ++ifeq ($(CONFIG_BLUEZ_HIDP),y) ++obj-y += hidp/hidp.o ++endif ++ ++include $(TOPDIR)/Rules.make + +-l2cap.o: $(l2cap-objs) +- $(LD) -r -o $@ $(l2cap-objs) ++bluez.o: $(bluez-objs) ++ $(LD) -r -o $@ $(bluez-objs) +diff -urN linux-2.4.18/net/bluetooth/rfcomm/Config.in linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in +--- linux-2.4.18/net/bluetooth/rfcomm/Config.in 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Config.in 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,10 @@ ++# ++# Bluetooth RFCOMM layer configuration ++# ++ ++dep_tristate 'RFCOMM protocol support' CONFIG_BLUEZ_RFCOMM $CONFIG_BLUEZ_L2CAP ++ ++if [ "$CONFIG_BLUEZ_RFCOMM" != "n" ]; then ++ bool ' RFCOMM TTY support' CONFIG_BLUEZ_RFCOMM_TTY ++fi ++ +diff -urN linux-2.4.18/net/bluetooth/rfcomm/core.c linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c +--- linux-2.4.18/net/bluetooth/rfcomm/core.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/core.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,1940 @@ ++/* ++ RFCOMM implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ RPN support - Dirk Husemann <hud@zurich.ibm.com> ++*/ ++ ++/* ++ * RFCOMM core. ++ * ++ * $Id: core.c,v 1.46 2002/10/18 20:12:12 maxk Exp $ ++ */ ++ ++#define __KERNEL_SYSCALLS__ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/signal.h> ++#include <linux/init.h> ++#include <linux/wait.h> ++#include <linux/net.h> ++#include <linux/proc_fs.h> ++#include <net/sock.h> ++#include <asm/uaccess.h> ++#include <asm/unaligned.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/l2cap.h> ++#include <net/bluetooth/rfcomm.h> ++ ++#define VERSION "1.1" ++ ++#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++struct task_struct *rfcomm_thread; ++DECLARE_MUTEX(rfcomm_sem); ++unsigned long rfcomm_event; ++ ++static LIST_HEAD(session_list); ++static atomic_t terminate, running; ++ ++static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len); ++static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci); ++static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci); ++static int rfcomm_queue_disc(struct rfcomm_dlc *d); ++static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type); ++static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d); ++static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig); ++static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len); ++static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits); ++static void rfcomm_make_uih(struct sk_buff *skb, u8 addr); ++ ++static void rfcomm_process_connect(struct rfcomm_session *s); ++ ++/* ---- RFCOMM frame parsing macros ---- */ ++#define __get_dlci(b) ((b & 0xfc) >> 2) ++#define __get_channel(b) ((b & 0xf8) >> 3) ++#define __get_dir(b) ((b & 0x04) >> 2) ++#define __get_type(b) ((b & 0xef)) ++ ++#define __test_ea(b) ((b & 0x01)) ++#define __test_cr(b) ((b & 0x02)) ++#define __test_pf(b) ((b & 0x10)) ++ ++#define __addr(cr, dlci) (((dlci & 0x3f) << 2) | (cr << 1) | 0x01) ++#define __ctrl(type, pf) (((type & 0xef) | (pf << 4))) ++#define __dlci(dir, chn) (((chn & 0x1f) << 1) | dir) ++#define __srv_channel(dlci) (dlci >> 1) ++#define __dir(dlci) (dlci & 0x01) ++ ++#define __len8(len) (((len) << 1) | 1) ++#define __len16(len) ((len) << 1) ++ ++/* MCC macros */ ++#define __mcc_type(cr, type) (((type << 2) | (cr << 1) | 0x01)) ++#define __get_mcc_type(b) ((b & 0xfc) >> 2) ++#define __get_mcc_len(b) ((b & 0xfe) >> 1) ++ ++/* RPN macros */ ++#define __rpn_line_settings(data, stop, parity) ((data & 0x3) | ((stop & 0x1) << 2) | ((parity & 0x3) << 3)) ++#define __get_rpn_data_bits(line) ((line) & 0x3) ++#define __get_rpn_stop_bits(line) (((line) >> 2) & 0x1) ++#define __get_rpn_parity(line) (((line) >> 3) & 0x3) ++ ++/* ---- RFCOMM FCS computation ---- */ ++ ++/* CRC on 2 bytes */ ++#define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]]) ++ ++/* FCS on 2 bytes */ ++static inline u8 __fcs(u8 *data) ++{ ++ return (0xff - __crc(data)); ++} ++ ++/* FCS on 3 bytes */ ++static inline u8 __fcs2(u8 *data) ++{ ++ return (0xff - rfcomm_crc_table[__crc(data) ^ data[2]]); ++} ++ ++/* Check FCS */ ++static inline int __check_fcs(u8 *data, int type, u8 fcs) ++{ ++ u8 f = __crc(data); ++ ++ if (type != RFCOMM_UIH) ++ f = rfcomm_crc_table[f ^ data[2]]; ++ ++ return rfcomm_crc_table[f ^ fcs] != 0xcf; ++} ++ ++/* ---- L2CAP callbacks ---- */ ++static void rfcomm_l2state_change(struct sock *sk) ++{ ++ BT_DBG("%p state %d", sk, sk->state); ++ rfcomm_schedule(RFCOMM_SCHED_STATE); ++} ++ ++static void rfcomm_l2data_ready(struct sock *sk, int bytes) ++{ ++ BT_DBG("%p bytes %d", sk, bytes); ++ rfcomm_schedule(RFCOMM_SCHED_RX); ++} ++ ++static int rfcomm_l2sock_create(struct socket **sock) ++{ ++ int err; ++ ++ BT_DBG(""); ++ ++ err = sock_create(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_L2CAP, sock); ++ if (!err) { ++ struct sock *sk = (*sock)->sk; ++ sk->data_ready = rfcomm_l2data_ready; ++ sk->state_change = rfcomm_l2state_change; ++ } ++ return err; ++} ++ ++/* ---- RFCOMM DLCs ---- */ ++static void rfcomm_dlc_timeout(unsigned long arg) ++{ ++ struct rfcomm_dlc *d = (void *) arg; ++ ++ BT_DBG("dlc %p state %ld", d, d->state); ++ ++ set_bit(RFCOMM_TIMED_OUT, &d->flags); ++ rfcomm_dlc_put(d); ++ rfcomm_schedule(RFCOMM_SCHED_TIMEO); ++} ++ ++static void rfcomm_dlc_set_timer(struct rfcomm_dlc *d, long timeout) ++{ ++ BT_DBG("dlc %p state %ld timeout %ld", d, d->state, timeout); ++ ++ if (!mod_timer(&d->timer, jiffies + timeout)) ++ rfcomm_dlc_hold(d); ++} ++ ++static void rfcomm_dlc_clear_timer(struct rfcomm_dlc *d) ++{ ++ BT_DBG("dlc %p state %ld", d, d->state); ++ ++ if (timer_pending(&d->timer) && del_timer(&d->timer)) ++ rfcomm_dlc_put(d); ++} ++ ++static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d) ++{ ++ BT_DBG("%p", d); ++ ++ d->state = BT_OPEN; ++ d->flags = 0; ++ d->mscex = 0; ++ d->mtu = RFCOMM_DEFAULT_MTU; ++ d->v24_sig = RFCOMM_V24_RTC | RFCOMM_V24_RTR | RFCOMM_V24_DV; ++ ++ d->cfc = RFCOMM_CFC_DISABLED; ++ d->rx_credits = RFCOMM_DEFAULT_CREDITS; ++} ++ ++struct rfcomm_dlc *rfcomm_dlc_alloc(int prio) ++{ ++ struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio); ++ if (!d) ++ return NULL; ++ memset(d, 0, sizeof(*d)); ++ ++ init_timer(&d->timer); ++ d->timer.function = rfcomm_dlc_timeout; ++ d->timer.data = (unsigned long) d; ++ ++ skb_queue_head_init(&d->tx_queue); ++ spin_lock_init(&d->lock); ++ atomic_set(&d->refcnt, 1); ++ ++ rfcomm_dlc_clear_state(d); ++ ++ BT_DBG("%p", d); ++ return d; ++} ++ ++void rfcomm_dlc_free(struct rfcomm_dlc *d) ++{ ++ BT_DBG("%p", d); ++ ++ skb_queue_purge(&d->tx_queue); ++ kfree(d); ++} ++ ++static void rfcomm_dlc_link(struct rfcomm_session *s, struct rfcomm_dlc *d) ++{ ++ BT_DBG("dlc %p session %p", d, s); ++ ++ rfcomm_session_hold(s); ++ ++ rfcomm_dlc_hold(d); ++ list_add(&d->list, &s->dlcs); ++ d->session = s; ++} ++ ++static void rfcomm_dlc_unlink(struct rfcomm_dlc *d) ++{ ++ struct rfcomm_session *s = d->session; ++ ++ BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s); ++ ++ list_del(&d->list); ++ d->session = NULL; ++ rfcomm_dlc_put(d); ++ ++ rfcomm_session_put(s); ++} ++ ++static struct rfcomm_dlc *rfcomm_dlc_get(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_dlc *d; ++ struct list_head *p; ++ ++ list_for_each(p, &s->dlcs) { ++ d = list_entry(p, struct rfcomm_dlc, list); ++ if (d->dlci == dlci) ++ return d; ++ } ++ return NULL; ++} ++ ++static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel) ++{ ++ struct rfcomm_session *s; ++ int err = 0; ++ u8 dlci; ++ ++ BT_DBG("dlc %p state %ld %s %s channel %d", ++ d, d->state, batostr(src), batostr(dst), channel); ++ ++ if (channel < 1 || channel > 30) ++ return -EINVAL; ++ ++ if (d->state != BT_OPEN && d->state != BT_CLOSED) ++ return 0; ++ ++ s = rfcomm_session_get(src, dst); ++ if (!s) { ++ s = rfcomm_session_create(src, dst, &err); ++ if (!s) ++ return err; ++ } ++ ++ dlci = __dlci(!s->initiator, channel); ++ ++ /* Check if DLCI already exists */ ++ if (rfcomm_dlc_get(s, dlci)) ++ return -EBUSY; ++ ++ rfcomm_dlc_clear_state(d); ++ ++ d->dlci = dlci; ++ d->addr = __addr(s->initiator, dlci); ++ d->priority = 7; ++ ++ d->state = BT_CONFIG; ++ rfcomm_dlc_link(s, d); ++ ++ d->mtu = s->mtu; ++ d->cfc = (s->cfc == RFCOMM_CFC_UNKNOWN) ? 0 : s->cfc; ++ ++ if (s->state == BT_CONNECTED) ++ rfcomm_send_pn(s, 1, d); ++ rfcomm_dlc_set_timer(d, RFCOMM_CONN_TIMEOUT); ++ return 0; ++} ++ ++int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel) ++{ ++ mm_segment_t fs; ++ int r; ++ ++ rfcomm_lock(); ++ ++ fs = get_fs(); set_fs(KERNEL_DS); ++ r = __rfcomm_dlc_open(d, src, dst, channel); ++ set_fs(fs); ++ ++ rfcomm_unlock(); ++ return r; ++} ++ ++static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err) ++{ ++ struct rfcomm_session *s = d->session; ++ if (!s) ++ return 0; ++ ++ BT_DBG("dlc %p state %ld dlci %d err %d session %p", ++ d, d->state, d->dlci, err, s); ++ ++ switch (d->state) { ++ case BT_CONNECTED: ++ case BT_CONFIG: ++ case BT_CONNECT: ++ d->state = BT_DISCONN; ++ if (skb_queue_empty(&d->tx_queue)) { ++ rfcomm_send_disc(s, d->dlci); ++ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT); ++ } else { ++ rfcomm_queue_disc(d); ++ rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2); ++ } ++ break; ++ ++ default: ++ rfcomm_dlc_clear_timer(d); ++ ++ rfcomm_dlc_lock(d); ++ d->state = BT_CLOSED; ++ d->state_change(d, err); ++ rfcomm_dlc_unlock(d); ++ ++ skb_queue_purge(&d->tx_queue); ++ rfcomm_dlc_unlink(d); ++ } ++ ++ return 0; ++} ++ ++int rfcomm_dlc_close(struct rfcomm_dlc *d, int err) ++{ ++ mm_segment_t fs; ++ int r; ++ ++ rfcomm_lock(); ++ ++ fs = get_fs(); set_fs(KERNEL_DS); ++ r = __rfcomm_dlc_close(d, err); ++ set_fs(fs); ++ ++ rfcomm_unlock(); ++ return r; ++} ++ ++int rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb) ++{ ++ int len = skb->len; ++ ++ if (d->state != BT_CONNECTED) ++ return -ENOTCONN; ++ ++ BT_DBG("dlc %p mtu %d len %d", d, d->mtu, len); ++ ++ if (len > d->mtu) ++ return -EINVAL; ++ ++ rfcomm_make_uih(skb, d->addr); ++ skb_queue_tail(&d->tx_queue, skb); ++ ++ if (!test_bit(RFCOMM_TX_THROTTLED, &d->flags)) ++ rfcomm_schedule(RFCOMM_SCHED_TX); ++ return len; ++} ++ ++void __rfcomm_dlc_throttle(struct rfcomm_dlc *d) ++{ ++ BT_DBG("dlc %p state %ld", d, d->state); ++ ++ if (!d->cfc) { ++ d->v24_sig |= RFCOMM_V24_FC; ++ set_bit(RFCOMM_MSC_PENDING, &d->flags); ++ } ++ rfcomm_schedule(RFCOMM_SCHED_TX); ++} ++ ++void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d) ++{ ++ BT_DBG("dlc %p state %ld", d, d->state); ++ ++ if (!d->cfc) { ++ d->v24_sig &= ~RFCOMM_V24_FC; ++ set_bit(RFCOMM_MSC_PENDING, &d->flags); ++ } ++ rfcomm_schedule(RFCOMM_SCHED_TX); ++} ++ ++/* ++ Set/get modem status functions use _local_ status i.e. what we report ++ to the other side. ++ Remote status is provided by dlc->modem_status() callback. ++ */ ++int rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig) ++{ ++ BT_DBG("dlc %p state %ld v24_sig 0x%x", ++ d, d->state, v24_sig); ++ ++ if (test_bit(RFCOMM_RX_THROTTLED, &d->flags)) ++ v24_sig |= RFCOMM_V24_FC; ++ else ++ v24_sig &= ~RFCOMM_V24_FC; ++ ++ d->v24_sig = v24_sig; ++ ++ if (!test_and_set_bit(RFCOMM_MSC_PENDING, &d->flags)) ++ rfcomm_schedule(RFCOMM_SCHED_TX); ++ ++ return 0; ++} ++ ++int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig) ++{ ++ BT_DBG("dlc %p state %ld v24_sig 0x%x", ++ d, d->state, d->v24_sig); ++ ++ *v24_sig = d->v24_sig; ++ return 0; ++} ++ ++/* ---- RFCOMM sessions ---- */ ++struct rfcomm_session *rfcomm_session_add(struct socket *sock, int state) ++{ ++ struct rfcomm_session *s = kmalloc(sizeof(*s), GFP_KERNEL); ++ if (!s) ++ return NULL; ++ memset(s, 0, sizeof(*s)); ++ ++ BT_DBG("session %p sock %p", s, sock); ++ ++ INIT_LIST_HEAD(&s->dlcs); ++ s->state = state; ++ s->sock = sock; ++ ++ s->mtu = RFCOMM_DEFAULT_MTU; ++ s->cfc = RFCOMM_CFC_UNKNOWN; ++ ++ list_add(&s->list, &session_list); ++ ++ /* Do not increment module usage count for listeting sessions. ++ * Otherwise we won't be able to unload the module. */ ++ if (state != BT_LISTEN) ++ MOD_INC_USE_COUNT; ++ return s; ++} ++ ++void rfcomm_session_del(struct rfcomm_session *s) ++{ ++ int state = s->state; ++ ++ BT_DBG("session %p state %ld", s, s->state); ++ ++ list_del(&s->list); ++ ++ if (state == BT_CONNECTED) ++ rfcomm_send_disc(s, 0); ++ ++ sock_release(s->sock); ++ kfree(s); ++ ++ if (state != BT_LISTEN) ++ MOD_DEC_USE_COUNT; ++} ++ ++struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst) ++{ ++ struct rfcomm_session *s; ++ struct list_head *p, *n; ++ struct bluez_pinfo *pi; ++ list_for_each_safe(p, n, &session_list) { ++ s = list_entry(p, struct rfcomm_session, list); ++ pi = bluez_pi(s->sock->sk); ++ ++ if ((!bacmp(src, BDADDR_ANY) || !bacmp(&pi->src, src)) && ++ !bacmp(&pi->dst, dst)) ++ return s; ++ } ++ return NULL; ++} ++ ++void rfcomm_session_close(struct rfcomm_session *s, int err) ++{ ++ struct rfcomm_dlc *d; ++ struct list_head *p, *n; ++ ++ BT_DBG("session %p state %ld err %d", s, s->state, err); ++ ++ rfcomm_session_hold(s); ++ ++ s->state = BT_CLOSED; ++ ++ /* Close all dlcs */ ++ list_for_each_safe(p, n, &s->dlcs) { ++ d = list_entry(p, struct rfcomm_dlc, list); ++ d->state = BT_CLOSED; ++ __rfcomm_dlc_close(d, err); ++ } ++ ++ rfcomm_session_put(s); ++} ++ ++struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err) ++{ ++ struct rfcomm_session *s = NULL; ++ struct sockaddr_l2 addr; ++ struct l2cap_options opts; ++ struct socket *sock; ++ int size; ++ ++ BT_DBG("%s %s", batostr(src), batostr(dst)); ++ ++ *err = rfcomm_l2sock_create(&sock); ++ if (*err < 0) ++ return NULL; ++ ++ bacpy(&addr.l2_bdaddr, src); ++ addr.l2_family = AF_BLUETOOTH; ++ addr.l2_psm = 0; ++ *err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr)); ++ if (*err < 0) ++ goto failed; ++ ++ /* Set L2CAP options */ ++ size = sizeof(opts); ++ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size); ++ ++ opts.imtu = RFCOMM_MAX_L2CAP_MTU; ++ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size); ++ ++ s = rfcomm_session_add(sock, BT_BOUND); ++ if (!s) { ++ *err = -ENOMEM; ++ goto failed; ++ } ++ ++ s->initiator = 1; ++ ++ bacpy(&addr.l2_bdaddr, dst); ++ addr.l2_family = AF_BLUETOOTH; ++ addr.l2_psm = htobs(RFCOMM_PSM); ++ *err = sock->ops->connect(sock, (struct sockaddr *) &addr, sizeof(addr), O_NONBLOCK); ++ if (*err == 0 || *err == -EAGAIN) ++ return s; ++ ++ rfcomm_session_del(s); ++ return NULL; ++ ++failed: ++ sock_release(sock); ++ return NULL; ++} ++ ++void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst) ++{ ++ struct sock *sk = s->sock->sk; ++ if (src) ++ bacpy(src, &bluez_pi(sk)->src); ++ if (dst) ++ bacpy(dst, &bluez_pi(sk)->dst); ++} ++ ++/* ---- RFCOMM frame sending ---- */ ++static int rfcomm_send_frame(struct rfcomm_session *s, u8 *data, int len) ++{ ++ struct socket *sock = s->sock; ++ struct iovec iv = { data, len }; ++ struct msghdr msg; ++ int err; ++ ++ BT_DBG("session %p len %d", s, len); ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.msg_iovlen = 1; ++ msg.msg_iov = &iv; ++ ++ err = sock->ops->sendmsg(sock, &msg, len, 0); ++ return err; ++} ++ ++static int rfcomm_send_sabm(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_cmd cmd; ++ ++ BT_DBG("%p dlci %d", s, dlci); ++ ++ cmd.addr = __addr(s->initiator, dlci); ++ cmd.ctrl = __ctrl(RFCOMM_SABM, 1); ++ cmd.len = __len8(0); ++ cmd.fcs = __fcs2((u8 *) &cmd); ++ ++ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd)); ++} ++ ++static int rfcomm_send_ua(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_cmd cmd; ++ ++ BT_DBG("%p dlci %d", s, dlci); ++ ++ cmd.addr = __addr(!s->initiator, dlci); ++ cmd.ctrl = __ctrl(RFCOMM_UA, 1); ++ cmd.len = __len8(0); ++ cmd.fcs = __fcs2((u8 *) &cmd); ++ ++ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd)); ++} ++ ++static int rfcomm_send_disc(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_cmd cmd; ++ ++ BT_DBG("%p dlci %d", s, dlci); ++ ++ cmd.addr = __addr(s->initiator, dlci); ++ cmd.ctrl = __ctrl(RFCOMM_DISC, 1); ++ cmd.len = __len8(0); ++ cmd.fcs = __fcs2((u8 *) &cmd); ++ ++ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd)); ++} ++ ++static int rfcomm_queue_disc(struct rfcomm_dlc *d) ++{ ++ struct rfcomm_cmd *cmd; ++ struct sk_buff *skb; ++ ++ BT_DBG("dlc %p dlci %d", d, d->dlci); ++ ++ skb = alloc_skb(sizeof(*cmd), GFP_KERNEL); ++ if (!skb) ++ return -ENOMEM; ++ ++ cmd = (void *) __skb_put(skb, sizeof(*cmd)); ++ cmd->addr = d->addr; ++ cmd->ctrl = __ctrl(RFCOMM_DISC, 1); ++ cmd->len = __len8(0); ++ cmd->fcs = __fcs2((u8 *) cmd); ++ ++ skb_queue_tail(&d->tx_queue, skb); ++ rfcomm_schedule(RFCOMM_SCHED_TX); ++ return 0; ++} ++ ++static int rfcomm_send_dm(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_cmd cmd; ++ ++ BT_DBG("%p dlci %d", s, dlci); ++ ++ cmd.addr = __addr(!s->initiator, dlci); ++ cmd.ctrl = __ctrl(RFCOMM_DM, 1); ++ cmd.len = __len8(0); ++ cmd.fcs = __fcs2((u8 *) &cmd); ++ ++ return rfcomm_send_frame(s, (void *) &cmd, sizeof(cmd)); ++} ++ ++static int rfcomm_send_nsc(struct rfcomm_session *s, int cr, u8 type) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d type %d", s, cr, type); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc) + 1); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_NSC); ++ mcc->len = __len8(1); ++ ++ /* Type that we didn't like */ ++ *ptr = __mcc_type(cr, type); ptr++; ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_pn(struct rfcomm_session *s, int cr, struct rfcomm_dlc *d) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ struct rfcomm_pn *pn; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d dlci %d mtu %d", s, cr, d->dlci, d->mtu); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc) + sizeof(*pn)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_PN); ++ mcc->len = __len8(sizeof(*pn)); ++ ++ pn = (void *) ptr; ptr += sizeof(*pn); ++ pn->dlci = d->dlci; ++ pn->priority = d->priority; ++ pn->ack_timer = 0; ++ pn->max_retrans = 0; ++ ++ if (s->cfc) { ++ pn->flow_ctrl = cr ? 0xf0 : 0xe0; ++ pn->credits = RFCOMM_DEFAULT_CREDITS; ++ } else { ++ pn->flow_ctrl = 0; ++ pn->credits = 0; ++ } ++ ++ pn->mtu = htobs(d->mtu); ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, ++ u8 bit_rate, u8 data_bits, u8 stop_bits, ++ u8 parity, u8 flow_ctrl_settings, ++ u8 xon_char, u8 xoff_char, u16 param_mask) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ struct rfcomm_rpn *rpn; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d dlci %d bit_r 0x%x data_b 0x%x stop_b 0x%x parity 0x%x" ++ "flwc_s 0x%x xon_c 0x%x xoff_c 0x%x p_mask 0x%x", ++ s, cr, dlci, bit_rate, data_bits, stop_bits, parity, ++ flow_ctrl_settings, xon_char, xoff_char, param_mask); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc) + sizeof(*rpn)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_RPN); ++ mcc->len = __len8(sizeof(*rpn)); ++ ++ rpn = (void *) ptr; ptr += sizeof(*rpn); ++ rpn->dlci = __addr(1, dlci); ++ rpn->bit_rate = bit_rate; ++ rpn->line_settings = __rpn_line_settings(data_bits, stop_bits, parity); ++ rpn->flow_ctrl = flow_ctrl_settings; ++ rpn->xon_char = xon_char; ++ rpn->xoff_char = xoff_char; ++ rpn->param_mask = param_mask; ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_rls(struct rfcomm_session *s, int cr, u8 dlci, u8 status) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ struct rfcomm_rls *rls; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d status 0x%x", s, cr, status); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc) + sizeof(*rls)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_RLS); ++ mcc->len = __len8(sizeof(*rls)); ++ ++ rls = (void *) ptr; ptr += sizeof(*rls); ++ rls->dlci = __addr(1, dlci); ++ rls->status = status; ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_msc(struct rfcomm_session *s, int cr, u8 dlci, u8 v24_sig) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ struct rfcomm_msc *msc; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d v24 0x%x", s, cr, v24_sig); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc) + sizeof(*msc)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_MSC); ++ mcc->len = __len8(sizeof(*msc)); ++ ++ msc = (void *) ptr; ptr += sizeof(*msc); ++ msc->dlci = __addr(1, dlci); ++ msc->v24_sig = v24_sig | 0x01; ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_fcoff(struct rfcomm_session *s, int cr) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d", s, cr); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_FCOFF); ++ mcc->len = __len8(0); ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_fcon(struct rfcomm_session *s, int cr) ++{ ++ struct rfcomm_hdr *hdr; ++ struct rfcomm_mcc *mcc; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p cr %d", s, cr); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = __addr(s->initiator, 0); ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ hdr->len = __len8(sizeof(*mcc)); ++ ++ mcc = (void *) ptr; ptr += sizeof(*mcc); ++ mcc->type = __mcc_type(cr, RFCOMM_FCON); ++ mcc->len = __len8(0); ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static int rfcomm_send_test(struct rfcomm_session *s, int cr, u8 *pattern, int len) ++{ ++ struct socket *sock = s->sock; ++ struct iovec iv[3]; ++ struct msghdr msg; ++ unsigned char hdr[5], crc[1]; ++ ++ if (len > 125) ++ return -EINVAL; ++ ++ BT_DBG("%p cr %d", s, cr); ++ ++ hdr[0] = __addr(s->initiator, 0); ++ hdr[1] = __ctrl(RFCOMM_UIH, 0); ++ hdr[2] = 0x01 | ((len + 2) << 1); ++ hdr[3] = 0x01 | ((cr & 0x01) << 1) | (RFCOMM_TEST << 2); ++ hdr[4] = 0x01 | (len << 1); ++ ++ crc[0] = __fcs(hdr); ++ ++ iv[0].iov_base = hdr; ++ iv[0].iov_len = 5; ++ iv[1].iov_base = pattern; ++ iv[1].iov_len = len; ++ iv[2].iov_base = crc; ++ iv[2].iov_len = 1; ++ ++ memset(&msg, 0, sizeof(msg)); ++ msg.msg_iovlen = 3; ++ msg.msg_iov = iv; ++ return sock->ops->sendmsg(sock, &msg, 6 + len, 0); ++} ++ ++static int rfcomm_send_credits(struct rfcomm_session *s, u8 addr, u8 credits) ++{ ++ struct rfcomm_hdr *hdr; ++ u8 buf[16], *ptr = buf; ++ ++ BT_DBG("%p addr %d credits %d", s, addr, credits); ++ ++ hdr = (void *) ptr; ptr += sizeof(*hdr); ++ hdr->addr = addr; ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 1); ++ hdr->len = __len8(0); ++ ++ *ptr = credits; ptr++; ++ ++ *ptr = __fcs(buf); ptr++; ++ ++ return rfcomm_send_frame(s, buf, ptr - buf); ++} ++ ++static void rfcomm_make_uih(struct sk_buff *skb, u8 addr) ++{ ++ struct rfcomm_hdr *hdr; ++ int len = skb->len; ++ u8 *crc; ++ ++ if (len > 127) { ++ hdr = (void *) skb_push(skb, 4); ++ put_unaligned(htobs(__len16(len)), (u16 *) &hdr->len); ++ } else { ++ hdr = (void *) skb_push(skb, 3); ++ hdr->len = __len8(len); ++ } ++ hdr->addr = addr; ++ hdr->ctrl = __ctrl(RFCOMM_UIH, 0); ++ ++ crc = skb_put(skb, 1); ++ *crc = __fcs((void *) hdr); ++} ++ ++/* ---- RFCOMM frame reception ---- */ ++static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci) ++{ ++ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); ++ ++ if (dlci) { ++ /* Data channel */ ++ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); ++ if (!d) { ++ rfcomm_send_dm(s, dlci); ++ return 0; ++ } ++ ++ switch (d->state) { ++ case BT_CONNECT: ++ rfcomm_dlc_clear_timer(d); ++ ++ rfcomm_dlc_lock(d); ++ d->state = BT_CONNECTED; ++ d->state_change(d, 0); ++ rfcomm_dlc_unlock(d); ++ ++ rfcomm_send_msc(s, 1, dlci, d->v24_sig); ++ break; ++ ++ case BT_DISCONN: ++ d->state = BT_CLOSED; ++ __rfcomm_dlc_close(d, 0); ++ break; ++ } ++ } else { ++ /* Control channel */ ++ switch (s->state) { ++ case BT_CONNECT: ++ s->state = BT_CONNECTED; ++ rfcomm_process_connect(s); ++ break; ++ } ++ } ++ return 0; ++} ++ ++static int rfcomm_recv_dm(struct rfcomm_session *s, u8 dlci) ++{ ++ int err = 0; ++ ++ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); ++ ++ if (dlci) { ++ /* Data DLC */ ++ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); ++ if (d) { ++ if (d->state == BT_CONNECT || d->state == BT_CONFIG) ++ err = ECONNREFUSED; ++ else ++ err = ECONNRESET; ++ ++ d->state = BT_CLOSED; ++ __rfcomm_dlc_close(d, err); ++ } ++ } else { ++ if (s->state == BT_CONNECT) ++ err = ECONNREFUSED; ++ else ++ err = ECONNRESET; ++ ++ s->state = BT_CLOSED; ++ rfcomm_session_close(s, err); ++ } ++ return 0; ++} ++ ++static int rfcomm_recv_disc(struct rfcomm_session *s, u8 dlci) ++{ ++ int err = 0; ++ ++ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); ++ ++ if (dlci) { ++ struct rfcomm_dlc *d = rfcomm_dlc_get(s, dlci); ++ if (d) { ++ rfcomm_send_ua(s, dlci); ++ ++ if (d->state == BT_CONNECT || d->state == BT_CONFIG) ++ err = ECONNREFUSED; ++ else ++ err = ECONNRESET; ++ ++ d->state = BT_CLOSED; ++ __rfcomm_dlc_close(d, err); ++ } else ++ rfcomm_send_dm(s, dlci); ++ ++ } else { ++ rfcomm_send_ua(s, 0); ++ ++ if (s->state == BT_CONNECT) ++ err = ECONNREFUSED; ++ else ++ err = ECONNRESET; ++ ++ s->state = BT_CLOSED; ++ rfcomm_session_close(s, err); ++ } ++ ++ return 0; ++} ++ ++static int rfcomm_recv_sabm(struct rfcomm_session *s, u8 dlci) ++{ ++ struct rfcomm_dlc *d; ++ u8 channel; ++ ++ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); ++ ++ if (!dlci) { ++ rfcomm_send_ua(s, 0); ++ ++ if (s->state == BT_OPEN) { ++ s->state = BT_CONNECTED; ++ rfcomm_process_connect(s); ++ } ++ return 0; ++ } ++ ++ /* Check if DLC exists */ ++ d = rfcomm_dlc_get(s, dlci); ++ if (d) { ++ if (d->state == BT_OPEN) { ++ /* DLC was previously opened by PN request */ ++ rfcomm_send_ua(s, dlci); ++ ++ rfcomm_dlc_lock(d); ++ d->state = BT_CONNECTED; ++ d->state_change(d, 0); ++ rfcomm_dlc_unlock(d); ++ ++ rfcomm_send_msc(s, 1, dlci, d->v24_sig); ++ } ++ return 0; ++ } ++ ++ /* Notify socket layer about incomming connection */ ++ channel = __srv_channel(dlci); ++ if (rfcomm_connect_ind(s, channel, &d)) { ++ d->dlci = dlci; ++ d->addr = __addr(s->initiator, dlci); ++ rfcomm_dlc_link(s, d); ++ ++ rfcomm_send_ua(s, dlci); ++ ++ rfcomm_dlc_lock(d); ++ d->state = BT_CONNECTED; ++ d->state_change(d, 0); ++ rfcomm_dlc_unlock(d); ++ ++ rfcomm_send_msc(s, 1, dlci, d->v24_sig); ++ } else { ++ rfcomm_send_dm(s, dlci); ++ } ++ ++ return 0; ++} ++ ++static int rfcomm_apply_pn(struct rfcomm_dlc *d, int cr, struct rfcomm_pn *pn) ++{ ++ struct rfcomm_session *s = d->session; ++ ++ BT_DBG("dlc %p state %ld dlci %d mtu %d fc 0x%x credits %d", ++ d, d->state, d->dlci, pn->mtu, pn->flow_ctrl, pn->credits); ++ ++ if (pn->flow_ctrl == 0xf0 || pn->flow_ctrl == 0xe0) { ++ d->cfc = s->cfc = RFCOMM_CFC_ENABLED; ++ d->tx_credits = pn->credits; ++ } else { ++ d->cfc = s->cfc = RFCOMM_CFC_DISABLED; ++ set_bit(RFCOMM_TX_THROTTLED, &d->flags); ++ } ++ ++ d->priority = pn->priority; ++ ++ d->mtu = s->mtu = btohs(pn->mtu); ++ ++ return 0; ++} ++ ++static int rfcomm_recv_pn(struct rfcomm_session *s, int cr, struct sk_buff *skb) ++{ ++ struct rfcomm_pn *pn = (void *) skb->data; ++ struct rfcomm_dlc *d; ++ u8 dlci = pn->dlci; ++ ++ BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); ++ ++ if (!dlci) ++ return 0; ++ ++ d = rfcomm_dlc_get(s, dlci); ++ if (d) { ++ if (cr) { ++ /* PN request */ ++ rfcomm_apply_pn(d, cr, pn); ++ rfcomm_send_pn(s, 0, d); ++ } else { ++ /* PN response */ ++ switch (d->state) { ++ case BT_CONFIG: ++ rfcomm_apply_pn(d, cr, pn); ++ ++ d->state = BT_CONNECT; ++ rfcomm_send_sabm(s, d->dlci); ++ break; ++ } ++ } ++ } else { ++ u8 channel = __srv_channel(dlci); ++ ++ if (!cr) ++ return 0; ++ ++ /* PN request for non existing DLC. ++ * Assume incomming connection. */ ++ if (rfcomm_connect_ind(s, channel, &d)) { ++ d->dlci = dlci; ++ d->addr = __addr(s->initiator, dlci); ++ rfcomm_dlc_link(s, d); ++ ++ rfcomm_apply_pn(d, cr, pn); ++ ++ d->state = BT_OPEN; ++ rfcomm_send_pn(s, 0, d); ++ } else { ++ rfcomm_send_dm(s, dlci); ++ } ++ } ++ return 0; ++} ++ ++static int rfcomm_recv_rpn(struct rfcomm_session *s, int cr, int len, struct sk_buff *skb) ++{ ++ struct rfcomm_rpn *rpn = (void *) skb->data; ++ u8 dlci = __get_dlci(rpn->dlci); ++ ++ u8 bit_rate = 0; ++ u8 data_bits = 0; ++ u8 stop_bits = 0; ++ u8 parity = 0; ++ u8 flow_ctrl = 0; ++ u8 xon_char = 0; ++ u8 xoff_char = 0; ++ u16 rpn_mask = RFCOMM_RPN_PM_ALL; ++ ++ BT_DBG("dlci %d cr %d len 0x%x bitr 0x%x line 0x%x flow 0x%x xonc 0x%x xoffc 0x%x pm 0x%x", ++ dlci, cr, len, rpn->bit_rate, rpn->line_settings, rpn->flow_ctrl, ++ rpn->xon_char, rpn->xoff_char, rpn->param_mask); ++ ++ if (!cr) ++ return 0; ++ ++ if (len == 1) { ++ /* request: return default setting */ ++ bit_rate = RFCOMM_RPN_BR_115200; ++ data_bits = RFCOMM_RPN_DATA_8; ++ stop_bits = RFCOMM_RPN_STOP_1; ++ parity = RFCOMM_RPN_PARITY_NONE; ++ flow_ctrl = RFCOMM_RPN_FLOW_NONE; ++ xon_char = RFCOMM_RPN_XON_CHAR; ++ xoff_char = RFCOMM_RPN_XOFF_CHAR; ++ ++ goto rpn_out; ++ } ++ /* check for sane values: ignore/accept bit_rate, 8 bits, 1 stop bit, no parity, ++ no flow control lines, normal XON/XOFF chars */ ++ if (rpn->param_mask & RFCOMM_RPN_PM_BITRATE) { ++ bit_rate = rpn->bit_rate; ++ if (bit_rate != RFCOMM_RPN_BR_115200) { ++ BT_DBG("RPN bit rate mismatch 0x%x", bit_rate); ++ bit_rate = RFCOMM_RPN_BR_115200; ++ rpn_mask ^= RFCOMM_RPN_PM_BITRATE; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_DATA) { ++ data_bits = __get_rpn_data_bits(rpn->line_settings); ++ if (data_bits != RFCOMM_RPN_DATA_8) { ++ BT_DBG("RPN data bits mismatch 0x%x", data_bits); ++ data_bits = RFCOMM_RPN_DATA_8; ++ rpn_mask ^= RFCOMM_RPN_PM_DATA; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_STOP) { ++ stop_bits = __get_rpn_stop_bits(rpn->line_settings); ++ if (stop_bits != RFCOMM_RPN_STOP_1) { ++ BT_DBG("RPN stop bits mismatch 0x%x", stop_bits); ++ stop_bits = RFCOMM_RPN_STOP_1; ++ rpn_mask ^= RFCOMM_RPN_PM_STOP; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_PARITY) { ++ parity = __get_rpn_parity(rpn->line_settings); ++ if (parity != RFCOMM_RPN_PARITY_NONE) { ++ BT_DBG("RPN parity mismatch 0x%x", parity); ++ parity = RFCOMM_RPN_PARITY_NONE; ++ rpn_mask ^= RFCOMM_RPN_PM_PARITY; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_FLOW) { ++ flow_ctrl = rpn->flow_ctrl; ++ if (flow_ctrl != RFCOMM_RPN_FLOW_NONE) { ++ BT_DBG("RPN flow ctrl mismatch 0x%x", flow_ctrl); ++ flow_ctrl = RFCOMM_RPN_FLOW_NONE; ++ rpn_mask ^= RFCOMM_RPN_PM_FLOW; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_XON) { ++ xon_char = rpn->xon_char; ++ if (xon_char != RFCOMM_RPN_XON_CHAR) { ++ BT_DBG("RPN XON char mismatch 0x%x", xon_char); ++ xon_char = RFCOMM_RPN_XON_CHAR; ++ rpn_mask ^= RFCOMM_RPN_PM_XON; ++ } ++ } ++ if (rpn->param_mask & RFCOMM_RPN_PM_XOFF) { ++ xoff_char = rpn->xoff_char; ++ if (xoff_char != RFCOMM_RPN_XOFF_CHAR) { ++ BT_DBG("RPN XOFF char mismatch 0x%x", xoff_char); ++ xoff_char = RFCOMM_RPN_XOFF_CHAR; ++ rpn_mask ^= RFCOMM_RPN_PM_XOFF; ++ } ++ } ++ ++rpn_out: ++ rfcomm_send_rpn(s, 0, dlci, ++ bit_rate, data_bits, stop_bits, parity, flow_ctrl, ++ xon_char, xoff_char, rpn_mask); ++ ++ return 0; ++} ++ ++static int rfcomm_recv_rls(struct rfcomm_session *s, int cr, struct sk_buff *skb) ++{ ++ struct rfcomm_rls *rls = (void *) skb->data; ++ u8 dlci = __get_dlci(rls->dlci); ++ ++ BT_DBG("dlci %d cr %d status 0x%x", dlci, cr, rls->status); ++ ++ if (!cr) ++ return 0; ++ ++ /* FIXME: We should probably do something with this ++ information here. But for now it's sufficient just ++ to reply -- Bluetooth 1.1 says it's mandatory to ++ recognise and respond to RLS */ ++ ++ rfcomm_send_rls(s, 0, dlci, rls->status); ++ ++ return 0; ++} ++ ++static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb) ++{ ++ struct rfcomm_msc *msc = (void *) skb->data; ++ struct rfcomm_dlc *d; ++ u8 dlci = __get_dlci(msc->dlci); ++ ++ BT_DBG("dlci %d cr %d v24 0x%x", dlci, cr, msc->v24_sig); ++ ++ d = rfcomm_dlc_get(s, dlci); ++ if (!d) ++ return 0; ++ ++ if (cr) { ++ if (msc->v24_sig & RFCOMM_V24_FC && !d->cfc) ++ set_bit(RFCOMM_TX_THROTTLED, &d->flags); ++ else ++ clear_bit(RFCOMM_TX_THROTTLED, &d->flags); ++ ++ rfcomm_dlc_lock(d); ++ if (d->modem_status) ++ d->modem_status(d, msc->v24_sig); ++ rfcomm_dlc_unlock(d); ++ ++ rfcomm_send_msc(s, 0, dlci, msc->v24_sig); ++ ++ d->mscex |= RFCOMM_MSCEX_RX; ++ } else ++ d->mscex |= RFCOMM_MSCEX_TX; ++ ++ return 0; ++} ++ ++static int rfcomm_recv_mcc(struct rfcomm_session *s, struct sk_buff *skb) ++{ ++ struct rfcomm_mcc *mcc = (void *) skb->data; ++ u8 type, cr, len; ++ ++ cr = __test_cr(mcc->type); ++ type = __get_mcc_type(mcc->type); ++ len = __get_mcc_len(mcc->len); ++ ++ BT_DBG("%p type 0x%x cr %d", s, type, cr); ++ ++ skb_pull(skb, 2); ++ ++ switch (type) { ++ case RFCOMM_PN: ++ rfcomm_recv_pn(s, cr, skb); ++ break; ++ ++ case RFCOMM_RPN: ++ rfcomm_recv_rpn(s, cr, len, skb); ++ break; ++ ++ case RFCOMM_RLS: ++ rfcomm_recv_rls(s, cr, skb); ++ break; ++ ++ case RFCOMM_MSC: ++ rfcomm_recv_msc(s, cr, skb); ++ break; ++ ++ case RFCOMM_FCOFF: ++ if (cr) { ++ set_bit(RFCOMM_TX_THROTTLED, &s->flags); ++ rfcomm_send_fcoff(s, 0); ++ } ++ break; ++ ++ case RFCOMM_FCON: ++ if (cr) { ++ clear_bit(RFCOMM_TX_THROTTLED, &s->flags); ++ rfcomm_send_fcon(s, 0); ++ } ++ break; ++ ++ case RFCOMM_TEST: ++ if (cr) ++ rfcomm_send_test(s, 0, skb->data, skb->len); ++ break; ++ ++ case RFCOMM_NSC: ++ break; ++ ++ default: ++ BT_ERR("Unknown control type 0x%02x", type); ++ rfcomm_send_nsc(s, cr, type); ++ break; ++ } ++ return 0; ++} ++ ++static int rfcomm_recv_data(struct rfcomm_session *s, u8 dlci, int pf, struct sk_buff *skb) ++{ ++ struct rfcomm_dlc *d; ++ ++ BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf); ++ ++ d = rfcomm_dlc_get(s, dlci); ++ if (!d) { ++ rfcomm_send_dm(s, dlci); ++ goto drop; ++ } ++ ++ if (pf && d->cfc) { ++ u8 credits = *(u8 *) skb->data; skb_pull(skb, 1); ++ ++ d->tx_credits += credits; ++ if (d->tx_credits) ++ clear_bit(RFCOMM_TX_THROTTLED, &d->flags); ++ } ++ ++ if (skb->len && d->state == BT_CONNECTED) { ++ rfcomm_dlc_lock(d); ++ d->rx_credits--; ++ d->data_ready(d, skb); ++ rfcomm_dlc_unlock(d); ++ return 0; ++ } ++ ++drop: ++ kfree_skb(skb); ++ return 0; ++} ++ ++static int rfcomm_recv_frame(struct rfcomm_session *s, struct sk_buff *skb) ++{ ++ struct rfcomm_hdr *hdr = (void *) skb->data; ++ u8 type, dlci, fcs; ++ ++ dlci = __get_dlci(hdr->addr); ++ type = __get_type(hdr->ctrl); ++ ++ /* Trim FCS */ ++ skb->len--; skb->tail--; ++ fcs = *(u8 *) skb->tail; ++ ++ if (__check_fcs(skb->data, type, fcs)) { ++ BT_ERR("bad checksum in packet"); ++ kfree_skb(skb); ++ return -EILSEQ; ++ } ++ ++ if (__test_ea(hdr->len)) ++ skb_pull(skb, 3); ++ else ++ skb_pull(skb, 4); ++ ++ switch (type) { ++ case RFCOMM_SABM: ++ if (__test_pf(hdr->ctrl)) ++ rfcomm_recv_sabm(s, dlci); ++ break; ++ ++ case RFCOMM_DISC: ++ if (__test_pf(hdr->ctrl)) ++ rfcomm_recv_disc(s, dlci); ++ break; ++ ++ case RFCOMM_UA: ++ if (__test_pf(hdr->ctrl)) ++ rfcomm_recv_ua(s, dlci); ++ break; ++ ++ case RFCOMM_DM: ++ rfcomm_recv_dm(s, dlci); ++ break; ++ ++ case RFCOMM_UIH: ++ if (dlci) ++ return rfcomm_recv_data(s, dlci, __test_pf(hdr->ctrl), skb); ++ ++ rfcomm_recv_mcc(s, skb); ++ break; ++ ++ default: ++ BT_ERR("Unknown packet type 0x%02x\n", type); ++ break; ++ } ++ kfree_skb(skb); ++ return 0; ++} ++ ++/* ---- Connection and data processing ---- */ ++ ++static void rfcomm_process_connect(struct rfcomm_session *s) ++{ ++ struct rfcomm_dlc *d; ++ struct list_head *p, *n; ++ ++ BT_DBG("session %p state %ld", s, s->state); ++ ++ list_for_each_safe(p, n, &s->dlcs) { ++ d = list_entry(p, struct rfcomm_dlc, list); ++ if (d->state == BT_CONFIG) { ++ d->mtu = s->mtu; ++ rfcomm_send_pn(s, 1, d); ++ } ++ } ++} ++ ++/* Send data queued for the DLC. ++ * Return number of frames left in the queue. ++ */ ++static inline int rfcomm_process_tx(struct rfcomm_dlc *d) ++{ ++ struct sk_buff *skb; ++ int err; ++ ++ BT_DBG("dlc %p state %ld cfc %d rx_credits %d tx_credits %d", ++ d, d->state, d->cfc, d->rx_credits, d->tx_credits); ++ ++ /* Send pending MSC */ ++ if (test_and_clear_bit(RFCOMM_MSC_PENDING, &d->flags)) ++ rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig); ++ ++ if (d->cfc) { ++ /* CFC enabled. ++ * Give them some credits */ ++ if (!test_bit(RFCOMM_RX_THROTTLED, &d->flags) && ++ d->rx_credits <= (d->cfc >> 2)) { ++ rfcomm_send_credits(d->session, d->addr, d->cfc - d->rx_credits); ++ d->rx_credits = d->cfc; ++ } ++ } else { ++ /* CFC disabled. ++ * Give ourselves some credits */ ++ d->tx_credits = 5; ++ } ++ ++ if (test_bit(RFCOMM_TX_THROTTLED, &d->flags)) ++ return skb_queue_len(&d->tx_queue); ++ ++ while (d->tx_credits && (skb = skb_dequeue(&d->tx_queue))) { ++ err = rfcomm_send_frame(d->session, skb->data, skb->len); ++ if (err < 0) { ++ skb_queue_head(&d->tx_queue, skb); ++ break; ++ } ++ kfree_skb(skb); ++ d->tx_credits--; ++ } ++ ++ if (d->cfc && !d->tx_credits) { ++ /* We're out of TX credits. ++ * Set TX_THROTTLED flag to avoid unnesary wakeups by dlc_send. */ ++ set_bit(RFCOMM_TX_THROTTLED, &d->flags); ++ } ++ ++ return skb_queue_len(&d->tx_queue); ++} ++ ++static inline void rfcomm_process_dlcs(struct rfcomm_session *s) ++{ ++ struct rfcomm_dlc *d; ++ struct list_head *p, *n; ++ ++ BT_DBG("session %p state %ld", s, s->state); ++ ++ list_for_each_safe(p, n, &s->dlcs) { ++ d = list_entry(p, struct rfcomm_dlc, list); ++ if (test_bit(RFCOMM_TIMED_OUT, &d->flags)) { ++ __rfcomm_dlc_close(d, ETIMEDOUT); ++ continue; ++ } ++ ++ if (test_bit(RFCOMM_TX_THROTTLED, &s->flags)) ++ continue; ++ ++ if ((d->state == BT_CONNECTED || d->state == BT_DISCONN) && ++ d->mscex == RFCOMM_MSCEX_OK) ++ rfcomm_process_tx(d); ++ } ++} ++ ++static inline void rfcomm_process_rx(struct rfcomm_session *s) ++{ ++ struct socket *sock = s->sock; ++ struct sock *sk = sock->sk; ++ struct sk_buff *skb; ++ ++ BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->receive_queue)); ++ ++ /* Get data directly from socket receive queue without copying it. */ ++ while ((skb = skb_dequeue(&sk->receive_queue))) { ++ skb_orphan(skb); ++ rfcomm_recv_frame(s, skb); ++ } ++ ++ if (sk->state == BT_CLOSED) { ++ if (!s->initiator) ++ rfcomm_session_put(s); ++ ++ rfcomm_session_close(s, sk->err); ++ } ++} ++ ++static inline void rfcomm_accept_connection(struct rfcomm_session *s) ++{ ++ struct socket *sock = s->sock, *nsock; ++ int err; ++ ++ /* Fast check for a new connection. ++ * Avoids unnesesary socket allocations. */ ++ if (list_empty(&bluez_pi(sock->sk)->accept_q)) ++ return; ++ ++ BT_DBG("session %p", s); ++ ++ nsock = sock_alloc(); ++ if (!nsock) ++ return; ++ ++ nsock->type = sock->type; ++ nsock->ops = sock->ops; ++ ++ err = sock->ops->accept(sock, nsock, O_NONBLOCK); ++ if (err < 0) { ++ sock_release(nsock); ++ return; ++ } ++ ++ /* Set our callbacks */ ++ nsock->sk->data_ready = rfcomm_l2data_ready; ++ nsock->sk->state_change = rfcomm_l2state_change; ++ ++ s = rfcomm_session_add(nsock, BT_OPEN); ++ if (s) { ++ rfcomm_session_hold(s); ++ rfcomm_schedule(RFCOMM_SCHED_RX); ++ } else ++ sock_release(nsock); ++} ++ ++static inline void rfcomm_check_connection(struct rfcomm_session *s) ++{ ++ struct sock *sk = s->sock->sk; ++ ++ BT_DBG("%p state %ld", s, s->state); ++ ++ switch(sk->state) { ++ case BT_CONNECTED: ++ s->state = BT_CONNECT; ++ ++ /* We can adjust MTU on outgoing sessions. ++ * L2CAP MTU minus UIH header and FCS. */ ++ s->mtu = min(l2cap_pi(sk)->omtu, l2cap_pi(sk)->imtu) - 5; ++ ++ rfcomm_send_sabm(s, 0); ++ break; ++ ++ case BT_CLOSED: ++ s->state = BT_CLOSED; ++ rfcomm_session_close(s, sk->err); ++ break; ++ } ++} ++ ++static inline void rfcomm_process_sessions(void) ++{ ++ struct list_head *p, *n; ++ ++ rfcomm_lock(); ++ ++ list_for_each_safe(p, n, &session_list) { ++ struct rfcomm_session *s; ++ s = list_entry(p, struct rfcomm_session, list); ++ ++ if (s->state == BT_LISTEN) { ++ rfcomm_accept_connection(s); ++ continue; ++ } ++ ++ rfcomm_session_hold(s); ++ ++ switch (s->state) { ++ case BT_BOUND: ++ rfcomm_check_connection(s); ++ break; ++ ++ default: ++ rfcomm_process_rx(s); ++ break; ++ } ++ ++ rfcomm_process_dlcs(s); ++ ++ rfcomm_session_put(s); ++ } ++ ++ rfcomm_unlock(); ++} ++ ++static void rfcomm_worker(void) ++{ ++ BT_DBG(""); ++ ++ daemonize(); reparent_to_init(); ++ set_fs(KERNEL_DS); ++ ++ while (!atomic_read(&terminate)) { ++ BT_DBG("worker loop event 0x%lx", rfcomm_event); ++ ++ if (!test_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event)) { ++ /* No pending events. Let's sleep. ++ * Incomming connections and data will wake us up. */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule(); ++ } ++ ++ /* Process stuff */ ++ clear_bit(RFCOMM_SCHED_WAKEUP, &rfcomm_event); ++ rfcomm_process_sessions(); ++ } ++ set_current_state(TASK_RUNNING); ++ return; ++} ++ ++static int rfcomm_add_listener(bdaddr_t *ba) ++{ ++ struct sockaddr_l2 addr; ++ struct l2cap_options opts; ++ struct socket *sock; ++ struct rfcomm_session *s; ++ int size, err = 0; ++ ++ /* Create socket */ ++ err = rfcomm_l2sock_create(&sock); ++ if (err < 0) { ++ BT_ERR("Create socket failed %d", err); ++ return err; ++ } ++ ++ /* Bind socket */ ++ bacpy(&addr.l2_bdaddr, ba); ++ addr.l2_family = AF_BLUETOOTH; ++ addr.l2_psm = htobs(RFCOMM_PSM); ++ err = sock->ops->bind(sock, (struct sockaddr *) &addr, sizeof(addr)); ++ if (err < 0) { ++ BT_ERR("Bind failed %d", err); ++ goto failed; ++ } ++ ++ /* Set L2CAP options */ ++ size = sizeof(opts); ++ sock->ops->getsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, &size); ++ ++ opts.imtu = RFCOMM_MAX_L2CAP_MTU; ++ sock->ops->setsockopt(sock, SOL_L2CAP, L2CAP_OPTIONS, (void *)&opts, size); ++ ++ /* Start listening on the socket */ ++ err = sock->ops->listen(sock, 10); ++ if (err) { ++ BT_ERR("Listen failed %d", err); ++ goto failed; ++ } ++ ++ /* Add listening session */ ++ s = rfcomm_session_add(sock, BT_LISTEN); ++ if (!s) ++ goto failed; ++ ++ rfcomm_session_hold(s); ++ return 0; ++failed: ++ sock_release(sock); ++ return err; ++} ++ ++static void rfcomm_kill_listener(void) ++{ ++ struct rfcomm_session *s; ++ struct list_head *p, *n; ++ ++ BT_DBG(""); ++ ++ list_for_each_safe(p, n, &session_list) { ++ s = list_entry(p, struct rfcomm_session, list); ++ rfcomm_session_del(s); ++ } ++} ++ ++static int rfcomm_run(void *unused) ++{ ++ rfcomm_thread = current; ++ ++ atomic_inc(&running); ++ ++ daemonize(); reparent_to_init(); ++ ++ sigfillset(¤t->blocked); ++ set_fs(KERNEL_DS); ++ ++ sprintf(current->comm, "krfcommd"); ++ ++ BT_DBG(""); ++ ++ rfcomm_add_listener(BDADDR_ANY); ++ ++ rfcomm_worker(); ++ ++ rfcomm_kill_listener(); ++ ++ atomic_dec(&running); ++ return 0; ++} ++ ++/* ---- Proc fs support ---- */ ++static int rfcomm_dlc_dump(char *buf) ++{ ++ struct rfcomm_session *s; ++ struct sock *sk; ++ struct list_head *p, *pp; ++ char *ptr = buf; ++ ++ rfcomm_lock(); ++ ++ list_for_each(p, &session_list) { ++ s = list_entry(p, struct rfcomm_session, list); ++ sk = s->sock->sk; ++ ++ list_for_each(pp, &s->dlcs) { ++ struct rfcomm_dlc *d; ++ d = list_entry(pp, struct rfcomm_dlc, list); ++ ++ ptr += sprintf(ptr, "dlc %s %s %ld %d %d %d %d\n", ++ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst), ++ d->state, d->dlci, d->mtu, d->rx_credits, d->tx_credits); ++ } ++ } ++ ++ rfcomm_unlock(); ++ ++ return ptr - buf; ++} ++ ++extern int rfcomm_sock_dump(char *buf); ++ ++static int rfcomm_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv) ++{ ++ char *ptr = buf; ++ int len; ++ ++ BT_DBG("count %d, offset %ld", count, offset); ++ ++ ptr += rfcomm_dlc_dump(ptr); ++ ptr += rfcomm_sock_dump(ptr); ++ len = ptr - buf; ++ ++ if (len <= count + offset) ++ *eof = 1; ++ ++ *start = buf + offset; ++ len -= offset; ++ ++ if (len > count) ++ len = count; ++ if (len < 0) ++ len = 0; ++ ++ return len; ++} ++ ++/* ---- Initialization ---- */ ++int __init rfcomm_init(void) ++{ ++ l2cap_load(); ++ ++ kernel_thread(rfcomm_run, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); ++ ++ rfcomm_init_sockets(); ++ ++#ifdef CONFIG_BLUEZ_RFCOMM_TTY ++ rfcomm_init_ttys(); ++#endif ++ ++ create_proc_read_entry("bluetooth/rfcomm", 0, 0, rfcomm_read_proc, NULL); ++ ++ BT_INFO("BlueZ RFCOMM ver %s", VERSION); ++ BT_INFO("Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>"); ++ BT_INFO("Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>"); ++ return 0; ++} ++ ++void rfcomm_cleanup(void) ++{ ++ /* Terminate working thread. ++ * ie. Set terminate flag and wake it up */ ++ atomic_inc(&terminate); ++ rfcomm_schedule(RFCOMM_SCHED_STATE); ++ ++ /* Wait until thread is running */ ++ while (atomic_read(&running)) ++ schedule(); ++ ++ remove_proc_entry("bluetooth/rfcomm", NULL); ++ ++#ifdef CONFIG_BLUEZ_RFCOMM_TTY ++ rfcomm_cleanup_ttys(); ++#endif ++ ++ rfcomm_cleanup_sockets(); ++ return; ++} ++ ++module_init(rfcomm_init); ++module_exit(rfcomm_cleanup); ++ ++MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); ++MODULE_DESCRIPTION("BlueZ RFCOMM ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/rfcomm/crc.c linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c +--- linux-2.4.18/net/bluetooth/rfcomm/crc.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/crc.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,71 @@ ++/* ++ RFCOMM implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * RFCOMM FCS calculation. ++ * ++ * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $ ++ */ ++ ++/* reversed, 8-bit, poly=0x07 */ ++unsigned char rfcomm_crc_table[256] = { ++ 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75, ++ 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b, ++ 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69, ++ 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67, ++ ++ 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d, ++ 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43, ++ 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51, ++ 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f, ++ ++ 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05, ++ 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b, ++ 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19, ++ 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17, ++ ++ 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d, ++ 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33, ++ 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21, ++ 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f, ++ ++ 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95, ++ 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b, ++ 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89, ++ 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87, ++ ++ 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad, ++ 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3, ++ 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1, ++ 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf, ++ ++ 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5, ++ 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb, ++ 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9, ++ 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7, ++ ++ 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd, ++ 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3, ++ 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1, ++ 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf ++}; +diff -urN linux-2.4.18/net/bluetooth/rfcomm/Makefile linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile +--- linux-2.4.18/net/bluetooth/rfcomm/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/Makefile 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,11 @@ ++# ++# Makefile for the Linux Bluetooth RFCOMM layer ++# ++ ++O_TARGET := rfcomm.o ++ ++obj-y := core.o sock.o crc.o ++obj-$(CONFIG_BLUEZ_RFCOMM_TTY) += tty.o ++obj-m += $(O_TARGET) ++ ++include $(TOPDIR)/Rules.make +diff -urN linux-2.4.18/net/bluetooth/rfcomm/sock.c linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c +--- linux-2.4.18/net/bluetooth/rfcomm/sock.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/sock.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,847 @@ ++/* ++ RFCOMM implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * RFCOMM sockets. ++ * ++ * $Id: sock.c,v 1.30 2002/10/18 20:12:12 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/init.h> ++#include <linux/skbuff.h> ++#include <linux/interrupt.h> ++#include <linux/socket.h> ++#include <linux/skbuff.h> ++#include <linux/list.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/rfcomm.h> ++ ++#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++static struct proto_ops rfcomm_sock_ops; ++ ++static struct bluez_sock_list rfcomm_sk_list = { ++ lock: RW_LOCK_UNLOCKED ++}; ++ ++static void rfcomm_sock_close(struct sock *sk); ++static void rfcomm_sock_kill(struct sock *sk); ++ ++/* ---- DLC callbacks ---- ++ * ++ * called under rfcomm_dlc_lock() ++ */ ++static void rfcomm_sk_data_ready(struct rfcomm_dlc *d, struct sk_buff *skb) ++{ ++ struct sock *sk = d->owner; ++ if (!sk) ++ return; ++ ++ atomic_add(skb->len, &sk->rmem_alloc); ++ skb_queue_tail(&sk->receive_queue, skb); ++ sk->data_ready(sk, skb->len); ++ ++ if (atomic_read(&sk->rmem_alloc) >= sk->rcvbuf) ++ rfcomm_dlc_throttle(d); ++} ++ ++static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) ++{ ++ struct sock *sk = d->owner, *parent; ++ if (!sk) ++ return; ++ ++ BT_DBG("dlc %p state %ld err %d", d, d->state, err); ++ ++ bh_lock_sock(sk); ++ ++ if (err) ++ sk->err = err; ++ sk->state = d->state; ++ ++ parent = bluez_pi(sk)->parent; ++ if (!parent) { ++ if (d->state == BT_CONNECTED) ++ rfcomm_session_getaddr(d->session, &bluez_pi(sk)->src, NULL); ++ sk->state_change(sk); ++ } else ++ parent->data_ready(parent, 0); ++ ++ bh_unlock_sock(sk); ++} ++ ++/* ---- Socket functions ---- */ ++static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src) ++{ ++ struct sock *sk; ++ ++ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) { ++ if (rfcomm_pi(sk)->channel == channel && ++ !bacmp(&bluez_pi(sk)->src, src)) ++ break; ++ } ++ ++ return sk; ++} ++ ++/* Find socket with channel and source bdaddr. ++ * Returns closest match. ++ */ ++static struct sock *__rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src) ++{ ++ struct sock *sk, *sk1 = NULL; ++ ++ for (sk = rfcomm_sk_list.head; sk; sk = sk->next) { ++ if (state && sk->state != state) ++ continue; ++ ++ if (rfcomm_pi(sk)->channel == channel) { ++ /* Exact match. */ ++ if (!bacmp(&bluez_pi(sk)->src, src)) ++ break; ++ ++ /* Closest match */ ++ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY)) ++ sk1 = sk; ++ } ++ } ++ return sk ? sk : sk1; ++} ++ ++/* Find socket with given address (channel, src). ++ * Returns locked socket */ ++static inline struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t *src) ++{ ++ struct sock *s; ++ read_lock(&rfcomm_sk_list.lock); ++ s = __rfcomm_get_sock_by_channel(state, channel, src); ++ if (s) bh_lock_sock(s); ++ read_unlock(&rfcomm_sk_list.lock); ++ return s; ++} ++ ++static void rfcomm_sock_destruct(struct sock *sk) ++{ ++ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; ++ ++ BT_DBG("sk %p dlc %p", sk, d); ++ ++ skb_queue_purge(&sk->receive_queue); ++ skb_queue_purge(&sk->write_queue); ++ ++ rfcomm_dlc_lock(d); ++ rfcomm_pi(sk)->dlc = NULL; ++ ++ /* Detach DLC if it's owned by this socket */ ++ if (d->owner == sk) ++ d->owner = NULL; ++ rfcomm_dlc_unlock(d); ++ ++ rfcomm_dlc_put(d); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++static void rfcomm_sock_cleanup_listen(struct sock *parent) ++{ ++ struct sock *sk; ++ ++ BT_DBG("parent %p", parent); ++ ++ /* Close not yet accepted dlcs */ ++ while ((sk = bluez_accept_dequeue(parent, NULL))) { ++ rfcomm_sock_close(sk); ++ rfcomm_sock_kill(sk); ++ } ++ ++ parent->state = BT_CLOSED; ++ parent->zapped = 1; ++} ++ ++/* Kill socket (only if zapped and orphan) ++ * Must be called on unlocked socket. ++ */ ++static void rfcomm_sock_kill(struct sock *sk) ++{ ++ if (!sk->zapped || sk->socket) ++ return; ++ ++ BT_DBG("sk %p state %d refcnt %d", sk, sk->state, atomic_read(&sk->refcnt)); ++ ++ /* Kill poor orphan */ ++ bluez_sock_unlink(&rfcomm_sk_list, sk); ++ sk->dead = 1; ++ sock_put(sk); ++} ++ ++static void __rfcomm_sock_close(struct sock *sk) ++{ ++ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; ++ ++ BT_DBG("sk %p state %d socket %p", sk, sk->state, sk->socket); ++ ++ switch (sk->state) { ++ case BT_LISTEN: ++ rfcomm_sock_cleanup_listen(sk); ++ break; ++ ++ case BT_CONNECT: ++ case BT_CONNECT2: ++ case BT_CONFIG: ++ case BT_CONNECTED: ++ rfcomm_dlc_close(d, 0); ++ ++ default: ++ sk->zapped = 1; ++ break; ++ } ++} ++ ++/* Close socket. ++ * Must be called on unlocked socket. ++ */ ++static void rfcomm_sock_close(struct sock *sk) ++{ ++ lock_sock(sk); ++ __rfcomm_sock_close(sk); ++ release_sock(sk); ++} ++ ++static void rfcomm_sock_init(struct sock *sk, struct sock *parent) ++{ ++ BT_DBG("sk %p", sk); ++ ++ if (parent) ++ sk->type = parent->type; ++} ++ ++static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, int prio) ++{ ++ struct rfcomm_dlc *d; ++ struct sock *sk; ++ ++ sk = sk_alloc(PF_BLUETOOTH, prio, 1); ++ if (!sk) ++ return NULL; ++ ++ d = rfcomm_dlc_alloc(prio); ++ if (!d) { ++ sk_free(sk); ++ return NULL; ++ } ++ d->data_ready = rfcomm_sk_data_ready; ++ d->state_change = rfcomm_sk_state_change; ++ ++ rfcomm_pi(sk)->dlc = d; ++ d->owner = sk; ++ ++ bluez_sock_init(sock, sk); ++ ++ sk->zapped = 0; ++ ++ sk->destruct = rfcomm_sock_destruct; ++ sk->sndtimeo = RFCOMM_CONN_TIMEOUT; ++ ++ sk->sndbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; ++ sk->rcvbuf = RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10; ++ ++ sk->protocol = proto; ++ sk->state = BT_OPEN; ++ ++ bluez_sock_link(&rfcomm_sk_list, sk); ++ ++ BT_DBG("sk %p", sk); ++ ++ MOD_INC_USE_COUNT; ++ return sk; ++} ++ ++static int rfcomm_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ sock->state = SS_UNCONNECTED; ++ ++ if (sock->type != SOCK_STREAM && sock->type != SOCK_RAW) ++ return -ESOCKTNOSUPPORT; ++ ++ sock->ops = &rfcomm_sock_ops; ++ ++ if (!(sk = rfcomm_sock_alloc(sock, protocol, GFP_KERNEL))) ++ return -ENOMEM; ++ ++ rfcomm_sock_init(sk, NULL); ++ return 0; ++} ++ ++static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) ++{ ++ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr; ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr)); ++ ++ if (!addr || addr->sa_family != AF_BLUETOOTH) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_OPEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ write_lock_bh(&rfcomm_sk_list.lock); ++ ++ if (sa->rc_channel && __rfcomm_get_sock_by_addr(sa->rc_channel, &sa->rc_bdaddr)) { ++ err = -EADDRINUSE; ++ } else { ++ /* Save source address */ ++ bacpy(&bluez_pi(sk)->src, &sa->rc_bdaddr); ++ rfcomm_pi(sk)->channel = sa->rc_channel; ++ sk->state = BT_BOUND; ++ } ++ ++ write_unlock_bh(&rfcomm_sk_list.lock); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) ++{ ++ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr; ++ struct sock *sk = sock->sk; ++ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; ++ int err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_rc)) ++ return -EINVAL; ++ ++ if (sk->state != BT_OPEN && sk->state != BT_BOUND) ++ return -EBADFD; ++ ++ if (sk->type != SOCK_STREAM) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ sk->state = BT_CONNECT; ++ bacpy(&bluez_pi(sk)->dst, &sa->rc_bdaddr); ++ rfcomm_pi(sk)->channel = sa->rc_channel; ++ ++ err = rfcomm_dlc_open(d, &bluez_pi(sk)->src, &sa->rc_bdaddr, sa->rc_channel); ++ if (!err) ++ err = bluez_sock_wait_state(sk, BT_CONNECTED, ++ sock_sndtimeo(sk, flags & O_NONBLOCK)); ++ ++ release_sock(sk); ++ return err; ++} ++ ++int rfcomm_sock_listen(struct socket *sock, int backlog) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p backlog %d", sk, backlog); ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_BOUND) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ sk->max_ack_backlog = backlog; ++ sk->ack_backlog = 0; ++ sk->state = BT_LISTEN; ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++int rfcomm_sock_accept(struct socket *sock, struct socket *newsock, int flags) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct sock *sk = sock->sk, *nsk; ++ long timeo; ++ int err = 0; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); ++ ++ BT_DBG("sk %p timeo %ld", sk, timeo); ++ ++ /* Wait for an incoming connection. (wake-one). */ ++ add_wait_queue_exclusive(sk->sleep, &wait); ++ while (!(nsk = bluez_accept_dequeue(sk, newsock))) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ if (!timeo) { ++ err = -EAGAIN; ++ break; ++ } ++ ++ release_sock(sk); ++ timeo = schedule_timeout(timeo); ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ break; ++ } ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeo); ++ break; ++ } ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ ++ if (err) ++ goto done; ++ ++ newsock->state = SS_CONNECTED; ++ ++ BT_DBG("new socket %p", nsk); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer) ++{ ++ struct sockaddr_rc *sa = (struct sockaddr_rc *) addr; ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ sa->rc_family = AF_BLUETOOTH; ++ sa->rc_channel = rfcomm_pi(sk)->channel; ++ if (peer) ++ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->dst); ++ else ++ bacpy(&sa->rc_bdaddr, &bluez_pi(sk)->src); ++ ++ *len = sizeof(struct sockaddr_rc); ++ return 0; ++} ++ ++static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, ++ struct scm_cookie *scm) ++{ ++ struct sock *sk = sock->sk; ++ struct rfcomm_dlc *d = rfcomm_pi(sk)->dlc; ++ struct sk_buff *skb; ++ int err, size; ++ int sent = 0; ++ ++ if (msg->msg_flags & MSG_OOB) ++ return -EOPNOTSUPP; ++ ++ if (sk->shutdown & SEND_SHUTDOWN) ++ return -EPIPE; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ lock_sock(sk); ++ ++ while (len) { ++ size = min_t(uint, len, d->mtu); ++ ++ skb = sock_alloc_send_skb(sk, size + RFCOMM_SKB_RESERVE, ++ msg->msg_flags & MSG_DONTWAIT, &err); ++ if (!skb) ++ break; ++ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE); ++ ++ err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size); ++ if (err) { ++ kfree_skb(skb); ++ sent = err; ++ break; ++ } ++ ++ err = rfcomm_dlc_send(d, skb); ++ if (err < 0) { ++ kfree_skb(skb); ++ break; ++ } ++ ++ sent += size; ++ len -= size; ++ } ++ ++ release_sock(sk); ++ ++ return sent ? sent : err; ++} ++ ++static long rfcomm_sock_data_wait(struct sock *sk, long timeo) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ ++ add_wait_queue(sk->sleep, &wait); ++ for (;;) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (skb_queue_len(&sk->receive_queue) || sk->err || (sk->shutdown & RCV_SHUTDOWN) || ++ signal_pending(current) || !timeo) ++ break; ++ ++ set_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags); ++ release_sock(sk); ++ timeo = schedule_timeout(timeo); ++ lock_sock(sk); ++ clear_bit(SOCK_ASYNC_WAITDATA, &sk->socket->flags); ++ } ++ ++ __set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ return timeo; ++} ++ ++static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg, int size, ++ int flags, struct scm_cookie *scm) ++{ ++ struct sock *sk = sock->sk; ++ int target, err = 0, copied = 0; ++ long timeo; ++ ++ if (flags & MSG_OOB) ++ return -EOPNOTSUPP; ++ ++ msg->msg_namelen = 0; ++ ++ BT_DBG("sk %p size %d", sk, size); ++ ++ lock_sock(sk); ++ ++ target = sock_rcvlowat(sk, flags & MSG_WAITALL, size); ++ timeo = sock_rcvtimeo(sk, flags & MSG_DONTWAIT); ++ ++ do { ++ struct sk_buff *skb; ++ int chunk; ++ ++ skb = skb_dequeue(&sk->receive_queue); ++ if (!skb) { ++ if (copied >= target) ++ break; ++ ++ if ((err = sock_error(sk)) != 0) ++ break; ++ if (sk->shutdown & RCV_SHUTDOWN) ++ break; ++ ++ err = -EAGAIN; ++ if (!timeo) ++ break; ++ ++ timeo = rfcomm_sock_data_wait(sk, timeo); ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeo); ++ goto out; ++ } ++ continue; ++ } ++ ++ chunk = min_t(unsigned int, skb->len, size); ++ if (memcpy_toiovec(msg->msg_iov, skb->data, chunk)) { ++ skb_queue_head(&sk->receive_queue, skb); ++ if (!copied) ++ copied = -EFAULT; ++ break; ++ } ++ copied += chunk; ++ size -= chunk; ++ ++ if (!(flags & MSG_PEEK)) { ++ atomic_sub(chunk, &sk->rmem_alloc); ++ ++ skb_pull(skb, chunk); ++ if (skb->len) { ++ skb_queue_head(&sk->receive_queue, skb); ++ break; ++ } ++ kfree_skb(skb); ++ ++ } else { ++ /* put message back and return */ ++ skb_queue_head(&sk->receive_queue, skb); ++ break; ++ } ++ } while (size); ++ ++out: ++ if (atomic_read(&sk->rmem_alloc) <= (sk->rcvbuf >> 2)) ++ rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc); ++ ++ release_sock(sk); ++ return copied ? : err; ++} ++ ++static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ }; ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int rfcomm_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen) ++{ ++ struct sock *sk = sock->sk; ++ int len, err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ if (get_user(len, optlen)) ++ return -EFAULT; ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ }; ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int rfcomm_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) ++{ ++ struct sock *sk = sock->sk; ++ int err; ++ ++ lock_sock(sk); ++ ++#ifdef CONFIG_BLUEZ_RFCOMM_TTY ++ err = rfcomm_dev_ioctl(sk, cmd, arg); ++#else ++ err = -EOPNOTSUPP; ++#endif ++ ++ release_sock(sk); ++ ++ return err; ++} ++ ++static int rfcomm_sock_shutdown(struct socket *sock, int how) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (!sk) return 0; ++ ++ lock_sock(sk); ++ if (!sk->shutdown) { ++ sk->shutdown = SHUTDOWN_MASK; ++ __rfcomm_sock_close(sk); ++ ++ if (sk->linger) ++ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime); ++ } ++ release_sock(sk); ++ return err; ++} ++ ++static int rfcomm_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (!sk) ++ return 0; ++ ++ err = rfcomm_sock_shutdown(sock, 2); ++ ++ sock_orphan(sk); ++ rfcomm_sock_kill(sk); ++ return err; ++} ++ ++/* ---- RFCOMM core layer callbacks ---- ++ * ++ * called under rfcomm_lock() ++ */ ++int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc **d) ++{ ++ struct sock *sk, *parent; ++ bdaddr_t src, dst; ++ int result = 0; ++ ++ BT_DBG("session %p channel %d", s, channel); ++ ++ rfcomm_session_getaddr(s, &src, &dst); ++ ++ /* Check if we have socket listening on this channel */ ++ parent = rfcomm_get_sock_by_channel(BT_LISTEN, channel, &src); ++ if (!parent) ++ return 0; ++ ++ /* Check for backlog size */ ++ if (parent->ack_backlog > parent->max_ack_backlog) { ++ BT_DBG("backlog full %d", parent->ack_backlog); ++ goto done; ++ } ++ ++ sk = rfcomm_sock_alloc(NULL, BTPROTO_RFCOMM, GFP_ATOMIC); ++ if (!sk) ++ goto done; ++ ++ rfcomm_sock_init(sk, parent); ++ bacpy(&bluez_pi(sk)->src, &src); ++ bacpy(&bluez_pi(sk)->dst, &dst); ++ rfcomm_pi(sk)->channel = channel; ++ ++ sk->state = BT_CONFIG; ++ bluez_accept_enqueue(parent, sk); ++ ++ /* Accept connection and return socket DLC */ ++ *d = rfcomm_pi(sk)->dlc; ++ result = 1; ++ ++done: ++ bh_unlock_sock(parent); ++ return result; ++} ++ ++/* ---- Proc fs support ---- */ ++int rfcomm_sock_dump(char *buf) ++{ ++ struct bluez_sock_list *list = &rfcomm_sk_list; ++ struct rfcomm_pinfo *pi; ++ struct sock *sk; ++ char *ptr = buf; ++ ++ write_lock_bh(&list->lock); ++ ++ for (sk = list->head; sk; sk = sk->next) { ++ pi = rfcomm_pi(sk); ++ ptr += sprintf(ptr, "sk %s %s %d %d\n", ++ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst), ++ sk->state, rfcomm_pi(sk)->channel); ++ } ++ ++ write_unlock_bh(&list->lock); ++ ++ return ptr - buf; ++} ++ ++static struct proto_ops rfcomm_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: rfcomm_sock_release, ++ bind: rfcomm_sock_bind, ++ connect: rfcomm_sock_connect, ++ listen: rfcomm_sock_listen, ++ accept: rfcomm_sock_accept, ++ getname: rfcomm_sock_getname, ++ sendmsg: rfcomm_sock_sendmsg, ++ recvmsg: rfcomm_sock_recvmsg, ++ shutdown: rfcomm_sock_shutdown, ++ setsockopt: rfcomm_sock_setsockopt, ++ getsockopt: rfcomm_sock_getsockopt, ++ ioctl: rfcomm_sock_ioctl, ++ poll: bluez_sock_poll, ++ socketpair: sock_no_socketpair, ++ mmap: sock_no_mmap ++}; ++ ++static struct net_proto_family rfcomm_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: rfcomm_sock_create ++}; ++ ++int rfcomm_init_sockets(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_register(BTPROTO_RFCOMM, &rfcomm_sock_family_ops))) { ++ BT_ERR("Can't register RFCOMM socket layer"); ++ return err; ++ } ++ ++ return 0; ++} ++ ++void rfcomm_cleanup_sockets(void) ++{ ++ int err; ++ ++ /* Unregister socket, protocol and notifier */ ++ if ((err = bluez_sock_unregister(BTPROTO_RFCOMM))) ++ BT_ERR("Can't unregister RFCOMM socket layer %d", err); ++} +diff -urN linux-2.4.18/net/bluetooth/rfcomm/tty.c linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c +--- linux-2.4.18/net/bluetooth/rfcomm/tty.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/rfcomm/tty.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,960 @@ ++/* ++ RFCOMM implementation for Linux Bluetooth stack (BlueZ). ++ Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> ++ Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * RFCOMM TTY. ++ * ++ * $Id: tty.c,v 1.26 2002/10/18 20:12:12 maxk Exp $ ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/tty.h> ++#include <linux/tty_driver.h> ++#include <linux/tty_flip.h> ++ ++#include <linux/slab.h> ++#include <linux/skbuff.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/rfcomm.h> ++ ++#ifndef CONFIG_BLUEZ_RFCOMM_DEBUG ++#undef BT_DBG ++#define BT_DBG(D...) ++#endif ++ ++#define RFCOMM_TTY_MAGIC 0x6d02 /* magic number for rfcomm struct */ ++#define RFCOMM_TTY_PORTS RFCOMM_MAX_DEV /* whole lotta rfcomm devices */ ++#define RFCOMM_TTY_MAJOR 216 /* device node major id of the usb/bluetooth.c driver */ ++#define RFCOMM_TTY_MINOR 0 ++ ++struct rfcomm_dev { ++ struct list_head list; ++ atomic_t refcnt; ++ ++ char name[12]; ++ int id; ++ unsigned long flags; ++ int opened; ++ int err; ++ ++ bdaddr_t src; ++ bdaddr_t dst; ++ u8 channel; ++ ++ uint modem_status; ++ ++ struct rfcomm_dlc *dlc; ++ struct tty_struct *tty; ++ wait_queue_head_t wait; ++ struct tasklet_struct wakeup_task; ++ ++ atomic_t wmem_alloc; ++}; ++ ++static LIST_HEAD(rfcomm_dev_list); ++static rwlock_t rfcomm_dev_lock = RW_LOCK_UNLOCKED; ++ ++static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb); ++static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err); ++static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig); ++ ++static void rfcomm_tty_wakeup(unsigned long arg); ++ ++/* ---- Device functions ---- */ ++static void rfcomm_dev_destruct(struct rfcomm_dev *dev) ++{ ++ struct rfcomm_dlc *dlc = dev->dlc; ++ ++ BT_DBG("dev %p dlc %p", dev, dlc); ++ ++ rfcomm_dlc_lock(dlc); ++ /* Detach DLC if it's owned by this dev */ ++ if (dlc->owner == dev) ++ dlc->owner = NULL; ++ rfcomm_dlc_unlock(dlc); ++ ++ rfcomm_dlc_put(dlc); ++ kfree(dev); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++static inline void rfcomm_dev_hold(struct rfcomm_dev *dev) ++{ ++ atomic_inc(&dev->refcnt); ++} ++ ++static inline void rfcomm_dev_put(struct rfcomm_dev *dev) ++{ ++ /* The reason this isn't actually a race, as you no ++ doubt have a little voice screaming at you in your ++ head, is that the refcount should never actually ++ reach zero unless the device has already been taken ++ off the list, in rfcomm_dev_del(). And if that's not ++ true, we'll hit the BUG() in rfcomm_dev_destruct() ++ anyway. */ ++ if (atomic_dec_and_test(&dev->refcnt)) ++ rfcomm_dev_destruct(dev); ++} ++ ++static struct rfcomm_dev *__rfcomm_dev_get(int id) ++{ ++ struct rfcomm_dev *dev; ++ struct list_head *p; ++ ++ list_for_each(p, &rfcomm_dev_list) { ++ dev = list_entry(p, struct rfcomm_dev, list); ++ if (dev->id == id) ++ return dev; ++ } ++ ++ return NULL; ++} ++ ++static inline struct rfcomm_dev *rfcomm_dev_get(int id) ++{ ++ struct rfcomm_dev *dev; ++ ++ read_lock(&rfcomm_dev_lock); ++ ++ dev = __rfcomm_dev_get(id); ++ if (dev) ++ rfcomm_dev_hold(dev); ++ ++ read_unlock(&rfcomm_dev_lock); ++ ++ return dev; ++} ++ ++static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc) ++{ ++ struct rfcomm_dev *dev; ++ struct list_head *head = &rfcomm_dev_list, *p; ++ int err = 0; ++ ++ BT_DBG("id %d channel %d", req->dev_id, req->channel); ++ ++ dev = kmalloc(sizeof(struct rfcomm_dev), GFP_KERNEL); ++ if (!dev) ++ return -ENOMEM; ++ memset(dev, 0, sizeof(struct rfcomm_dev)); ++ ++ write_lock_bh(&rfcomm_dev_lock); ++ ++ if (req->dev_id < 0) { ++ dev->id = 0; ++ ++ list_for_each(p, &rfcomm_dev_list) { ++ if (list_entry(p, struct rfcomm_dev, list)->id != dev->id) ++ break; ++ ++ dev->id++; ++ head = p; ++ } ++ } else { ++ dev->id = req->dev_id; ++ ++ list_for_each(p, &rfcomm_dev_list) { ++ struct rfcomm_dev *entry = list_entry(p, struct rfcomm_dev, list); ++ ++ if (entry->id == dev->id) { ++ err = -EADDRINUSE; ++ goto out; ++ } ++ ++ if (entry->id > dev->id - 1) ++ break; ++ ++ head = p; ++ } ++ } ++ ++ if ((dev->id < 0) || (dev->id > RFCOMM_MAX_DEV - 1)) { ++ err = -ENFILE; ++ goto out; ++ } ++ ++ sprintf(dev->name, "rfcomm%d", dev->id); ++ ++ list_add(&dev->list, head); ++ atomic_set(&dev->refcnt, 1); ++ ++ bacpy(&dev->src, &req->src); ++ bacpy(&dev->dst, &req->dst); ++ dev->channel = req->channel; ++ ++ dev->flags = req->flags & ++ ((1 << RFCOMM_RELEASE_ONHUP) | (1 << RFCOMM_REUSE_DLC)); ++ ++ init_waitqueue_head(&dev->wait); ++ tasklet_init(&dev->wakeup_task, rfcomm_tty_wakeup, (unsigned long) dev); ++ ++ rfcomm_dlc_lock(dlc); ++ dlc->data_ready = rfcomm_dev_data_ready; ++ dlc->state_change = rfcomm_dev_state_change; ++ dlc->modem_status = rfcomm_dev_modem_status; ++ ++ dlc->owner = dev; ++ dev->dlc = dlc; ++ rfcomm_dlc_unlock(dlc); ++ ++ MOD_INC_USE_COUNT; ++ ++out: ++ write_unlock_bh(&rfcomm_dev_lock); ++ ++ if (err) { ++ kfree(dev); ++ return err; ++ } else ++ return dev->id; ++} ++ ++static void rfcomm_dev_del(struct rfcomm_dev *dev) ++{ ++ BT_DBG("dev %p", dev); ++ ++ write_lock_bh(&rfcomm_dev_lock); ++ list_del_init(&dev->list); ++ write_unlock_bh(&rfcomm_dev_lock); ++ ++ rfcomm_dev_put(dev); ++} ++ ++/* ---- Send buffer ---- */ ++ ++static inline unsigned int rfcomm_room(struct rfcomm_dlc *dlc) ++{ ++ /* We can't let it be zero, because we don't get a callback ++ when tx_credits becomes nonzero, hence we'd never wake up */ ++ return dlc->mtu * (dlc->tx_credits?:1); ++} ++ ++static void rfcomm_wfree(struct sk_buff *skb) ++{ ++ struct rfcomm_dev *dev = (void *) skb->sk; ++ atomic_sub(skb->truesize, &dev->wmem_alloc); ++ if (test_bit(RFCOMM_TTY_ATTACHED, &dev->flags)) ++ tasklet_schedule(&dev->wakeup_task); ++ rfcomm_dev_put(dev); ++} ++ ++static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *dev) ++{ ++ rfcomm_dev_hold(dev); ++ atomic_add(skb->truesize, &dev->wmem_alloc); ++ skb->sk = (void *) dev; ++ skb->destructor = rfcomm_wfree; ++} ++ ++static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, int force, int priority) ++{ ++ if (force || atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) { ++ struct sk_buff *skb = alloc_skb(size, priority); ++ if (skb) { ++ rfcomm_set_owner_w(skb, dev); ++ return skb; ++ } ++ } ++ return NULL; ++} ++ ++/* ---- Device IOCTLs ---- */ ++ ++#define NOCAP_FLAGS ((1 << RFCOMM_REUSE_DLC) | (1 << RFCOMM_RELEASE_ONHUP)) ++ ++static int rfcomm_create_dev(struct sock *sk, unsigned long arg) ++{ ++ struct rfcomm_dev_req req; ++ struct rfcomm_dlc *dlc; ++ int id; ++ ++ if (copy_from_user(&req, (void *) arg, sizeof(req))) ++ return -EFAULT; ++ ++ BT_DBG("sk %p dev_id %id flags 0x%x", sk, req.dev_id, req.flags); ++ ++ if (req.flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) ++ return -EPERM; ++ ++ if (req.flags & (1 << RFCOMM_REUSE_DLC)) { ++ /* Socket must be connected */ ++ if (sk->state != BT_CONNECTED) ++ return -EBADFD; ++ ++ dlc = rfcomm_pi(sk)->dlc; ++ rfcomm_dlc_hold(dlc); ++ } else { ++ dlc = rfcomm_dlc_alloc(GFP_KERNEL); ++ if (!dlc) ++ return -ENOMEM; ++ } ++ ++ id = rfcomm_dev_add(&req, dlc); ++ if (id < 0) { ++ rfcomm_dlc_put(dlc); ++ return id; ++ } ++ ++ if (req.flags & (1 << RFCOMM_REUSE_DLC)) { ++ /* DLC is now used by device. ++ * Socket must be disconnected */ ++ sk->state = BT_CLOSED; ++ } ++ ++ return id; ++} ++ ++static int rfcomm_release_dev(unsigned long arg) ++{ ++ struct rfcomm_dev_req req; ++ struct rfcomm_dev *dev; ++ ++ if (copy_from_user(&req, (void *) arg, sizeof(req))) ++ return -EFAULT; ++ ++ BT_DBG("dev_id %id flags 0x%x", req.dev_id, req.flags); ++ ++ if (!(dev = rfcomm_dev_get(req.dev_id))) ++ return -ENODEV; ++ ++ if (dev->flags != NOCAP_FLAGS && !capable(CAP_NET_ADMIN)) { ++ rfcomm_dev_put(dev); ++ return -EPERM; ++ } ++ ++ if (req.flags & (1 << RFCOMM_HANGUP_NOW)) ++ rfcomm_dlc_close(dev->dlc, 0); ++ ++ rfcomm_dev_del(dev); ++ rfcomm_dev_put(dev); ++ return 0; ++} ++ ++static int rfcomm_get_dev_list(unsigned long arg) ++{ ++ struct rfcomm_dev_list_req *dl; ++ struct rfcomm_dev_info *di; ++ struct list_head *p; ++ int n = 0, size, err; ++ u16 dev_num; ++ ++ BT_DBG(""); ++ ++ if (get_user(dev_num, (u16 *) arg)) ++ return -EFAULT; ++ ++ if (!dev_num || dev_num > (PAGE_SIZE * 4) / sizeof(*di)) ++ return -EINVAL; ++ ++ size = sizeof(*dl) + dev_num * sizeof(*di); ++ ++ if (!(dl = kmalloc(size, GFP_KERNEL))) ++ return -ENOMEM; ++ ++ di = dl->dev_info; ++ ++ read_lock_bh(&rfcomm_dev_lock); ++ ++ list_for_each(p, &rfcomm_dev_list) { ++ struct rfcomm_dev *dev = list_entry(p, struct rfcomm_dev, list); ++ (di + n)->id = dev->id; ++ (di + n)->flags = dev->flags; ++ (di + n)->state = dev->dlc->state; ++ (di + n)->channel = dev->channel; ++ bacpy(&(di + n)->src, &dev->src); ++ bacpy(&(di + n)->dst, &dev->dst); ++ if (++n >= dev_num) ++ break; ++ } ++ ++ read_unlock_bh(&rfcomm_dev_lock); ++ ++ dl->dev_num = n; ++ size = sizeof(*dl) + n * sizeof(*di); ++ ++ err = copy_to_user((void *) arg, dl, size); ++ kfree(dl); ++ ++ return err ? -EFAULT : 0; ++} ++ ++static int rfcomm_get_dev_info(unsigned long arg) ++{ ++ struct rfcomm_dev *dev; ++ struct rfcomm_dev_info di; ++ int err = 0; ++ ++ BT_DBG(""); ++ ++ if (copy_from_user(&di, (void *)arg, sizeof(di))) ++ return -EFAULT; ++ ++ if (!(dev = rfcomm_dev_get(di.id))) ++ return -ENODEV; ++ ++ di.flags = dev->flags; ++ di.channel = dev->channel; ++ di.state = dev->dlc->state; ++ bacpy(&di.src, &dev->src); ++ bacpy(&di.dst, &dev->dst); ++ ++ if (copy_to_user((void *)arg, &di, sizeof(di))) ++ err = -EFAULT; ++ ++ rfcomm_dev_put(dev); ++ return err; ++} ++ ++int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, unsigned long arg) ++{ ++ BT_DBG("cmd %d arg %ld", cmd, arg); ++ ++ switch (cmd) { ++ case RFCOMMCREATEDEV: ++ return rfcomm_create_dev(sk, arg); ++ ++ case RFCOMMRELEASEDEV: ++ return rfcomm_release_dev(arg); ++ ++ case RFCOMMGETDEVLIST: ++ return rfcomm_get_dev_list(arg); ++ ++ case RFCOMMGETDEVINFO: ++ return rfcomm_get_dev_info(arg); ++ } ++ ++ return -EINVAL; ++} ++ ++/* ---- DLC callbacks ---- */ ++static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb) ++{ ++ struct rfcomm_dev *dev = dlc->owner; ++ struct tty_struct *tty; ++ ++ if (!dev || !(tty = dev->tty)) { ++ kfree_skb(skb); ++ return; ++ } ++ ++ BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len); ++ ++ if (test_bit(TTY_DONT_FLIP, &tty->flags)) { ++ register int i; ++ for (i = 0; i < skb->len; i++) { ++ if (tty->flip.count >= TTY_FLIPBUF_SIZE) ++ tty_flip_buffer_push(tty); ++ ++ tty_insert_flip_char(tty, skb->data[i], 0); ++ } ++ tty_flip_buffer_push(tty); ++ } else ++ tty->ldisc.receive_buf(tty, skb->data, NULL, skb->len); ++ ++ kfree_skb(skb); ++} ++ ++static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err) ++{ ++ struct rfcomm_dev *dev = dlc->owner; ++ if (!dev) ++ return; ++ ++ BT_DBG("dlc %p dev %p err %d", dlc, dev, err); ++ ++ dev->err = err; ++ wake_up_interruptible(&dev->wait); ++ ++ if (dlc->state == BT_CLOSED) { ++ if (!dev->tty) { ++ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) { ++ rfcomm_dev_hold(dev); ++ rfcomm_dev_del(dev); ++ ++ /* We have to drop DLC lock here, otherwise ++ rfcomm_dev_put() will dead lock if it's ++ the last reference. */ ++ rfcomm_dlc_unlock(dlc); ++ rfcomm_dev_put(dev); ++ rfcomm_dlc_lock(dlc); ++ } ++ } else ++ tty_hangup(dev->tty); ++ } ++} ++ ++static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig) ++{ ++ struct rfcomm_dev *dev = dlc->owner; ++ if (!dev) ++ return; ++ ++ BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig); ++ ++ dev->modem_status = ++ ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) | ++ ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) | ++ ((v24_sig & RFCOMM_V24_IC) ? TIOCM_RI : 0) | ++ ((v24_sig & RFCOMM_V24_DV) ? TIOCM_CD : 0); ++} ++ ++/* ---- TTY functions ---- */ ++static void rfcomm_tty_wakeup(unsigned long arg) ++{ ++ struct rfcomm_dev *dev = (void *) arg; ++ struct tty_struct *tty = dev->tty; ++ if (!tty) ++ return; ++ ++ BT_DBG("dev %p tty %p", dev, tty); ++ ++ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) ++ (tty->ldisc.write_wakeup)(tty); ++ ++ wake_up_interruptible(&tty->write_wait); ++#ifdef SERIAL_HAVE_POLL_WAIT ++ wake_up_interruptible(&tty->poll_wait); ++#endif ++} ++ ++static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct rfcomm_dev *dev; ++ struct rfcomm_dlc *dlc; ++ int err, id; ++ ++ id = MINOR(tty->device) - tty->driver.minor_start; ++ ++ BT_DBG("tty %p id %d", tty, id); ++ ++ /* We don't leak this refcount. For reasons which are not entirely ++ clear, the TTY layer will call our ->close() method even if the ++ open fails. We decrease the refcount there, and decreasing it ++ here too would cause breakage. */ ++ dev = rfcomm_dev_get(id); ++ if (!dev) ++ return -ENODEV; ++ ++ BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst), dev->channel, dev->opened); ++ ++ if (dev->opened++ != 0) ++ return 0; ++ ++ dlc = dev->dlc; ++ ++ /* Attach TTY and open DLC */ ++ ++ rfcomm_dlc_lock(dlc); ++ tty->driver_data = dev; ++ dev->tty = tty; ++ rfcomm_dlc_unlock(dlc); ++ set_bit(RFCOMM_TTY_ATTACHED, &dev->flags); ++ ++ err = rfcomm_dlc_open(dlc, &dev->src, &dev->dst, dev->channel); ++ if (err < 0) ++ return err; ++ ++ /* Wait for DLC to connect */ ++ add_wait_queue(&dev->wait, &wait); ++ while (1) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (dlc->state == BT_CLOSED) { ++ err = -dev->err; ++ break; ++ } ++ ++ if (dlc->state == BT_CONNECTED) ++ break; ++ ++ if (signal_pending(current)) { ++ err = -EINTR; ++ break; ++ } ++ ++ schedule(); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&dev->wait, &wait); ++ ++ return err; ++} ++ ++static void rfcomm_tty_close(struct tty_struct *tty, struct file *filp) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ if (!dev) ++ return; ++ ++ BT_DBG("tty %p dev %p dlc %p opened %d", tty, dev, dev->dlc, dev->opened); ++ ++ if (--dev->opened == 0) { ++ /* Close DLC and dettach TTY */ ++ rfcomm_dlc_close(dev->dlc, 0); ++ ++ clear_bit(RFCOMM_TTY_ATTACHED, &dev->flags); ++ tasklet_kill(&dev->wakeup_task); ++ ++ rfcomm_dlc_lock(dev->dlc); ++ tty->driver_data = NULL; ++ dev->tty = NULL; ++ rfcomm_dlc_unlock(dev->dlc); ++ } ++ ++ rfcomm_dev_put(dev); ++} ++ ++static int rfcomm_tty_write(struct tty_struct *tty, int from_user, const unsigned char *buf, int count) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ struct rfcomm_dlc *dlc = dev->dlc; ++ struct sk_buff *skb; ++ int err = 0, sent = 0, size; ++ ++ BT_DBG("tty %p from_user %d count %d", tty, from_user, count); ++ ++ while (count) { ++ size = min_t(uint, count, dlc->mtu); ++ ++ if (from_user) ++ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_KERNEL); ++ else ++ skb = rfcomm_wmalloc(dev, size + RFCOMM_SKB_RESERVE, 0, GFP_ATOMIC); ++ ++ if (!skb) ++ break; ++ ++ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE); ++ ++ if (from_user) ++ copy_from_user(skb_put(skb, size), buf + sent, size); ++ else ++ memcpy(skb_put(skb, size), buf + sent, size); ++ ++ if ((err = rfcomm_dlc_send(dlc, skb)) < 0) { ++ kfree_skb(skb); ++ break; ++ } ++ ++ sent += size; ++ count -= size; ++ } ++ ++ return sent ? sent : err; ++} ++ ++static void rfcomm_tty_put_char(struct tty_struct *tty, unsigned char ch) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ struct rfcomm_dlc *dlc = dev->dlc; ++ struct sk_buff *skb; ++ ++ BT_DBG("tty %p char %x", tty, ch); ++ ++ skb = rfcomm_wmalloc(dev, 1 + RFCOMM_SKB_RESERVE, 1, GFP_ATOMIC); ++ ++ if (!skb) ++ return; ++ ++ skb_reserve(skb, RFCOMM_SKB_HEAD_RESERVE); ++ ++ *(char *)skb_put(skb, 1) = ch; ++ ++ if ((rfcomm_dlc_send(dlc, skb)) < 0) ++ kfree_skb(skb); ++} ++ ++static int rfcomm_tty_write_room(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ int room; ++ ++ BT_DBG("tty %p", tty); ++ ++ room = rfcomm_room(dev->dlc) - atomic_read(&dev->wmem_alloc); ++ if (room < 0) ++ room = 0; ++ ++ return room; ++} ++ ++static int rfcomm_tty_set_modem_status(uint cmd, struct rfcomm_dlc *dlc, uint status) ++{ ++ u8 v24_sig, mask; ++ ++ BT_DBG("dlc %p cmd 0x%02x", dlc, cmd); ++ ++ if (cmd == TIOCMSET) ++ v24_sig = 0; ++ else ++ rfcomm_dlc_get_modem_status(dlc, &v24_sig); ++ ++ mask = ((status & TIOCM_DSR) ? RFCOMM_V24_RTC : 0) | ++ ((status & TIOCM_DTR) ? RFCOMM_V24_RTC : 0) | ++ ((status & TIOCM_RTS) ? RFCOMM_V24_RTR : 0) | ++ ((status & TIOCM_CTS) ? RFCOMM_V24_RTR : 0) | ++ ((status & TIOCM_RI) ? RFCOMM_V24_IC : 0) | ++ ((status & TIOCM_CD) ? RFCOMM_V24_DV : 0); ++ ++ if (cmd == TIOCMBIC) ++ v24_sig &= ~mask; ++ else ++ v24_sig |= mask; ++ ++ rfcomm_dlc_set_modem_status(dlc, v24_sig); ++ return 0; ++} ++ ++static int rfcomm_tty_ioctl(struct tty_struct *tty, struct file *filp, unsigned int cmd, unsigned long arg) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ struct rfcomm_dlc *dlc = dev->dlc; ++ uint status; ++ int err; ++ ++ BT_DBG("tty %p cmd 0x%02x", tty, cmd); ++ ++ switch (cmd) { ++ case TCGETS: ++ BT_DBG("TCGETS is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TCSETS: ++ BT_DBG("TCSETS is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TIOCMGET: ++ BT_DBG("TIOCMGET"); ++ ++ return put_user(dev->modem_status, (unsigned int *)arg); ++ ++ case TIOCMSET: /* Turns on and off the lines as specified by the mask */ ++ case TIOCMBIS: /* Turns on the lines as specified by the mask */ ++ case TIOCMBIC: /* Turns off the lines as specified by the mask */ ++ if ((err = get_user(status, (unsigned int *)arg))) ++ return err; ++ return rfcomm_tty_set_modem_status(cmd, dlc, status); ++ ++ case TIOCMIWAIT: ++ BT_DBG("TIOCMIWAIT"); ++ break; ++ ++ case TIOCGICOUNT: ++ BT_DBG("TIOCGICOUNT"); ++ break; ++ ++ case TIOCGSERIAL: ++ BT_ERR("TIOCGSERIAL is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TIOCSSERIAL: ++ BT_ERR("TIOCSSERIAL is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TIOCSERGSTRUCT: ++ BT_ERR("TIOCSERGSTRUCT is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TIOCSERGETLSR: ++ BT_ERR("TIOCSERGETLSR is not supported"); ++ return -ENOIOCTLCMD; ++ ++ case TIOCSERCONFIG: ++ BT_ERR("TIOCSERCONFIG is not supported"); ++ return -ENOIOCTLCMD; ++ ++ default: ++ return -ENOIOCTLCMD; /* ioctls which we must ignore */ ++ ++ } ++ ++ return -ENOIOCTLCMD; ++} ++ ++#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) ++ ++static void rfcomm_tty_set_termios(struct tty_struct *tty, struct termios *old) ++{ ++ BT_DBG("tty %p", tty); ++ ++ if ((tty->termios->c_cflag == old->c_cflag) && ++ (RELEVANT_IFLAG(tty->termios->c_iflag) == RELEVANT_IFLAG(old->c_iflag))) ++ return; ++ ++ /* handle turning off CRTSCTS */ ++ if ((old->c_cflag & CRTSCTS) && !(tty->termios->c_cflag & CRTSCTS)) { ++ BT_DBG("turning off CRTSCTS"); ++ } ++} ++ ++static void rfcomm_tty_throttle(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ ++ BT_DBG("tty %p dev %p", tty, dev); ++ ++ rfcomm_dlc_throttle(dev->dlc); ++} ++ ++static void rfcomm_tty_unthrottle(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ ++ BT_DBG("tty %p dev %p", tty, dev); ++ ++ rfcomm_dlc_unthrottle(dev->dlc); ++} ++ ++static int rfcomm_tty_chars_in_buffer(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ struct rfcomm_dlc *dlc = dev->dlc; ++ ++ BT_DBG("tty %p dev %p", tty, dev); ++ ++ if (skb_queue_len(&dlc->tx_queue)) ++ return dlc->mtu; ++ ++ return 0; ++} ++ ++static void rfcomm_tty_flush_buffer(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ if (!dev) ++ return; ++ ++ BT_DBG("tty %p dev %p", tty, dev); ++ ++ skb_queue_purge(&dev->dlc->tx_queue); ++ ++ if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) ++ tty->ldisc.write_wakeup(tty); ++} ++ ++static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch) ++{ ++ BT_DBG("tty %p ch %c", tty, ch); ++} ++ ++static void rfcomm_tty_wait_until_sent(struct tty_struct *tty, int timeout) ++{ ++ BT_DBG("tty %p timeout %d", tty, timeout); ++} ++ ++static void rfcomm_tty_hangup(struct tty_struct *tty) ++{ ++ struct rfcomm_dev *dev = (struct rfcomm_dev *) tty->driver_data; ++ if (!dev) ++ return; ++ ++ BT_DBG("tty %p dev %p", tty, dev); ++ ++ rfcomm_tty_flush_buffer(tty); ++ ++ if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) ++ rfcomm_dev_del(dev); ++} ++ ++static int rfcomm_tty_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *unused) ++{ ++ return 0; ++} ++ ++/* ---- TTY structure ---- */ ++static int rfcomm_tty_refcount; /* If we manage several devices */ ++ ++static struct tty_struct *rfcomm_tty_table[RFCOMM_TTY_PORTS]; ++static struct termios *rfcomm_tty_termios[RFCOMM_TTY_PORTS]; ++static struct termios *rfcomm_tty_termios_locked[RFCOMM_TTY_PORTS]; ++ ++static struct tty_driver rfcomm_tty_driver = { ++ magic: TTY_DRIVER_MAGIC, ++ driver_name: "rfcomm", ++#ifdef CONFIG_DEVFS_FS ++ name: "bluetooth/rfcomm/%d", ++#else ++ name: "rfcomm", ++#endif ++ major: RFCOMM_TTY_MAJOR, ++ minor_start: RFCOMM_TTY_MINOR, ++ num: RFCOMM_TTY_PORTS, ++ type: TTY_DRIVER_TYPE_SERIAL, ++ subtype: SERIAL_TYPE_NORMAL, ++ flags: TTY_DRIVER_REAL_RAW, ++ ++ refcount: &rfcomm_tty_refcount, ++ table: rfcomm_tty_table, ++ termios: rfcomm_tty_termios, ++ termios_locked: rfcomm_tty_termios_locked, ++ ++ open: rfcomm_tty_open, ++ close: rfcomm_tty_close, ++ put_char: rfcomm_tty_put_char, ++ write: rfcomm_tty_write, ++ write_room: rfcomm_tty_write_room, ++ chars_in_buffer: rfcomm_tty_chars_in_buffer, ++ flush_buffer: rfcomm_tty_flush_buffer, ++ ioctl: rfcomm_tty_ioctl, ++ throttle: rfcomm_tty_throttle, ++ unthrottle: rfcomm_tty_unthrottle, ++ set_termios: rfcomm_tty_set_termios, ++ send_xchar: rfcomm_tty_send_xchar, ++ stop: NULL, ++ start: NULL, ++ hangup: rfcomm_tty_hangup, ++ wait_until_sent: rfcomm_tty_wait_until_sent, ++ read_proc: rfcomm_tty_read_proc, ++}; ++ ++int rfcomm_init_ttys(void) ++{ ++ int i; ++ ++ /* Initalize our global data */ ++ for (i = 0; i < RFCOMM_TTY_PORTS; i++) ++ rfcomm_tty_table[i] = NULL; ++ ++ /* Register the TTY driver */ ++ rfcomm_tty_driver.init_termios = tty_std_termios; ++ rfcomm_tty_driver.init_termios.c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL; ++ rfcomm_tty_driver.flags = TTY_DRIVER_REAL_RAW; ++ ++ if (tty_register_driver(&rfcomm_tty_driver)) { ++ BT_ERR("Can't register RFCOMM TTY driver"); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++void rfcomm_cleanup_ttys(void) ++{ ++ tty_unregister_driver(&rfcomm_tty_driver); ++ return; ++} +diff -urN linux-2.4.18/net/bluetooth/sco.c linux-2.4.18-mh15/net/bluetooth/sco.c +--- linux-2.4.18/net/bluetooth/sco.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.4.18-mh15/net/bluetooth/sco.c 2004-08-01 16:26:23.000000000 +0200 +@@ -0,0 +1,1019 @@ ++/* ++ BlueZ - Bluetooth protocol stack for Linux ++ Copyright (C) 2000-2001 Qualcomm Incorporated ++ ++ Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License version 2 as ++ published by the Free Software Foundation; ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. ++ IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY ++ CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES ++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ ++ ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, ++ COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS ++ SOFTWARE IS DISCLAIMED. ++*/ ++ ++/* ++ * BlueZ SCO sockets. ++ * ++ * $Id: sco.c,v 1.4 2002/07/22 20:32:54 maxk Exp $ ++ */ ++#define VERSION "0.3" ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/types.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/major.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/poll.h> ++#include <linux/fcntl.h> ++#include <linux/init.h> ++#include <linux/skbuff.h> ++#include <linux/interrupt.h> ++#include <linux/socket.h> ++#include <linux/skbuff.h> ++#include <linux/proc_fs.h> ++#include <linux/list.h> ++#include <net/sock.h> ++ ++#include <asm/system.h> ++#include <asm/uaccess.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++#include <net/bluetooth/sco.h> ++ ++#ifndef SCO_DEBUG ++#undef BT_DBG ++#define BT_DBG( A... ) ++#endif ++ ++static struct proto_ops sco_sock_ops; ++ ++static struct bluez_sock_list sco_sk_list = { ++ lock: RW_LOCK_UNLOCKED ++}; ++ ++static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent); ++static void sco_chan_del(struct sock *sk, int err); ++static inline struct sock * sco_chan_get(struct sco_conn *conn); ++ ++static int sco_conn_del(struct hci_conn *conn, int err); ++ ++static void sco_sock_close(struct sock *sk); ++static void sco_sock_kill(struct sock *sk); ++ ++/* ----- SCO timers ------ */ ++static void sco_sock_timeout(unsigned long arg) ++{ ++ struct sock *sk = (struct sock *) arg; ++ ++ BT_DBG("sock %p state %d", sk, sk->state); ++ ++ bh_lock_sock(sk); ++ sk->err = ETIMEDOUT; ++ sk->state_change(sk); ++ bh_unlock_sock(sk); ++ ++ sco_sock_kill(sk); ++ sock_put(sk); ++} ++ ++static void sco_sock_set_timer(struct sock *sk, long timeout) ++{ ++ BT_DBG("sock %p state %d timeout %ld", sk, sk->state, timeout); ++ ++ if (!mod_timer(&sk->timer, jiffies + timeout)) ++ sock_hold(sk); ++} ++ ++static void sco_sock_clear_timer(struct sock *sk) ++{ ++ BT_DBG("sock %p state %d", sk, sk->state); ++ ++ if (timer_pending(&sk->timer) && del_timer(&sk->timer)) ++ __sock_put(sk); ++} ++ ++static void sco_sock_init_timer(struct sock *sk) ++{ ++ init_timer(&sk->timer); ++ sk->timer.function = sco_sock_timeout; ++ sk->timer.data = (unsigned long)sk; ++} ++ ++/* -------- SCO connections --------- */ ++static struct sco_conn *sco_conn_add(struct hci_conn *hcon, __u8 status) ++{ ++ struct hci_dev *hdev = hcon->hdev; ++ struct sco_conn *conn; ++ ++ if ((conn = hcon->sco_data)) ++ return conn; ++ ++ if (status) ++ return conn; ++ ++ if (!(conn = kmalloc(sizeof(struct sco_conn), GFP_ATOMIC))) ++ return NULL; ++ memset(conn, 0, sizeof(struct sco_conn)); ++ ++ spin_lock_init(&conn->lock); ++ ++ hcon->sco_data = conn; ++ conn->hcon = hcon; ++ ++ conn->src = &hdev->bdaddr; ++ conn->dst = &hcon->dst; ++ ++ if (hdev->sco_mtu > 0) ++ conn->mtu = hdev->sco_mtu; ++ else ++ conn->mtu = 60; ++ ++ BT_DBG("hcon %p conn %p", hcon, conn); ++ ++ MOD_INC_USE_COUNT; ++ return conn; ++} ++ ++static int sco_conn_del(struct hci_conn *hcon, int err) ++{ ++ struct sco_conn *conn; ++ struct sock *sk; ++ ++ if (!(conn = hcon->sco_data)) ++ return 0; ++ ++ BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); ++ ++ /* Kill socket */ ++ if ((sk = sco_chan_get(conn))) { ++ bh_lock_sock(sk); ++ sco_sock_clear_timer(sk); ++ sco_chan_del(sk, err); ++ bh_unlock_sock(sk); ++ sco_sock_kill(sk); ++ } ++ ++ hcon->sco_data = NULL; ++ kfree(conn); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++int sco_connect(struct sock *sk) ++{ ++ bdaddr_t *src = &bluez_pi(sk)->src; ++ bdaddr_t *dst = &bluez_pi(sk)->dst; ++ struct sco_conn *conn; ++ struct hci_conn *hcon; ++ struct hci_dev *hdev; ++ int err = 0; ++ ++ BT_DBG("%s -> %s", batostr(src), batostr(dst)); ++ ++ if (!(hdev = hci_get_route(dst, src))) ++ return -EHOSTUNREACH; ++ ++ hci_dev_lock_bh(hdev); ++ ++ err = -ENOMEM; ++ ++ hcon = hci_connect(hdev, SCO_LINK, dst); ++ if (!hcon) ++ goto done; ++ ++ conn = sco_conn_add(hcon, 0); ++ if (!conn) { ++ hci_conn_put(hcon); ++ goto done; ++ } ++ ++ /* Update source addr of the socket */ ++ bacpy(src, conn->src); ++ ++ err = sco_chan_add(conn, sk, NULL); ++ if (err) ++ goto done; ++ ++ if (hcon->state == BT_CONNECTED) { ++ sco_sock_clear_timer(sk); ++ sk->state = BT_CONNECTED; ++ } else { ++ sk->state = BT_CONNECT; ++ sco_sock_set_timer(sk, sk->sndtimeo); ++ } ++done: ++ hci_dev_unlock_bh(hdev); ++ hci_dev_put(hdev); ++ return err; ++} ++ ++static inline int sco_send_frame(struct sock *sk, struct msghdr *msg, int len) ++{ ++ struct sco_conn *conn = sco_pi(sk)->conn; ++ struct sk_buff *skb; ++ int err, count; ++ ++ /* Check outgoing MTU */ ++ if (len > conn->mtu) ++ return -EINVAL; ++ ++ BT_DBG("sk %p len %d", sk, len); ++ ++ count = MIN(conn->mtu, len); ++ if (!(skb = bluez_skb_send_alloc(sk, count, msg->msg_flags & MSG_DONTWAIT, &err))) ++ return err; ++ ++ if (memcpy_fromiovec(skb_put(skb, count), msg->msg_iov, count)) { ++ err = -EFAULT; ++ goto fail; ++ } ++ ++ if ((err = hci_send_sco(conn->hcon, skb)) < 0) ++ goto fail; ++ ++ return count; ++ ++fail: ++ kfree_skb(skb); ++ return err; ++} ++ ++static inline void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb) ++{ ++ struct sock *sk = sco_chan_get(conn); ++ ++ if (!sk) ++ goto drop; ++ ++ BT_DBG("sk %p len %d", sk, skb->len); ++ ++ if (sk->state != BT_CONNECTED) ++ goto drop; ++ ++ if (!sock_queue_rcv_skb(sk, skb)) ++ return; ++ ++drop: ++ kfree_skb(skb); ++ return; ++} ++ ++/* -------- Socket interface ---------- */ ++static struct sock *__sco_get_sock_by_addr(bdaddr_t *ba) ++{ ++ struct sock *sk; ++ ++ for (sk = sco_sk_list.head; sk; sk = sk->next) { ++ if (!bacmp(&bluez_pi(sk)->src, ba)) ++ break; ++ } ++ ++ return sk; ++} ++ ++/* Find socket listening on source bdaddr. ++ * Returns closest match. ++ */ ++static struct sock *sco_get_sock_listen(bdaddr_t *src) ++{ ++ struct sock *sk, *sk1 = NULL; ++ ++ read_lock(&sco_sk_list.lock); ++ ++ for (sk = sco_sk_list.head; sk; sk = sk->next) { ++ if (sk->state != BT_LISTEN) ++ continue; ++ ++ /* Exact match. */ ++ if (!bacmp(&bluez_pi(sk)->src, src)) ++ break; ++ ++ /* Closest match */ ++ if (!bacmp(&bluez_pi(sk)->src, BDADDR_ANY)) ++ sk1 = sk; ++ } ++ ++ read_unlock(&sco_sk_list.lock); ++ ++ return sk ? sk : sk1; ++} ++ ++static void sco_sock_destruct(struct sock *sk) ++{ ++ BT_DBG("sk %p", sk); ++ ++ skb_queue_purge(&sk->receive_queue); ++ skb_queue_purge(&sk->write_queue); ++ ++ MOD_DEC_USE_COUNT; ++} ++ ++static void sco_sock_cleanup_listen(struct sock *parent) ++{ ++ struct sock *sk; ++ ++ BT_DBG("parent %p", parent); ++ ++ /* Close not yet accepted channels */ ++ while ((sk = bluez_accept_dequeue(parent, NULL))) { ++ sco_sock_close(sk); ++ sco_sock_kill(sk); ++ } ++ ++ parent->state = BT_CLOSED; ++ parent->zapped = 1; ++} ++ ++/* Kill socket (only if zapped and orphan) ++ * Must be called on unlocked socket. ++ */ ++static void sco_sock_kill(struct sock *sk) ++{ ++ if (!sk->zapped || sk->socket) ++ return; ++ ++ BT_DBG("sk %p state %d", sk, sk->state); ++ ++ /* Kill poor orphan */ ++ bluez_sock_unlink(&sco_sk_list, sk); ++ sk->dead = 1; ++ sock_put(sk); ++} ++ ++/* Close socket. ++ * Must be called on unlocked socket. ++ */ ++static void sco_sock_close(struct sock *sk) ++{ ++ struct sco_conn *conn; ++ ++ sco_sock_clear_timer(sk); ++ ++ lock_sock(sk); ++ ++ conn = sco_pi(sk)->conn; ++ ++ BT_DBG("sk %p state %d conn %p socket %p", sk, sk->state, conn, sk->socket); ++ ++ switch (sk->state) { ++ case BT_LISTEN: ++ sco_sock_cleanup_listen(sk); ++ break; ++ ++ case BT_CONNECTED: ++ case BT_CONFIG: ++ case BT_CONNECT: ++ case BT_DISCONN: ++ sco_chan_del(sk, ECONNRESET); ++ break; ++ ++ default: ++ sk->zapped = 1; ++ break; ++ }; ++ ++ release_sock(sk); ++} ++ ++static void sco_sock_init(struct sock *sk, struct sock *parent) ++{ ++ BT_DBG("sk %p", sk); ++ ++ if (parent) ++ sk->type = parent->type; ++} ++ ++static struct sock *sco_sock_alloc(struct socket *sock, int proto, int prio) ++{ ++ struct sock *sk; ++ ++ if (!(sk = sk_alloc(PF_BLUETOOTH, prio, 1))) ++ return NULL; ++ ++ bluez_sock_init(sock, sk); ++ ++ sk->zapped = 0; ++ ++ sk->destruct = sco_sock_destruct; ++ sk->sndtimeo = SCO_CONN_TIMEOUT; ++ ++ sk->protocol = proto; ++ sk->state = BT_OPEN; ++ ++ sco_sock_init_timer(sk); ++ ++ bluez_sock_link(&sco_sk_list, sk); ++ ++ MOD_INC_USE_COUNT; ++ return sk; ++} ++ ++static int sco_sock_create(struct socket *sock, int protocol) ++{ ++ struct sock *sk; ++ ++ BT_DBG("sock %p", sock); ++ ++ sock->state = SS_UNCONNECTED; ++ ++ if (sock->type != SOCK_SEQPACKET) ++ return -ESOCKTNOSUPPORT; ++ ++ sock->ops = &sco_sock_ops; ++ ++ if (!(sk = sco_sock_alloc(sock, protocol, GFP_KERNEL))) ++ return -ENOMEM; ++ ++ sco_sock_init(sk, NULL); ++ return 0; ++} ++ ++static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len) ++{ ++ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr; ++ struct sock *sk = sock->sk; ++ bdaddr_t *src = &sa->sco_bdaddr; ++ int err = 0; ++ ++ BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr)); ++ ++ if (!addr || addr->sa_family != AF_BLUETOOTH) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_OPEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ write_lock_bh(&sco_sk_list.lock); ++ ++ if (bacmp(src, BDADDR_ANY) && __sco_get_sock_by_addr(src)) { ++ err = -EADDRINUSE; ++ } else { ++ /* Save source address */ ++ bacpy(&bluez_pi(sk)->src, &sa->sco_bdaddr); ++ sk->state = BT_BOUND; ++ } ++ ++ write_unlock_bh(&sco_sk_list.lock); ++ ++done: ++ release_sock(sk); ++ ++ return err; ++} ++ ++static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags) ++{ ++ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr; ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ ++ BT_DBG("sk %p", sk); ++ ++ if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_sco)) ++ return -EINVAL; ++ ++ if (sk->state != BT_OPEN && sk->state != BT_BOUND) ++ return -EBADFD; ++ ++ if (sk->type != SOCK_SEQPACKET) ++ return -EINVAL; ++ ++ lock_sock(sk); ++ ++ /* Set destination address and psm */ ++ bacpy(&bluez_pi(sk)->dst, &sa->sco_bdaddr); ++ ++ if ((err = sco_connect(sk))) ++ goto done; ++ ++ err = bluez_sock_wait_state(sk, BT_CONNECTED, ++ sock_sndtimeo(sk, flags & O_NONBLOCK)); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++int sco_sock_listen(struct socket *sock, int backlog) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p backlog %d", sk, backlog); ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_BOUND || sock->type != SOCK_SEQPACKET) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ sk->max_ack_backlog = backlog; ++ sk->ack_backlog = 0; ++ sk->state = BT_LISTEN; ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++int sco_sock_accept(struct socket *sock, struct socket *newsock, int flags) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ struct sock *sk = sock->sk, *ch; ++ long timeo; ++ int err = 0; ++ ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ goto done; ++ } ++ ++ timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK); ++ ++ BT_DBG("sk %p timeo %ld", sk, timeo); ++ ++ /* Wait for an incoming connection. (wake-one). */ ++ add_wait_queue_exclusive(sk->sleep, &wait); ++ while (!(ch = bluez_accept_dequeue(sk, newsock))) { ++ set_current_state(TASK_INTERRUPTIBLE); ++ if (!timeo) { ++ err = -EAGAIN; ++ break; ++ } ++ ++ release_sock(sk); ++ timeo = schedule_timeout(timeo); ++ lock_sock(sk); ++ ++ if (sk->state != BT_LISTEN) { ++ err = -EBADFD; ++ break; ++ } ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeo); ++ break; ++ } ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(sk->sleep, &wait); ++ ++ if (err) ++ goto done; ++ ++ newsock->state = SS_CONNECTED; ++ ++ BT_DBG("new socket %p", ch); ++ ++done: ++ release_sock(sk); ++ return err; ++} ++ ++static int sco_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer) ++{ ++ struct sockaddr_sco *sa = (struct sockaddr_sco *) addr; ++ struct sock *sk = sock->sk; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ addr->sa_family = AF_BLUETOOTH; ++ *len = sizeof(struct sockaddr_sco); ++ ++ if (peer) ++ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->dst); ++ else ++ bacpy(&sa->sco_bdaddr, &bluez_pi(sk)->src); ++ ++ return 0; ++} ++ ++static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg, int len, struct scm_cookie *scm) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (sk->err) ++ return sock_error(sk); ++ ++ if (msg->msg_flags & MSG_OOB) ++ return -EOPNOTSUPP; ++ ++ lock_sock(sk); ++ ++ if (sk->state == BT_CONNECTED) ++ err = sco_send_frame(sk, msg, len); ++ else ++ err = -ENOTCONN; ++ ++ release_sock(sk); ++ return err; ++} ++ ++int sco_sock_setsockopt(struct socket *sock, int level, int optname, char *optval, int optlen) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ }; ++ ++ release_sock(sk); ++ return err; ++} ++ ++int sco_sock_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen) ++{ ++ struct sock *sk = sock->sk; ++ struct sco_options opts; ++ struct sco_conninfo cinfo; ++ int len, err = 0; ++ ++ BT_DBG("sk %p", sk); ++ ++ if (get_user(len, optlen)) ++ return -EFAULT; ++ ++ lock_sock(sk); ++ ++ switch (optname) { ++ case SCO_OPTIONS: ++ if (sk->state != BT_CONNECTED) { ++ err = -ENOTCONN; ++ break; ++ } ++ ++ opts.mtu = sco_pi(sk)->conn->mtu; ++ ++ BT_DBG("mtu %d", opts.mtu); ++ ++ len = MIN(len, sizeof(opts)); ++ if (copy_to_user(optval, (char *)&opts, len)) ++ err = -EFAULT; ++ ++ break; ++ ++ case SCO_CONNINFO: ++ if (sk->state != BT_CONNECTED) { ++ err = -ENOTCONN; ++ break; ++ } ++ ++ cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle; ++ ++ len = MIN(len, sizeof(cinfo)); ++ if (copy_to_user(optval, (char *)&cinfo, len)) ++ err = -EFAULT; ++ ++ break; ++ ++ default: ++ err = -ENOPROTOOPT; ++ break; ++ }; ++ ++ release_sock(sk); ++ return err; ++} ++ ++static int sco_sock_release(struct socket *sock) ++{ ++ struct sock *sk = sock->sk; ++ int err = 0; ++ ++ BT_DBG("sock %p, sk %p", sock, sk); ++ ++ if (!sk) ++ return 0; ++ ++ sco_sock_close(sk); ++ if (sk->linger) { ++ lock_sock(sk); ++ err = bluez_sock_wait_state(sk, BT_CLOSED, sk->lingertime); ++ release_sock(sk); ++ } ++ ++ sock_orphan(sk); ++ sco_sock_kill(sk); ++ return err; ++} ++ ++static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent) ++{ ++ BT_DBG("conn %p", conn); ++ ++ sco_pi(sk)->conn = conn; ++ conn->sk = sk; ++ ++ if (parent) ++ bluez_accept_enqueue(parent, sk); ++} ++ ++static inline int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent) ++{ ++ int err = 0; ++ ++ sco_conn_lock(conn); ++ if (conn->sk) { ++ err = -EBUSY; ++ } else { ++ __sco_chan_add(conn, sk, parent); ++ } ++ sco_conn_unlock(conn); ++ return err; ++} ++ ++static inline struct sock * sco_chan_get(struct sco_conn *conn) ++{ ++ struct sock *sk = NULL; ++ sco_conn_lock(conn); ++ sk = conn->sk; ++ sco_conn_unlock(conn); ++ return sk; ++} ++ ++/* Delete channel. ++ * Must be called on the locked socket. */ ++static void sco_chan_del(struct sock *sk, int err) ++{ ++ struct sco_conn *conn; ++ ++ conn = sco_pi(sk)->conn; ++ ++ BT_DBG("sk %p, conn %p, err %d", sk, conn, err); ++ ++ if (conn) { ++ sco_conn_lock(conn); ++ conn->sk = NULL; ++ sco_pi(sk)->conn = NULL; ++ sco_conn_unlock(conn); ++ hci_conn_put(conn->hcon); ++ } ++ ++ sk->state = BT_CLOSED; ++ sk->err = err; ++ sk->state_change(sk); ++ ++ sk->zapped = 1; ++} ++ ++static void sco_conn_ready(struct sco_conn *conn) ++{ ++ struct sock *parent, *sk; ++ ++ BT_DBG("conn %p", conn); ++ ++ sco_conn_lock(conn); ++ ++ if ((sk = conn->sk)) { ++ sco_sock_clear_timer(sk); ++ bh_lock_sock(sk); ++ sk->state = BT_CONNECTED; ++ sk->state_change(sk); ++ bh_unlock_sock(sk); ++ } else { ++ parent = sco_get_sock_listen(conn->src); ++ if (!parent) ++ goto done; ++ ++ bh_lock_sock(parent); ++ ++ sk = sco_sock_alloc(NULL, BTPROTO_SCO, GFP_ATOMIC); ++ if (!sk) { ++ bh_unlock_sock(parent); ++ goto done; ++ } ++ ++ sco_sock_init(sk, parent); ++ ++ bacpy(&bluez_pi(sk)->src, conn->src); ++ bacpy(&bluez_pi(sk)->dst, conn->dst); ++ ++ hci_conn_hold(conn->hcon); ++ __sco_chan_add(conn, sk, parent); ++ ++ sk->state = BT_CONNECTED; ++ ++ /* Wake up parent */ ++ parent->data_ready(parent, 1); ++ ++ bh_unlock_sock(parent); ++ } ++ ++done: ++ sco_conn_unlock(conn); ++} ++ ++/* ----- SCO interface with lower layer (HCI) ----- */ ++int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type) ++{ ++ BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr)); ++ ++ /* Always accept connection */ ++ return HCI_LM_ACCEPT; ++} ++ ++int sco_connect_cfm(struct hci_conn *hcon, __u8 status) ++{ ++ BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status); ++ ++ if (hcon->type != SCO_LINK) ++ return 0; ++ ++ if (!status) { ++ struct sco_conn *conn; ++ ++ conn = sco_conn_add(hcon, status); ++ if (conn) ++ sco_conn_ready(conn); ++ } else ++ sco_conn_del(hcon, bterr(status)); ++ ++ return 0; ++} ++ ++int sco_disconn_ind(struct hci_conn *hcon, __u8 reason) ++{ ++ BT_DBG("hcon %p reason %d", hcon, reason); ++ ++ if (hcon->type != SCO_LINK) ++ return 0; ++ ++ sco_conn_del(hcon, bterr(reason)); ++ return 0; ++} ++ ++int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb) ++{ ++ struct sco_conn *conn = hcon->sco_data; ++ ++ if (!conn) ++ goto drop; ++ ++ BT_DBG("conn %p len %d", conn, skb->len); ++ ++ if (skb->len) { ++ sco_recv_frame(conn, skb); ++ return 0; ++ } ++ ++drop: ++ kfree_skb(skb); ++ return 0; ++} ++ ++/* ----- Proc fs support ------ */ ++static int sco_sock_dump(char *buf, struct bluez_sock_list *list) ++{ ++ struct sco_pinfo *pi; ++ struct sock *sk; ++ char *ptr = buf; ++ ++ write_lock_bh(&list->lock); ++ ++ for (sk = list->head; sk; sk = sk->next) { ++ pi = sco_pi(sk); ++ ptr += sprintf(ptr, "%s %s %d\n", ++ batostr(&bluez_pi(sk)->src), batostr(&bluez_pi(sk)->dst), ++ sk->state); ++ } ++ ++ write_unlock_bh(&list->lock); ++ ++ ptr += sprintf(ptr, "\n"); ++ ++ return ptr - buf; ++} ++ ++static int sco_read_proc(char *buf, char **start, off_t offset, int count, int *eof, void *priv) ++{ ++ char *ptr = buf; ++ int len; ++ ++ BT_DBG("count %d, offset %ld", count, offset); ++ ++ ptr += sco_sock_dump(ptr, &sco_sk_list); ++ len = ptr - buf; ++ ++ if (len <= count + offset) ++ *eof = 1; ++ ++ *start = buf + offset; ++ len -= offset; ++ ++ if (len > count) ++ len = count; ++ if (len < 0) ++ len = 0; ++ ++ return len; ++} ++ ++static struct proto_ops sco_sock_ops = { ++ family: PF_BLUETOOTH, ++ release: sco_sock_release, ++ bind: sco_sock_bind, ++ connect: sco_sock_connect, ++ listen: sco_sock_listen, ++ accept: sco_sock_accept, ++ getname: sco_sock_getname, ++ sendmsg: sco_sock_sendmsg, ++ recvmsg: bluez_sock_recvmsg, ++ poll: bluez_sock_poll, ++ socketpair: sock_no_socketpair, ++ ioctl: sock_no_ioctl, ++ shutdown: sock_no_shutdown, ++ setsockopt: sco_sock_setsockopt, ++ getsockopt: sco_sock_getsockopt, ++ mmap: sock_no_mmap ++}; ++ ++static struct net_proto_family sco_sock_family_ops = { ++ family: PF_BLUETOOTH, ++ create: sco_sock_create ++}; ++ ++static struct hci_proto sco_hci_proto = { ++ name: "SCO", ++ id: HCI_PROTO_SCO, ++ connect_ind: sco_connect_ind, ++ connect_cfm: sco_connect_cfm, ++ disconn_ind: sco_disconn_ind, ++ recv_scodata: sco_recv_scodata, ++}; ++ ++int __init sco_init(void) ++{ ++ int err; ++ ++ if ((err = bluez_sock_register(BTPROTO_SCO, &sco_sock_family_ops))) { ++ BT_ERR("Can't register SCO socket layer"); ++ return err; ++ } ++ ++ if ((err = hci_register_proto(&sco_hci_proto))) { ++ BT_ERR("Can't register SCO protocol"); ++ return err; ++ } ++ ++ create_proc_read_entry("bluetooth/sco", 0, 0, sco_read_proc, NULL); ++ ++ BT_INFO("BlueZ SCO ver %s Copyright (C) 2000,2001 Qualcomm Inc", VERSION); ++ BT_INFO("Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>"); ++ return 0; ++} ++ ++void sco_cleanup(void) ++{ ++ int err; ++ ++ remove_proc_entry("bluetooth/sco", NULL); ++ ++ /* Unregister socket, protocol and notifier */ ++ if ((err = bluez_sock_unregister(BTPROTO_SCO))) ++ BT_ERR("Can't unregister SCO socket layer %d", err); ++ ++ if ((err = hci_unregister_proto(&sco_hci_proto))) ++ BT_ERR("Can't unregister SCO protocol %d", err); ++} ++ ++module_init(sco_init); ++module_exit(sco_cleanup); ++ ++MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>"); ++MODULE_DESCRIPTION("BlueZ SCO ver " VERSION); ++MODULE_LICENSE("GPL"); +diff -urN linux-2.4.18/net/bluetooth/syms.c linux-2.4.18-mh15/net/bluetooth/syms.c +--- linux-2.4.18/net/bluetooth/syms.c 2001-09-07 18:28:38.000000000 +0200 ++++ linux-2.4.18-mh15/net/bluetooth/syms.c 2004-08-01 16:26:23.000000000 +0200 +@@ -25,7 +25,7 @@ + /* + * BlueZ symbols. + * +- * $Id: syms.c,v 1.1 2001/07/12 19:31:24 maxk Exp $ ++ * $Id: syms.c,v 1.1 2002/03/08 21:06:59 maxk Exp $ + */ + + #include <linux/config.h> +@@ -39,25 +39,28 @@ + #include <linux/socket.h> + + #include <net/bluetooth/bluetooth.h> +-#include <net/bluetooth/bluez.h> + #include <net/bluetooth/hci_core.h> + + /* HCI Core */ + EXPORT_SYMBOL(hci_register_dev); + EXPORT_SYMBOL(hci_unregister_dev); ++EXPORT_SYMBOL(hci_suspend_dev); ++EXPORT_SYMBOL(hci_resume_dev); ++ + EXPORT_SYMBOL(hci_register_proto); + EXPORT_SYMBOL(hci_unregister_proto); +-EXPORT_SYMBOL(hci_register_notifier); +-EXPORT_SYMBOL(hci_unregister_notifier); + ++EXPORT_SYMBOL(hci_get_route); + EXPORT_SYMBOL(hci_connect); +-EXPORT_SYMBOL(hci_disconnect); + EXPORT_SYMBOL(hci_dev_get); ++EXPORT_SYMBOL(hci_conn_auth); ++EXPORT_SYMBOL(hci_conn_encrypt); + + EXPORT_SYMBOL(hci_recv_frame); + EXPORT_SYMBOL(hci_send_acl); + EXPORT_SYMBOL(hci_send_sco); +-EXPORT_SYMBOL(hci_send_raw); ++EXPORT_SYMBOL(hci_send_cmd); ++EXPORT_SYMBOL(hci_si_event); + + /* BlueZ lib */ + EXPORT_SYMBOL(bluez_dump); +@@ -68,5 +71,11 @@ + /* BlueZ sockets */ + EXPORT_SYMBOL(bluez_sock_register); + EXPORT_SYMBOL(bluez_sock_unregister); ++EXPORT_SYMBOL(bluez_sock_init); + EXPORT_SYMBOL(bluez_sock_link); + EXPORT_SYMBOL(bluez_sock_unlink); ++EXPORT_SYMBOL(bluez_sock_recvmsg); ++EXPORT_SYMBOL(bluez_sock_poll); ++EXPORT_SYMBOL(bluez_accept_enqueue); ++EXPORT_SYMBOL(bluez_accept_dequeue); ++EXPORT_SYMBOL(bluez_sock_wait_state); +diff -urN linux-2.4.18/net/netsyms.c linux-2.4.18-mh15/net/netsyms.c +--- linux-2.4.18/net/netsyms.c 2002-02-25 20:38:14.000000000 +0100 ++++ linux-2.4.18-mh15/net/netsyms.c 2004-08-01 16:26:23.000000000 +0200 +@@ -159,6 +159,7 @@ + EXPORT_SYMBOL(put_cmsg); + EXPORT_SYMBOL(sock_kmalloc); + EXPORT_SYMBOL(sock_kfree_s); ++EXPORT_SYMBOL(sockfd_lookup); + + #ifdef CONFIG_FILTER + EXPORT_SYMBOL(sk_run_filter); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch new file mode 100644 index 0000000000..c29f0d02f2 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/bt950_cs.patch @@ -0,0 +1,1174 @@ +diff -Nur linux-orig/drivers/bluetooth/bt950_cs.c linux/drivers/bluetooth/bt950_cs.c +--- linux-orig/drivers/bluetooth/bt950_cs.c 1970-01-01 03:00:00.000000000 +0300 ++++ linux/drivers/bluetooth/bt950_cs.c 2004-02-04 09:55:04.000000000 +0300 +@@ -0,0 +1,1133 @@ ++/* ++ * ++ * Driver for Bluetooth cards with OXCF950 UART interface ++ * ++ * Copyright (C) 2001-2002 Marcel Holtmann <marcel@holtmann.org> ++ * Albert Rybalkin <albertr@iral.com> ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation; ++ * ++ * Software distributed under the License is distributed on an "AS ++ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ++ * implied. See the License for the specific language governing ++ * rights and limitations under the License. ++ * ++ * The initial developer of the original code is David A. Hinds ++ * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds ++ * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ++ * ++ */ ++ ++#include <linux/config.h> ++ ++#ifdef CONFIG_MODVERSIONS ++#ifndef MODVERSIONS ++#define MODVERSIONS ++#endif ++#include <linux/modversions.h> ++#endif ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/types.h> ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/errno.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/spinlock.h> ++#include <linux/delay.h> ++ ++#include <linux/skbuff.h> ++#include <linux/string.h> ++#include <linux/serial.h> ++#include <linux/serial_reg.h> ++#include <asm/system.h> ++#include <asm/bitops.h> ++#include <asm/io.h> ++ ++#include <pcmcia/version.h> ++#include <pcmcia/cs_types.h> ++#include <pcmcia/cs.h> ++#include <pcmcia/cistpl.h> ++#include <pcmcia/ciscode.h> ++#include <pcmcia/ds.h> ++#include <pcmcia/cisreg.h> ++ ++#include <net/bluetooth/bluetooth.h> ++#include <net/bluetooth/hci_core.h> ++ ++/* Default baud rate: 57600, 115200, 230400 or 460800 */ ++#define DEFAULT_BAUD_RATE 460800 ++ ++ ++/* ======================== Module parameters ======================== */ ++ ++ ++/* Bit map of interrupts to choose from */ ++static u_int irq_mask = 0x86bc; ++static int irq_list[4] = { -1 }; ++static long baud_rate = DEFAULT_BAUD_RATE; ++ ++MODULE_PARM(irq_mask, "i"); ++MODULE_PARM(irq_list, "1-4i"); ++MODULE_PARM(baud_rate, "l"); ++ ++MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>, Albert Rybalkin <albertr@iral.com>"); ++MODULE_DESCRIPTION("BlueZ driver for Bluetooth cards with OXCF950 UART interface"); ++MODULE_LICENSE("GPL"); ++ ++ ++ ++/* ======================== Local structures ======================== */ ++ ++ ++typedef struct bt950_info_t { ++ dev_link_t link; ++ dev_node_t node; ++ ++ struct hci_dev hdev; ++ ++ spinlock_t lock; /* For serializing operations */ ++ ++ struct sk_buff_head txq; ++ unsigned long tx_state; ++ ++ unsigned long rx_state; ++ unsigned long rx_count; ++ struct sk_buff *rx_skb; ++} bt950_info_t; ++ ++ ++static void bt950_config(dev_link_t *link); ++static void bt950_release(u_long arg); ++static int bt950_event(event_t event, int priority, event_callback_args_t *args); ++ ++static dev_info_t dev_info = "bt950_cs"; ++ ++static dev_link_t *bt950_attach(void); ++static void bt950_detach(dev_link_t *); ++ ++static dev_link_t *dev_list = NULL; ++ ++/* Transmit states */ ++#define XMIT_SENDING 1 ++#define XMIT_WAKEUP 2 ++#define XMIT_WAITING 8 ++ ++/* Receiver states */ ++#define RECV_WAIT_PACKET_TYPE 0 ++#define RECV_WAIT_EVENT_HEADER 1 ++#define RECV_WAIT_ACL_HEADER 2 ++#define RECV_WAIT_SCO_HEADER 3 ++#define RECV_WAIT_DATA 4 ++ ++/* Special packet types */ ++#define PKT_BAUD_RATE_57600 0x80 ++#define PKT_BAUD_RATE_115200 0x81 ++#define PKT_BAUD_RATE_230400 0x82 ++#define PKT_BAUD_RATE_460800 0x83 ++ ++/* 950-specific stuff */ ++#define MAX_WAIT 0xFFFF ++#define FIFO_SIZE 128 ++ ++#define TR_TX_INT 0x10 /* TTL: TX interrupt trigger level (0-127) */ ++#define TR_RX_INT 0x40 /* RTL: RX interrupt trigger level (1-127) */ ++#define TR_CTL_LO 0x08 /* FCL: auto flow control LOWER trigger level (0-127) */ ++#define TR_CTL_HI 0x60 /* FCH: auto flow control HIGH trigger level (1-127) */ ++ ++/* 950-specific registers and values we use. It should ++ * eventually go to include/linux/serial_reg.h */ ++#define UART_IER_CTS 0x80 /* enable CTS interrupt */ ++#define UART_IER_RTS 0x40 /* enable RTS interrupt */ ++#define UART_IER_SLP 0x10 /* enable sleep mode */ ++#define UART_LCR_650 0xBF /* enable 650-compatible registers access */ ++#define UART_LSR_DE 0x80 /* data error */ ++#define UART_LSR_ERR (UART_LSR_OE|UART_LSR_PE|UART_LSR_FE|UART_LSR_BI|UART_LSR_DE) ++#define UART_IIR_RXTOUT 0x0C /* RX timeout interrupt */ ++#define UART_IIR_CTSRTS 0x20 /* CTS or RTS change interrupt */ ++#define UART_IIR_RTS 0x40 ++#define UART_IIR_CTS 0x80 ++#define UART_IIR_MASK 0x3E /* interrupt mask */ ++#define UART_SRT 0x0D /* soft reset register */ ++ ++ ++ ++/* ======================== Interrupt handling ======================== */ ++ ++ ++static int bt950_write(unsigned int iobase, int fifo_size, const unsigned char *buf, int len) ++{ ++ int i, actual = 0; ++ ++ /* Activate DTR and RTS */ ++ outb(UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2, iobase + UART_MCR); ++ ++ /* Wait for CTS flow control */ ++ for (i = MAX_WAIT; i; i--) ++ if (inb(iobase + UART_MSR) & UART_MSR_CTS) ++ break; ++ ++ if (!i) { ++ printk(KERN_WARNING "bt950_cs: Timeout waiting for CTS on write.\n"); ++ return 0; ++ } ++ ++ /* The TX FIFO should be empty */ ++ for (i = MAX_WAIT; i; i--) ++ if (inb(iobase + UART_LSR) & UART_LSR_THRE) ++ break; ++ ++ if (!i) { ++ printk(KERN_WARNING "bt950_cs: Timeout waiting for empty TX FIFO on write.\n"); ++ return 0; ++ } ++ ++ /* Fill FIFO with current frame */ ++ while ((fifo_size-- > 0) && (actual < len)) { ++ /* Transmit next byte */ ++ outb(buf[actual], iobase + UART_TX); ++ actual++; ++ } ++ ++ return actual; ++} ++ ++ ++static void bt950_write_wakeup(bt950_info_t *info) ++{ ++ unsigned char lcr; ++ unsigned int divisor; ++ ++ if (!info) { ++ printk(KERN_WARNING "bt950_cs: Call of write_wakeup for unknown device.\n"); ++ return; ++ } ++ ++ if (test_and_set_bit(XMIT_SENDING, &(info->tx_state))) { ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ return; ++ } ++ ++ do { ++ register unsigned int iobase = info->link.io.BasePort1; ++ register struct sk_buff *skb; ++ register int len; ++ ++ clear_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (!(info->link.state & DEV_PRESENT)) ++ return; ++ ++ if (!(skb = skb_dequeue(&(info->txq)))) ++ break; ++ ++ if (skb->pkt_type & 0x80) { ++ /* Disable RTS */ ++ outb((inb(iobase + UART_MCR) & ~UART_MCR_RTS), iobase + UART_MCR); ++ } ++ ++ /* Send frame */ ++ len = bt950_write(iobase, FIFO_SIZE, skb->data, skb->len); ++ ++ set_bit(XMIT_WAKEUP, &(info->tx_state)); ++ ++ if (skb->pkt_type & 0x80) { ++ ++ wait_queue_head_t wait; ++ ++ switch (skb->pkt_type) { ++ ++ case PKT_BAUD_RATE_460800: ++ divisor = 1; ++ break; ++ ++ case PKT_BAUD_RATE_230400: ++ divisor = 2; ++ break; ++ ++ case PKT_BAUD_RATE_115200: ++ divisor = 4; ++ break; ++ ++ case PKT_BAUD_RATE_57600: ++ /* Fall through... */ ++ ++ default: ++ divisor = 8; ++ break; ++ } ++ ++ /* Wait until the command reaches the baseband */ ++ init_waitqueue_head(&wait); ++ interruptible_sleep_on_timeout(&wait, HZ / 10); ++ ++ /* Set baud on baseband */ ++ /* Enable divisor latch access */ ++ lcr = inb(iobase + UART_LCR) & 0x3F; ++ outb(lcr | UART_LCR_DLAB, iobase + UART_LCR); ++ ++ /* Setup divisor latch */ ++ outb(divisor & 0x00FF, iobase + UART_DLL); /* divisor latch LOW byte */ ++ outb((divisor & 0xFF00) >> 8, iobase + UART_DLM); /* divisor latch HI byte */ ++ ++ /* Disable divisor latch access */ ++ outb(lcr, iobase + UART_LCR); ++ ++ /* Enable RTS */ ++ outb((inb(iobase + UART_MCR) | UART_MCR_RTS), iobase + UART_MCR); ++ ++ /* Wait before the next HCI packet can be send */ ++ interruptible_sleep_on_timeout(&wait, HZ); ++ ++ } ++ ++ if (len == skb->len) { ++ kfree_skb(skb); ++ } else { ++ skb_pull(skb, len); ++ skb_queue_head(&(info->txq), skb); ++ } ++ ++ info->hdev.stat.byte_tx += len; ++ ++ } while (test_bit(XMIT_WAKEUP, &(info->tx_state))); ++ ++ clear_bit(XMIT_SENDING, &(info->tx_state)); ++} ++ ++ ++static inline void bt950_receive(bt950_info_t *info) ++{ ++ unsigned int iobase; ++ int boguscount = 0; ++ ++ if (!info) { ++ printk(KERN_ERR "bt950_cs: Call of receive for unknown device.\n"); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ /* Fixme: BUG? */ ++ inb(iobase + UART_MCR); ++ ++ do { ++ info->hdev.stat.byte_rx++; ++ ++ /* Allocate packet */ ++ if (info->rx_skb == NULL) { ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ if (!(info->rx_skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_ERR "bt950_cs: Can't allocate mem for new packet.\n"); ++ return; ++ } ++ } ++ ++ if (info->rx_state == RECV_WAIT_PACKET_TYPE) { ++ ++ info->rx_skb->dev = (void *)&(info->hdev); ++ info->rx_skb->pkt_type = inb(iobase + UART_RX); ++ ++ switch (info->rx_skb->pkt_type) { ++ ++ case HCI_EVENT_PKT: ++ info->rx_state = RECV_WAIT_EVENT_HEADER; ++ info->rx_count = HCI_EVENT_HDR_SIZE; ++ break; ++ ++ case HCI_ACLDATA_PKT: ++ info->rx_state = RECV_WAIT_ACL_HEADER; ++ info->rx_count = HCI_ACL_HDR_SIZE; ++ break; ++ ++ case HCI_SCODATA_PKT: ++ info->rx_state = RECV_WAIT_SCO_HEADER; ++ info->rx_count = HCI_SCO_HDR_SIZE; ++ break; ++ ++ default: ++ /* Unknown packet */ ++ printk(KERN_WARNING "bt950_cs: Unknown HCI packet with type 0x%02X received.\n", info->rx_skb->pkt_type); ++ info->hdev.stat.err_rx++; ++ ++ kfree_skb(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } else { ++ ++ *skb_put(info->rx_skb, 1) = inb(iobase + UART_RX); ++ info->rx_count--; ++ ++ if (info->rx_count == 0) { ++ ++ int dlen; ++ hci_event_hdr *eh; ++ hci_acl_hdr *ah; ++ hci_sco_hdr *sh; ++ ++ ++ switch (info->rx_state) { ++ ++ case RECV_WAIT_EVENT_HEADER: ++ eh = (hci_event_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = eh->plen; ++ break; ++ ++ case RECV_WAIT_ACL_HEADER: ++ ah = (hci_acl_hdr *)(info->rx_skb->data); ++ dlen = __le16_to_cpu(ah->dlen); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = dlen; ++ break; ++ ++ case RECV_WAIT_SCO_HEADER: ++ sh = (hci_sco_hdr *)(info->rx_skb->data); ++ info->rx_state = RECV_WAIT_DATA; ++ info->rx_count = sh->dlen; ++ break; ++ ++ case RECV_WAIT_DATA: ++ hci_recv_frame(info->rx_skb); ++ info->rx_skb = NULL; ++ break; ++ ++ } ++ ++ } ++ ++ } ++ ++ /* Make sure we don't stay here too long */ ++ if (boguscount++ > 16) ++ break; ++ ++ } while (inb(iobase + UART_LSR) & UART_LSR_DR); ++} ++ ++ ++static void bt950_interrupt(int irq, void *dev_inst, struct pt_regs *regs) ++{ ++ bt950_info_t *info = dev_inst; ++ unsigned int iobase; ++ int boguscount = 0; ++ int iir, lsr; ++ ++ if (!info) { ++ printk(KERN_ERR "bt950_cs: Call of irq %d for unknown device.\n", irq); ++ return; ++ } ++ ++ iobase = info->link.io.BasePort1; ++ ++ spin_lock(&(info->lock)); ++ ++ iir = inb(iobase + UART_IIR); ++ ++ while (!(iir & UART_IIR_NO_INT)) { ++ ++ switch (iir & UART_IIR_ID) { ++ case UART_IIR_RLSI: ++ /* Clear RLSI interrupt */ ++ lsr = inb(iobase + UART_LSR); ++ printk(KERN_NOTICE "bt950_cs: RLSI interrupt, LSR=%#x\n", lsr); ++ /* Fixme: we need to process errors ... */ ++ break; ++ case UART_IIR_RDI: ++ /* Receive interrupt */ ++ bt950_receive(info); ++ break; ++ case UART_IIR_THRI: ++ /* Transmitter ready for data */ ++ bt950_write_wakeup(info); ++ break; ++ default: ++ printk(KERN_NOTICE "bt950_cs: Unhandled IIR=%#x\n", iir); ++ break; ++ } ++ ++ /* Make sure we don't stay here too long */ ++ if (boguscount++ > 100) ++ break; ++ ++ iir = inb(iobase + UART_IIR); ++ ++ } ++ ++ spin_unlock(&(info->lock)); ++} ++ ++/* ======================== Device specific HCI commands ======================== */ ++ ++ ++static int bt950_hci_set_baud_rate(struct hci_dev *hdev, int baud) ++{ ++ bt950_info_t *info = (bt950_info_t *)(hdev->driver_data); ++ struct sk_buff *skb; ++ ++ /* Ericsson baud rate command */ ++ unsigned char cmd[] = { HCI_COMMAND_PKT, 0x09, 0xfc, 0x01, 0x03 }; ++ ++ if (!(skb = bluez_skb_alloc(HCI_MAX_FRAME_SIZE, GFP_ATOMIC))) { ++ printk(KERN_WARNING "bt950_cs: Can't allocate mem for new packet.\n"); ++ return -1; ++ } ++ ++ switch (baud) { ++ case 460800: ++ cmd[4] = 0x00; ++ skb->pkt_type = PKT_BAUD_RATE_460800; ++ break; ++ case 230400: ++ cmd[4] = 0x01; ++ skb->pkt_type = PKT_BAUD_RATE_230400; ++ break; ++ case 115200: ++ cmd[4] = 0x02; ++ skb->pkt_type = PKT_BAUD_RATE_115200; ++ break; ++ case 57600: ++ /* Fall through... */ ++ default: ++ baud = 57600; ++ cmd[4] = 0x03; ++ skb->pkt_type = PKT_BAUD_RATE_57600; ++ break; ++ } ++ ++ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd)); ++ ++ skb_queue_tail(&(info->txq), skb); ++ ++ printk(KERN_WARNING "bt950_cs: setting baud rate: %d.\n", baud); ++ ++ bt950_write_wakeup(info); ++ ++ return 0; ++} ++ ++ ++/* ======================== HCI interface ======================== */ ++ ++ ++static int bt950_hci_flush(struct hci_dev *hdev) ++{ ++ bt950_info_t *info = (bt950_info_t *)(hdev->driver_data); ++ ++ /* Drop TX queue */ ++ skb_queue_purge(&(info->txq)); ++ ++ return 0; ++} ++ ++ ++static int bt950_hci_open(struct hci_dev *hdev) ++{ ++ bt950_hci_set_baud_rate(hdev, baud_rate); ++ set_bit(HCI_RUNNING, &(hdev->flags)); ++ ++ return 0; ++} ++ ++ ++static int bt950_hci_close(struct hci_dev *hdev) ++{ ++ if (!test_and_clear_bit(HCI_RUNNING, &(hdev->flags))) ++ return 0; ++ ++ bt950_hci_flush(hdev); ++ ++ return 0; ++} ++ ++ ++static int bt950_hci_send_frame(struct sk_buff *skb) ++{ ++ bt950_info_t *info; ++ struct hci_dev *hdev = (struct hci_dev *)(skb->dev); ++ ++ if (!hdev) { ++ printk(KERN_ERR "bt950_cs: Frame for unknown HCI device (hdev=NULL)."); ++ return -ENODEV; ++ } ++ ++ info = (bt950_info_t *)(hdev->driver_data); ++ ++ switch (skb->pkt_type) { ++ case HCI_COMMAND_PKT: ++ hdev->stat.cmd_tx++; ++ break; ++ case HCI_ACLDATA_PKT: ++ hdev->stat.acl_tx++; ++ break; ++ case HCI_SCODATA_PKT: ++ hdev->stat.sco_tx++; ++ break; ++ }; ++ ++ /* Prepend skb with frame type */ ++ memcpy(skb_push(skb, 1), &(skb->pkt_type), 1); ++ skb_queue_tail(&(info->txq), skb); ++ ++ bt950_write_wakeup(info); ++ ++ return 0; ++} ++ ++ ++static void bt950_hci_destruct(struct hci_dev *hdev) ++{ ++} ++ ++ ++static int bt950_hci_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) ++{ ++ return -ENOIOCTLCMD; ++} ++ ++ ++ ++/* ======================== Card services HCI interaction ======================== */ ++ ++ ++static int bt950_setup_uart(bt950_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ unsigned char lcr, ier = UART_IER_RDI | UART_IER_RLSI | UART_IER_SLP; ++ unsigned int divisor = 8; /* Fixme: divisor == 0x0c ??? */ ++ unsigned char id1, id2, id3, rev; ++ register int i; ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Disable interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ /* Activate RTS and OUT2 */ ++ /* Fixme: is OUT2 used to enable interrupts? */ ++ outb(UART_MCR_RTS | UART_MCR_OUT2, iobase + UART_MCR); ++ ++ /* Setup the FIFO's */ ++ outb(0, iobase + UART_FCR); ++ inb(iobase + UART_RX); ++ outb(UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR | ++ UART_FCR_CLEAR_XMIT | UART_FCR_TRIGGER_14, iobase + UART_FCR); ++ ++ /* Disable divisor latch access */ ++ lcr = inb(iobase + UART_LCR) & 0x3F; /* mask out UART_LCR_DLAB and UART_LCR_SBC */ ++ outb(lcr, iobase + UART_LCR); ++ ++ /* Read up to 4 bytes from RX FIFO */ ++ for (i = 0; i < 4; i++) { ++ inb(iobase + UART_RX); ++ if (!(inb(iobase + UART_LSR) & UART_LSR_DR)) ++ break; ++ } ++ ++ /* Wait if CTS/DSR/DCD changing */ ++ for (i = 1; i < 0x3E8; i++) { ++ if (!(inb(iobase + UART_MSR) & UART_MSR_ANY_DELTA)) ++ break; ++ } ++ ++ /* Enable divisor latch access */ ++ outb(lcr | UART_LCR_DLAB, iobase + UART_LCR); ++ ++ /* Setup divisor latch */ ++ outb(divisor & 0x00FF, iobase + UART_DLL); /* divisor latch LOW byte */ ++ outb((divisor & 0xFF00) >> 8, iobase + UART_DLM); /* divisor latch HIGH byte */ ++ ++ /* Disable divisor latch access */ ++ outb(lcr, iobase + UART_LCR); ++ ++ /* Setup interrupts, enable sleep mode */ ++ outb(ier, iobase + UART_IER); /* we don't want to handle TX interrupts */ ++ ++ /* Skip pending interrupts */ ++ for (i = 0; i < 4; i++) { ++ if (inb(iobase + UART_IIR) & UART_IIR_NO_INT) ++ break; ++ } ++ ++ /* 8N1 */ ++ lcr = UART_LCR_WLEN8; ++ outb(lcr, iobase + UART_LCR); ++ ++ /* Setup CTS/RTS flow control and 950 enhanced mode */ ++ outb(UART_LCR_650, iobase + UART_LCR); ++ outb(UART_EFR_CTS | UART_EFR_RTS | UART_EFR_ECB, ++ iobase + UART_EFR); ++ outb(lcr, iobase + UART_LCR); ++ ++ /* Read core id and revision */ ++ outb(UART_ACR, iobase + UART_EMSR); ++ outb(UART_ACR_ICRRD, iobase + UART_LSR); /* enable ICR read access, we don't need to save the old value of ACR */ ++ ++ outb(UART_ID1, iobase + UART_EMSR); ++ id1 = inb(iobase + UART_LSR); ++ ++ outb(UART_ID2, iobase + UART_EMSR); ++ id2 = inb(iobase + UART_LSR); ++ ++ outb(UART_ID3, iobase + UART_EMSR); ++ id3 = inb(iobase + UART_LSR); ++ ++ outb(UART_REV, iobase + UART_EMSR); ++ rev = inb(iobase + UART_LSR); ++ ++ if (id1 != 0x16 || id2 != 0xC9 || id3 != 0x50) { ++ printk(KERN_ERR "bt950_cs: Unknown UART core %02X%02X%02X found.\n", id1, id2, id3); ++ spin_unlock_irqrestore(&(info->lock), flags); ++ return -ENODEV; ++ } ++ ++ ++ /* Init ICR registers */ ++ outb(UART_TTL, iobase + UART_EMSR); ++ outb(TR_TX_INT, iobase + UART_LSR); /* TX interrupt trigger level (0-127) */ ++ ++ outb(UART_RTL, iobase + UART_EMSR); ++ outb(TR_RX_INT, iobase + UART_LSR); /* RX interrupt trigger level (1-127) */ ++ ++ outb(UART_FCL, iobase + UART_EMSR); ++ outb(TR_CTL_LO, iobase + UART_LSR); /* auto flow control LOWER trigger level (0-127) */ ++ ++ outb(UART_FCH, iobase + UART_EMSR); ++ outb(TR_CTL_HI, iobase + UART_LSR); /* auto flow control HIGH trigger level (1-127) */ ++ ++ outb(UART_ACR, iobase + UART_EMSR); ++ outb(UART_ACR_TLENB, iobase + UART_LSR); /* disable ICR read access, enable trigger levels */ ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++ ++ return 0; ++} ++ ++ ++static void bt950_stop_uart(bt950_info_t *info) ++{ ++ unsigned long flags; ++ unsigned int iobase = info->link.io.BasePort1; ++ ++ spin_lock_irqsave(&(info->lock), flags); ++ ++ /* Disable interrupts */ ++ outb(0, iobase + UART_IER); ++ ++ /* Set RTS and OUT2 low */ ++ outb(0, iobase + UART_MCR); ++ ++ spin_unlock_irqrestore(&(info->lock), flags); ++} ++ ++ ++static int bt950_open(bt950_info_t *info) ++{ ++ struct hci_dev *hdev; ++ int err; ++ ++ spin_lock_init(&(info->lock)); ++ ++ skb_queue_head_init(&(info->txq)); ++ ++ info->rx_state = RECV_WAIT_PACKET_TYPE; ++ info->rx_count = 0; ++ info->rx_skb = NULL; ++ ++ /* Setup hardware */ ++ if ((err = bt950_setup_uart(info)) < 0) ++ return err; ++ ++ /* Timeout before it is safe to send the first HCI packet */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ schedule_timeout(HZ); ++ ++ ++ /* Initialize and register HCI device */ ++ ++ hdev = &(info->hdev); ++ ++ hdev->type = HCI_PCCARD; ++ hdev->driver_data = info; ++ ++ hdev->open = bt950_hci_open; ++ hdev->close = bt950_hci_close; ++ hdev->flush = bt950_hci_flush; ++ hdev->send = bt950_hci_send_frame; ++ hdev->destruct = bt950_hci_destruct; ++ hdev->ioctl = bt950_hci_ioctl; ++ ++ if (hci_register_dev(hdev) < 0) { ++ printk(KERN_ERR "bt950_cs: Can't register HCI device %s.\n", hdev->name); ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++ ++static int bt950_close(bt950_info_t *info) ++{ ++ struct hci_dev *hdev = &(info->hdev); ++ ++ bt950_hci_close(hdev); ++ ++ /* Stop hardware */ ++ bt950_stop_uart(info); ++ ++ if (hci_unregister_dev(hdev) < 0) ++ printk(KERN_ERR "bt950_cs: Can't unregister HCI device %s.\n", hdev->name); ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Card services ======================== */ ++ ++ ++static void cs_error(client_handle_t handle, int func, int ret) ++{ ++ error_info_t err = { func, ret }; ++ ++ CardServices(ReportError, handle, &err); ++} ++ ++ ++static dev_link_t *bt950_attach(void) ++{ ++ bt950_info_t *info; ++ client_reg_t client_reg; ++ dev_link_t *link; ++ int i, ret; ++ ++ /* Create new info device */ ++ info = kmalloc(sizeof(*info), GFP_KERNEL); ++ if (!info) ++ return NULL; ++ memset(info, 0, sizeof(*info)); ++ ++ link = &info->link; ++ link->priv = info; ++ ++ link->release.function = &bt950_release; ++ link->release.data = (u_long)link; ++ link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; ++ link->io.NumPorts1 = 8; ++ link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; ++ link->irq.IRQInfo1 = IRQ_INFO2_VALID | IRQ_LEVEL_ID; ++ ++ if (irq_list[0] == -1) ++ link->irq.IRQInfo2 = irq_mask; ++ else ++ for (i = 0; i < 4; i++) ++ link->irq.IRQInfo2 |= 1 << irq_list[i]; ++ ++ link->irq.Handler = bt950_interrupt; ++ link->irq.Instance = info; ++ ++ link->conf.Attributes = CONF_ENABLE_IRQ; ++ link->conf.IntType = INT_MEMORY_AND_IO; ++ link->conf.Present = ++ PRESENT_OPTION | PRESENT_STATUS | PRESENT_PIN_REPLACE | ++ PRESENT_COPY; ++ ++ /* Register with Card Services */ ++ link->next = dev_list; ++ dev_list = link; ++ client_reg.dev_info = &dev_info; ++ client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; ++ client_reg.EventMask = ++ CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | ++ CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | ++ CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; ++ client_reg.event_handler = &bt950_event; ++ client_reg.Version = 0x0210; ++ client_reg.event_callback_args.client_data = link; ++ ++ ret = CardServices(RegisterClient, &link->handle, &client_reg); ++ if (ret != CS_SUCCESS) { ++ cs_error(link->handle, RegisterClient, ret); ++ bt950_detach(link); ++ return NULL; ++ } ++ ++ return link; ++} ++ ++ ++static void bt950_detach(dev_link_t *link) ++{ ++ bt950_info_t *info = link->priv; ++ dev_link_t **linkp; ++ int ret; ++ ++ /* Locate device structure */ ++ for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) ++ if (*linkp == link) ++ break; ++ ++ if (*linkp == NULL) ++ return; ++ ++ del_timer(&link->release); ++ if (link->state & DEV_CONFIG) ++ bt950_release((u_long) link); ++ ++ if (link->handle) { ++ ret = CardServices(DeregisterClient, link->handle); ++ if (ret != CS_SUCCESS) ++ cs_error(link->handle, DeregisterClient, ret); ++ } ++ ++ /* Unlink device structure, free bits */ ++ *linkp = link->next; ++ ++ kfree(info); ++} ++ ++ ++static int get_tuple(int fn, client_handle_t handle, tuple_t *tuple, cisparse_t *parse) ++{ ++ int i; ++ ++ i = CardServices(fn, handle, tuple); ++ if (i != CS_SUCCESS) ++ return CS_NO_MORE_ITEMS; ++ ++ i = CardServices(GetTupleData, handle, tuple); ++ if (i != CS_SUCCESS) ++ return i; ++ ++ return CardServices(ParseTuple, handle, tuple, parse); ++} ++ ++ ++#define first_tuple(a, b, c) get_tuple(GetFirstTuple, a, b, c) ++#define next_tuple(a, b, c) get_tuple(GetNextTuple, a, b, c) ++ ++static void bt950_config(dev_link_t *link) ++{ ++ static ioaddr_t base[4] = { 0x2f8, 0x3e8, 0x2e8, 0x0 }; ++ client_handle_t handle = link->handle; ++ bt950_info_t *info = link->priv; ++ tuple_t tuple; ++ u_short buf[256]; ++ cisparse_t parse; ++ cistpl_cftable_entry_t *cf = &parse.cftable_entry; ++ config_info_t config; ++ int i, j, try, last_ret, last_fn; ++ ++ tuple.TupleData = (cisdata_t *)buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ ++ /* Get configuration register information */ ++ tuple.DesiredTuple = CISTPL_CONFIG; ++ last_ret = first_tuple(handle, &tuple, &parse); ++ if (last_ret != CS_SUCCESS) { ++ last_fn = ParseTuple; ++ goto cs_failed; ++ } ++ link->conf.ConfigBase = parse.config.base; ++ link->conf.Present = parse.config.rmask[0]; ++ ++ /* Configure card */ ++ link->state |= DEV_CONFIG; ++ i = CardServices(GetConfigurationInfo, handle, &config); ++ link->conf.Vcc = config.Vcc; ++ ++ /* First pass: look for a config entry that looks normal. */ ++ tuple.TupleData = (cisdata_t *) buf; ++ tuple.TupleOffset = 0; ++ tuple.TupleDataMax = 255; ++ tuple.Attributes = 0; ++ tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; ++ /* Two tries: without IO aliases, then with aliases */ ++ for (try = 0; try < 2; try++) { ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if (i != CS_SUCCESS) ++ goto next_entry; ++ if (cf->vpp1.present & (1 << CISTPL_POWER_VNOM)) ++ link->conf.Vpp1 = link->conf.Vpp2 = cf->vpp1.param[CISTPL_POWER_VNOM] / 10000; ++ if ((cf->io.nwin > 0) && (cf->io.win[0].len == 8) && (cf->io.win[0].base != 0)) { ++ link->conf.ConfigIndex = cf->index; ++ link->io.BasePort1 = cf->io.win[0].base; ++ link->io.IOAddrLines = (try == 0) ? 16 : cf->io.flags & CISTPL_IO_LINES_MASK; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++next_entry: ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ } ++ ++ /* Second pass: try to find an entry that isn't picky about ++ its base address, then try to grab any standard serial port ++ address, and finally try to get any free port. */ ++ i = first_tuple(handle, &tuple, &parse); ++ while (i != CS_NO_MORE_ITEMS) { ++ if ((i == CS_SUCCESS) && (cf->io.nwin > 0) ++ && ((cf->io.flags & CISTPL_IO_LINES_MASK) <= 3)) { ++ link->conf.ConfigIndex = cf->index; ++ for (j = 0; j < 5; j++) { ++ link->io.BasePort1 = base[j]; ++ link->io.IOAddrLines = base[j] ? 16 : 3; ++ i = CardServices(RequestIO, link->handle, &link->io); ++ if (i == CS_SUCCESS) ++ goto found_port; ++ } ++ } ++ i = next_tuple(handle, &tuple, &parse); ++ } ++ ++found_port: ++ if (i != CS_SUCCESS) { ++ printk(KERN_ERR "bt950_cs: No usable port range found. Giving up.\n"); ++ cs_error(link->handle, RequestIO, i); ++ goto failed; ++ } ++ ++ i = CardServices(RequestIRQ, link->handle, &link->irq); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestIRQ, i); ++ link->irq.AssignedIRQ = 0; ++ } ++ ++ i = CardServices(RequestConfiguration, link->handle, &link->conf); ++ if (i != CS_SUCCESS) { ++ cs_error(link->handle, RequestConfiguration, i); ++ goto failed; ++ } ++ ++ MOD_INC_USE_COUNT; ++ ++ if (bt950_open(info) != 0) ++ goto failed; ++ ++ strcpy(info->node.dev_name, info->hdev.name); ++ link->dev = &info->node; ++ link->state &= ~DEV_CONFIG_PENDING; ++ ++ return; ++ ++cs_failed: ++ cs_error(link->handle, last_fn, last_ret); ++ ++failed: ++ bt950_release((u_long)link); ++ link->state &= ~DEV_CONFIG_PENDING; ++} ++ ++ ++static void bt950_release(u_long arg) ++{ ++ dev_link_t *link = (dev_link_t *) arg; ++ bt950_info_t *info = link->priv; ++ ++ if (link->state & DEV_PRESENT) ++ bt950_close(info); ++ ++ MOD_DEC_USE_COUNT; ++ ++ link->dev = NULL; ++ ++ CardServices(ReleaseConfiguration, link->handle); ++ CardServices(ReleaseIO, link->handle, &link->io); ++ CardServices(ReleaseIRQ, link->handle, &link->irq); ++ ++ link->state &= ~DEV_CONFIG; ++} ++ ++ ++static int bt950_event(event_t event, int priority, event_callback_args_t *args) ++{ ++ dev_link_t *link = args->client_data; ++ bt950_info_t *info = link->priv; ++ ++ switch (event) { ++ case CS_EVENT_CARD_REMOVAL: ++ link->state &= ~DEV_PRESENT; ++ if (link->state & DEV_CONFIG) { ++ bt950_close(info); ++ link->state |= DEV_RELEASE_PENDING; ++ mod_timer(&link->release, jiffies + HZ / 20); ++ } ++ break; ++ case CS_EVENT_CARD_INSERTION: ++ link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; ++ bt950_config(link); ++ break; ++ case CS_EVENT_PM_SUSPEND: ++ link->state |= DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_RESET_PHYSICAL: ++ if (link->state & DEV_CONFIG) { ++ bt950_stop_uart(info); ++ CardServices(ReleaseConfiguration, link->handle); ++ } ++ break; ++ case CS_EVENT_PM_RESUME: ++ link->state &= ~DEV_SUSPEND; ++ /* Fall through... */ ++ case CS_EVENT_CARD_RESET: ++ if (link->state & DEV_CONFIG) { ++ CardServices(RequestConfiguration, link->handle, &link->conf); ++ bt950_setup_uart(info); ++ } ++ break; ++ } ++ ++ return 0; ++} ++ ++ ++ ++/* ======================== Module initialization ======================== */ ++ ++ ++int __init init_bt950_cs(void) ++{ ++ servinfo_t serv; ++ int err; ++ ++ CardServices(GetCardServicesInfo, &serv); ++ if (serv.Revision != CS_RELEASE_CODE) { ++ printk(KERN_NOTICE "bt950_cs: Card Services release does not match!\n"); ++// return -1; ++ } ++ ++ err = register_pccard_driver(&dev_info, &bt950_attach, &bt950_detach); ++ ++ return err; ++} ++ ++ ++void __exit exit_bt950_cs(void) ++{ ++ unregister_pccard_driver(&dev_info); ++ ++ while (dev_list != NULL) ++ bt950_detach(dev_list); ++} ++ ++ ++module_init(init_bt950_cs); ++module_exit(exit_bt950_cs); ++ ++EXPORT_NO_SYMBOLS; +diff -Nur linux-orig/drivers/bluetooth/Config.in linux/drivers/bluetooth/Config.in +--- linux-orig/drivers/bluetooth/Config.in 2004-02-16 08:45:33.000000000 +0300 ++++ linux/drivers/bluetooth/Config.in 2004-02-16 08:50:36.000000000 +0300 +@@ -21,7 +21,7 @@ + + dep_tristate 'HCI DTL1 (PC Card) driver' CONFIG_BLUEZ_HCIDTL1 $CONFIG_PCMCIA $CONFIG_BLUEZ + +-dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ ++# dep_tristate 'HCI BT3C (PC Card) driver' CONFIG_BLUEZ_HCIBT3C $CONFIG_PCMCIA $CONFIG_BLUEZ + + dep_tristate 'HCI BlueCard (PC Card) driver' CONFIG_BLUEZ_HCIBLUECARD $CONFIG_PCMCIA $CONFIG_BLUEZ + +@@ -29,5 +29,7 @@ + + dep_tristate 'HCI VHCI (Virtual HCI device) driver' CONFIG_BLUEZ_HCIVHCI $CONFIG_BLUEZ + ++dep_tristate 'HCI BT950 (BT950 device) driver' CONFIG_BLUEZ_BT950 $CONFIG_BLUEZ ++ + endmenu + +diff -Nur linux-orig/drivers/bluetooth/Makefile linux/drivers/bluetooth/Makefile +--- linux-orig/drivers/bluetooth/Makefile 2004-02-16 08:45:33.000000000 +0300 ++++ linux/drivers/bluetooth/Makefile 2004-02-16 08:50:47.000000000 +0300 +@@ -17,10 +17,12 @@ + obj-$(CONFIG_BLUEZ_HCIBFUSB) += bfusb.o + + obj-$(CONFIG_BLUEZ_HCIDTL1) += dtl1_cs.o +-obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o ++# obj-$(CONFIG_BLUEZ_HCIBT3C) += bt3c_cs.o + obj-$(CONFIG_BLUEZ_HCIBLUECARD) += bluecard_cs.o + obj-$(CONFIG_BLUEZ_HCIBTUART) += btuart_cs.o + ++obj-$(CONFIG_BLUEZ_BT950) += bt950_cs.o ++ + include $(TOPDIR)/Rules.make + + hci_uart.o: $(uart-y) diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch new file mode 100644 index 0000000000..554f118936 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/buffered-fbmem.patch @@ -0,0 +1,19 @@ + +# +# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux/drivers/video/fbmem.c~buffered-fbmem 2003-09-16 00:48:18.000000000 +0200 ++++ linux/drivers/video/fbmem.c 2003-09-19 00:38:00.000000000 +0200 +@@ -650,7 +650,11 @@ + pgprot_val(vma->vm_page_prot) &= ~_CACHE_MASK; + pgprot_val(vma->vm_page_prot) |= _CACHE_UNCACHED; + #elif defined(__arm__) ++#ifdef CONFIG_PXA ++ vma->vm_page_prot = pgprot_noncached_buffered(vma->vm_page_prot); ++#else + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); ++#endif + #ifdef CONFIG_POODLE_CONSISTENT_ALLOC + vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) | L_PTE_CACHEABLE); + #endif diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch new file mode 100644 index 0000000000..1a19b85daa --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/compile.patch @@ -0,0 +1,14 @@ +--- linux/include/linux/jffs2_fs_i.h.old 2003-02-01 00:24:48.000000000 -0600 ++++ linux/include/linux/jffs2_fs_i.h 2003-02-01 00:25:14.000000000 -0600 +@@ -48,9 +48,11 @@ + uint32_t nr_frags; + #endif + ++#ifdef KERNEL_VERSION + #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2) + struct inode vfs_inode; + #endif ++#endif + }; + + #endif /* _JFFS2_FS_I */ diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch new file mode 100644 index 0000000000..10d0f80b7f --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-default-brightness.patch @@ -0,0 +1,16 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/drivers/video/corgi_backlight.c~reduce-default-brightness-on-corgi ++++ linux/drivers/video/corgi_backlight.c +@@ -65,7 +65,7 @@ + static int is_corgibl_pm = 0; + + #define CORGI_LIGHT_SETTING 7 // range setting : 0(OFF) dim 1 2 3 4 5(MAX) +-#define CORGI_LIGHT_DEFAULT 6 ++#define CORGI_LIGHT_DEFAULT 3 + static int is_corgibl_blank = 0; + int counter_step_contrast = CORGI_LIGHT_DEFAULT; + static corgibl_limit = CORGI_LIGHT_SETTING - 1; diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch new file mode 100644 index 0000000000..4d3b42445b --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/corgi-fbcon-logo.patch @@ -0,0 +1,281 @@ +--- linux/drivers/video/w100fb.c 2004-11-04 12:44:29.000000000 -0600 ++++ linux/drivers/video/w100fb.c~corgi.patch 2004-11-04 12:50:27.000000000 -0600 +@@ -982,6 +982,17 @@ + #endif + #endif + ++#ifdef CONFIG_ARCH_SHARP_SL_E // English message ++#include "corgiLogoMsg.c" ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++static int logo_msg_xoff __initdata = 400; ++static int logo_msg_yoff __initdata = 100; ++#else ++static int logo_msg_xoff __initdata = 120; ++static int logo_msg_yoff __initdata = 500; ++#endif ++#endif ++ + #endif // CONFIG_ARCH_PXA_SHEPHERD + + #endif +--- /dev/null 2004-06-13 02:32:19.000000000 +0100 ++++ linux/drivers/video/corgiLogoMsg.c 2004-11-12 19:57:23.000000000 +0000 +@@ -0,0 +1,258 @@ ++/* Logo Screen 16bits RGB(565) data*/ ++#ifndef __initdata ++#define __initdata ++#endif ++ ++static int logo_msg_width __initdata = 30; ++static int logo_msg_height __initdata = 250; ++static unsigned short logo_msg_data[] __initdata ={ ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x738e,0x0020,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0020,0x528a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x18c3,0x738e,0x9cf3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x52aa,0x2104,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0x1082,0x18e3,0xef3d,0xffff,0xffff,0xffff,0xffff,0xe73c,0xbdf7,0xdebb,0xffdf,0xffff,0xffff,0xffdf,0x6b6d,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebd,0xad17,0x0000,0x5a8c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bb1,0xc5da,0xd67c,0xffbf,0xffff,0xef7d,0x0000,0x632c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xb558,0x0000,0x6b4e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x62ec,0xce1b,0xc5ba,0xce1b,0xffff,0xf7be,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0x18e3,0x2124,0xf79e,0xffff,0xffdf,0xf77e,0xef7d,0x2945,0x0000,0x10a2,0xe71c,0xdebd,0xc5ba,0xef1e,0x94b2,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdebd,0xffff,0x8c71,0x0000,0x2945,0x8430,0x9493,0x6b0e,0x2125,0x0000,0x94b2,0x0020,0x0841,0x526a,0x4209,0x3166,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdedd,0xffff,0xffff,0x8430,0x0020,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0xb596,0x18e3,0x0000,0x0000,0x0000,0x3186,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0xffff,0xffff,0xffff,0xe71c,0x9cd3,0x630d,0x6b4f,0xa4f6,0xffbf,0xffff,0xffff,0xffff,0xbdd8,0x9474,0xc5f9,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xce1b,0xe6fd,0xef3e,0xe6fd,0xce1b,0xc5ba,0xe71d,0xc5da,0xc5db,0xd67c,0xde9c,0xd63c,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5da,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xe6dd,0xffff,0xef5e,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xef1e,0xe6dd,0xe71d,0xf79f,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2124,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x4a69,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf79f,0xffff,0xffff,0x4a69,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xce1b,0xce1b,0xffff,0x4208,0x632c,0x2945,0x0000,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x0841,0xc618,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0x2104,0x5aeb,0xe73c,0x2965,0x0000,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xdebd,0xffff,0xffff,0xc618,0x0861,0x0861,0x94b2,0xffdf,0xffff,0xffff,0xd67c,0xc5ba,0x18e3,0x5aeb,0xffff,0xf79e,0x5aeb,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xe71d,0xffff,0xffff,0xc638,0x18e3,0x0000,0x18c3,0x6b6d,0x9494,0xc5fa,0xce1b,0x18c3,0x526a,0xffff,0xffff,0xffff,0xad55,0x10a2,0x0000,0x2124,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5db,0xf77e,0xffff,0xffff,0xf79e,0x8410,0x18e3,0x0000,0x0000,0x0000,0x0861,0x0000,0x4209,0xd63c,0xffbf,0xffff,0xffff,0xef7d,0x738e,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5db,0xc5db,0xe71d,0xffff,0xffff,0xffff,0xffff,0xc618,0x6b0e,0x4209,0x2945,0x0000,0x4a6a,0xc5ba,0xc5db,0xe6fd,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x8c13,0xcdfb,0xdebd,0xef5e,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xef3e,0xc5fb,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x528a,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xc5db,0xc5da,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffdf,0xdebd,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xf77e,0xe6fd,0xd67c,0xce1b,0xc5ba,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9492,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79e,0xef5e,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xbdf7,0x2124,0x0000,0x0841,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x528a,0xdefb,0xdefb,0xdefb,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0x8410,0x0020,0x0020,0x6b4d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffdf,0x5acb,0x0000,0x18e3,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xdefb,0x5aeb,0x4228,0x4228,0x4228,0x4228,0x4228,0x31a7,0x20e4,0x2104,0x2104,0x73ae,0x4a6a,0x0000,0x2946,0xbd79,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xd67c,0xf7bf,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xffff,0x6b4e,0x0000,0x3187,0xd65b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xde9c,0xffff,0x9473,0x0000,0x2105,0xe73d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xce1b,0xce1b,0xce1b,0xdebd,0xd67c,0x3166,0x0861,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xce1a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x4228,0xad55,0xffdf,0xd65c,0xc5fb,0xffbf,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce59,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0x2104,0x0000,0x10a2,0x630c,0xad55,0xf79e,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce79,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdebb,0xdefb,0xdefb,0xdefb,0xdefb,0xb5b6,0x6b6d,0x31a6,0x0000,0x0841,0x39c7,0x6b6d,0x1082,0x528a,0xdefb,0xdefb,0xce59,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x9493,0x83d1,0x7bb1,0x7bb1,0x8c32,0x94b3,0xa514,0x8430,0x2945,0x0000,0x18e3,0x9492,0x10a2,0x39c7,0x7bb1,0x94b3,0xa514,0x2945,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xef5e,0xdebd,0xbdb9,0x7b90,0x3187,0x0000,0x10a2,0x734f,0xce3b,0xf7bf,0x2104,0x5acb,0xc5ba,0xe71d,0xffff,0x7bcf,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x62ee,0x0000,0x0000,0x20e4,0x7370,0xbd9a,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x4209,0xc5ba,0xdebd,0xffff,0xbdd7,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef5e,0xef3e,0xef3e,0x8411,0x18e4,0xef3e,0xb577,0x526a,0x9c94,0xc5ba,0xce1b,0xe71d,0x8c33,0x9494,0xef3e,0xce3a,0xb5b7,0xb558,0xb578,0xdefb,0xdedb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xef1e,0xd65c,0xc5ba,0x0000,0x738e,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x736e,0x0000,0xc5ba,0xce1b,0xe71d,0x0000,0x7bef,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x62ec,0x83f1,0x9cf3,0x39c7,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe71d,0xce1b,0xffff,0x7baf,0x0000,0xf77e,0xffff,0xffff,0x0000,0x73af,0xef5e,0xffff,0x4208,0x4208,0xf7bf,0xd6bb,0x0000,0x9cd3,0xf7bf,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xc5ba,0xacf7,0x0000,0x7bb1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x62cd,0x736e,0x7bef,0x0000,0x3187,0x6b2e,0x7bef,0x2104,0x3187,0xdebc,0xce3a,0x0000,0x83f1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xe6dd,0x736e,0x0000,0xc5ba,0xd65c,0xe6dd,0x0000,0x630d,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xc5ba,0x62cd,0x0000,0xc5ba,0xc5ba,0xc5ba,0x0000,0x62cd,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x738f,0xb537,0xdefb,0x528a,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0xc638,0xbd98,0xd65c,0xffff,0x736e,0x5a8c,0xef3e,0xf79e,0xa514,0x8c32,0x83d1,0xa514,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xe71c,0xc638,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xe6fd,0xf7bf,0xf7bf,0xd67c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xdefb,0xdedb,0xf77e,0xffbf,0xffff,0xffff,0xdebd,0xdebd,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef5e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xf77e,0xffff,0x5aeb,0x0000,0x39e7,0x8c71,0xbdf7,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xe73c,0xb5b6,0x9492,0x7bef,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x528a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xd65c,0xbdd8,0x9493,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe71d,0xce3b,0xc5ba,0x2945,0x1082,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x4209,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x736e,0x0000,0xb577,0xde9c,0xde9c,0xd67c,0x9473,0x18e3,0xbdd9,0xde9c,0xde9c,0xde9c,0x4a4a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79f,0xef1e,0xffff,0xc618,0x0000,0x8430,0xffff,0xf7be,0x2965,0x528a,0x0000,0xdefb,0xa514,0x73af,0x7bef,0x2965,0x0861,0x738f,0xad75,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd63c,0xcdfb,0xffff,0xffff,0x18e3,0x39e7,0xffff,0x7bcf,0x0000,0x5aeb,0x0000,0xdefb,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xffff,0x73ae,0x0000,0xbdb7,0x0020,0x4a69,0xa514,0x0000,0xdefb,0x4a6a,0x10a3,0xdefb,0x4a69,0x10a3,0xce3a,0xd69a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xdefb,0x0000,0x10a2,0x0000,0xce59,0x9493,0x0000,0xc5f9,0x4a2a,0x18c3,0xe6dd,0x52ab,0x18c3,0xef3e,0xdefb,0x0000,0x39c7,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xd65c,0xffff,0xe6dd,0x39c8,0x0000,0x3187,0xf7bf,0x8c32,0x0000,0xacf7,0x4209,0x18c3,0xc5ba,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xc5db,0x630d,0x0000,0x62ed,0xf7bf,0x8c32,0x0000,0xd6bb,0x4a4a,0x18c3,0xf7bf,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0xcdfb,0xbd9a,0x1082,0x0000,0x1082,0xef7e,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xd65c,0xbdb8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0x8411,0x0000,0x6b4d,0x0000,0x8410,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xc5ba,0xacf7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0x39a7,0x1082,0xe6fd,0x4a2a,0x0861,0x736e,0x0000,0xdefb,0x4a6a,0x0020,0x4228,0x18c3,0x0020,0x39e8,0x94b2,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xb558,0x0000,0x5acb,0xef3e,0xb559,0x2104,0x0020,0x0000,0xdefb,0x62ed,0x18c3,0x2104,0x0861,0x0000,0x18e4,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9452,0x0000,0x9493,0xef3e,0xc5ba,0xce59,0x0841,0x0000,0xdefb,0xde9c,0xce1b,0xffff,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5fb,0x5aeb,0x0000,0xb558,0xe6fd,0xc5ba,0xf7bf,0xa515,0x62ed,0xc5fa,0xcdfb,0xc5db,0xd65c,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffdf,0xc5da,0xde9c,0x5aeb,0x2124,0xce1b,0xc5db,0xc5ba,0xf7bf,0xdebd,0xce1b,0xce1b,0xc5db,0xc5da,0xce1b,0x7bcf,0x4209,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef3e,0xffff,0xef7d,0xf79f,0xc5db,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9cd3,0x7bef,0xa534,0xef7d,0xffff,0xe6fd,0xde9c,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xad55,0x0861,0x0000,0x0000,0x0000,0x1082,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0841,0x1082,0xa534,0xdefb,0xad75,0x2965,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x6b4e,0x0000,0xa535,0xffdf,0xffff,0xffff,0xf79e,0x2965,0x0841,0xdefb,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5db,0x4209,0x0000,0xbd9a,0xc5fb,0xef1e,0xffff,0xffff,0xd69a,0x0000,0x630c,0xe71d,0xce1b,0xffbf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5fb,0x83f0,0x0000,0x4a6a,0x8c32,0x9474,0xb576,0xc638,0xc638,0x3186,0x0861,0xad56,0x9474,0xbdf8,0x630c,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xef5e,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xffff,0xffff,0xd6ba,0xad75,0x9cd3,0x7bb1,0x8c32,0xa514,0x8430,0x0000,0x528a,0x7bb1,0x9cf3,0x528a,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0xef5e,0xef3d,0xf77e,0xf77e,0xf77e,0xce3b,0xc5db,0xf77e,0xef5e,0x0000,0x5aac,0xc5ba,0xef3e,0x7baf,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0x4a2a,0x20e4,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x3187,0xc5ba,0xc5ba,0x62cd,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x41e8,0x0841,0xef3e,0xef3e,0xef3e,0xe6fd,0xc5ba,0xde9c,0xef3e,0x18e4,0x39a7,0xc5ba,0xe6fd,0x738f,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xef5d,0xffff,0xffff,0xffff,0xc5ba,0xdebc,0xffff,0x1082,0x4229,0xc5ba,0xf7bf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0x8c71,0x0000,0xb596,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xdefb,0x0000,0x630d,0xc5ba,0xf7bf,0xe71c,0xc638,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0xd69a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xce1b,0xd65c,0x8410,0x0000,0xa515,0xc5ba,0xf7bf,0xffff,0x94b2,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0x2965,0x0020,0xc618,0xffff,0xffff,0xc5fb,0xad57,0x0861,0x2124,0xdebc,0xc5ba,0xf7bf,0x8c71,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xef5e,0xffff,0xce59,0x0020,0x0861,0x73ae,0x9cf3,0x526b,0x0020,0x0861,0xc638,0xffbf,0xf77e,0x7bef,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xde9c,0xffff,0xffff,0xb5b6,0x2104,0x0000,0x0000,0x0000,0x3186,0xd69a,0xffff,0xffff,0xce5a,0x18a3,0x39e7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xce39,0x9474,0xb578,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xbd98,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xc5da,0xc5db,0xdedd,0xef3e,0xdebc,0xc5db,0xc5db,0xf77e,0xffff,0xffff,0xe6dd,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xd63b,0xf79f,0xd6ba,0xffff,0xffdf,0xcdfb,0xd65c,0xffdf,0xef5d,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xffbf,0xffff,0x9cd3,0x0020,0xad55,0xffff,0xffbf,0xffff,0xffdf,0x39e7,0x4a69,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x0000,0x8430,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x4228,0x0000,0x0000,0x4228,0xe71c,0xffff,0xffdf,0x7bef,0x0000,0x1082,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x7bef,0xef7d,0xffff,0xbdf7,0x2104,0x0000,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xcdfb,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xad57,0x2925,0x0000,0x1082,0xd69a,0xffff,0xf7be,0x8410,0x0841,0xdedb,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdebd,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xd65c,0xc5ba,0xc5ba,0xd65c,0xffbf,0xffff,0xffff,0xe6dd,0x83d1,0x39a7,0xe6fd,0xffff,0xffff,0xffff,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x3187,0x7bb1,0xe6dd,0xffdf,0x5aeb,0x2104,0xce1b,0xc5ba,0xa516,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x6b0d,0xc5ba,0xc5fb,0x5acb,0x2104,0xffff,0xe6dd,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x4228,0xffdf,0x0000,0x7bef,0xef3e,0xd65c,0x5aeb,0x2104,0xffff,0xffff,0x9cf4,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x5aeb,0x0000,0x10a3,0xd6ba,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x2104,0xe6dd,0xffdf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x39a8,0xc61a,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xb577,0xa514,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x10a3,0x9474,0xbdf8,0x7bef,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd67c,0xacf7,0xcdfb,0xf79f,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0x20e4,0x4a4a,0xffbf,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x1082,0x7bb1,0x9cf3,0x632c,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x18e4,0x5aeb,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xcdfb,0xf77e,0x5aab,0x18e3,0xc5ba,0xef3e,0x9cb3,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xffff,0x2104,0x4228,0xc638,0xc638,0x9474,0xad56,0xc638,0x0000,0x528b,0x9474,0x9474,0x31a7,0x18c3,0xc5ba,0xc5ba,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xc5ba,0xe6fd,0x9493,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xf79e,0xa534,0xa514,0xa514,0x7bb1,0x8c52,0xa514,0x0000,0x4209,0x83d1,0xa514,0x39c7,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xd65c,0xf77e,0xf77e,0xf77e,0xf77e,0xf77e,0xc5ba,0xde9c,0xf77e,0x0000,0x6b2e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xb5b6,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xdedb,0xb5b7,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xc5ba,0xd67c,0xef3e,0xef3e,0xd65c,0xce1b,0xffff,0xffff,0xef3e,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xef5e,0xa4d5,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0841,0x4a69,0x9cf3,0xe73c,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x18c3,0x1082,0x0000,0x0000,0x3186,0x5aeb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0xd6bb,0xef5e,0xffff,0xf79e,0x3186,0x0020,0xce79,0xa4f4,0x41e9,0x0841,0x0000,0x0000,0x0861,0x528a,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xbdb8,0xc5ba,0xc5db,0xd67c,0xce5a,0x0861,0x4208,0xf77e,0xc5ba,0xe6fd,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0861,0xdebc,0xc5ba,0xcdfb,0xc5fb,0xc5ba,0x62ed,0x0000,0xa4f5,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xef5d,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffbf,0x2965,0x31a6,0xffff,0xce3b,0xc5da,0xf79e,0xef3e,0xce1a,0x0020,0x4209,0xc5ba,0xc5db,0xa4f5,0x0000,0x9cf4,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf7bf,0x2104,0x4228,0xffff,0xffbf,0xc5db,0xd65c,0xffff,0xffff,0x4229,0x10a2,0xc5ba,0xcdfb,0x9474,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0x2104,0x4228,0xffff,0xffff,0xe6dd,0xc5ba,0xf77e,0xffff,0x738e,0x0000,0xb558,0xef3e,0xc5f8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce3b,0xce3b,0xffff,0x4208,0x18e3,0xffff,0xffff,0xffdf,0xc5db,0xde9c,0xffff,0x7bef,0x0000,0xacf7,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0x632c,0x0000,0xef5d,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x6b4d,0x0000,0xb559,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0xad55,0x0000,0x9cd3,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0x2124,0x2104,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xf7be,0x10a2,0x2104,0xf79e,0xffff,0xe6dd,0xc5ba,0xa4f4,0x0000,0x6b4d,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xffdf,0xffff,0x9492,0x0000,0x4228,0xdedb,0xde9c,0x83d1,0x0861,0x10a2,0xdedc,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x1082,0xc618,0xf77e,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0xffff,0xffff,0xbdd7,0x630d,0x4209,0x7bd0,0xef5d,0xffff,0xf77e,0xc5ba,0xef3e,0xe71c,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xf7bf,0xffff,0xef3e,0xc5db,0xc5fb,0xffdf,0xffff,0xffff,0xf77e,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5fb,0xf77e,0xffff,0xe71c,0x8430,0xbdd8,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7e,0xdebd,0xde9c,0xe71d,0xffdf,0xffff,0xe73c,0x18c3,0x0000,0x0020,0xb557,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0x73ae,0x0020,0x3186,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc619,0x0020,0x528a,0xffff,0x7bcf,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xcdfb,0x41e9,0x0000,0xc639,0xffff,0xf7be,0x2104,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0x9474,0x0000,0x39c8,0xce3b,0xffff,0xffff,0xb596,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0x2104,0x0020,0xc5f9,0xc5ba,0xe71d,0xffff,0xffff,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x62cd,0x0000,0x6b6d,0xffff,0xce1b,0xc5fb,0xffbf,0xffff,0xe71c,0x1082,0x10a2,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x0000,0x18c3,0xef7d,0xffff,0xef5e,0xc5ba,0xd67c,0xffff,0xffff,0x94b2,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fa,0x2105,0x0000,0xad55,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xef3e,0xffff,0xffff,0x39c7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0x524b,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5fb,0xffdf,0xffff,0xdedb,0x0841,0x0861,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0x7bb1,0x0000,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd67c,0xffff,0xffff,0x9492,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5acd,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xef3e,0xffff,0xffff,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xd67c,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5db,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xcdfb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5da,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x528a,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x0000,0x0000,0x39e7,0xa534,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x5aeb,0x0861,0x0000,0x0861,0x52aa,0xa514,0xe73c,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79e,0xd67c,0xf79f,0xffff,0xffff,0xffff,0xf79e,0xa534,0x52aa,0x0861,0x0000,0x0000,0x2104,0x39c8,0x7bd0,0x8410,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xc5ba,0xd65c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x7bcf,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xde9c,0xc5db,0xc5ba,0xc5db,0xd67c,0xef3e,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xbdf8,0x8c51,0x0000,0x4208,0x4a69,0x2945,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd4,0x1082,0x0841,0x528c,0xbd79,0xce1b,0xd67c,0xe6fd,0xe6dd,0xc5ba,0xe6fd,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0841,0x0020,0x10a2,0x1082,0xd65b,0xd65c,0xc5db,0x9474,0x62cd,0xb559,0xc5ba,0x9474,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x9cf3,0xffdf,0xbdf7,0xffff,0xffff,0xffff,0x7bf0,0x0000,0x9454,0xd65c,0xa4f5,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5fb,0x4a29,0x0000,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x7bb1,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5db,0xc5da,0x3187,0x10a3,0xffdf,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xce79,0x0000,0x62ed,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xef1e,0x4228,0x2104,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xf77e,0xdefb,0x0000,0x62cd,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x4228,0x18e3,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xef3e,0xdefb,0x0000,0x62cd,0xef3e,0xe71c,0x7bef,0xd69a,0xf7be,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x5acb,0x0000,0xffdf,0xffff,0xffff,0xf79e,0xc5ba,0xe6fd,0xc638,0x0000,0x7370,0xef3e,0xffff,0xe71c,0x630c,0x10a2,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xce1b,0xffff,0x738e,0x0000,0xd69a,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0xad55,0x0000,0x8c12,0xef3e,0xffff,0xf79e,0x1082,0x528a,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xa534,0x0000,0x94b2,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0x9cf3,0x2104,0xbdd9,0xf79f,0xffff,0xffdf,0xf7be,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xdedb,0x5aeb,0xbdf7,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0xffff,0xffff,0xffbf,0xde9c,0xc5fb,0xd67c,0xbdf7,0x4a69,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef5e,0xffff,0xffff,0xffff,0xc5fb,0xd67c,0xef5e,0xa534,0x18e3,0x73ae,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef1e,0xce1b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xd67c,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0x528a,0x4228,0x738e,0xe71c,0xffff,0xffff,0xffff,0xef3e,0xcdfb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0x18c3,0x0000,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x632c,0xf7be,0xffff,0xb5b6,0x0841,0x3186,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x10a2,0x20e4,0xdebc,0xffbf,0xffff,0xffff,0x73ae,0x0000,0xbdd7,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x9474,0x0000,0x7370,0xc5ba,0xcdfb,0xf7bf,0xffff,0xd6ba,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0x7bd0,0x0000,0xd69a,0xef5e,0xc5db,0xce3b,0xffff,0xffff,0x1082,0x4a49,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0x6b6d,0x0000,0xf79e,0xffff,0xdedd,0xc5ba,0xef7e,0xffff,0x2104,0x4228,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0x5aeb,0x0000,0xffff,0xffff,0xf7bf,0xc5ba,0xdebd,0xffff,0x10a2,0x4a69,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf79f,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xc5fb,0xd65c,0xe71c,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffff,0x6b6d,0x0000,0xe73c,0xffff,0xffff,0xce1b,0xd65c,0x9cd3,0x0000,0xb596,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xdedb,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x9492,0x0000,0xbdf7,0xffff,0xffff,0xc5fb,0xd67c,0x2965,0x1082,0xf7be,0xc5ba,0xde9c,0xd69a,0x0000,0x0841,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xbdf7,0x0000,0x8430,0xffff,0xffbf,0xc5ba,0x8c52,0x0000,0x8410,0xf7be,0x7370,0x2945,0x0000,0x0000,0x18c3,0x6b6d,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0xf7be,0x4228,0x6b4d,0xffff,0xe71d,0xbd79,0x18c3,0x1082,0x6b6d,0x10a2,0x0000,0x0861,0x632d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf77e,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5aac,0x0000,0x0000,0x0000,0x2124,0x7370,0xbd9a,0xc5ba,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9cb4,0x0000,0x2945,0x8c33,0xc5ba,0xc5ba,0xcdfb,0xdebd,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xdebc,0xffff,0xffff,0xffff,0xcdfb,0xc5fb,0xdebd,0x9474,0xc5ba,0xc5fb,0xdebc,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xe71d,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xef5e,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xb596,0x9cf3,0x7bef,0x7bef,0x736e,0x73af,0xa514,0xad55,0xc638,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x632c,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x18e3,0x632c,0xa514,0xc638,0xdefb,0xdefb,0xdefb,0xd69a,0xc638,0x9cf3,0x738e,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0020,0x18c3,0x9cd4,0xe6fd,0xe6dd,0xe6dd,0xe6dd,0xe6dd,0xef3e,0xef3e,0xf77e,0xffbf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x8c32,0x0000,0x4a2a,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5da,0xa4d6,0x0000,0x0000,0x4a49,0xb576,0xef7e,0xf7bf,0xf7bf,0xf79f,0xf77e,0xef1e,0xdebd,0xe6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5da,0xcdfb,0xef3e,0x94b2,0x1082,0x0000,0x0000,0x2104,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xde9c,0xffff,0xffff,0xef7d,0x94b2,0x4208,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xc5ba,0xd67c,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5fb,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71d,0xd65c,0xe6dd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0x18e3,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad55,0x52aa,0x0841,0x0000,0x0841,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xd69a,0xbdd7,0x94b2,0x6b4d,0x39c7,0x0020,0x0000,0x0000,0x2104,0x8c51,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630d,0x9c94,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x4228,0x630c,0x8430,0xad35,0xc5fa,0xc5db,0xc5ba,0xc5db,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xf79f,0xef7e,0xe71d,0xdebc,0xd63c,0xc5da,0xc5ba,0xc5ba,0xce1b,0xe6fd,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xdebd,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xd65c,0xde9c,0xe6fd,0xef5e,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0x8c51,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x8c71,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi new file mode 100644 index 0000000000..0b9b2571e1 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-corgi @@ -0,0 +1,1304 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +# CONFIG_ARCH_PXA_POODLE is not set +# CONFIG_POODLE_TR0 is not set +CONFIG_ARCH_PXA_CORGI=y +# CONFIG_CORGI_TR0 is not set +CONFIG_CORGI_LCD_BUFF=y +# CONFIG_ARCH_PXA_SHEPHERD is not set +# CONFIG_ARCH_PXA_HUSKY is not set +# CONFIG_ARCH_PXA_BOXER is not set +# CONFIG_ARCH_PXA_TOSA is not set +# CONFIG_ARCH_PXA_TOSA_SKIP is not set +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +# CONFIG_SL_CCCR242 is not set +# CONFIG_SL_CCCR162 is not set + +# +# Language type +# +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +CONFIG_XSCALE_CACHE_ERRATA=y +CONFIG_ARM_THUMB=y +# CONFIG_ARM_FCSE is not set +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_CORGI_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_CORGI=y +CONFIG_MTD_NAND_SHARP_SL=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_LIMIT is not set +# CONFIG_IP_NF_MATCH_MAC is not set +# CONFIG_IP_NF_MATCH_MARK is not set +# CONFIG_IP_NF_MATCH_MULTIPORT is not set +# CONFIG_IP_NF_MATCH_TOS is not set +# CONFIG_IP_NF_MATCH_AH_ESP is not set +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_MATCH_TCPMSS is not set +# CONFIG_IP_NF_MATCH_UNCLEAN is not set +# CONFIG_IP_NF_MATCH_OWNER is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_MIRROR is not set +# CONFIG_IP_NF_MANGLE is not set +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_NF_TARGET_TCPMSS is not set +CONFIG_IPV6=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_LIMIT is not set +# CONFIG_IP6_NF_MATCH_MAC is not set +# CONFIG_IP6_NF_MATCH_MULTIPORT is not set +# CONFIG_IP6_NF_MATCH_OWNER is not set +# CONFIG_IP6_NF_MATCH_MARK is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_LOG=y +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +CONFIG_IPSEC=m + +# +# IPSec options (Openswan) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +# CONFIG_IPSEC_ENC_AES is not set +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set + +# +# Wireless Pcmcia cards support +# +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +CONFIG_SERIAL_SL_SERIES=y +# CONFIG_SL_TS_PRESSURE is not set +# CONFIG_BOOT_PRESSURE_ON is not set +CONFIG_SL7X0_POWER_KEY_OFF=y +CONFIG_BOOT_POWER_KEY_OFF=y +# CONFIG_SL_3BUTTON_PATCH is not set +# CONFIG_BOOT_3BUTTON_PATCH_ON is not set +# CONFIG_SL_WRITE_TS is not set +# CONFIG_BLUETOOTH_SL is not set +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +CONFIG_ADS7846_TS=y +# CONFIG_TOSA_TS is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +# CONFIG_FB_POODLE is not set +CONFIG_FB_CORGI=y +# CONFIG_FB_TOSA is not set +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_ROTATE_R=y +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +# CONFIG_SOUND_POODLE is not set +CONFIG_SOUND_CORGI=y +# CONFIG_SOUND_TOSA is not set +# CONFIG_BUZZER_TOSA is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_OHCI_TC6393 is not set +# CONFIG_USB_USE_INTERNAL_MEMORY is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set + +# +# USB Bluetooth can only be used with disabled Bluetooth subsystem +# + +# +# SCSI support is needed for USB Storage +# +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=8007 +CONFIG_USBD_PRODUCT_NAME="SL-C700" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m + +# +# +# +# CONFIG_USBD_PROCFS is not set + +# +# USB Device functions +# + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=8007 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400001000002" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=0000 +CONFIG_USBD_STORAGE_PRODUCTID=0000 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="SL-C700" + +# +# USB Device bus interfaces +# + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=y +CONFIG_BLUEZ_L2CAP=y +CONFIG_BLUEZ_SCO=y +CONFIG_BLUEZ_RFCOMM=y +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=y +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUSB_SCO=y +CONFIG_BLUEZ_HCIUART=y +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIBFUSB=m +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky new file mode 100644 index 0000000000..ddcc8bb9f1 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-husky @@ -0,0 +1,1304 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +# CONFIG_ARCH_PXA_POODLE is not set +# CONFIG_POODLE_TR0 is not set +CONFIG_ARCH_PXA_CORGI=y +# CONFIG_CORGI_TR0 is not set +CONFIG_CORGI_LCD_BUFF=y +CONFIG_ARCH_PXA_SHEPHERD=y +CONFIG_ARCH_PXA_HUSKY=y +CONFIG_ARCH_PXA_BOXER=y +# CONFIG_ARCH_PXA_TOSA is not set +# CONFIG_ARCH_PXA_TOSA_SKIP is not set +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +# CONFIG_SL_CCCR242 is not set +# CONFIG_SL_CCCR162 is not set + +# +# Language type +# +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +# CONFIG_XSCALE_CACHE_ERRATA is not set +CONFIG_ARM_THUMB=y +CONFIG_ARM_FCSE=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_CORGI_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_CORGI=y +CONFIG_MTD_NAND_SHARP_SL=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_LIMIT is not set +# CONFIG_IP_NF_MATCH_MAC is not set +# CONFIG_IP_NF_MATCH_MARK is not set +# CONFIG_IP_NF_MATCH_MULTIPORT is not set +# CONFIG_IP_NF_MATCH_TOS is not set +# CONFIG_IP_NF_MATCH_AH_ESP is not set +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_MATCH_TCPMSS is not set +# CONFIG_IP_NF_MATCH_UNCLEAN is not set +# CONFIG_IP_NF_MATCH_OWNER is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_MIRROR is not set +# CONFIG_IP_NF_MANGLE is not set +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_NF_TARGET_TCPMSS is not set +CONFIG_IPV6=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_LIMIT is not set +# CONFIG_IP6_NF_MATCH_MAC is not set +# CONFIG_IP6_NF_MATCH_MULTIPORT is not set +# CONFIG_IP6_NF_MATCH_OWNER is not set +# CONFIG_IP6_NF_MATCH_MARK is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_LOG=y +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +CONFIG_IPSEC=m + +# +# IPSec options (Openswan) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +# CONFIG_IPSEC_ENC_AES is not set +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set + +# +# Wireless Pcmcia cards support +# +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +CONFIG_SERIAL_SL_SERIES=y +# CONFIG_SL_TS_PRESSURE is not set +# CONFIG_BOOT_PRESSURE_ON is not set +CONFIG_SL7X0_POWER_KEY_OFF=y +CONFIG_BOOT_POWER_KEY_OFF=y +# CONFIG_SL_3BUTTON_PATCH is not set +# CONFIG_BOOT_3BUTTON_PATCH_ON is not set +# CONFIG_SL_WRITE_TS is not set +# CONFIG_BLUETOOTH_SL is not set +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +CONFIG_ADS7846_TS=y +# CONFIG_TOSA_TS is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +# CONFIG_FB_POODLE is not set +CONFIG_FB_CORGI=y +# CONFIG_FB_TOSA is not set +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_ROTATE_R=y +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +# CONFIG_SOUND_POODLE is not set +CONFIG_SOUND_CORGI=y +# CONFIG_SOUND_TOSA is not set +# CONFIG_BUZZER_TOSA is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_OHCI_TC6393 is not set +# CONFIG_USB_USE_INTERNAL_MEMORY is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set + +# +# USB Bluetooth can only be used with disabled Bluetooth subsystem +# + +# +# SCSI support is needed for USB Storage +# +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=8007 +CONFIG_USBD_PRODUCT_NAME="SL-C750" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m + +# +# +# +# CONFIG_USBD_PROCFS is not set + +# +# USB Device functions +# + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=8007 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400001000002" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=0000 +CONFIG_USBD_STORAGE_PRODUCTID=0000 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="SL-C760" + +# +# USB Device bus interfaces +# + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=y +CONFIG_BLUEZ_L2CAP=y +CONFIG_BLUEZ_SCO=y +CONFIG_BLUEZ_RFCOMM=y +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=y +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUSB_SCO=y +CONFIG_BLUEZ_HCIUART=y +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIBFUSB=m +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle new file mode 100644 index 0000000000..e318a9f427 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle @@ -0,0 +1,1158 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +CONFIG_ARCH_PXA_POODLE=y +# CONFIG_POODLE_TR0 is not set +# CONFIG_ARCH_PXA_CORGI is not set +# CONFIG_CORGI_TR0 is not set +# CONFIG_CORGI_LCD_BUFF is not set +# CONFIG_ARCH_PXA_SHEPHERD is not set +# CONFIG_ARCH_PXA_HUSKY is not set +# CONFIG_ARCH_PXA_BOXER is not set +# CONFIG_ARCH_PXA_TOSA is not set +# CONFIG_ARCH_PXA_TOSA_SKIP is not set +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +CONFIG_SL_CCCR242=y +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +CONFIG_XSCALE_CACHE_ERRATA=y +CONFIG_ARM_THUMB=y +CONFIG_ARM_FCSE=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_POODLE_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_POODLE=y +CONFIG_MTD_NAND_SHARP_SL=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +# CONFIG_IPSEC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set +# CONFIG_DONGLE is not set +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +CONFIG_INPUT_UINPUT=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +CONFIG_SERIAL_SL_SERIES=y +# CONFIG_SL_TS_PRESSURE is not set +# CONFIG_BOOT_PRESSURE_ON is not set +# CONFIG_SL7X0_POWER_KEY_OFF is not set +# CONFIG_BOOT_POWER_KEY_OFF is not set +# CONFIG_SL_3BUTTON_PATCH is not set +# CONFIG_BOOT_3BUTTON_PATCH_ON is not set +# CONFIG_SL_WRITE_TS is not set +# CONFIG_BLUETOOTH_SL is not set +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +CONFIG_ADS7846_TS=y +# CONFIG_TOSA_TS is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +CONFIG_FB_POODLE=y +CONFIG_POODLE_CONSISTENT_ALLOC=y +# CONFIG_FB_CORGI is not set +# CONFIG_FB_TOSA is not set +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_ROTATE_R=y +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_5x8 is not set +CONFIG_FONT_4x6=y +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +CONFIG_SOUND_POODLE=y +# CONFIG_SOUND_CORGI is not set +# CONFIG_SOUND_TOSA is not set +# CONFIG_BUZZER_TOSA is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_OHCI_TC6393 is not set +# CONFIG_USB_USE_INTERNAL_MEMORY is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=8006 +CONFIG_USBD_PRODUCT_NAME="SL-5600" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m +# CONFIG_USBD_PROCFS is not set + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=8006 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400001000002" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=0000 +CONFIG_USBD_STORAGE_PRODUCTID=0000 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1" + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=m +CONFIG_BLUEZ_L2CAP=m +CONFIG_BLUEZ_SCO=m +CONFIG_BLUEZ_RFCOMM=m +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=m +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUSB_SCO=y +CONFIG_BLUEZ_HCIUART=m +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIBFUSB=m +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255 b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255 new file mode 100644 index 0000000000..5115729ed7 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-poodle255 @@ -0,0 +1,1158 @@ +# +# Automatically generated by make menuconfig: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +CONFIG_ARCH_PXA_POODLE=y +# CONFIG_POODLE_TR0 is not set +# CONFIG_ARCH_PXA_CORGI is not set +# CONFIG_CORGI_TR0 is not set +# CONFIG_CORGI_LCD_BUFF is not set +# CONFIG_ARCH_PXA_SHEPHERD is not set +# CONFIG_ARCH_PXA_HUSKY is not set +# CONFIG_ARCH_PXA_BOXER is not set +# CONFIG_ARCH_PXA_TOSA is not set +# CONFIG_ARCH_PXA_TOSA_SKIP is not set +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +CONFIG_SL_CCCR242=y +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +#CONFIG_XSCALE_CACHE_ERRATA is not set +CONFIG_ARM_THUMB=y +CONFIG_ARM_FCSE=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +CONFIG_BINFMT_AOUT=y +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_POODLE_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_POODLE=y +CONFIG_MTD_NAND_SHARP_SL=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_BLK_DEV_INITRD=y + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_COMPAT_IPCHAINS is not set +# CONFIG_IP_NF_COMPAT_IPFWADM is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +# CONFIG_IPSEC is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set +# CONFIG_DONGLE is not set +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=m +CONFIG_INPUT_KEYBDEV=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +CONFIG_INPUT_UINPUT=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +CONFIG_SERIAL_SL_SERIES=y +# CONFIG_SL_TS_PRESSURE is not set +# CONFIG_BOOT_PRESSURE_ON is not set +# CONFIG_SL7X0_POWER_KEY_OFF is not set +# CONFIG_BOOT_POWER_KEY_OFF is not set +# CONFIG_SL_3BUTTON_PATCH is not set +# CONFIG_BOOT_3BUTTON_PATCH_ON is not set +# CONFIG_SL_WRITE_TS is not set +# CONFIG_BLUETOOTH_SL is not set +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +CONFIG_ADS7846_TS=y +# CONFIG_TOSA_TS is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +CONFIG_FB_POODLE=y +CONFIG_POODLE_CONSISTENT_ALLOC=y +# CONFIG_FB_CORGI is not set +# CONFIG_FB_TOSA is not set +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_ROTATE_R=y +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +# CONFIG_FONT_8x8 is not set +# CONFIG_FONT_8x16 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_5x8 is not set +CONFIG_FONT_4x6=y +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +CONFIG_SOUND_POODLE=y +# CONFIG_SOUND_CORGI is not set +# CONFIG_SOUND_TOSA is not set +# CONFIG_BUZZER_TOSA is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_OHCI_TC6393 is not set +# CONFIG_USB_USE_INTERNAL_MEMORY is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=8006 +CONFIG_USBD_PRODUCT_NAME="SL-5600" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m +# CONFIG_USBD_PROCFS is not set + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=8006 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400001000002" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=0000 +CONFIG_USBD_STORAGE_PRODUCTID=0000 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1" + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=m +CONFIG_BLUEZ_L2CAP=m +CONFIG_BLUEZ_SCO=m +CONFIG_BLUEZ_RFCOMM=m +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=m +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUSB_SCO=y +CONFIG_BLUEZ_HCIUART=m +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIBFUSB=m +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd new file mode 100644 index 0000000000..72da41cf56 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-shepherd @@ -0,0 +1,1303 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +# CONFIG_ARCH_PXA_POODLE is not set +# CONFIG_POODLE_TR0 is not set +CONFIG_ARCH_PXA_CORGI=y +# CONFIG_CORGI_TR0 is not set +CONFIG_CORGI_LCD_BUFF=y +CONFIG_ARCH_PXA_SHEPHERD=y +# CONFIG_ARCH_PXA_HUSKY is not set +# CONFIG_ARCH_PXA_BOXER is not set +# CONFIG_ARCH_PXA_TOSA is not set +# CONFIG_ARCH_PXA_TOSA_SKIP is not set +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +# CONFIG_SL_CCCR242 is not set +# CONFIG_SL_CCCR162 is not set + +# +# Language type +# +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +# CONFIG_XSCALE_CACHE_ERRATA is not set +CONFIG_ARM_THUMB=y +CONFIG_ARM_FCSE=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_CORGI_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_CORGI=y +CONFIG_MTD_NAND_SHARP_SL=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_LIMIT is not set +# CONFIG_IP_NF_MATCH_MAC is not set +# CONFIG_IP_NF_MATCH_MARK is not set +# CONFIG_IP_NF_MATCH_MULTIPORT is not set +# CONFIG_IP_NF_MATCH_TOS is not set +# CONFIG_IP_NF_MATCH_AH_ESP is not set +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_MATCH_TCPMSS is not set +# CONFIG_IP_NF_MATCH_UNCLEAN is not set +# CONFIG_IP_NF_MATCH_OWNER is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_MIRROR is not set +# CONFIG_IP_NF_MANGLE is not set +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_NF_TARGET_TCPMSS is not set +CONFIG_IPV6=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_LIMIT is not set +# CONFIG_IP6_NF_MATCH_MAC is not set +# CONFIG_IP6_NF_MATCH_MULTIPORT is not set +# CONFIG_IP6_NF_MATCH_OWNER is not set +# CONFIG_IP6_NF_MATCH_MARK is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_LOG=y +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +CONFIG_IPSEC=m + +# +# IPSec options (Openswan) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +# CONFIG_IPSEC_ENC_AES is not set +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set + +# +# Wireless Pcmcia cards support +# +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +# CONFIG_SCSI is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +# CONFIG_INPUT is not set +# CONFIG_INPUT_KEYBDEV is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_SERIAL_CONSOLE=y +CONFIG_SERIAL_SL_SERIES=y +# CONFIG_SL_TS_PRESSURE is not set +# CONFIG_BOOT_PRESSURE_ON is not set +CONFIG_SL7X0_POWER_KEY_OFF=y +CONFIG_BOOT_POWER_KEY_OFF=y +# CONFIG_SL_3BUTTON_PATCH is not set +# CONFIG_BOOT_3BUTTON_PATCH_ON is not set +# CONFIG_SL_WRITE_TS is not set +# CONFIG_BLUETOOTH_SL is not set +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set + +# +# Input core support is needed for gameports +# + +# +# Input core support is needed for joysticks +# +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +CONFIG_ADS7846_TS=y +# CONFIG_TOSA_TS is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +# CONFIG_FB_POODLE is not set +CONFIG_FB_CORGI=y +# CONFIG_FB_TOSA is not set +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +CONFIG_FBCON_ROTATE_R=y +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +# CONFIG_SOUND_POODLE is not set +CONFIG_SOUND_CORGI=y +# CONFIG_SOUND_TOSA is not set +# CONFIG_BUZZER_TOSA is not set +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEVICEFS is not set +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +# CONFIG_USB_OHCI_TC6393 is not set +# CONFIG_USB_USE_INTERNAL_MEMORY is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set + +# +# USB Bluetooth can only be used with disabled Bluetooth subsystem +# + +# +# SCSI support is needed for USB Storage +# +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# + +# +# Input core support is needed for USB HID +# + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=8007 +CONFIG_USBD_PRODUCT_NAME="SL-7500" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m + +# +# +# +# CONFIG_USBD_PROCFS is not set + +# +# USB Device functions +# + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=8007 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400001000002" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=04DD +CONFIG_USBD_STORAGE_PRODUCTID=9050 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="/dev/hda1" + +# +# USB Device bus interfaces +# + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=y +CONFIG_BLUEZ_L2CAP=y +CONFIG_BLUEZ_SCO=y +CONFIG_BLUEZ_RFCOMM=y +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=y +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +# CONFIG_BLUEZ_HCIUSB is not set +CONFIG_BLUEZ_HCIUART=y +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +# CONFIG_BLUEZ_HCIBFUSB is not set +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +# CONFIG_BLUEZ_HCIVHCI is not set +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa new file mode 100644 index 0000000000..aa7f25a2a4 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/defconfig-tosa @@ -0,0 +1,1379 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_ARM=y +# CONFIG_EISA is not set +# CONFIG_SBUS is not set +# CONFIG_MCA is not set +CONFIG_UID16=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set +# CONFIG_GENERIC_BUST_SPINLOCK is not set +# CONFIG_GENERIC_ISA_DMA is not set + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +# CONFIG_OBSOLETE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +# CONFIG_MODVERSIONS is not set +CONFIG_KMOD=y + +# +# System Type +# +# CONFIG_ARCH_ANAKIN is not set +# CONFIG_ARCH_ARCA5K is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_CAMELOT is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_MX1ADS is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set + +# +# Archimedes/A5000 Implementations +# + +# +# Archimedes/A5000 Implementations (select only ONE) +# +# CONFIG_ARCH_ARC is not set +# CONFIG_ARCH_A5K is not set + +# +# Footbridge Implementations +# +# CONFIG_ARCH_CATS is not set +# CONFIG_ARCH_PERSONAL_SERVER is not set +# CONFIG_ARCH_EBSA285_ADDIN is not set +# CONFIG_ARCH_EBSA285_HOST is not set +# CONFIG_ARCH_NETWINDER is not set + +# +# SA11x0 Implementations +# +# CONFIG_SA1100_ASSABET is not set +# CONFIG_ASSABET_NEPONSET is not set +# CONFIG_SA1100_ADSBITSY is not set +# CONFIG_SA1100_BRUTUS is not set +# CONFIG_SA1100_CEP is not set +# CONFIG_SA1100_CERF is not set +# CONFIG_SA1100_COLLIE is not set +# CONFIG_LOCOMO is not set +# CONFIG_COLLIE_TS is not set +# CONFIG_COLLIE_TR0 is not set +# CONFIG_COLLIE_TR1 is not set +# CONFIG_COLLIE_DEV is not set +# CONFIG_COLLIE_G is not set +# CONFIG_SA1100_H3100 is not set +# CONFIG_SA1100_H3600 is not set +# CONFIG_SA1100_H3800 is not set +# CONFIG_SA1100_H3XXX is not set +# CONFIG_SA1100_EXTENEX1 is not set +# CONFIG_SA1100_FLEXANET is not set +# CONFIG_SA1100_FREEBIRD is not set +# CONFIG_SA1100_FRODO is not set +# CONFIG_SA1100_GRAPHICSCLIENT is not set +# CONFIG_SA1100_GRAPHICSMASTER is not set +# CONFIG_SA1100_BADGE4 is not set +# CONFIG_SA1100_JORNADA720 is not set +# CONFIG_SA1100_HUW_WEBPANEL is not set +# CONFIG_SA1100_ITSY is not set +# CONFIG_SA1100_LART is not set +# CONFIG_SA1100_NANOENGINE is not set +# CONFIG_SA1100_OMNIMETER is not set +# CONFIG_SA1100_PANGOLIN is not set +# CONFIG_SA1100_PLEB is not set +# CONFIG_SA1100_PT_SYSTEM3 is not set +# CONFIG_SA1100_SHANNON is not set +# CONFIG_SA1100_SHERMAN is not set +# CONFIG_SA1100_SIMPAD is not set +# CONFIG_SA1100_PFS168 is not set +# CONFIG_SA1100_VICTOR is not set +# CONFIG_SA1100_XP860 is not set +# CONFIG_SA1100_YOPY is not set +# CONFIG_SA1100_USB is not set +# CONFIG_SA1100_USB_NETLINK is not set +# CONFIG_SA1100_USB_CHAR is not set +# CONFIG_H3600_SLEEVE is not set + +# +# Intel PXA250/210 Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_ARCH_PXA_CERF is not set +# CONFIG_COTULLA_DMA is not set +# CONFIG_SABINAL_DISCOVERY is not set +# CONFIG_ARCH_SABINAL is not set +# CONFIG_ARCH_PXA_POODLE is not set +# CONFIG_POODLE_TR0 is not set +# CONFIG_ARCH_PXA_CORGI is not set +# CONFIG_CORGI_TR0 is not set +CONFIG_ARCH_PXA_TOSA=y +CONFIG_ARCH_PXA_TOSA_SKIP=y +CONFIG_ARCH_SHARP_SL=y +CONFIG_SL_CCCR_CHANGE=y +# CONFIG_SL_CCCR242 is not set +# CONFIG_SL_CCCR162 is not set + +# +# Language type +# +CONFIG_ARCH_SHARP_SL_E=y +# CONFIG_ARCH_SHARP_SL_V is not set +# CONFIG_ARCH_SHARP_SL_G is not set +# CONFIG_ARCH_SHARP_SL_J is not set +# CONFIG_ARCH_SHARP_SL_S is not set +# CONFIG_ARCH_SHARP_SL_I is not set +# CONFIG_PXA_USB is not set +# CONFIG_PXA_USB_NETLINK is not set +# CONFIG_PXA_USB_CHAR is not set + +# +# CLPS711X/EP721X Implementations +# +# CONFIG_ARCH_AUTCPU12 is not set +# CONFIG_ARCH_CDB89712 is not set +# CONFIG_ARCH_CLEP7312 is not set +# CONFIG_ARCH_EDB7211 is not set +# CONFIG_ARCH_P720T is not set +# CONFIG_ARCH_FORTUNET is not set +# CONFIG_ARCH_EP7211 is not set +# CONFIG_ARCH_EP7212 is not set +# CONFIG_ARCH_ACORN is not set +# CONFIG_FOOTBRIDGE is not set +# CONFIG_FOOTBRIDGE_HOST is not set +# CONFIG_FOOTBRIDGE_ADDIN is not set +CONFIG_CPU_32=y +# CONFIG_CPU_26 is not set + +# +# Processor Type +# +# CONFIG_CPU_32v3 is not set +# CONFIG_CPU_32v4 is not set +# CONFIG_CPU_ARM610 is not set +# CONFIG_CPU_ARM710 is not set +# CONFIG_CPU_ARM720T is not set +# CONFIG_CPU_ARM920T is not set +# CONFIG_CPU_ARM922T is not set +# CONFIG_PLD is not set +# CONFIG_CPU_ARM926T is not set +# CONFIG_CPU_ARM1020 is not set +# CONFIG_CPU_SA110 is not set +# CONFIG_CPU_SA1100 is not set +CONFIG_CPU_32v5=y +CONFIG_CPU_XSCALE=y +CONFIG_BATT=y +# CONFIG_XSCALE_CACHE_ERRATA is not set +CONFIG_ARM_THUMB=y +CONFIG_ARM_FCSE=y +# CONFIG_DISCONTIGMEM is not set +# CONFIG_PREEMPT is not set + +# +# General setup +# +# CONFIG_PCI is not set +# CONFIG_ISA is not set +# CONFIG_ISA_DMA is not set +# CONFIG_ZBOOT_ROM is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZWBOOT_ROM_BSS=0 +CONFIG_HOTPLUG=y + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=y +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_TCIC is not set +# CONFIG_PCMCIA_CLPS6700 is not set +# CONFIG_PCMCIA_SA1100 is not set +CONFIG_PCMCIA_PXA=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y + +# +# At least one math emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_FASTFPE is not set +CONFIG_KCORE_ELF=y +# CONFIG_KCORE_AOUT is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_PM=y +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_CPU_IDLE=y +CONFIG_APM_DISPLAY_BLANK=y +CONFIG_APM_RTC_IS_GMT=y +# CONFIG_ARTHUR is not set +CONFIG_CMDLINE="<see .oe file>" +# CONFIG_SHARPSL_BOOTLDR_PARAMS is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_FREEPG_SIGNAL=y +CONFIG_OOM_KILL_SURVIVAL=y +CONFIG_DEVICEINFO=m +CONFIG_CORGI_DEVICEINFO=m + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_GEN_PROBE is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_ROM=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set +# CONFIG_MTD_AMDSTD is not set +# CONFIG_MTD_SHARP is not set +# CONFIG_MTD_JEDEC is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_LUBBOCK is not set +# CONFIG_MTD_NORA is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_CDB89712 is not set +# CONFIG_MTD_SA1100 is not set +# CONFIG_MTD_DC21285 is not set +# CONFIG_MTD_IQ80310 is not set +# CONFIG_MTD_FORTUNET is not set +# CONFIG_MTD_PXA_CERF is not set +# CONFIG_MTD_EPXA10DB is not set +# CONFIG_MTD_AUTCPU12 is not set +# CONFIG_MTD_EDB7312 is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_DISCOVERY is not set +CONFIG_MTD_SHARP_SL=y +# CONFIG_MTD_PCI is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_MTDROM_SA1100 is not set +# CONFIG_MTD_MTDRAM_SA1100 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MTDRAM_SHARP_SL is not set +# CONFIG_MTD_BLKMTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC1000 is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOCPROBE is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_VERIFY_WRITE=y +CONFIG_MTD_NAND_POST_BADBLOCK=y +# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set +CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y +CONFIG_MTD_NAND_PAGE_CACHE=y +CONFIG_MTD_NAND_SHARP_SL_TC6393=y + +# +# Plug and Play configuration +# +# CONFIG_PNP is not set +# CONFIG_ISAPNP is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_PARIDE is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_INITRD is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_FILTER=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +CONFIG_SYN_COOKIES=y + +# +# IP: Netfilter Configuration +# +# CONFIG_IP_NF_CONNTRACK is not set +# CONFIG_IP_NF_QUEUE is not set +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_LIMIT is not set +# CONFIG_IP_NF_MATCH_MAC is not set +# CONFIG_IP_NF_MATCH_MARK is not set +# CONFIG_IP_NF_MATCH_MULTIPORT is not set +# CONFIG_IP_NF_MATCH_TOS is not set +# CONFIG_IP_NF_MATCH_AH_ESP is not set +# CONFIG_IP_NF_MATCH_LENGTH is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_MATCH_TCPMSS is not set +# CONFIG_IP_NF_MATCH_UNCLEAN is not set +# CONFIG_IP_NF_MATCH_OWNER is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_MIRROR is not set +# CONFIG_IP_NF_MANGLE is not set +CONFIG_IP_NF_TARGET_LOG=y +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_NF_TARGET_TCPMSS is not set +CONFIG_IPV6=y + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_LIMIT is not set +# CONFIG_IP6_NF_MATCH_MAC is not set +# CONFIG_IP6_NF_MATCH_MULTIPORT is not set +# CONFIG_IP6_NF_MATCH_OWNER is not set +# CONFIG_IP6_NF_MATCH_MARK is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_LOG=y +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set +# CONFIG_VLAN_8021Q is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +CONFIG_IPSEC=m + +# +# IPSec options (Openswan) +# +CONFIG_IPSEC_IPIP=y +CONFIG_IPSEC_AH=y +# CONFIG_IPSEC_AUTH_HMAC_MD5 is not set +CONFIG_IPSEC_AUTH_HMAC_SHA1=y +CONFIG_IPSEC_ESP=y +CONFIG_IPSEC_ENC_3DES=y +# CONFIG_IPSEC_ENC_AES is not set +CONFIG_IPSEC_ALG=y +CONFIG_IPSEC_IPCOMP=y +CONFIG_IPSEC_DEBUG=y + +# +# Network device support +# +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ETHERTAP is not set + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +# CONFIG_ARM_AM79C961A is not set +# CONFIG_SUNLANCE is not set +# CONFIG_SUNBMAC is not set +# CONFIG_SUNQE is not set +# CONFIG_SUNGEM is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_PCI is not set +# CONFIG_NET_POCKET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +# CONFIG_SLIP is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y +# CONFIG_STRIP is not set +# CONFIG_WAVELAN is not set +# CONFIG_ARLAN is not set +# CONFIG_AIRONET4500 is not set +# CONFIG_AIRONET4500_NONCS is not set +# CONFIG_AIRONET4500_PROC is not set +# CONFIG_HERMES is not set + +# +# Wireless Pcmcia cards support +# +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_AIRO_CS is not set +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_FMVJ18X is not set +CONFIG_PCMCIA_PCNET=y +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_ARCNET_COM20020_CS is not set +# CONFIG_PCMCIA_IBMTR is not set +# CONFIG_NET_PCMCIA_RADIO is not set + +# +# Amateur Radio support +# +# CONFIG_HAMRADIO is not set + +# +# IrDA (infrared) support +# +CONFIG_IRDA=y + +# +# IrDA protocols +# +# CONFIG_IRLAN is not set +CONFIG_IRNET=m +CONFIG_IRCOMM=y +# CONFIG_IRDA_ULTRA is not set + +# +# IrDA options +# +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=y +# CONFIG_IRPORT_SIR is not set + +# +# Dongle support +# +# CONFIG_DONGLE is not set + +# +# FIR device drivers +# +# CONFIG_USB_IRDA is not set +# CONFIG_NSC_FIR is not set +# CONFIG_WINBOND_FIR is not set +# CONFIG_TOSHIBA_FIR is not set +# CONFIG_SMC_IRCC_FIR is not set +# CONFIG_ALI_FIR is not set +# CONFIG_VLSI_FIR is not set + +# +# ATA/IDE/MFM/RLL support +# +CONFIG_IDE=y + +# +# IDE, ATA and ATAPI Block devices +# +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_BLK_DEV_IDEDISK=y +# CONFIG_IDEDISK_MULTI_MODE is not set +# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set +# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set +# CONFIG_BLK_DEV_IDEDISK_IBM is not set +# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set +# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set +# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set +# CONFIG_BLK_DEV_IDEDISK_WD is not set +# CONFIG_BLK_DEV_COMMERIAL is not set +# CONFIG_BLK_DEV_TIVO is not set +CONFIG_BLK_DEV_IDECS=y +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD640_ENHANCED is not set +# CONFIG_BLK_DEV_ISAPNP is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_DMA_NONPCI is not set +# CONFIG_BLK_DEV_IDE_MODES is not set +# CONFIG_BLK_DEV_ATARAID is not set +# CONFIG_BLK_DEV_ATARAID_PDC is not set +# CONFIG_BLK_DEV_ATARAID_HPT is not set + +# +# SCSI support +# +CONFIG_SCSI=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_SD_EXTRA_DEVS=40 +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_DEBUG_QUEUES is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI low-level drivers +# +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AHA1740 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_MEGARAID is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_EATA_DMA is not set +# CONFIG_SCSI_EATA_PIO is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NCR53C7xx is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PCI2000 is not set +# CONFIG_SCSI_PCI2220I is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SIM710 is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_SCSI_PCMCIA is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_I2O_BLOCK is not set +# CONFIG_I2O_LAN is not set +# CONFIG_I2O_SCSI is not set +# CONFIG_I2O_PROC is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Input core support +# +CONFIG_INPUT=y +CONFIG_INPUT_KEYBDEV=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=480 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_UINPUT=y + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_SERIAL=y +# CONFIG_SERIAL_CONSOLE is not set +CONFIG_SERIAL_SL_SERIES=y +CONFIG_BLUETOOTH_SL=y +# CONFIG_KBD_DEV_FILE is not set +# CONFIG_SERIAL_EXTENDED is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_ANAKIN is not set +# CONFIG_SERIAL_ANAKIN_CONSOLE is not set +# CONFIG_SERIAL_AMBA is not set +# CONFIG_SERIAL_AMBA_CONSOLE is not set +# CONFIG_SERIAL_CLPS711X is not set +# CONFIG_SERIAL_CLPS711X_CONSOLE is not set +# CONFIG_SERIAL_21285 is not set +# CONFIG_SERIAL_21285_OLD is not set +# CONFIG_SERIAL_21285_CONSOLE is not set +# CONFIG_SERIAL_UART00 is not set +# CONFIG_SERIAL_UART00_CONSOLE is not set +# CONFIG_SERIAL_SA1100 is not set +# CONFIG_SERIAL_SA1100_CONSOLE is not set +# CONFIG_SERIAL_8250 is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +# CONFIG_SERIAL_8250_SHARE_IRQ is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_MULTIPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# L3 serial bus support +# +# CONFIG_L3 is not set +# CONFIG_L3_ALGOBIT is not set +# CONFIG_L3_BIT_SA1100_GPIO is not set + +# +# Other L3 adapters +# +# CONFIG_L3_SA1111 is not set +# CONFIG_BIT_SA1100_GPIO is not set + +# +# Mice +# +# CONFIG_BUSMOUSE is not set +# CONFIG_MOUSE is not set + +# +# Joysticks +# +# CONFIG_INPUT_GAMEPORT is not set +# CONFIG_INPUT_NS558 is not set +# CONFIG_INPUT_LIGHTNING is not set +# CONFIG_INPUT_PCIGAME is not set +# CONFIG_INPUT_CS461X is not set +# CONFIG_INPUT_EMU10K1 is not set +# CONFIG_INPUT_SERIO is not set +# CONFIG_INPUT_SERPORT is not set + +# +# Joysticks +# +# CONFIG_INPUT_ANALOG is not set +# CONFIG_INPUT_A3D is not set +# CONFIG_INPUT_ADI is not set +# CONFIG_INPUT_COBRA is not set +# CONFIG_INPUT_GF2K is not set +# CONFIG_INPUT_GRIP is not set +# CONFIG_INPUT_INTERACT is not set +# CONFIG_INPUT_TMDC is not set +# CONFIG_INPUT_SIDEWINDER is not set +# CONFIG_INPUT_IFORCE_USB is not set +# CONFIG_INPUT_IFORCE_232 is not set +# CONFIG_INPUT_WARRIOR is not set +# CONFIG_INPUT_MAGELLAN is not set +# CONFIG_INPUT_SPACEORB is not set +# CONFIG_INPUT_SPACEBALL is not set +# CONFIG_INPUT_STINGER is not set +# CONFIG_INPUT_DB9 is not set +# CONFIG_INPUT_GAMECON is not set +# CONFIG_INPUT_TURBOGRAFX is not set +# CONFIG_QIC02_TAPE is not set + +# +# Watchdog Cards +# +# CONFIG_WATCHDOG is not set +# CONFIG_INTEL_RNG is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +CONFIG_COTULLA_RTC=y +# CONFIG_ADS7846_TS is not set +CONFIG_TOSA_TS=y +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# these shouldnt be here +CONFIG_TOSA_POWER_KEY_OFF=y +CONFIG_BOOT_TOSA_POWER_KEY_OFF=y +CONFIG_SL7X0_POWER_KEY_OFF=y +CONFIG_BOOT_POWER_KEY_OFF=y + +# +# Ftape, the floppy tape device driver +# +# CONFIG_FTAPE is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_PCMCIA_SERIAL_CS=y +CONFIG_PCMCIA_CHRDEV=y + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FS_SYNC is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_JBD is not set +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +# CONFIG_UMSDOS_FS is not set +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_NAND=y +CONFIG_JFFS2_PROC_FS=y +CONFIG_JFFS2_NODEMERGE=y +CONFIG_JFFS2_DYNFRAGTREE=y +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_VXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +# CONFIG_ROMFS_FS is not set +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_POSIX=y +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SMB_NLS=y +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=y +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_CODEPAGE_932=y +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Console drivers +# +CONFIG_PC_KEYMAP=y +# CONFIG_VGA_CONSOLE is not set + +# +# Frame-buffer support +# +CONFIG_FB=y +CONFIG_DUMMY_CONSOLE=y +# CONFIG_UNICON is not set +# CONFIG_FB_COLLIE is not set +# CONFIG_FB_ACORN is not set +# CONFIG_FB_ANAKIN is not set +# CONFIG_FB_CLPS711X is not set +# CONFIG_FB_SA1100 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_COTULLA is not set +# CONFIG_FB_POODLE is not set +# CONFIG_FB_CORGI is not set +CONFIG_FB_TOSA=y +# CONFIG_SHARP_LOGO_SCREEN is not set +# CONFIG_SL_SYSCLK100 is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_FBCON_ADVANCED=y +# CONFIG_FBCON_MFB is not set +# CONFIG_FBCON_CFB2 is not set +# CONFIG_FBCON_CFB4 is not set +# CONFIG_FBCON_CFB8 is not set +CONFIG_FBCON_CFB16=y +# CONFIG_FBCON_CFB24 is not set +# CONFIG_FBCON_CFB32 is not set +# CONFIG_FBCON_AFB is not set +# CONFIG_FBCON_ILBM is not set +# CONFIG_FBCON_IPLAN2P2 is not set +# CONFIG_FBCON_IPLAN2P4 is not set +# CONFIG_FBCON_IPLAN2P8 is not set +# CONFIG_FBCON_MAC is not set +# CONFIG_FBCON_VGA_PLANES is not set +# CONFIG_FBCON_VGA is not set +# CONFIG_FBCON_HGA is not set +# CONFIG_FBCON_ROTATE_R is not set +# CONFIG_FBCON_ROTATE_L is not set +# CONFIG_FBCON_FONTWIDTH8_ONLY is not set +CONFIG_FBCON_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_PEARL_8x8 is not set +# CONFIG_FONT_ACORN_8x8 is not set + +# +# Sound +# +CONFIG_SOUND=y +# CONFIG_SOUND_BT878 is not set +# CONFIG_SOUND_COLLIE_SSP is not set +# CONFIG_SOUND_COLLIE_TC35143 is not set +# CONFIG_SOUND_CMPCI is not set +# CONFIG_SOUND_EMU10K1 is not set +# CONFIG_MIDI_EMU10K1 is not set +# CONFIG_SOUND_FUSION is not set +# CONFIG_SOUND_CS4281 is not set +# CONFIG_SOUND_ES1370 is not set +# CONFIG_SOUND_ES1371 is not set +# CONFIG_SOUND_ESSSOLO1 is not set +# CONFIG_SOUND_MAESTRO is not set +# CONFIG_SOUND_MAESTRO3 is not set +# CONFIG_SOUND_ICH is not set +# CONFIG_SOUND_RME96XX is not set +# CONFIG_SOUND_SONICVIBES is not set +# CONFIG_SOUND_TRIDENT is not set +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +# CONFIG_SOUND_VIA82CXXX is not set +# CONFIG_MIDI_VIA82CXXX is not set +# CONFIG_SOUND_OSS is not set +# CONFIG_SOUND_WAVEARTIST is not set +# CONFIG_SOUND_PXA_AC97 is not set +# CONFIG_SOUND_POODLE is not set +# CONFIG_SOUND_CORGI is not set +CONFIG_SOUND_TOSA=y +CONFIG_BUZZER_TOSA=y +# CONFIG_SOUND_TVMIXER is not set + +# +# Multimedia Capabilities Port drivers +# +# CONFIG_MCP is not set +# CONFIG_MCP_SA1100 is not set +# CONFIG_MCP_UCB1200 is not set +# CONFIG_MCP_UCB1200_AUDIO is not set +# CONFIG_MCP_UCB1200_TS is not set +# CONFIG_MCP_UCB1400_TS is not set + +# +# USB support +# +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_LONG_TIMEOUT is not set + +# +# USB Controllers +# +# CONFIG_USB_UHCI is not set +# CONFIG_USB_UHCI_ALT is not set +# CONFIG_USB_OHCI is not set +# CONFIG_USB_OHCI_SA1111 is not set +CONFIG_USB_OHCI_TC6393=m +CONFIG_USB_USE_INTERNAL_MEMORY=y + +# +# USB Device Class drivers +# +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_BLUETOOTH is not set +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +CONFIG_USB_STORAGE_ISD200=y +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_HP8200e is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +CONFIG_USB_ACM=m +# CONFIG_USB_PRINTER is not set + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# CONFIG_USB_WACOM is not set + +# +# USB Imaging devices +# +# CONFIG_USB_DC2XX is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_SCANNER is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_HPUSBSCSI is not set + +# +# USB Multimedia devices +# + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network adaptors +# +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDCETHER is not set +# CONFIG_USB_USBNET is not set + +# +# USB port drivers +# +# CONFIG_USB_USS720 is not set + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set +# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_RIO500 is not set + +# +# USB Device Support +# +CONFIG_USBD=m +CONFIG_USBD_VENDORID=04DD +CONFIG_USBD_PRODUCTID=9032 +CONFIG_USBD_PRODUCT_NAME="SL-6000" +CONFIG_USBD_MANUFACTURER="Sharp" +# CONFIG_USBD_USE_SERIAL_NUMBER is not set +CONFIG_USBD_SELFPOWERED=y +CONFIG_USBD_MONITOR=m + +# +# +# +CONFIG_USBD_PROCFS=y + +# +# USB Device functions +# + +# +# Network Function +# +CONFIG_USBD_NET=m +CONFIG_USBD_NET_VENDORID=04DD +CONFIG_USBD_NET_PRODUCTID=9032 +CONFIG_USBD_NET_IFNAME="usbd" +CONFIG_USBD_NET_OUT_ENDPOINT=1 +CONFIG_USBD_NET_OUT_PKTSIZE=64 +CONFIG_USBD_NET_IN_ENDPOINT=2 +CONFIG_USBD_NET_IN_PKTSIZE=64 +CONFIG_USBD_NET_INT_ENDPOINT=3 +CONFIG_USBD_NET_INT_PKTSIZE=16 +# CONFIG_USBD_NET_ALWAYSUP is not set +# CONFIG_USBD_NET_SAFE is not set +CONFIG_USBD_NET_MDLM=y +# CONFIG_USBD_NET_CDC is not set +CONFIG_USBD_NET_REMOTE_MACADDR="400002000001" +CONFIG_USBD_NET_REMOTE_OUI=400002 +CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y +CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" +CONFIG_USBD_NET_LOCAL_OUI=400001 + +# +# Serial Function +# +# CONFIG_USBD_SERIAL is not set + +# +# Mass Storage Function +# +CONFIG_USBD_STORAGE=m +CONFIG_USBD_STORAGE_VENDORID=0000 +CONFIG_USBD_STORAGE_PRODUCTID=0000 +CONFIG_USBD_STORAGE_OUT_ENDPOINT=1 +CONFIG_USBD_STORAGE_OUT_PKTSIZE=64 +CONFIG_USBD_STORAGE_IN_ENDPOINT=2 +CONFIG_USBD_STORAGE_IN_PKTSIZE=64 +CONFIG_USBD_STORAGE_INT_ENDPOINT=3 +CONFIG_USBD_STORAGE_INT_PKTSIZE=16 +CONFIG_USBD_STORAGE_DEF_DEVICE_NAME="" + +# +# USB Device bus interfaces +# + +# +# USB Device Bus Interface Support +# +CONFIG_USBD_PXA_BUS=m +# CONFIG_USBD_GENERIC_BUS is not set + +# +# Bluetooth support +# +CONFIG_BLUEZ=y +CONFIG_BLUEZ_L2CAP=y +CONFIG_BLUEZ_SCO=y +CONFIG_BLUEZ_RFCOMM=y +CONFIG_BLUEZ_RFCOMM_TTY=y +CONFIG_BLUEZ_BNEP=y +CONFIG_BLUEZ_BNEP_MC_FILTER=y +CONFIG_BLUEZ_BNEP_PROTO_FILTER=y +# CONFIG_BLUEZ_HIDP is not set + +# +# Bluetooth device drivers +# +CONFIG_BLUEZ_HCIUSB=m +CONFIG_BLUEZ_HCIUSB_SCO=y +CONFIG_BLUEZ_HCIUART=y +CONFIG_BLUEZ_HCIUART_H4=y +CONFIG_BLUEZ_HCIUART_BCSP=y +CONFIG_BLUEZ_HCIUART_BCSP_TXCRC=y +CONFIG_BLUEZ_HCIBFUSB=m +CONFIG_BLUEZ_HCIDTL1=m +CONFIG_BLUEZ_HCIBLUECARD=m +CONFIG_BLUEZ_HCIBTUART=m +CONFIG_BLUEZ_HCIVHCI=m +CONFIG_BLUEZ_BT950=m + +# +# Kernel hacking +# +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_USER is not set +# CONFIG_DEBUG_COREDUMP_SIGNAL is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_NO_PGT_CACHE is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_WAITQ is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_ERRORS is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_DC21285_PORT is not set +# CONFIG_DEBUG_CLPS711X_UART2 is not set diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch new file mode 100644 index 0000000000..58343c5b55 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/deviceinfo.patch @@ -0,0 +1,26 @@ +--- linux/arch/arm/mach-pxa/Makefile.old 2004-09-24 20:49:09.000000000 +0930 ++++ linux/arch/arm/mach-pxa/Makefile 2004-09-24 20:49:11.000000000 +0930 +@@ -94,6 +94,23 @@ + endif + endif + ++ifeq ($(CONFIG_DEVICEINFO),m) ++ obj-$(CONFIG_DEVICEINFO) += devinfo.o ++ ifeq ($(CONFIG_SABINAL_DISCOVERY),y) ++ devinfo-objs-m += deviceinfo.o ++ devinfo-objs-$(CONFIG_DISCOVERY_DEVICEINFO) += discovery_deviceinfo.o ++ endif ++ ifeq ($(CONFIG_ARCH_PXA_POODLE),y) ++ devinfo-objs-m += sharpsl_deviceinfo.o ++ endif ++ ifeq ($(CONFIG_ARCH_PXA_CORGI),y) ++ devinfo-objs-m += sharpsl_deviceinfo.o ++ endif ++ ifeq ($(CONFIG_ARCH_PXA_TOSA),y) ++ devinfo-objs-m += sharpsl_deviceinfo.o ++ endif ++endif ++ + obj-m += registers.o + + include $(TOPDIR)/Rules.make diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch new file mode 100644 index 0000000000..79ba036323 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/disable-pcmcia-probe.patch @@ -0,0 +1,17 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux/drivers/pcmcia/Config.in~disable-pcmcia-probe 2003-05-13 11:18:23.000000000 +0200 ++++ linux/drivers/pcmcia/Config.in 2004-05-27 13:59:50.000000000 +0200 +@@ -15,9 +15,6 @@ + tristate 'PCMCIA/CardBus support' CONFIG_PCMCIA + if [ "$CONFIG_PCMCIA" != "n" ]; then + # yes, I really mean the following... +- if [ "$CONFIG_ISA" = "y" -o "$CONFIG_ARCH_SA1100" = "y" ]; then +- define_bool CONFIG_PCMCIA_PROBE y +- fi + if [ "$CONFIG_PCI" != "n" ]; then + bool ' CardBus support' CONFIG_CARDBUS + fi diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch new file mode 100644 index 0000000000..2c412fdbb3 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/dumb-hack-for-wlan-ng.patch @@ -0,0 +1,16 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/arch/arm/tools/Makefile~dumb-hack-for-wlan-ng ++++ linux/arch/arm/tools/Makefile +@@ -16,7 +16,7 @@ + # any errors that occur along the way. + + constants.h: constants-hdr getconstants.c +- $(CC) $(CFLAGS) -S -o $@.tmp.1 getconstants.c ++ arm-linux-gcc-2.95 $(CFLAGS) -S -o $@.tmp.1 getconstants.c + sed 's/^\(#define .* \)[#$$]\(.*\)/\1\2/;/^#define/!d' $@.tmp.1 > $@.tmp.2 + cat constants-hdr $@.tmp.2 > $@ + $(RM) $@.tmp* diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch new file mode 100644 index 0000000000..b1ea85018b --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/enable-sysrq.patch @@ -0,0 +1,61 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/drivers/char/corgi_keyb.c~enable-sysrq ++++ linux/drivers/char/corgi_keyb.c +@@ -23,7 +23,7 @@ + #include <linux/init.h> + #include <linux/poll.h> + #include <linux/wait.h> +-#include <asm/arch/keyboard.h> ++#include <asm/keyboard.h> + #include <asm/uaccess.h> + #include <linux/tqueue.h> + #include <linux/kbd_ll.h> +@@ -46,6 +46,18 @@ + #endif + + /* ++ * This is the KeyCode [not ScanCode!] to ASCII Code mapping table ++ */ ++ ++#ifdef CONFIG_MAGIC_SYSRQ ++static unsigned char corgi_sysrq_xlate[128] = ++ "\000abcdefghijklmno" /* 00-0f */ ++ "pqrstuvwxyz\000\000\000\000\000" /* 10-1f */ ++ " \000\000\000\000\000\000\000\0001234567" /* 20-2f */ ++ "890\000\000\000\000\000\000\000\000\000\000\000\000\000"; /* 30-3f */ ++#endif ++ ++/* + * common logical driver definition + */ + extern void sharppda_kbd_press(int keycode); +@@ -251,7 +263,13 @@ + corgi_wakeup_button_init(); + #endif // USE_WAKEUP_BUTTON + +- printk("keyboard initilaized.\n"); ++ printk("keyboard initialized.\n"); ++#ifdef CONFIG_MAGIC_SYSRQ ++ k_sysrq_key = 0x28; // KEY_HOME ++ k_sysrq_xlate = corgi_sysrq_xlate; ++ printk("magic_sysrq initialized.\n"); ++#endif ++ + } + + int corgi_kbd_translate(unsigned char scancode, unsigned char *keycode_p) +--- linux/drivers/char/keyboard.c~enable-sysrq ++++ linux/drivers/char/keyboard.c +@@ -366,7 +366,7 @@ + #ifdef CONFIG_MAGIC_SYSRQ /* Handle the SysRq Hack */ + if (keycode == SYSRQ_KEY) { + sysrq_pressed = !up_flag; +- goto out; ++ // goto out; + } else if (sysrq_pressed) { + if (!up_flag) { + handle_sysrq(kbd_sysrq_xlate[keycode], kbd_pt_regs, kbd, tty); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch new file mode 100644 index 0000000000..092b0dcf49 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/fix_tosa_apm.patch @@ -0,0 +1,72 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/arch/arm/mach-pxa/sharpsl_apm.c~fix_tosa_apm.patch ++++ linux/arch/arm/mach-pxa/sharpsl_apm.c +@@ -254,6 +254,8 @@ + int magic; + struct apm_user * next; + int suser: 1; ++ int reader: 1; ++ int writer: 1; + int suspend_wait: 1; + int suspend_result; + int suspends_pending; +@@ -1596,12 +1598,12 @@ + { + struct apm_user * as; + +- DPRINTK("event=%d\n",event); ++ DPRINTK("event=%d, sender=%p\n",event,sender); + + if (user_list == NULL) + return; + for (as = user_list; as != NULL; as = as->next) { +- if (as == sender) ++ if ((as == sender) || (!as->reader)) + continue; + as->event_head = (as->event_head + 1) % APM_MAX_EVENTS; + if (as->event_head == as->event_tail) { +@@ -1611,8 +1613,8 @@ + as->event_tail = (as->event_tail + 1) % APM_MAX_EVENTS; + } + as->events[as->event_head] = event; +- if (!as->suser) +- continue; ++ if ((!as->suser) || (!as->writer)) ++ continue; + switch (event) { + case APM_SYS_SUSPEND: + case APM_USER_SUSPEND: +@@ -1630,9 +1632,8 @@ + #ifdef SHARPSL_NEW_IDLE + current->nice = save_nice; + current->counter = save_counter; +-#else +- wake_up_interruptible(&apm_waitqueue); + #endif ++ wake_up_interruptible(&apm_waitqueue); + } + + static unsigned long get_cmos_time(void) +@@ -2532,6 +2533,8 @@ + * privileged operation -- cevans + */ + as->suser = capable(CAP_SYS_ADMIN); ++ as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE; ++ as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ; + as->next = user_list; + user_list = as; + filp->private_data = as; +@@ -3000,6 +3003,9 @@ + #endif + #endif + ++ suspends_pending = 0; ++ standbys_pending = 0; ++ + apm_proc = create_proc_info_entry("apm", 0, NULL, apm_get_info); + if (apm_proc) + SET_MODULE_OWNER(apm_proc); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch new file mode 100644 index 0000000000..62038c34e2 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/idecs.patch @@ -0,0 +1,77 @@ +--- linux/drivers/ide/ide-cs.c 2003-02-28 17:04:00.000000000 -0600 ++++ linux.new/drivers/ide/ide-cs.c 2003-02-28 17:18:53.000000000 -0600 +@@ -2,7 +2,7 @@ + + A driver for PCMCIA IDE/ATA disk cards + +- ide_cs.c 1.26 1999/11/16 02:10:49 ++ ide-cs.c 1.26 1999/11/16 02:10:49 + + The contents of this file are subject to the Mozilla Public + License Version 1.1 (the "License"); you may not use this file +@@ -66,7 +66,7 @@ + MODULE_PARM(pc_debug, "i"); + #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) + static char *version = +-"ide_cs.c 1.26 1999/11/16 02:10:49 (David Hinds)"; ++"ide-cs.c 1.26 1999/11/16 02:10:49 (David Hinds)"; + #else + #define DEBUG(n, args...) + #endif +@@ -110,7 +110,7 @@ + static int ide_event(event_t event, int priority, + event_callback_args_t *args); + +-static dev_info_t dev_info = "ide_cs"; ++static dev_info_t dev_info = "ide-cs"; + + static dev_link_t *ide_attach(void); + static void ide_detach(dev_link_t *); +@@ -356,7 +356,7 @@ + } + + if (hd < 0) { +- printk(KERN_NOTICE "ide_cs: ide_register() at 0x%03x & 0x%03x" ++ printk(KERN_NOTICE "ide-cs: ide_register() at 0x%03x & 0x%03x" + ", irq %u failed\n", io_base, ctl_base, + link->irq.AssignedIRQ); + goto failed; +@@ -369,7 +369,7 @@ + info->node.minor = 0; + info->hd = hd; + link->dev = &info->node; +- printk(KERN_INFO "ide_cs: %s: Vcc = %d.%d, Vpp = %d.%d\n", ++ printk(KERN_INFO "ide-cs: %s: Vcc = %d.%d, Vpp = %d.%d\n", + info->node.dev_name, link->conf.Vcc/10, link->conf.Vcc%10, + link->conf.Vpp1/10, link->conf.Vpp1%10); + +@@ -409,9 +409,9 @@ + MOD_DEC_USE_COUNT; + } + +- request_region(link->io.BasePort1, link->io.NumPorts1,"ide_cs"); ++ request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs"); + if (link->io.NumPorts2) +- request_region(link->io.BasePort2, link->io.NumPorts2,"ide_cs"); ++ request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs"); + + info->ndev = 0; + link->dev = NULL; +@@ -508,7 +508,7 @@ + DEBUG(0, "%s\n", version); + CardServices(GetCardServicesInfo, &serv); + if (serv.Revision != CS_RELEASE_CODE) { +- printk(KERN_NOTICE "ide_cs: Card Services release " ++ printk(KERN_NOTICE "ide-cs: Card Services release " + "does not match!\n"); + return -1; + } +@@ -518,7 +518,7 @@ + + static void __exit exit_ide_cs(void) + { +- DEBUG(0, "ide_cs: unloading\n"); ++ DEBUG(0, "ide-cs: unloading\n"); + unregister_pccard_driver(&dev_info); + while (dev_list != NULL) + ide_detach(dev_list); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch new file mode 100644 index 0000000000..a672631194 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/initsh.patch @@ -0,0 +1,14 @@ +--- linux/init/main.c 2002-02-25 13:38:13.000000000 -0600 ++++ linux.new/init/main.c 2003-03-16 11:49:45.000000000 -0600 +@@ -830,8 +830,10 @@ + * trying to recover a really broken machine. + */ + +- if (execute_command) ++ if (execute_command) { ++ argv_init[0] = execute_command; + execve(execute_command,argv_init,envp_init); ++ } + execve("/sbin/init",argv_init,envp_init); + execve("/etc/init",argv_init,envp_init); + execve("/bin/init",argv_init,envp_init); diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch new file mode 100644 index 0000000000..93a80bae3c --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keyboard-ctrl+alt.patch @@ -0,0 +1,79 @@ + +# +# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux/drivers/char/corgi_rawmap.h~keyboard-ctrl+alt 2003-09-15 14:30:08.000000000 +0200 ++++ linux/drivers/char/corgi_rawmap.h 2003-09-16 00:45:39.000000000 +0200 +@@ -55,7 +55,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = { +@@ -66,7 +66,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = { +@@ -77,7 +77,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = { +@@ -88,7 +88,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_PRINTSCREEN, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = { +@@ -99,7 +99,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = { +@@ -110,7 +110,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = { +@@ -121,7 +121,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_C, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = { +@@ -132,7 +132,7 @@ + SLKEY_ACTIVITY, SLKEY_W, SLKEY_S, SLKEY_F, SLKEY_V, SLKEY_H, SLKEY_M, SLKEY_L, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_CONTACTS, SLKEY_A, SLKEY_D, SLKEY_PRINTSCREEN, SLKEY_B, SLKEY_N, SLKEY_PERIOD, KEY_IGN, SLKEY_ENTER, KEY_IGN, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_MAIL, SLKEY_Z, SLKEY_X, SLKEY_MINUS, SLKEY_SPACE, SLKEY_COMMA, KEY_IGN, SLKEY_UP, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, +- SLKEY_HOME, SLKEY_KANA, SLKEY_ZENHAN, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++ SLKEY_HOME, SLKEY_LCONTROL, SLKEY_LALT, SLKEY_F9, SLKEY_F4, SLKEY_F2, SLKEY_LEFT, SLKEY_DOWN, SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, + SLKEY_OFF, SLKEY_EXSELECT, SLKEY_EXCANCEL, SLKEY_EXJOGDOWN, SLKEY_EXJOGUP, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN}; + + diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch new file mode 100644 index 0000000000..a58dd13fbd --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/keymap-more-sane.patch @@ -0,0 +1,23 @@ +--- linux/drivers/char/corgi_keymap.map~keymap-more-sane 2003-08-30 01:05:14.000000000 +0200 ++++ linux/drivers/char/corgi_keymap.map 2003-09-03 20:44:27.000000000 +0200 +@@ -71,9 +71,11 @@ + # (Cancel:34) F9 -> Escape + keycode 34 = Escape + keycode 35 = Left ++ alt keycode 35 = Decr_Console + keycode 36 = Up + keycode 37 = Down + keycode 38 = Right ++ alt keycode 38 = Incr_Console + # (OK:39) F4 -> Return + keycode 39 = Return + keycode 40 = +@@ -100,7 +102,7 @@ + keycode 60 = Shift_Lock + keycode 61 = at + keycode 62 = question +-keycode 63 = comma slash ++keycode 63 = slash comma + alt keycode 63 = less + keycode 64 = period question + alt keycode 64 = greater diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch new file mode 100644 index 0000000000..fd8084254c --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/logo.patch @@ -0,0 +1,2598 @@ +--- linux/drivers/video/fbcon.c 2003-02-27 21:47:36.000000000 -0600 ++++ linux.new/drivers/video/fbcon.c 2003-02-27 18:39:39.000000000 -0600 +@@ -126,8 +126,8 @@ + #define LOGO_H (320-16) + #define LOGO_W 240 + #else +-#define LOGO_H 80 +-#define LOGO_W 80 ++#define LOGO_H 52 ++#define LOGO_W 240 + #endif + #define LOGO_LINE (LOGO_W/8) + #if defined(CONFIG_SHARP_LOGO_SCREEN) +--- linux/include/linux/linux_logo.h 2001-06-11 21:15:27.000000000 -0500 ++++ linux.new/include/linux/linux_logo.h 2003-02-27 15:58:15.000000000 -0600 +@@ -1,4 +1,4 @@ +-/* $Id: linux_logo.h,v 1.5 1998/07/30 16:30:58 jj Exp $ ++/* linux_logo.h created with fblogo, 2002/12/29 02:43:36 + * include/linux/linux_logo.h: This is a linux logo + * to be displayed on boot. + * +@@ -7,907 +7,1673 @@ + * + * You can put anything here, but: + * LINUX_LOGO_COLORS has to be less than 224 +- * image size has to be 80x80 +- * values have to start from 0x20 +- * (i.e. RGB(linux_logo_red[0], +- * linux_logo_green[0], +- * linux_logo_blue[0]) is color 0x20) +- * BW image has to be 80x80 as well, with MS bit +- * on the left +- * Serial_console ascii image can be any size, +- * but should contain %s to display the version ++ * Generated by fblogo version 0.5.0 ++ * ++ * ++ * Remember to modify drivers/video/fbcon.c: ++ * Change "#define LOGO_H 80" to "#define LOGO_H 52" ++ * Change "#define LOGO_W 80" to "#define LOGO_W 240" + */ + + #ifndef __HAVE_ARCH_LINUX_LOGO +-#define LINUX_LOGO_COLORS 187 ++#define LINUX_LOGO_COLORS 223 + #endif +- + #ifdef INCLUDE_LINUX_LOGO_DATA +- + #ifndef __HAVE_ARCH_LINUX_LOGO +- + unsigned char linux_logo_red[] __initdata = { +- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22, +- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56, +- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65, +- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6, +- 0xc3, 0x65, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6, +- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7, +- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x76, 0x79, +- 0x62, 0x36, 0x9a, 0xe2, 0xec, 0xe1, 0xb8, 0xd7, +- 0xaf, 0x25, 0xbc, 0xc0, 0xef, 0xea, 0xe8, 0xe8, +- 0xf5, 0xf1, 0xda, 0xd3, 0x79, 0xdb, 0xf4, 0xf6, +- 0xf6, 0xf6, 0xe2, 0x3d, 0xb4, 0xce, 0xe6, 0xee, +- 0xf6, 0x68, 0xd8, 0xec, 0xf5, 0xc6, 0xc8, 0x9c, +- 0x89, 0xd2, 0xee, 0xcb, 0xb9, 0xd2, 0x66, 0x5e, +- 0x8b, 0xbe, 0xa8, 0xd5, 0xca, 0xb6, 0xae, 0x9c, +- 0xc5, 0xbe, 0xbe, 0xca, 0x90, 0xb2, 0x9a, 0xa8, +- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x12, +- 0x4a, 0x8e, 0xf2, 0xf6, 0xf6, 0xee, 0xb5, 0xe4, +- 0xf1, 0x26, 0x9a, 0xea, 0xf6, 0xe0, 0xd2, 0x16, +- 0x9a, 0x2e, 0x70, 0xd6, 0x46, 0x7c, 0xb4, 0x62, +- 0xd6, 0xa3, 0x74, 0xa7, 0xa2, 0xca, 0xe0, 0xae, +- 0xbe, 0xce, 0xa3, 0x8e, 0x6d, 0x8e, 0x32, 0xaf, +- 0x50, 0x9e, 0x5b, 0x8a, 0x98, 0x82, 0x7a, 0x82, +- 0x56, 0x7c, 0x8a, 0x56, 0x5e, 0x86, 0x6a, 0x52, +- 0x59, 0x64, 0x5e, ++ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA, ++ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE, ++ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA, ++ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36, ++ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82, ++ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6, ++ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E, ++ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x32, 0x7E, ++ 0x3A, 0x16, 0x02, 0x02, 0x06, 0x1F, 0x02, 0x02, ++ 0x06, 0x02, 0x22, 0x3A, 0x35, 0x16, 0x0A, 0x02, ++ 0x2A, 0x3E, 0x39, 0x32, 0x2A, 0x1E, 0x16, 0x06, ++ 0x22, 0x22, 0x1E, 0x16, 0x6E, 0x82, 0x6E, 0x2E, ++ 0x1E, 0x2E, 0x1E, 0x0A, 0x3A, 0xDA, 0xFE, 0xFA, ++ 0xFA, 0xE2, 0x6A, 0x3A, 0x1A, 0xFA, 0xF6, 0x9E, ++ 0x02, 0x6E, 0xFE, 0xF6, 0x3E, 0x66, 0x52, 0x1B, ++ 0xD6, 0x5A, 0xEE, 0xC6, 0x72, 0x36, 0x22, 0x1E, ++ 0x02, 0x96, 0xF6, 0xDE, 0xA2, 0xD6, 0x39, 0x0E, ++ 0xAA, 0x52, 0x5A, 0xD2, 0xDE, 0x61, 0x46, 0xDE, ++ 0x7A, 0x57, 0x9E, 0xBA, 0xB6, 0x4A, 0x5A, 0xA6, ++ 0x96, 0x23, 0x1E, 0x12, 0x9A, 0x4E, 0x76, 0xAE, ++ 0x2E, 0xBE, 0x86, 0x48, 0xA6, 0x52, 0x06, 0x2E, ++ 0x56, 0x13, 0x2A, 0x4A, 0x36, 0x56, 0x2E, 0x1E, ++ 0x46, 0x3A, 0x66, 0x02, 0x3D, 0x3E, 0x2E, 0x3E, ++ 0x4A, 0x32, 0x52, 0x72, 0x76, 0x67, 0x68, 0x5A, ++ 0x3A, 0x1A, 0x0E, 0x2E, 0x4E, 0x02, 0x3E, 0x0A, ++ 0x28, 0x42, 0x10, 0x26, 0x8E, 0x0A, 0x86, 0xC2, ++ 0x02, 0x6E, 0x92, 0x02, 0x42, 0x02, 0xBE, 0x4E, ++ 0x02, 0x22, 0x02, 0x3E, 0x3A, 0x32 + }; + + unsigned char linux_logo_green[] __initdata = { +- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22, +- 0x12, 0x00, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56, +- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x02, 0x65, +- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6, +- 0xc3, 0x62, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6, +- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7, +- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x62, 0x5c, +- 0x4e, 0x26, 0x72, 0xaa, 0xba, 0xaf, 0x90, 0xae, +- 0x92, 0x1a, 0xa4, 0x85, 0xb6, 0xbe, 0xc3, 0xc8, +- 0xcf, 0xd0, 0xc2, 0xce, 0x57, 0xa2, 0xd6, 0xda, +- 0xda, 0xd7, 0xb8, 0x2a, 0x7b, 0x91, 0xae, 0xca, +- 0xda, 0x45, 0x9e, 0xb2, 0xd7, 0x9b, 0x90, 0x76, +- 0x5c, 0xa2, 0xbe, 0xa6, 0x85, 0x96, 0x4e, 0x46, +- 0x66, 0x92, 0x7a, 0x9a, 0x96, 0x9d, 0x9a, 0x6b, +- 0x8a, 0x8e, 0xb2, 0xca, 0x90, 0xa6, 0x79, 0x7c, +- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x0e, +- 0x36, 0x86, 0xba, 0xbe, 0xe6, 0xcc, 0x8e, 0xb8, +- 0xc4, 0x1e, 0x8e, 0xae, 0xba, 0xb2, 0xa6, 0x12, +- 0x7a, 0x20, 0x64, 0xaa, 0x2f, 0x70, 0x85, 0x46, +- 0xa6, 0x6e, 0x51, 0x72, 0x92, 0xa2, 0xa6, 0x87, +- 0x96, 0xa2, 0x85, 0x7a, 0x6a, 0x6e, 0x22, 0x76, +- 0x36, 0x76, 0x3c, 0x6e, 0x63, 0x53, 0x66, 0x62, +- 0x42, 0x50, 0x56, 0x42, 0x56, 0x56, 0x56, 0x3e, +- 0x51, 0x52, 0x56, ++ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA, ++ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE, ++ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA, ++ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36, ++ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82, ++ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6, ++ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E, ++ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x2E, 0x7E, ++ 0x3A, 0x3E, 0x6A, 0xA2, 0x92, 0x30, 0x95, 0x76, ++ 0x4E, 0x86, 0x36, 0x7E, 0x9A, 0x6E, 0x42, 0x56, ++ 0x5A, 0xC2, 0xBE, 0xB2, 0xAA, 0x9A, 0x63, 0x1E, ++ 0xA2, 0x9E, 0x96, 0x5A, 0x3A, 0x42, 0x4A, 0x52, ++ 0x91, 0x46, 0x4E, 0x62, 0x22, 0x4A, 0x6E, 0x86, ++ 0x92, 0x9A, 0x52, 0x4A, 0x76, 0x7A, 0x9E, 0x76, ++ 0x62, 0x32, 0x5E, 0xAE, 0x3E, 0x66, 0x52, 0x81, ++ 0xA6, 0x5A, 0xEE, 0xC6, 0x72, 0x5C, 0x6A, 0x8A, ++ 0x36, 0x3E, 0xBA, 0xBA, 0xA2, 0xD6, 0xAA, 0x4E, ++ 0x8A, 0x4E, 0x5A, 0xD2, 0xDE, 0x64, 0x32, 0x9A, ++ 0x5E, 0x57, 0x9E, 0xBA, 0xB6, 0x52, 0x62, 0xA6, ++ 0x9A, 0x47, 0x3E, 0x56, 0x02, 0x1A, 0x76, 0xAE, ++ 0x4A, 0x02, 0x02, 0x38, 0x02, 0x4A, 0x46, 0x86, ++ 0x1E, 0x2E, 0x7A, 0xD2, 0x5E, 0x26, 0x92, 0x62, ++ 0xCA, 0x42, 0x66, 0x26, 0x67, 0xB6, 0x62, 0x92, ++ 0x9E, 0x72, 0xB2, 0xF2, 0xFE, 0xDE, 0xFE, 0xFE, ++ 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x8A, 0x2A, ++ 0x42, 0x52, 0x6A, 0x26, 0x8E, 0x26, 0x86, 0xC2, ++ 0xE2, 0x6E, 0x92, 0xBE, 0x42, 0xC6, 0xBE, 0x4E, ++ 0xEE, 0x5A, 0xEA, 0x3E, 0x4A, 0x32 + }; + + unsigned char linux_logo_blue[] __initdata = { +- 0x00, 0x06, 0x0a, 0x0e, 0x16, 0x1a, 0x1e, 0x22, +- 0x12, 0x01, 0x2a, 0x36, 0x42, 0x4e, 0x4a, 0x56, +- 0x26, 0x46, 0x2e, 0x32, 0x52, 0x3a, 0x06, 0x65, +- 0x5e, 0x3e, 0x74, 0x8a, 0xa2, 0x9a, 0x86, 0xc6, +- 0xc3, 0x59, 0xbb, 0xd2, 0xda, 0xd6, 0xe2, 0xf6, +- 0xfd, 0xae, 0x7b, 0xdd, 0xea, 0x6a, 0xaa, 0xe7, +- 0xbe, 0x5a, 0xee, 0x9e, 0x95, 0x80, 0x2e, 0x08, +- 0x0a, 0x06, 0x0a, 0x0b, 0x0b, 0x0f, 0x0c, 0x0f, +- 0x3d, 0x09, 0x73, 0x09, 0x0d, 0x0a, 0x10, 0x1e, +- 0x2d, 0x13, 0x86, 0xba, 0x19, 0x0a, 0x36, 0x3c, +- 0x26, 0x14, 0x0d, 0x06, 0x07, 0x0a, 0x0b, 0x0f, +- 0x4a, 0x06, 0x0a, 0x0c, 0x2b, 0x0a, 0x0b, 0x0a, +- 0x06, 0x0a, 0x0a, 0x11, 0x0b, 0x0a, 0x0a, 0x1e, +- 0x0f, 0x0d, 0x0a, 0x0b, 0x22, 0x6a, 0x72, 0x0b, +- 0x0b, 0x22, 0x90, 0xca, 0x90, 0x92, 0x3c, 0x2c, +- 0xb6, 0xf2, 0xce, 0xfa, 0xb2, 0x6e, 0xa6, 0x06, +- 0x0e, 0x6a, 0x0e, 0x0e, 0xbe, 0x5b, 0x2c, 0x3e, +- 0x0e, 0x0a, 0x5a, 0x0d, 0x0e, 0x3e, 0x0a, 0x06, +- 0x2e, 0x06, 0x4e, 0x36, 0x06, 0x58, 0x24, 0x06, +- 0x3a, 0x08, 0x08, 0x07, 0x5e, 0x45, 0x0a, 0x32, +- 0x2e, 0x2a, 0x43, 0x48, 0x5f, 0x2e, 0x06, 0x06, +- 0x07, 0x24, 0x06, 0x32, 0x06, 0x06, 0x46, 0x2e, +- 0x22, 0x06, 0x06, 0x1e, 0x4c, 0x06, 0x3a, 0x22, +- 0x42, 0x34, 0x42, ++ 0x00, 0x02, 0x06, 0x0A, 0x56, 0xA6, 0xBE, 0xBA, ++ 0xB6, 0x92, 0x3E, 0x1A, 0x8A, 0xF3, 0xFB, 0xEE, ++ 0xC6, 0x62, 0x4A, 0x12, 0x26, 0x0E, 0x76, 0xDA, ++ 0x6E, 0x32, 0x8E, 0x1E, 0x2A, 0xCE, 0xE2, 0x36, ++ 0x66, 0xA2, 0x2E, 0x9E, 0xCA, 0x6A, 0x5A, 0x82, ++ 0x7E, 0xE9, 0xD2, 0xDE, 0x22, 0x72, 0xAE, 0xD6, ++ 0x86, 0x3A, 0x52, 0x9A, 0xAA, 0x16, 0x46, 0x4E, ++ 0x42, 0xC2, 0x96, 0x7A, 0x5E, 0xB2, 0x1A, 0x06, ++ 0x1A, 0x2A, 0x36, 0x52, 0x46, 0x23, 0x4D, 0x3E, ++ 0x2A, 0x42, 0x2A, 0x5A, 0x69, 0x42, 0x26, 0x2E, ++ 0x42, 0x7E, 0x7C, 0x72, 0x6A, 0x5E, 0x3B, 0x12, ++ 0x62, 0x5E, 0x5A, 0x36, 0x26, 0x1E, 0x26, 0x42, ++ 0x56, 0x3A, 0x36, 0x36, 0x1E, 0x2E, 0x2A, 0x22, ++ 0x22, 0x1A, 0x16, 0x42, 0x46, 0x26, 0x1E, 0x12, ++ 0x32, 0x2A, 0x2E, 0x16, 0x2A, 0x1A, 0x2E, 0x4E, ++ 0x12, 0x22, 0x02, 0x02, 0x12, 0x4A, 0x46, 0x52, ++ 0x1E, 0x1E, 0x16, 0x0E, 0x02, 0x02, 0x6F, 0x2E, ++ 0x0E, 0x1A, 0x06, 0x02, 0x02, 0x04, 0x22, 0x16, ++ 0x0E, 0x12, 0x02, 0x02, 0x02, 0x0A, 0x5A, 0x02, ++ 0x02, 0x1B, 0x2E, 0x32, 0x02, 0x02, 0x02, 0x02, ++ 0x16, 0x02, 0x02, 0x10, 0x02, 0x02, 0x26, 0x5A, ++ 0x02, 0x1F, 0x52, 0x8E, 0x22, 0x02, 0x5E, 0x3E, ++ 0x86, 0x0E, 0x16, 0x16, 0x52, 0x7A, 0x4A, 0x66, ++ 0x72, 0x52, 0x82, 0xB2, 0xBA, 0xA4, 0xB2, 0xAA, ++ 0x9E, 0x8E, 0x88, 0x96, 0xA6, 0x82, 0x62, 0x1A, ++ 0x34, 0x4A, 0x31, 0x16, 0x02, 0x1A, 0x02, 0x02, ++ 0x72, 0x02, 0x02, 0x5E, 0x1A, 0x62, 0x02, 0x0E, ++ 0x76, 0x1E, 0x76, 0x1E, 0x0A, 0x02 + }; + + unsigned char linux_logo[] __initdata = { +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, +- 0x22, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, +- 0x26, 0x26, 0x25, 0x28, 0x23, 0x22, 0x21, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x23, 0x25, 0x2a, 0x2b, 0x2c, 0x2d, 0x2d, +- 0x2d, 0x2e, 0x2c, 0x2b, 0x2a, 0x25, 0x28, 0x22, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x24, 0x2a, 0x2c, 0x2f, 0x2c, 0x30, 0x30, 0x24, +- 0x25, 0x27, 0x2b, 0x2c, 0x2f, 0x31, 0x32, 0x25, +- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, +- 0x33, 0x34, 0x35, 0x21, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x21, 0x2b, 0x2f, 0x2c, +- 0x30, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33, +- 0x2d, 0x27, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x31, +- 0x2d, 0x32, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, 0x2a, 0x34, +- 0x25, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x23, 0x32, 0x27, 0x21, 0x36, +- 0x2a, 0x2d, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x22, 0x26, 0x2c, 0x35, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x25, 0x2f, 0x37, 0x32, 0x22, +- 0x36, 0x35, 0x31, 0x27, 0x22, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x22, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x26, 0x38, 0x38, 0x35, 0x25, +- 0x36, 0x21, 0x2d, 0x2b, 0x24, 0x21, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x21, 0x24, 0x39, 0x39, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x25, 0x2b, 0x30, 0x28, 0x22, +- 0x36, 0x36, 0x27, 0x34, 0x30, 0x23, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x21, 0x26, 0x2d, 0x26, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x22, 0x22, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x2d, 0x33, 0x28, 0x21, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x2b, 0x2c, 0x25, 0x21, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x36, 0x36, +- 0x36, 0x21, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x21, 0x23, 0x22, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x28, 0x34, 0x27, 0x22, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36, +- 0x21, 0x21, 0x24, 0x27, 0x21, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x28, 0x27, 0x22, 0x33, 0x24, 0x36, +- 0x36, 0x36, 0x36, 0x22, 0x2f, 0x2a, 0x23, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x36, +- 0x30, 0x3a, 0x38, 0x24, 0x24, 0x36, 0x36, 0x36, +- 0x23, 0x2f, 0x3b, 0x3c, 0x3d, 0x30, 0x25, 0x21, +- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x32, 0x23, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x23, +- 0x3e, 0x3f, 0x40, 0x3a, 0x22, 0x36, 0x36, 0x21, +- 0x41, 0x42, 0x43, 0x44, 0x45, 0x3e, 0x23, 0x21, +- 0x36, 0x36, 0x36, 0x36, 0x2f, 0x33, 0x28, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x32, 0x2f, 0x36, 0x2b, +- 0x44, 0x40, 0x46, 0x47, 0x35, 0x36, 0x36, 0x26, +- 0x43, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x2e, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x32, 0x34, 0x36, 0x4d, +- 0x4e, 0x25, 0x2f, 0x46, 0x4a, 0x22, 0x23, 0x32, +- 0x4f, 0x50, 0x21, 0x31, 0x51, 0x52, 0x53, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x31, 0x35, 0x24, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x29, 0x20, 0x29, 0x29, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x2f, 0x21, 0x3a, +- 0x4d, 0x21, 0x31, 0x54, 0x55, 0x28, 0x30, 0x2b, +- 0x4b, 0x4d, 0x36, 0x23, 0x32, 0x50, 0x3f, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x29, 0x20, 0x29, 0x20, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x38, 0x23, 0x37, +- 0x55, 0x36, 0x28, 0x3a, 0x56, 0x57, 0x57, 0x58, +- 0x3c, 0x4d, 0x36, 0x36, 0x36, 0x40, 0x40, 0x21, +- 0x36, 0x36, 0x36, 0x36, 0x2e, 0x39, 0x24, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x29, 0x29, 0x29, 0x20, 0x29, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x30, 0x51, 0x23, 0x35, +- 0x43, 0x25, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, +- 0x5f, 0x60, 0x61, 0x36, 0x31, 0x47, 0x3b, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x31, 0x2c, 0x25, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x23, 0x22, +- 0x40, 0x62, 0x63, 0x5d, 0x64, 0x65, 0x66, 0x67, +- 0x68, 0x69, 0x66, 0x5e, 0x6a, 0x6b, 0x2a, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x33, 0x2e, 0x26, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2f, 0x23, 0x36, +- 0x6c, 0x63, 0x6d, 0x64, 0x5c, 0x66, 0x69, 0x6e, +- 0x6f, 0x70, 0x71, 0x69, 0x69, 0x72, 0x6c, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x33, 0x34, 0x27, 0x22, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x27, 0x34, 0x26, 0x73, +- 0x74, 0x75, 0x76, 0x64, 0x65, 0x77, 0x69, 0x78, +- 0x70, 0x71, 0x71, 0x71, 0x72, 0x5f, 0x5e, 0x21, +- 0x36, 0x36, 0x36, 0x36, 0x25, 0x38, 0x2a, 0x23, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x33, 0x79, +- 0x63, 0x7a, 0x7b, 0x5c, 0x66, 0x69, 0x6e, 0x7c, +- 0x71, 0x71, 0x69, 0x7d, 0x7e, 0x7a, 0x7f, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x21, 0x51, 0x2b, 0x28, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2d, 0x32, 0x24, +- 0x80, 0x81, 0x64, 0x82, 0x77, 0x69, 0x71, 0x71, +- 0x69, 0x83, 0x84, 0x85, 0x7a, 0x85, 0x86, 0x36, +- 0x21, 0x2b, 0x23, 0x36, 0x36, 0x39, 0x2e, 0x26, +- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x27, 0x2d, 0x33, 0x21, +- 0x87, 0x88, 0x89, 0x72, 0x67, 0x66, 0x5f, 0x89, +- 0x8a, 0x63, 0x85, 0x8b, 0x8c, 0x8d, 0x41, 0x36, +- 0x36, 0x2d, 0x3a, 0x35, 0x36, 0x24, 0x51, 0x32, +- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x30, 0x2f, 0x33, 0x21, +- 0x55, 0x8e, 0x8f, 0x8a, 0x7d, 0x5e, 0x90, 0x7e, +- 0x75, 0x75, 0x90, 0x62, 0x40, 0x3f, 0x49, 0x23, +- 0x36, 0x24, 0x3a, 0x3a, 0x24, 0x36, 0x2e, 0x31, +- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x21, 0x28, 0x33, 0x37, 0x25, 0x22, +- 0x3b, 0x50, 0x8e, 0x8f, 0x90, 0x7e, 0x90, 0x63, +- 0x74, 0x91, 0x92, 0x42, 0x93, 0x4b, 0x45, 0x2c, +- 0x36, 0x36, 0x33, 0x39, 0x21, 0x36, 0x22, 0x51, +- 0x33, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x22, 0x27, 0x2e, 0x2e, 0x36, 0x21, +- 0x94, 0x3f, 0x50, 0x95, 0x96, 0x8f, 0x8f, 0x97, +- 0x8e, 0x42, 0x50, 0x43, 0x47, 0x48, 0x48, 0x98, +- 0x21, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, +- 0x2e, 0x27, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x22, 0x24, 0x2b, 0x38, 0x28, 0x36, 0x32, +- 0x4c, 0x4b, 0x50, 0x50, 0x50, 0x42, 0x42, 0x50, +- 0x50, 0x40, 0x45, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x23, +- 0x2f, 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x28, 0x32, 0x51, 0x32, 0x28, 0x21, 0x98, +- 0x48, 0x47, 0x9a, 0x50, 0x50, 0x50, 0x50, 0x50, +- 0x9a, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x93, 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x2a, 0x2f, 0x2a, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x23, 0x30, 0x2e, 0x2c, 0x36, 0x21, 0x51, 0x9b, +- 0x48, 0x48, 0x52, 0x3f, 0x50, 0x50, 0x40, 0x4b, +- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x34, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x2d, 0x31, 0x27, 0x23, 0x21, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, +- 0x27, 0x2c, 0x2d, 0x21, 0x36, 0x28, 0x44, 0x48, +- 0x48, 0x48, 0x48, 0x47, 0x46, 0x4f, 0x47, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x9c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x28, 0x51, 0x39, 0x26, 0x22, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, +- 0x35, 0x51, 0x28, 0x36, 0x36, 0x9d, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x4f, 0x28, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x28, 0x38, 0x2b, 0x25, 0x22, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, 0x33, +- 0x51, 0x25, 0x36, 0x36, 0x23, 0x40, 0x9b, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x9b, 0x99, 0x2b, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x30, 0x2f, 0x33, 0x24, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x21, 0x23, 0x30, 0x34, +- 0x27, 0x36, 0x36, 0x36, 0x2a, 0x40, 0x47, 0x48, +- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x99, 0x9b, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x47, 0x52, +- 0x46, 0x4f, 0x37, 0x21, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x30, 0x34, 0x2a, 0x23, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x22, 0x25, 0x39, 0x2c, +- 0x36, 0x36, 0x36, 0x21, 0x31, 0x4e, 0x9a, 0x4c, +- 0x47, 0x9b, 0x9b, 0x52, 0x46, 0x4f, 0x52, 0x9b, +- 0x9b, 0x9b, 0x47, 0x4f, 0x45, 0x9a, 0x93, 0x93, +- 0x3f, 0x93, 0x98, 0x28, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c, 0x26, +- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x23, 0x2a, 0x34, 0x28, +- 0x36, 0x36, 0x36, 0x22, 0x38, 0x98, 0x44, 0x99, +- 0x9b, 0x48, 0x48, 0x9b, 0x4c, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x47, 0x52, 0x46, 0x43, 0x93, +- 0x40, 0x40, 0x43, 0x53, 0x21, 0x23, 0x33, 0x23, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x2f, 0x32, +- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x21, 0x24, 0x2b, 0x31, 0x36, +- 0x36, 0x22, 0x36, 0x24, 0x9e, 0x4f, 0x9b, 0x48, +- 0x48, 0x48, 0x48, 0x9b, 0x99, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x47, +- 0x4f, 0x9a, 0x3f, 0x46, 0x38, 0x36, 0x21, 0x30, +- 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, 0x39, 0x2c, +- 0x25, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x22, 0x26, 0x2e, 0x33, 0x36, +- 0x25, 0x25, 0x36, 0x4d, 0x52, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x47, 0x44, 0x93, 0x43, 0x23, 0x36, 0x36, +- 0x26, 0x24, 0x36, 0x36, 0x36, 0x36, 0x28, 0x2f, +- 0x2a, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x23, 0x2a, 0x51, 0x24, 0x36, +- 0x2a, 0x36, 0x28, 0x44, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x9b, 0x4b, 0x44, 0x37, 0x36, 0x23, +- 0x28, 0x30, 0x22, 0x36, 0x36, 0x36, 0x36, 0x2d, +- 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x21, 0x28, 0x2b, 0x34, 0x36, 0x25, +- 0x24, 0x36, 0x4a, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x9b, 0x52, 0x3f, 0x21, 0x30, +- 0x35, 0x25, 0x30, 0x36, 0x36, 0x36, 0x36, 0x32, +- 0x2d, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x22, 0x26, 0x2e, 0x35, 0x36, 0x2a, +- 0x36, 0x24, 0x4f, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x9b, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x47, 0x32, 0x30, +- 0x2a, 0x23, 0x30, 0x23, 0x36, 0x36, 0x36, 0x21, +- 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x21, 0x23, 0x2a, 0x51, 0x28, 0x28, 0x25, +- 0x36, 0x3a, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x9b, 0x52, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x38, 0x21, +- 0x36, 0x36, 0x22, 0x27, 0x36, 0x36, 0x36, 0x36, +- 0x2e, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x22, 0x25, 0x2c, 0x34, 0x36, 0x30, 0x21, +- 0x23, 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x47, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x94, 0x36, +- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36, +- 0x2a, 0x2e, 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x23, 0x2a, 0x51, 0x25, 0x21, 0x2a, 0x36, +- 0x2e, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x99, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x98, 0x36, +- 0x36, 0x36, 0x36, 0x32, 0x36, 0x36, 0x36, 0x36, +- 0x22, 0x2f, 0x30, 0x22, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x22, 0x25, 0x2c, 0x34, 0x36, 0x24, 0x28, 0x36, +- 0x54, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36, +- 0x36, 0x36, 0x36, 0x30, 0x36, 0x36, 0x36, 0x36, +- 0x21, 0x2f, 0x32, 0x23, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x28, 0x32, 0x2f, 0x28, 0x36, 0x27, 0x22, 0x21, +- 0x43, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4b, 0x21, +- 0x36, 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x25, 0x2c, 0x39, 0x36, 0x36, 0x30, 0x22, 0x25, +- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x52, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x21, +- 0x36, 0x36, 0x22, 0x26, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x30, 0x2d, 0x21, 0x36, 0x36, 0x32, 0x23, 0x2a, +- 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x22, +- 0x36, 0x36, 0x24, 0x23, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, +- 0x33, 0x2e, 0x36, 0x36, 0x23, 0x31, 0x27, 0x39, +- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4c, 0x23, +- 0x36, 0x36, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x2c, 0x39, 0x24, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, +- 0x2b, 0x39, 0x36, 0x36, 0x36, 0x26, 0x32, 0x31, +- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x46, 0x22, +- 0x36, 0x21, 0x26, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x2c, 0x35, 0x24, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, +- 0x35, 0x39, 0x36, 0x36, 0x36, 0x36, 0x26, 0x2d, +- 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x9a, 0x36, +- 0x24, 0x27, 0x9f, 0x24, 0x25, 0x28, 0x21, 0x36, +- 0x36, 0x34, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x25, +- 0x39, 0x4d, 0xa0, 0x84, 0x81, 0x57, 0x21, 0x39, +- 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x47, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x53, 0x28, +- 0x23, 0x36, 0x36, 0x36, 0x21, 0x28, 0x2c, 0x30, +- 0x21, 0x38, 0x33, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x28, 0x30, +- 0x2d, 0xa1, 0x7a, 0xa2, 0xa3, 0xa3, 0x7f, 0x22, +- 0x51, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0xa4, 0xa5, 0xa5, 0xa6, 0x61, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x30, 0x32, +- 0x25, 0x4d, 0x2b, 0x28, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x21, 0x23, 0x24, 0x26, 0x30, 0x33, 0x31, +- 0x4d, 0x91, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0x5a, +- 0x21, 0x2e, 0x46, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4f, 0x9b, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0xa7, 0xa8, 0x69, 0x66, 0xa9, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x26, 0x25, +- 0x83, 0xaa, 0x2c, 0x25, 0x21, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x28, 0x30, 0x35, 0x2d, 0x2f, 0x37, 0x4a, +- 0x60, 0x85, 0xab, 0xac, 0xa3, 0xa3, 0xa3, 0x82, +- 0x86, 0x36, 0x32, 0x3f, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x4c, 0x99, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0xad, 0xa2, 0xa8, 0xae, 0xaf, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x21, 0x57, +- 0x77, 0x66, 0x34, 0x27, 0x22, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x23, 0x30, 0x31, 0xb0, 0x91, 0x7e, 0x90, 0x90, +- 0x8b, 0x5b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0x5d, 0xb1, 0x36, 0x24, 0x53, 0x9b, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x9b, 0x99, 0xad, 0x64, 0x5c, 0x8b, 0xb1, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x73, 0x5d, +- 0x82, 0x5c, 0xb2, 0x2a, 0x23, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x24, 0x2b, 0xb0, 0x8b, 0x5b, 0x76, 0x5b, 0x5b, +- 0x7b, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa8, 0x5e, 0x22, 0x36, 0x21, 0x3a, 0x99, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x4f, 0x3f, 0xb3, 0x7b, 0x7b, 0x85, 0x80, +- 0x9f, 0x36, 0x36, 0x36, 0x21, 0xb4, 0x7e, 0x7b, +- 0x64, 0x64, 0xb5, 0x35, 0x24, 0x21, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x26, 0x31, 0xb6, 0x5b, 0x64, 0xa2, 0xa2, 0xac, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0x66, 0xb7, 0x36, 0x36, 0x36, 0x2c, 0x4b, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x9a, 0x3f, 0xb8, 0x76, 0x76, 0x7a, 0x63, +- 0xb9, 0xba, 0x86, 0xba, 0xbb, 0x90, 0x5b, 0x64, +- 0xa2, 0xa2, 0xbc, 0x2d, 0x27, 0x23, 0x21, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x26, 0x2d, 0x91, 0x5b, 0x64, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa8, 0x83, 0xaf, 0x36, 0x36, 0x36, 0x30, +- 0x44, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x9b, 0x9a, 0x3f, 0xbd, 0x5b, 0x7b, 0xbe, 0x85, +- 0x7e, 0x90, 0x63, 0x90, 0x85, 0x5b, 0xa2, 0xa3, +- 0xa3, 0xac, 0x5d, 0xb5, 0x39, 0x26, 0x23, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x26, 0x2d, 0xbf, 0xbe, 0x64, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa8, 0x88, 0x36, 0x36, 0x36, 0x36, +- 0x2d, 0x9b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x9b, 0x45, 0x3f, 0xc0, 0x6d, 0x7b, 0xab, 0xbe, +- 0x7a, 0x8b, 0x8b, 0x7a, 0x5b, 0x64, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa2, 0xc1, 0x37, 0x35, 0x26, 0x23, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x26, 0x2e, 0xbf, 0x7a, 0x7b, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa8, 0x72, 0x73, 0x36, 0x36, 0x36, +- 0x24, 0x52, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x46, 0x42, 0xb6, 0x7a, 0x7b, 0x64, 0x7b, +- 0x76, 0x5b, 0x5b, 0x76, 0x7b, 0xa2, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xac, 0x64, 0xc1, 0x4d, 0x2c, 0x27, +- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x25, 0x31, 0xc2, 0x8b, 0x7b, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa8, 0x89, 0x9f, 0x36, 0x36, +- 0x32, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x4b, 0x2f, 0x8f, 0x7a, 0x7b, 0xa2, 0xac, +- 0xa2, 0x64, 0x64, 0xa2, 0xa2, 0xac, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x5d, 0xc3, 0x2c, +- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x25, 0x31, 0xc2, 0x85, 0x7b, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x57, 0x27, 0x4d, +- 0x4b, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x99, 0x34, 0x9f, 0xb9, 0x7a, 0x7b, 0xa2, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xc2, +- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, +- 0x26, 0x2d, 0xc2, 0x85, 0x7b, 0xac, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa8, 0x5f, 0x92, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x44, +- 0x35, 0x36, 0xaf, 0xbb, 0x7a, 0x7b, 0xac, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0xa2, 0xc0, +- 0x2b, 0x24, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, +- 0x30, 0x2f, 0xb6, 0x8b, 0x7b, 0xac, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x66, 0x89, 0x45, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x48, 0x9b, 0x4e, 0x25, +- 0x36, 0x36, 0x61, 0xb9, 0x6d, 0x64, 0xac, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0xbe, 0xc3, +- 0x32, 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, +- 0x33, 0xc4, 0x63, 0xbe, 0xa2, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x72, 0x81, 0xc5, +- 0x46, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, +- 0x48, 0x48, 0x48, 0x48, 0x3f, 0x2c, 0x36, 0x36, +- 0x36, 0x36, 0xc6, 0x8f, 0x6d, 0x64, 0xac, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa2, 0xab, 0x8b, 0xb0, 0x2c, +- 0x26, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, +- 0x35, 0x96, 0x75, 0xab, 0xa2, 0xac, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x7b, 0x81, 0xb9, +- 0x73, 0x3b, 0x44, 0x9b, 0x48, 0x48, 0x48, 0x9b, +- 0x99, 0x43, 0x94, 0x2c, 0x21, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x73, 0xb9, 0x7a, 0x7b, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0x64, 0x76, 0x7a, 0x91, 0xb5, 0x31, 0x30, +- 0x28, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x24, +- 0x39, 0x97, 0x75, 0xbe, 0x7b, 0x64, 0xa2, 0xa2, +- 0xac, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0x7b, 0x7a, 0xc7, +- 0xc8, 0x36, 0x21, 0x26, 0x2b, 0x39, 0x33, 0x30, +- 0x23, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x21, 0xc8, 0xbb, 0x8b, 0x7b, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0x64, 0x64, +- 0x76, 0x85, 0xbf, 0xb5, 0x34, 0x2b, 0x27, 0x28, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x28, +- 0x33, 0xc9, 0x63, 0x7e, 0x7a, 0x6d, 0xbe, 0x5b, +- 0x76, 0x7b, 0x64, 0x64, 0xa2, 0xac, 0xa3, 0xa3, +- 0xa3, 0xa3, 0xa3, 0xa3, 0xac, 0x76, 0x85, 0xb9, +- 0x79, 0x22, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x21, 0xca, 0xbb, 0x75, 0x76, 0xa2, 0xa3, +- 0xa3, 0xa3, 0xac, 0xa2, 0x64, 0x76, 0xbe, 0x8b, +- 0xb6, 0xb5, 0x2f, 0x35, 0x30, 0x24, 0x22, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x23, +- 0x27, 0x31, 0xcb, 0xc9, 0xbb, 0x74, 0x63, 0x90, +- 0x7e, 0x75, 0x8b, 0x6d, 0xbe, 0x76, 0x64, 0xa2, +- 0xac, 0xac, 0xac, 0xac, 0x64, 0x7a, 0x84, 0xcc, +- 0x79, 0x9f, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, +- 0x36, 0x21, 0xc8, 0xcc, 0x63, 0x6d, 0x7b, 0x64, +- 0xac, 0xa2, 0x64, 0x7b, 0xbe, 0x75, 0x63, 0x96, +- 0x38, 0x39, 0x2a, 0x24, 0x23, 0x21, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x28, 0x27, 0x35, 0x2d, 0x41, 0xb5, 0xc5, 0x8f, +- 0xb9, 0xbb, 0xc7, 0x74, 0x84, 0x90, 0x85, 0x6d, +- 0x5b, 0x7b, 0x7b, 0xab, 0x6d, 0x90, 0xb9, 0xcd, +- 0xca, 0x22, 0x36, 0x36, 0x28, 0x30, 0x30, 0x30, +- 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x25, 0x36, +- 0x36, 0x21, 0xb4, 0x80, 0xc7, 0x7e, 0x6d, 0x76, +- 0xab, 0x76, 0x6d, 0x85, 0x63, 0xb9, 0xb5, 0x34, +- 0x33, 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x23, 0x24, 0x27, 0x2a, 0x35, 0x2e, 0x2f, +- 0x41, 0xce, 0xcf, 0x6c, 0x80, 0xcc, 0xb9, 0x74, +- 0x84, 0x90, 0x75, 0x7e, 0x74, 0x8f, 0xcd, 0x79, +- 0xc6, 0x2b, 0x9d, 0x41, 0x2f, 0x34, 0x2d, 0x2d, +- 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x34, 0x2f, 0x38, +- 0x4d, 0x37, 0xd0, 0xd1, 0x8f, 0x74, 0x63, 0x7e, +- 0x75, 0x7e, 0x63, 0xc7, 0x88, 0xc4, 0x31, 0x2a, +- 0x24, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x21, 0x22, 0x23, 0x24, 0x26, 0x30, +- 0x33, 0x39, 0x2e, 0x51, 0x41, 0xb2, 0x6c, 0xd1, +- 0x80, 0xcc, 0xcc, 0xcc, 0xd2, 0xd1, 0xb7, 0xd3, +- 0x41, 0x34, 0x35, 0x32, 0x30, 0x27, 0x27, 0x27, +- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x2a, +- 0x2b, 0x34, 0xd4, 0xca, 0xd5, 0x8f, 0xbb, 0xc7, +- 0xc7, 0xbb, 0xcc, 0x6c, 0x41, 0x39, 0x27, 0x28, +- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, +- 0x28, 0x24, 0x26, 0x2a, 0x33, 0x2c, 0x2f, 0x41, +- 0xd6, 0xb7, 0x79, 0x79, 0x79, 0xca, 0xd7, 0x51, +- 0x39, 0x30, 0x24, 0x23, 0x22, 0x22, 0x22, 0x22, +- 0x22, 0x22, 0x21, 0x22, 0x22, 0x22, 0x22, 0x23, +- 0x24, 0x2a, 0x31, 0xd8, 0xc8, 0x79, 0xd1, 0x80, +- 0xd5, 0xba, 0xd9, 0x2f, 0x35, 0x26, 0x23, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x21, 0x22, 0x23, 0x28, 0x25, 0x30, 0x2b, +- 0x31, 0x2f, 0xd4, 0xd8, 0xd8, 0x2f, 0x2e, 0x33, +- 0x26, 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x21, 0x28, 0x27, 0x35, 0x34, 0xd8, 0xd8, 0xd8, +- 0xda, 0xd4, 0x2e, 0x33, 0x25, 0x23, 0x21, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x23, 0x28, +- 0x26, 0x30, 0x32, 0x2b, 0x33, 0x2a, 0x26, 0x28, +- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x21, 0x23, 0x25, 0x30, 0x33, 0x35, 0x35, +- 0x2b, 0x2a, 0x26, 0x28, 0x22, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, +- 0x21, 0x22, 0x23, 0x28, 0x28, 0x23, 0x22, 0x21, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x21, 0x23, 0x28, 0x24, 0x24, +- 0x28, 0x23, 0x22, 0x21, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, +- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x23, 0x33, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x23, 0x61, 0x62, 0x2B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x35, 0x61, 0x63, 0x64, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x65, 0x66, 0x66, 0x67, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, ++ 0x3B, 0x68, 0x64, 0x69, 0x62, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x22, 0x23, 0x23, 0x55, 0x6A, 0x6B, ++ 0x6C, 0x6D, 0x6E, 0x6F, 0x6F, 0x33, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, ++ 0x22, 0x23, 0x35, 0x33, 0x3B, 0x70, 0x71, 0x72, ++ 0x73, 0x74, 0x75, 0x76, 0x77, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x23, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x55, ++ 0x2B, 0x34, 0x34, 0x42, 0x70, 0x71, 0x73, 0x78, ++ 0x78, 0x78, 0x79, 0x7A, 0x7B, 0x34, 0x22, 0x21, ++ 0x55, 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x22, 0x3B, 0x7C, 0x7D, 0x7E, 0x34, 0x35, ++ 0x21, 0x21, 0x21, 0x21, 0x35, 0x3B, 0x4C, 0x3C, ++ 0x42, 0x3F, 0x56, 0x7F, 0x71, 0x74, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x79, 0x80, 0x81, 0x3C, 0x82, ++ 0x83, 0x62, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, ++ 0x3B, 0x21, 0x55, 0x55, 0x2B, 0x34, 0x39, 0x3F, ++ 0x2A, 0x57, 0x8B, 0x72, 0x74, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x75, 0x8C, 0x6F, 0x63, ++ 0x63, 0x66, 0x61, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x84, 0x85, 0x86, 0x8D, 0x88, 0x8E, 0x8F, 0x5E, ++ 0x3C, 0x34, 0x3B, 0x34, 0x3F, 0x2A, 0x58, 0x57, ++ 0x52, 0x46, 0x6C, 0x73, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A, 0x6E, 0x69, ++ 0x69, 0x90, 0x34, 0x33, 0x22, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, ++ 0x91, 0x92, 0x8D, 0x87, 0x8E, 0x93, 0x8A, 0x35, ++ 0x94, 0x95, 0x96, 0x56, 0x32, 0x32, 0x52, 0x5C, ++ 0x4D, 0x82, 0x72, 0x78, 0x78, 0x78, 0x78, 0x79, ++ 0x97, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D, 0x6F, ++ 0x62, 0x65, 0x34, 0x4C, 0x33, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, ++ 0x91, 0x86, 0x87, 0x88, 0x93, 0x98, 0x60, 0x3F, ++ 0x99, 0x9A, 0x9A, 0x9B, 0x9C, 0x57, 0x5C, 0x36, ++ 0x9D, 0x9E, 0x6D, 0x78, 0x78, 0x78, 0x97, 0x6E, ++ 0x9F, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80, 0xA0, ++ 0x61, 0x51, 0x51, 0x3C, 0x4C, 0x55, 0x35, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x3B, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, ++ 0xA1, 0x8D, 0x88, 0x8E, 0xA2, 0xA3, 0x94, 0x42, ++ 0x51, 0xA4, 0x9A, 0x9A, 0x9A, 0xA5, 0x9C, 0x2A, ++ 0xA6, 0x74, 0x8C, 0x75, 0x97, 0xA7, 0x76, 0x75, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6E, ++ 0x46, 0x52, 0x56, 0x3F, 0x42, 0x34, 0x33, 0x35, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x22, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x3A, ++ 0x5A, 0x53, 0x53, 0x29, 0x43, 0x50, 0x53, 0x5A, ++ 0x5A, 0x29, 0x5A, 0x43, 0x53, 0x5D, 0x44, 0x2A, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, ++ 0x7D, 0x87, 0x8E, 0x93, 0xA8, 0xA9, 0xAA, 0x2A, ++ 0x57, 0x94, 0xA4, 0x9B, 0xAB, 0xAC, 0x9A, 0x9B, ++ 0xAD, 0x76, 0x79, 0x78, 0x75, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x6D, ++ 0x46, 0x5C, 0x57, 0x56, 0x51, 0x42, 0x4C, 0x55, ++ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x24, 0x25, 0x26, 0x26, 0x27, 0x28, 0x27, ++ 0x29, 0x2A, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x30, ++ 0x59, 0x3D, 0x3D, 0x3D, 0x27, 0x27, 0x26, 0x5D, ++ 0x27, 0x27, 0x54, 0x37, 0x2E, 0x4A, 0x36, 0x2B, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0xAE, 0x88, 0xAF, 0xB0, 0xAA, 0x2A, 0x39, 0x34, ++ 0x4C, 0x5C, 0x58, 0xB1, 0xB2, 0xB3, 0xAB, 0xA5, ++ 0x9A, 0xB4, 0xB5, 0x8C, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x80, ++ 0xB6, 0x38, 0x5C, 0x57, 0x56, 0x3F, 0x42, 0x3B, ++ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, ++ 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x32, ++ 0x31, 0x2C, 0x26, 0x2C, 0x33, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34, ++ 0x32, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x33, ++ 0x33, 0x55, 0x55, 0x55, 0x23, 0x23, 0x35, 0x23, ++ 0x23, 0x35, 0x2B, 0x4E, 0x4F, 0x2A, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, 0x38, 0x25, ++ 0x2C, 0x52, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x55, 0x8A, 0x8F, 0x39, 0x34, 0x3C, 0x57, 0x32, ++ 0x46, 0x42, 0x52, 0x4A, 0x51, 0xAA, 0xB7, 0xB3, ++ 0xAB, 0xAC, 0xAC, 0xB8, 0xB9, 0x79, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, 0x7A, ++ 0xBA, 0x70, 0x7B, 0xBB, 0x82, 0x56, 0x3F, 0x34, ++ 0x4C, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x36, ++ 0x2D, 0x37, 0x38, 0x2A, 0x2B, 0x21, 0x21, 0x21, ++ 0x21, 0x22, 0x39, 0x3A, 0x2C, 0x3B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x22, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x24, 0x3D, ++ 0x3E, 0x25, 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x33, 0x29, 0x26, 0x2A, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x54, 0x3E, 0x28, ++ 0x28, 0x59, 0x59, 0x48, 0x51, 0x3F, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x2B, 0x56, 0x4D, 0x29, 0x5B, 0x34, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x55, 0x60, 0x3F, 0x42, 0x51, 0x32, 0x52, ++ 0x40, 0x38, 0x40, 0x46, 0x42, 0xBC, 0xBD, 0xBE, ++ 0xBF, 0x9B, 0xAB, 0x9B, 0xC0, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, ++ 0xA7, 0x63, 0x63, 0x66, 0x6F, 0x58, 0x56, 0x39, ++ 0x34, 0x2B, 0x23, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x2F, ++ 0x3D, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x40, 0x41, 0x3B, 0x21, ++ 0x21, 0x22, 0x42, 0x38, 0x43, 0x44, 0x3A, 0x45, ++ 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x46, 0x30, 0x47, ++ 0x2A, 0x48, 0x48, 0x21, 0x21, 0x21, 0x21, 0x22, ++ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x22, 0x34, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x22, 0x4D, 0x44, 0x2A, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x50, 0x4A, 0x57, 0x35, ++ 0x35, 0x2B, 0x56, 0x27, 0x4B, 0x5D, 0x35, 0x21, ++ 0x21, 0x21, 0x21, 0x3B, 0x52, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, ++ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x38, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x3C, 0x42, 0x21, 0x33, 0x24, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x2B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x33, 0x38, 0x59, 0x37, 0x27, 0x27, 0x4A, 0x47, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x23, 0x4C, 0x4C, 0x2A, 0x56, 0x46, 0x31, ++ 0x4D, 0x36, 0x50, 0x5A, 0x35, 0xC1, 0xC1, 0xC2, ++ 0xC3, 0xB7, 0xB3, 0xBE, 0x76, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, ++ 0x6D, 0x62, 0x69, 0x6F, 0x58, 0x46, 0x32, 0x2A, ++ 0x39, 0x34, 0x35, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x49, ++ 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x23, 0x29, 0x48, 0x22, ++ 0x42, 0x3A, 0x4A, 0x49, 0x4B, 0x2E, 0x4B, 0x3E, ++ 0x4A, 0x2C, 0x34, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x30, 0x40, 0x22, ++ 0x21, 0x32, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x39, ++ 0x36, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, ++ 0x31, 0x4F, 0x2A, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x31, 0x59, 0x2A, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x55, 0x27, 0x24, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x4C, 0x44, 0x27, 0x35, 0x21, ++ 0x21, 0x21, 0x21, 0x2A, 0x26, 0x2B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3A, ++ 0x40, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, 0x49, ++ 0x35, 0x21, 0x21, 0x21, 0x21, 0x22, 0x58, 0x25, ++ 0x5A, 0x57, 0x21, 0x4C, 0x3D, 0x34, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, ++ 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x3A, 0x4B, 0x53, 0x56, 0x55, 0x33, 0x42, 0x56, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x55, 0x4C, 0x42, 0x2A, 0x57, 0x5C, 0x38, ++ 0x36, 0x47, 0x5A, 0xB6, 0x77, 0xC4, 0xC1, 0xC1, ++ 0xC4, 0xC5, 0xB7, 0xB9, 0x79, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, ++ 0x97, 0xC6, 0x68, 0x57, 0x4D, 0x38, 0x46, 0x32, ++ 0x51, 0x42, 0x2B, 0x35, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x2D, 0x38, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x3C, ++ 0x47, 0x4F, 0x50, 0x51, 0x3F, 0x44, 0x42, 0x34, ++ 0x52, 0x53, 0x28, 0x2A, 0x22, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x48, 0x54, 0x33, 0x21, ++ 0x23, 0x3A, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x2A, ++ 0x26, 0x33, 0x21, 0x21, 0x21, 0x21, 0x23, 0x45, ++ 0x37, 0x3D, 0x41, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x31, ++ 0x59, 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3C, 0x28, 0x33, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x23, 0x27, 0x5B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3C, 0x54, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B, ++ 0x46, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3B, 0x49, ++ 0x2B, 0x21, 0x21, 0x21, 0x23, 0x40, 0x43, 0x32, ++ 0x35, 0x21, 0x21, 0x33, 0x28, 0x4C, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x4F, ++ 0x5B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x50, ++ 0x44, 0x39, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x3B, 0x34, 0x3F, 0x58, 0x46, 0x40, 0x36, ++ 0x50, 0x41, 0x4D, 0xC7, 0x65, 0xC2, 0xC1, 0xC1, ++ 0xC8, 0xBF, 0xB1, 0x97, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, ++ 0x80, 0xC9, 0x36, 0x50, 0x36, 0x38, 0x31, 0x32, ++ 0x56, 0x39, 0x34, 0x33, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x2B, 0x3D, 0x28, 0x35, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x4D, ++ 0x55, 0x2B, 0x21, 0x21, 0x2B, 0x28, 0x3B, 0x21, ++ 0x21, 0x22, 0x52, 0x27, 0x56, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x23, 0x2A, 0x30, 0x3F, 0x21, 0x22, ++ 0x57, 0x44, 0x58, 0x21, 0x21, 0x21, 0x21, 0x56, ++ 0x37, 0x2B, 0x21, 0x21, 0x21, 0x21, 0x56, 0x3E, ++ 0x36, 0x2A, 0x59, 0x23, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x50, 0x3D, ++ 0x42, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x56, 0x49, 0x24, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x42, 0x54, 0x33, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4D, 0x59, ++ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x4A, ++ 0x51, 0x21, 0x21, 0x33, 0x47, 0x47, 0x33, 0x21, ++ 0x21, 0x21, 0x21, 0x55, 0x27, 0x3B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x4B, ++ 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x34, 0x44, ++ 0x3F, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x33, 0x4C, 0x3C, 0x51, 0x57, 0x5C, 0x38, 0x38, ++ 0x9D, 0xCA, 0x61, 0xCB, 0xCC, 0xCD, 0xC4, 0xC8, ++ 0xA4, 0x9C, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x79, ++ 0x7A, 0x7F, 0x41, 0x29, 0x47, 0x38, 0x40, 0x57, ++ 0x32, 0x51, 0x42, 0x2B, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x57, 0x49, 0x32, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57, 0x27, ++ 0x35, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x2A, 0x21, ++ 0x21, 0x21, 0x21, 0x56, 0x54, 0x2B, 0x21, 0x21, ++ 0x21, 0x21, 0x4C, 0x2E, 0x5A, 0x23, 0x55, 0x5B, ++ 0x49, 0x3A, 0x22, 0x21, 0x21, 0x21, 0x21, 0x32, ++ 0x3E, 0x3B, 0x21, 0x21, 0x21, 0x35, 0x54, 0x53, ++ 0x23, 0x55, 0x4F, 0x55, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x25, 0x44, 0x42, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x23, 0x41, 0x46, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x23, 0x53, 0x2F, 0x2A, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x32, 0x28, 0x33, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, 0x59, 0x5B, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54, ++ 0x57, 0x21, 0x35, 0x53, 0x47, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3C, 0x44, 0x3B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x41, 0x43, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3F, 0x29, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x55, 0x4C, 0x3F, 0x2A, 0x46, 0x31, 0x36, 0x46, ++ 0x71, 0x97, 0xCE, 0xCB, 0xCF, 0xA4, 0x9C, 0xA4, ++ 0xAD, 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x8C, ++ 0x7A, 0xA7, 0x36, 0x50, 0x3A, 0x36, 0x38, 0x52, ++ 0x32, 0x2A, 0x3F, 0x2B, 0x22, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x22, 0x5A, 0x5A, 0x23, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x28, ++ 0x35, 0x21, 0x21, 0x21, 0x55, 0x30, 0x56, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x5B, 0x45, 0x21, 0x21, ++ 0x21, 0x21, 0x2B, 0x2E, 0x25, 0x47, 0x3D, 0x2D, ++ 0x25, 0x4C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39, ++ 0x44, 0x55, 0x21, 0x21, 0x21, 0x46, 0x59, 0x3B, ++ 0x21, 0x23, 0x30, 0x34, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x2A, 0x28, 0x4E, 0x42, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x3C, 0x3D, 0x42, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x51, 0x4B, 0x49, 0x39, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x5C, 0x25, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x38, 0x4B, 0x3B, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x54, ++ 0x56, 0x21, 0x5B, 0x3A, 0x35, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x51, 0x59, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x32, 0x2D, 0x42, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A, ++ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x2B, 0x3C, 0x39, 0x56, 0x46, 0x40, 0x36, 0xB6, ++ 0x73, 0x82, 0xCB, 0xD0, 0x75, 0xD1, 0xD2, 0xD1, ++ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x74, 0xCE, ++ 0x9E, 0x6E, 0xD3, 0xC6, 0x6F, 0x81, 0x38, 0x5C, ++ 0x52, 0x58, 0x39, 0x4C, 0x35, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x4C, 0x4A, 0x40, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x36, 0x3A, ++ 0x21, 0x21, 0x21, 0x21, 0x55, 0x27, 0x3F, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x3B, 0x21, ++ 0x21, 0x21, 0x42, 0x2E, 0x2D, 0x2D, 0x26, 0x46, ++ 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, ++ 0x44, 0x55, 0x21, 0x21, 0x35, 0x25, 0x40, 0x21, ++ 0x21, 0x22, 0x4E, 0x58, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x39, 0x59, 0x38, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x56, 0x59, 0x23, 0x21, 0x21, 0x21, ++ 0x21, 0x4C, 0x54, 0x5B, 0x59, 0x4C, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x57, 0x3A, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x4D, 0x49, 0x26, 0x23, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x53, ++ 0x32, 0x51, 0x27, 0x42, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x42, 0x25, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x24, 0x37, 0x3E, 0x35, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x48, ++ 0x48, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x3B, 0x39, 0x3F, 0x32, 0x5C, 0x38, 0x47, 0xD4, ++ 0x7A, 0xC7, 0xCB, 0xD0, 0x74, 0x80, 0x8C, 0x9F, ++ 0x80, 0x79, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x73, 0x72, 0xD5, 0xCA, 0x61, 0xD3, 0x40, 0x5C, ++ 0x46, 0x58, 0x51, 0x42, 0x33, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x39, 0x4B, 0x58, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x2A, 0x3D, 0x51, ++ 0x21, 0x21, 0x21, 0x21, 0x55, 0x28, 0x42, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, 0x52, 0x21, ++ 0x21, 0x21, 0x58, 0x59, 0x42, 0x3C, 0x35, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x57, ++ 0x4E, 0x23, 0x21, 0x22, 0x4D, 0x54, 0x35, 0x21, ++ 0x21, 0x21, 0x5A, 0x46, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x22, 0x56, 0x59, 0x36, 0x35, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x36, 0x5B, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x53, 0x48, 0x3F, 0x27, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x24, 0x47, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x22, 0x40, 0x27, 0x29, 0x29, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, ++ 0x40, 0x41, 0x5C, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x39, 0x41, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x32, 0x26, 0x47, 0x28, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, ++ 0x53, 0x28, 0x36, 0x42, 0x23, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x4C, 0x39, 0x58, 0x32, 0x31, 0x38, 0x47, 0xD4, ++ 0xCF, 0xD0, 0x6C, 0x9E, 0xD6, 0x6B, 0xD7, 0xD8, ++ 0xD7, 0x6B, 0xCF, 0x7B, 0x80, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x74, 0x72, 0xD0, 0xA6, 0x70, 0x51, ++ 0x46, 0x56, 0x51, 0x42, 0x55, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x5C, 0x27, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x32, 0x37, 0x54, 0x33, ++ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x2A, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x2C, 0x21, ++ 0x21, 0x21, 0x47, 0x36, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, ++ 0x54, 0x23, 0x21, 0x24, 0x4F, 0x46, 0x21, 0x21, ++ 0x21, 0x21, 0x38, 0x2C, 0x22, 0x21, 0x21, 0x21, ++ 0x21, 0x42, 0x55, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x45, 0x54, 0x56, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x22, 0x53, 0x24, 0x21, 0x21, 0x21, 0x21, ++ 0x46, 0x5D, 0x4C, 0x52, 0x4E, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x31, 0x48, 0x22, 0x21, 0x21, ++ 0x21, 0x22, 0x46, 0x54, 0x3B, 0x45, 0x29, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x47, ++ 0x28, 0x28, 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x51, 0x41, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x56, 0x54, 0x39, 0x56, 0x28, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x34, 0x50, 0x30, 0x4E, 0x40, 0x34, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x4C, 0x39, 0x58, 0x52, 0x5C, 0x38, 0x47, 0x9D, ++ 0xC9, 0xD9, 0xDA, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC, ++ 0xDC, 0xDC, 0xDC, 0xDD, 0x6B, 0x7B, 0x75, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x74, 0x71, 0xD0, 0x3F, ++ 0x52, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x47, 0x3A, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x35, 0x45, 0x4A, 0x2C, 0x3B, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x30, 0x56, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x58, 0x29, 0x21, ++ 0x21, 0x21, 0x53, 0x3F, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x31, ++ 0x43, 0x22, 0x3B, 0x28, 0x48, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x56, 0x25, 0x35, 0x21, 0x21, 0x21, ++ 0x39, 0x54, 0x34, 0x21, 0x21, 0x21, 0x35, 0x3A, ++ 0x30, 0x57, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x33, 0x39, 0x21, 0x21, ++ 0x21, 0x35, 0x25, 0x3F, 0x21, 0x21, 0x21, 0x56, ++ 0x30, 0x58, 0x21, 0x24, 0x43, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x4D, 0x29, 0x22, 0x21, 0x21, ++ 0x22, 0x32, 0x26, 0x42, 0x21, 0x46, 0x2C, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x48, ++ 0x2E, 0x36, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x56, 0x28, 0x35, 0x21, 0x21, ++ 0x21, 0x3F, 0x27, 0x32, 0x21, 0x51, 0x25, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x22, 0x39, 0x38, 0x25, 0x54, 0x50, ++ 0x58, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x4C, 0x3F, 0x56, 0x52, 0x31, 0x4D, 0x47, 0x39, ++ 0xD8, 0xDC, 0xDC, 0xDC, 0xDE, 0xDF, 0xDF, 0xDF, ++ 0xDF, 0xDF, 0xDE, 0xDE, 0xDC, 0xDD, 0xD6, 0x97, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x75, 0x97, 0x56, ++ 0x46, 0x57, 0x2A, 0x42, 0x2B, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x38, 0x29, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x35, 0x5B, 0x3D, 0x40, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x59, 0x3F, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x40, 0x5A, 0x21, ++ 0x21, 0x22, 0x5D, 0x34, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x5B, ++ 0x2C, 0x33, 0x29, 0x28, 0x3B, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x34, 0x59, 0x3C, 0x21, 0x21, 0x2B, ++ 0x53, 0x36, 0x22, 0x21, 0x21, 0x34, 0x5A, 0x28, ++ 0x3F, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x40, 0x41, 0x23, 0x21, ++ 0x21, 0x3B, 0x28, 0x2B, 0x21, 0x21, 0x2A, 0x44, ++ 0x38, 0x22, 0x21, 0x24, 0x50, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x50, 0x25, 0x23, 0x21, 0x23, ++ 0x45, 0x5D, 0x52, 0x21, 0x21, 0x40, 0x50, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x50, ++ 0x2D, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x46, 0x30, 0x33, 0x21, 0x22, ++ 0x24, 0x4E, 0x45, 0x22, 0x21, 0x58, 0x25, 0x22, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x33, 0x3C, 0x48, ++ 0x27, 0x39, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x34, 0x3F, 0x58, 0x57, 0x31, 0x4D, 0x47, 0x56, ++ 0xDB, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE2, 0xE2, ++ 0xE2, 0xE2, 0xE1, 0xE3, 0xE4, 0xDE, 0xDC, 0x6B, ++ 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0xA7, 0x38, ++ 0x46, 0x56, 0x2A, 0x39, 0x3B, 0x23, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x32, 0x44, 0x34, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3F, ++ 0x4D, 0x41, 0x29, 0x42, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x44, 0x46, 0x34, ++ 0x2B, 0x55, 0x55, 0x2B, 0x56, 0x59, 0x36, 0x21, ++ 0x21, 0x22, 0x59, 0x2B, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x55, 0x5C, 0x21, 0x21, 0x21, 0x40, ++ 0x50, 0x4D, 0x4F, 0x32, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x55, 0x44, 0x31, 0x22, 0x3B, 0x5A, ++ 0x41, 0x55, 0x21, 0x35, 0x57, 0x4A, 0x2E, 0x48, ++ 0x57, 0x32, 0x3F, 0x55, 0x35, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x25, 0x47, 0x22, 0x21, ++ 0x21, 0x4C, 0x28, 0x35, 0x21, 0x34, 0x30, 0x3A, ++ 0x23, 0x21, 0x21, 0x58, 0x3A, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x4D, 0x4E, 0x35, 0x33, 0x48, ++ 0x44, 0x56, 0x21, 0x21, 0x21, 0x58, 0x41, 0x23, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x29, ++ 0x4A, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x32, 0x44, 0x2B, 0x23, 0x45, ++ 0x3D, 0x31, 0x22, 0x21, 0x21, 0x4C, 0x27, 0x35, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x53, 0x53, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x34, 0x3F, 0x58, 0x57, 0x40, 0x38, 0x47, 0xD4, ++ 0xDC, 0xDE, 0xE0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE1, 0xDF, 0xDC, ++ 0xE6, 0x8C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x2A, 0x40, ++ 0x46, 0x58, 0x2A, 0x42, 0x34, 0x34, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x2B, 0x54, 0x5A, 0x34, 0x23, ++ 0x35, 0x23, 0x35, 0x33, 0x2B, 0x24, 0x54, 0x4B, ++ 0x59, 0x5C, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4B, 0x44, 0x59, ++ 0x27, 0x26, 0x26, 0x4A, 0x3E, 0x41, 0x55, 0x21, ++ 0x21, 0x22, 0x41, 0x39, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x34, 0x53, 0x4D, 0x21, 0x21, 0x21, 0x5C, ++ 0x4B, 0x4F, 0x40, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x48, 0x30, 0x50, 0x26, 0x54, ++ 0x34, 0x21, 0x55, 0x4E, 0x2D, 0x2F, 0x4F, 0x37, ++ 0x3E, 0x4B, 0x4B, 0x30, 0x27, 0x53, 0x2C, 0x57, ++ 0x42, 0x4C, 0x55, 0x22, 0x22, 0x22, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x39, 0x4A, 0x3F, 0x21, 0x21, ++ 0x21, 0x55, 0x53, 0x55, 0x2A, 0x26, 0x54, 0x33, ++ 0x21, 0x21, 0x21, 0x51, 0x54, 0x3B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x51, 0x3D, 0x46, 0x5A, 0x4F, ++ 0x52, 0x21, 0x21, 0x21, 0x21, 0x22, 0x27, 0x31, ++ 0x33, 0x23, 0x42, 0x4C, 0x21, 0x21, 0x21, 0x5B, ++ 0x54, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3B, 0x44, 0x45, 0x48, 0x4B, ++ 0x38, 0x22, 0x21, 0x21, 0x21, 0x21, 0x53, 0x48, ++ 0x33, 0x23, 0x34, 0x3C, 0x22, 0x57, 0x4D, 0x33, ++ 0x21, 0x21, 0x21, 0x21, 0x22, 0x23, 0x34, 0x40, ++ 0x44, 0x31, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x3B, 0x42, 0x2A, 0x57, 0x31, 0x38, 0x5C, 0xD8, ++ 0xDC, 0xE4, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE2, 0xE0, ++ 0xDE, 0xCA, 0x9F, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x80, 0x76, 0x57, 0x5C, ++ 0x31, 0x6E, 0x34, 0x3C, 0xC9, 0x3B, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x33, 0x5B, 0x30, 0x25, ++ 0x5D, 0x5A, 0x53, 0x27, 0x26, 0x59, 0x36, 0x56, ++ 0x55, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x3D, 0x2A, 0x55, ++ 0x42, 0x51, 0x56, 0x24, 0x2A, 0x35, 0x21, 0x21, ++ 0x21, 0x21, 0x45, 0x53, 0x3B, 0x22, 0x22, 0x35, ++ 0x46, 0x59, 0x54, 0x55, 0x21, 0x21, 0x21, 0x31, ++ 0x2D, 0x47, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x33, 0x50, 0x5D, 0x45, 0x55, ++ 0x21, 0x21, 0x34, 0x4F, 0x29, 0x58, 0x33, 0x4C, ++ 0x39, 0x3C, 0x2A, 0x40, 0x48, 0x54, 0x3D, 0x3D, ++ 0x37, 0x4A, 0x59, 0x29, 0x5B, 0x36, 0x52, 0x2A, ++ 0x42, 0x3C, 0x32, 0x30, 0x41, 0x35, 0x21, 0x21, ++ 0x21, 0x33, 0x41, 0x26, 0x4B, 0x5A, 0x35, 0x21, ++ 0x21, 0x21, 0x21, 0x3C, 0x3E, 0x41, 0x23, 0x21, ++ 0x21, 0x21, 0x21, 0x23, 0x41, 0x49, 0x30, 0x32, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x52, 0x4F, ++ 0x5D, 0x41, 0x27, 0x58, 0x21, 0x21, 0x21, 0x5B, ++ 0x41, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x47, 0x49, 0x4F, 0x5C, ++ 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x39, 0x4A, ++ 0x28, 0x43, 0x27, 0x5C, 0x35, 0x25, 0x49, 0x5B, ++ 0x58, 0x52, 0x5C, 0x38, 0x48, 0x41, 0x4A, 0x4B, ++ 0x50, 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x35, ++ 0x3B, 0x3C, 0x2A, 0x32, 0x5C, 0x40, 0x32, 0xDD, ++ 0xDC, 0xE3, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE1, 0xE0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x80, 0xE7, 0x58, 0x52, ++ 0x5C, 0x67, 0xE7, 0x6C, 0xE8, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x23, 0x39, 0x5C, ++ 0x29, 0x5A, 0x4D, 0x5C, 0x2A, 0x2B, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x44, 0x42, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x33, 0x27, 0x30, 0x5A, 0x2C, 0x25, ++ 0x4B, 0x50, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x33, ++ 0x2C, 0x3B, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x4C, 0x22, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x55, 0x2B, ++ 0x39, 0x32, 0x4D, 0x29, 0x26, 0x3D, 0x2D, 0x2D, ++ 0x4B, 0x4B, 0x2F, 0x30, 0x42, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x3B, 0x29, 0x2C, 0x55, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x23, 0x50, 0x4D, 0x22, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2B, 0x32, 0x3B, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x51, ++ 0x48, 0x45, 0x34, 0x21, 0x21, 0x21, 0x21, 0x38, ++ 0x44, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x33, 0x32, 0x34, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3C, ++ 0x5B, 0x4D, 0x42, 0x21, 0x21, 0x34, 0x4D, 0x47, ++ 0x5A, 0x5D, 0x27, 0x4E, 0x25, 0x3A, 0x5C, 0x42, ++ 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, ++ 0x2B, 0x34, 0x51, 0x56, 0x46, 0x40, 0xE9, 0xDA, ++ 0xDD, 0xE1, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE2, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x76, 0xD3, 0x67, 0x39, ++ 0x3C, 0xCF, 0xD5, 0x9F, 0x3B, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x2B, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3C, 0x53, 0x44, 0x3D, 0x43, ++ 0x57, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x35, 0x55, 0x3F, 0x2A, ++ 0x57, 0x24, 0x3F, 0x3B, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x22, 0x22, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, ++ 0x3C, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x22, 0x22, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x55, 0x4C, 0x3F, 0x58, 0x46, 0x31, 0x8B, 0xAD, ++ 0xCC, 0xE2, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xEA, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x97, 0x35, 0x6E, 0xC6, 0x82, ++ 0xA6, 0x73, 0x75, 0xBA, 0x2B, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x34, 0x44, 0x3B, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x23, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x33, 0x34, 0xEB, 0x34, 0x57, 0x5C, 0x4C, 0xA4, ++ 0xEC, 0x64, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0x83, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x80, 0xED, 0xCF, 0xCE, 0x78, 0x78, ++ 0x78, 0x7A, 0x6D, 0x34, 0x22, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x55, 0x25, 0x55, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x23, 0x34, 0xEE, 0xEF, 0x5F, 0x96, 0x23, 0xB3, ++ 0xBF, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x9F, 0x78, 0x78, 0x78, 0x78, ++ 0x80, 0x9F, 0x65, 0x33, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x28, 0x55, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x22, 0x4C, 0xF1, 0xA5, 0xAC, 0xAB, 0x60, 0xB3, ++ 0xB3, 0xF2, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xF3, 0x6D, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x80, 0x61, 0x34, 0x23, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x3B, 0x25, 0x22, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5E, ++ 0x4C, 0x3B, 0xF4, 0xA5, 0x9B, 0x9B, 0xB4, 0xEF, ++ 0xEF, 0xBF, 0xAD, 0xF5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0x67, 0x75, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, ++ 0xA7, 0x3F, 0x55, 0x22, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x4E, 0x23, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2B, 0x5F, ++ 0x9B, 0xD2, 0x3C, 0xB7, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0xF0, 0xBB, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x80, 0x82, ++ 0x34, 0x3B, 0x33, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x5D, 0x23, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x60, ++ 0xAB, 0xA5, 0xB8, 0xB1, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xF6, 0xB7, 0xB5, 0xF0, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, ++ 0x67, 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x78, 0x80, 0x9F, 0xBA, 0x42, ++ 0x4C, 0x2B, 0x22, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x3A, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x55, ++ 0xF2, 0x9B, 0x9B, 0xB4, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xEF, 0xB4, 0x5F, 0x63, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF5, ++ 0x76, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x78, 0x78, 0x80, 0x6D, 0x65, 0x3C, 0x34, ++ 0x3B, 0x35, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, ++ 0xF7, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xEF, 0xB3, 0xB8, 0xEA, 0xE5, 0xE5, 0xE5, ++ 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xF8, 0x68, ++ 0x7A, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x78, 0x80, 0x97, 0x82, 0x39, 0x39, 0x34, 0x3B, ++ 0x33, 0x23, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x2A, 0x29, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x3B, 0xB8, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xEF, 0xF6, 0xB2, 0xF9, 0xFA, 0xFA, 0xFA, ++ 0xFA, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0, 0x6F, 0x97, ++ 0x80, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, ++ 0x8C, 0x61, 0x39, 0x2A, 0x3F, 0x3C, 0x4C, 0x55, ++ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x4C, 0x31, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x22, 0xFB, 0xF6, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xEF, 0xB3, 0xB2, 0xF9, 0xF3, 0xF3, 0xF3, ++ 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0x90, 0x6D, 0x97, ++ 0x8C, 0x6D, 0x76, 0xBB, 0xC6, 0xB9, 0xC0, 0xFC, ++ 0xAD, 0xFB, 0x2A, 0x58, 0x42, 0x4C, 0x55, 0x33, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x33, 0xD2, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, ++ 0xEF, 0xEF, 0xB4, 0xB8, 0xEB, 0xE8, 0x7F, 0xD6, ++ 0xD6, 0xD6, 0xD6, 0x9D, 0x9D, 0x52, 0xEB, 0x5F, ++ 0x5F, 0x5F, 0xF2, 0xA4, 0xBF, 0xBF, 0xB4, 0xBF, ++ 0xEE, 0x56, 0x2A, 0x42, 0x4C, 0x2B, 0x33, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x4C, 0xBE, 0xF6, 0xEF, 0xEF, 0xEF, ++ 0xF6, 0xB4, 0xB2, 0xF1, 0x3C, 0x56, 0x46, 0x5C, ++ 0x31, 0x38, 0x40, 0x40, 0x4D, 0x4D, 0xB8, 0xAC, ++ 0xBF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xB4, ++ 0xB1, 0x39, 0x39, 0x3B, 0x2B, 0x23, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3B, 0xAD, 0xA4, 0xBF, 0xBF, ++ 0xB7, 0xB2, 0xEE, 0x5E, 0x39, 0x51, 0x2A, 0x32, ++ 0x52, 0x46, 0x5C, 0x31, 0x31, 0x2A, 0xA5, 0xEF, ++ 0xFD, 0xB4, 0xEF, 0xF6, 0xF6, 0xEF, 0xF6, 0xB2, ++ 0x3F, 0x34, 0x2B, 0x55, 0x23, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x33, 0xEB, 0xF7, 0xAA, ++ 0xAA, 0xF7, 0xEB, 0x55, 0x3B, 0x3C, 0x39, 0x51, ++ 0x2A, 0x56, 0x32, 0x57, 0x57, 0x2A, 0x96, 0x3C, ++ 0x2A, 0xEE, 0xEF, 0x5F, 0xD2, 0xEF, 0xB4, 0xAA, ++ 0x42, 0x55, 0x35, 0x22, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x3B, ++ 0x3B, 0x35, 0x21, 0x23, 0x33, 0x3B, 0x4C, 0x3C, ++ 0x39, 0x3F, 0x51, 0x2A, 0x51, 0x51, 0x58, 0x32, ++ 0x56, 0xF4, 0xB1, 0x42, 0x3C, 0xF2, 0x9C, 0x3F, ++ 0x33, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x33, 0x55, ++ 0x3B, 0x4C, 0x4C, 0x3C, 0x42, 0x42, 0x3C, 0x34, ++ 0x34, 0x3F, 0x4C, 0x3B, 0x4C, 0x3B, 0x3C, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x35, 0x33, 0x55, 0x33, 0x33, 0x33, 0x55, 0x2B, ++ 0x2B, 0x35, 0x35, 0x35, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + }; + + #endif /* !__HAVE_ARCH_LINUX_LOGO */ +@@ -994,7 +1760,7 @@ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, ++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + }; + + #endif /* !__HAVE_ARCH_LINUX_LOGOBW */ +@@ -1401,7 +2167,7 @@ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + #endif /* !__HAVE_ARCH_LINUX_LOGO16 */ diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch new file mode 100644 index 0000000000..4daeaa11be --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/mkdep.patch @@ -0,0 +1,16 @@ + +# +# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- linux/Makefile~mkdep 2003-12-19 09:36:51.000000000 -0800 ++++ linux/Makefile 2003-12-19 09:57:44.000000000 -0800 +@@ -458,7 +458,7 @@ + + dep-files: scripts/mkdep archdep include/linux/version.h + scripts/mkdep -- init/*.c > .depend +- scripts/mkdep -- `find $(FINDHPATH) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend ++ $(foreach, dir, $(FINDHPATH), scripts/mkdep -- `find $(dir) -name SCCS -prune -o -follow -name \*.h ! -name modversions.h -print` >> .hdepend) + $(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)" + ifdef CONFIG_MODVERSIONS + $(MAKE) update-modverfile diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch new file mode 100644 index 0000000000..e70fc28031 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/module_licence.patch @@ -0,0 +1,96 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/drivers/usb/device/bi/sa1100.c~modulelicence ++++ linux/drivers/usb/device/bi/sa1100.c +@@ -43,6 +43,7 @@ + #include "../usbd-build.h" + #include "../usbd-module.h" + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device SA-1100 Bus Interface"); + +--- linux/drivers/usb/device/usbd.c~modulelicence ++++ linux/drivers/usb/device/usbd.c +@@ -72,6 +72,7 @@ + #include "usbd-build.h" + #include "usbd-module.h" + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device Core Support"); + +--- linux/drivers/usb/device/usbd-monitor.c~modulelicence ++++ linux/drivers/usb/device/usbd-monitor.c +@@ -35,6 +35,7 @@ + #include "usbd-build.h" + #include "usbd-module.h" + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device Monitor"); + USBD_MODULE_INFO ("usbd_monitor 0.3"); +--- linux/drivers/usb/device/net_fd/net-fd.c~modulelicence ++++ linux/drivers/usb/device/net_fd/net-fd.c +@@ -33,6 +33,7 @@ + #include "../usbd-build.h" + #include "../usbd-module.h" + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device Network Function"); + +--- linux/arch/arm/mach-sa1100/deviceinfo.c~modulelicence ++++ linux/arch/arm/mach-sa1100/deviceinfo.c +@@ -28,6 +28,7 @@ + + #define MODULE_NAME "deviceinfo" + #define DEVINFO_DIRNAME "deviceinfo" ++MODULE_LICENSE("GPL"); + + static int proc_read_deviceinfo(struct file * file, char * buf, + size_t nbytes, loff_t *ppos); +--- linux/arch/arm/mach-sa1100/gpio.c~modulelicence ++++ linux/arch/arm/mach-sa1100/gpio.c +@@ -15,7 +15,7 @@ + + #include <asm/hardware.h> + +- ++MODULE_LICENSE("GPL"); + + static int proc_gpio_read(char *page, char **start, off_t off, + int count, int *eof, void *data) +--- linux/drivers/usb/device/serial_fd/serial.c~modulelicence ++++ linux/drivers/usb/device/serial_fd/serial.c +@@ -80,6 +80,7 @@ + #include "../usbd-module.h" + + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device Serial Function"); + +--- linux/drivers/usb/device/usbd-serialnumber.c~modulelicence ++++ linux/drivers/usb/device/usbd-serialnumber.c +@@ -33,6 +33,7 @@ + #include "usbd-build.h" + #include "usbd-module.h" + ++MODULE_LICENSE("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("USB Device Monitor"); + USBD_MODULE_INFO ("usbd_monitor 0.2-alpha"); +--- linux/drivers/usb/device/bi/pxa.c~modulelicence ++++ linux/drivers/usb/device/bi/pxa.c +@@ -48,6 +48,7 @@ + #include "../usbd-build.h" + #include "../usbd-module.h" + ++MODULE_LICENSE ("GPL"); + MODULE_AUTHOR ("sl@lineo.com, tbr@lineo.com"); + MODULE_DESCRIPTION ("Xscale USB Device Bus Interface"); + diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch new file mode 100644 index 0000000000..ebde460369 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/piro.patch @@ -0,0 +1,75444 @@ +diff -Nur linux_c860_org/CREDITS linux/CREDITS +--- linux_c860_org/CREDITS 2002-08-26 14:43:17.000000000 +0900 ++++ linux/CREDITS 2004-06-10 21:09:10.000000000 +0900 +@@ -981,8 +981,8 @@ + + N: Nigel Gamble + E: nigel@nrg.org +-E: nigel@sgi.com + D: Interrupt-driven printer driver ++D: Preemptible kernel + S: 120 Alley Way + S: Mountain View, California 94040 + S: USA +diff -Nur linux_c860_org/Documentation/Configure.help linux/Documentation/Configure.help +--- linux_c860_org/Documentation/Configure.help 2002-10-09 10:20:29.000000000 +0900 ++++ linux/Documentation/Configure.help 2004-06-10 21:09:10.000000000 +0900 +@@ -266,6 +266,29 @@ + If you have a system with several CPUs, you do not need to say Y + here: the local APIC will be used automatically. + ++Preemptible Kernel ++CONFIG_PREEMPT ++ This option reduces the latency of the kernel when reacting to ++ real-time or interactive events by allowing a low priority process to ++ be preempted even if it is in kernel mode executing a system call. ++ This allows applications to run more reliably even when the system is ++ under load. ++ ++ Say Y here if you are building a kernel for a desktop, embedded or ++ real-time system. Say N if you are unsure. ++ ++Break Selected Locks ++CONFIG_LOCK_BREAK ++ This option will break certain locks in high-latency regions ++ throughout the kernel. It is intended for use in conjunction with ++ the preemptible kernel (CONFIG_PREEMPT). Since in-kernel preemption ++ can not occur while locks are held, temporarily releasing and then ++ reacquiring long-held locks will further improve system response. ++ ++ Say Y if you are compiling for a system with strict latency ++ requirements such as an embedded, real-time, or audio processing ++ system. Say N otherwise. ++ + Kernel math emulation + CONFIG_MATH_EMULATION + Linux can emulate a math coprocessor (used for floating point +diff -Nur linux_c860_org/Documentation/preempt-locking.txt linux/Documentation/preempt-locking.txt +--- linux_c860_org/Documentation/preempt-locking.txt 1970-01-01 09:00:00.000000000 +0900 ++++ linux/Documentation/preempt-locking.txt 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,104 @@ ++ Proper Locking Under a Preemptible Kernel: ++ Keeping Kernel Code Preempt-Safe ++ Robert Love <rml@tech9.net> ++ Last Updated: 22 Jan 2002 ++ ++ ++INTRODUCTION ++ ++ ++A preemptible kernel creates new locking issues. The issues are the same as ++those under SMP: concurrency and reentrancy. Thankfully, the Linux preemptible ++kernel model leverages existing SMP locking mechanisms. Thus, the kernel ++requires explicit additional locking for very few additional situations. ++ ++This document is for all kernel hackers. Developing code in the kernel ++requires protecting these situations. ++ ++ ++RULE #1: Per-CPU data structures need explicit protection ++ ++ ++Two similar problems arise. An example code snippet: ++ ++ struct this_needs_locking tux[NR_CPUS]; ++ tux[smp_processor_id()] = some_value; ++ /* task is preempted here... */ ++ something = tux[smp_processor_id()]; ++ ++First, since the data is per-CPU, it may not have explicit SMP locking, but ++require it otherwise. Second, when a preempted task is finally rescheduled, ++the previous value of smp_processor_id may not equal the current. You must ++protect these situations by disabling preemption around them. ++ ++ ++RULE #2: CPU state must be protected. ++ ++ ++Under preemption, the state of the CPU must be protected. This is arch- ++dependent, but includes CPU structures and state not preserved over a context ++switch. For example, on x86, entering and exiting FPU mode is now a critical ++section that must occur while preemption is disabled. Think what would happen ++if the kernel is executing a floating-point instruction and is then preempted. ++Remember, the kernel does not save FPU state except for user tasks. Therefore, ++upon preemption, the FPU registers will be sold to the lowest bidder. Thus, ++preemption must be disabled around such regions. ++ ++Note, some FPU functions are already explicitly preempt safe. For example, ++kernel_fpu_begin and kernel_fpu_end will disable and enable preemption. ++However, math_state_restore must be called with preemption disabled. ++ ++ ++RULE #3: Lock acquire and release must be performed by same task ++ ++ ++A lock acquired in one task must be released by the same task. This ++means you can't do oddball things like acquire a lock and go off to ++play while another task releases it. If you want to do something ++like this, acquire and release the task in the same code path and ++have the caller wait on an event by the other task. ++ ++ ++SOLUTION ++ ++ ++Data protection under preemption is achieved by disabling preemption for the ++duration of the critical region. ++ ++preempt_enable() decrement the preempt counter ++preempt_disable() increment the preempt counter ++preempt_enable_no_resched() decrement, but do not immediately preempt ++preempt_get_count() return the preempt counter ++ ++The functions are nestable. In other words, you can call preempt_disable ++n-times in a code path, and preemption will not be reenabled until the n-th ++call to preempt_enable. The preempt statements define to nothing if ++preemption is not enabled. ++ ++Note that you do not need to explicitly prevent preemption if you are holding ++any locks or interrupts are disabled, since preemption is implicitly disabled ++in those cases. ++ ++Example: ++ ++ cpucache_t *cc; /* this is per-CPU */ ++ preempt_disable(); ++ cc = cc_data(searchp); ++ if (cc && cc->avail) { ++ __free_block(searchp, cc_entry(cc), cc->avail); ++ cc->avail = 0; ++ } ++ preempt_enable(); ++ return 0; ++ ++Notice how the preemption statements must encompass every reference of the ++critical variables. Another example: ++ ++ int buf[NR_CPUS]; ++ set_cpu_val(buf); ++ if (buf[smp_processor_id()] == -1) printf(KERN_INFO "wee!\n"); ++ spin_lock(&buf_lock); ++ /* ... */ ++ ++This code is not preempt-safe, but see how easily we can fix it by simply ++moving the spin_lock up two lines. +diff -Nur linux_c860_org/MAINTAINERS linux/MAINTAINERS +--- linux_c860_org/MAINTAINERS 2002-08-26 14:43:17.000000000 +0900 ++++ linux/MAINTAINERS 2004-06-10 21:09:10.000000000 +0900 +@@ -1255,6 +1255,14 @@ + M: mostrows@styx.uwaterloo.ca + S: Maintained + ++PREEMPTIBLE KERNEL ++P: Robert M. Love ++M: rml@tech9.net ++L: linux-kernel@vger.kernel.org ++L: kpreempt-tech@lists.sourceforge.net ++W: http://tech9.net/rml/linux ++S: Supported ++ + PROMISE DC4030 CACHING DISK CONTROLLER DRIVER + P: Peter Denison + M: promise@pnd-pc.demon.co.uk +diff -Nur linux_c860_org/arch/alpha/kernel/entry.S linux/arch/alpha/kernel/entry.S +--- linux_c860_org/arch/alpha/kernel/entry.S 2002-08-26 14:39:34.000000000 +0900 ++++ linux/arch/alpha/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900 +@@ -231,12 +231,12 @@ + .end kernel_clone + + /* +- * kernel_thread(fn, arg, clone_flags) ++ * arch_kernel_thread(fn, arg, clone_flags) + */ + .align 3 + .globl kernel_thread + .ent kernel_thread +-kernel_thread: ++arch_kernel_thread: + ldgp $29,0($27) /* we can be called from a module */ + .frame $30, 4*8, $26 + subq $30,4*8,$30 +diff -Nur linux_c860_org/arch/arm/boot/compressed/head-xscale.S linux/arch/arm/boot/compressed/head-xscale.S +--- linux_c860_org/arch/arm/boot/compressed/head-xscale.S 2002-12-18 19:27:19.000000000 +0900 ++++ linux/arch/arm/boot/compressed/head-xscale.S 2004-06-10 21:09:10.000000000 +0900 +@@ -5,6 +5,7 @@ + * + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/config.h> +@@ -51,3 +52,7 @@ + #ifdef CONFIG_ARCH_PXA_CORGI + mov r7, #MACH_TYPE_CORGI + #endif ++ ++#ifdef CONFIG_ARCH_PXA_TOSA ++ mov r7, #MACH_TYPE_TOSA ++#endif +diff -Nur linux_c860_org/arch/arm/config.in linux/arch/arm/config.in +--- linux_c860_org/arch/arm/config.in 2003-10-09 14:41:35.000000000 +0900 ++++ linux/arch/arm/config.in 2004-06-10 21:10:22.000000000 +0900 +@@ -196,16 +196,33 @@ + dep_bool ' Using Trial 0' CONFIG_POODLE_TR0 $CONFIG_ARCH_PXA_POODLE + dep_bool ' SHARP Corgi' CONFIG_ARCH_PXA_CORGI $CONFIG_ARCH_PXA + dep_bool ' Using Trial 0' CONFIG_CORGI_TR0 $CONFIG_ARCH_PXA_CORGI ++dep_bool ' LCD Bufferable (EXPERIMENTAL)' CONFIG_CORGI_LCD_BUFF $CONFIG_ARCH_PXA_CORGI + dep_bool ' SHARP Shepherd' CONFIG_ARCH_PXA_SHEPHERD $CONFIG_ARCH_PXA_CORGI + dep_bool ' SHARP Husky' CONFIG_ARCH_PXA_HUSKY $CONFIG_ARCH_PXA_SHEPHERD + dep_bool ' SHARP Boxer' CONFIG_ARCH_PXA_BOXER $CONFIG_ARCH_PXA_HUSKY ++dep_bool ' SHARP Tosa' CONFIG_ARCH_PXA_TOSA $CONFIG_ARCH_PXA ++dep_bool ' SHARP Tosa skipping' CONFIG_ARCH_PXA_TOSA_SKIP $CONFIG_ARCH_PXA_TOSA + + if [ "$CONFIG_SA1100_COLLIE" = "y" -o "$CONFIG_SABINAL_DISCOVERY" = "y" -o \ +- "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then ++ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \ ++ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then + define_bool CONFIG_ARCH_SHARP_SL y + fi + +-if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then ++ ++if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \ ++ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then ++ bool 'Use clock change(cccr_change) enable (EXPERIMENTAL)' CONFIG_SL_CCCR_CHANGE ++ if [ "$CONFIG_SL_CCCR162" != "y" -a "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then ++ bool 'Boot CCCR=0x242 (EXPERIMENTAL)' CONFIG_SL_CCCR242 ++ fi ++ if [ "$CONFIG_SL_CCCR242" != "y" -a "$CONFIG_SL_CCCR_CHANGE" = "y" ]; then ++ bool 'Boot CCCR=0x162 (DANGEROUS ESPECIALLY FOR SL-C700)' CONFIG_SL_CCCR162 ++ fi ++fi ++ ++if [ "$CONFIG_ARCH_PXA_POODLE" = "y" -o "$CONFIG_ARCH_PXA_CORGI" = "y" -o \ ++ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then + comment 'Language type' + choice 'Language type' \ + "English CONFIG_ARCH_SHARP_SL_E \ +@@ -472,7 +489,10 @@ + else + define_bool CONFIG_DISCONTIGMEM n + fi +- ++dep_bool 'Preemptible Kernel' CONFIG_PREEMPT $CONFIG_CPU_32 ++if [ "$CONFIG_PREEMPT" = "y" ]; then ++ bool 'Break selected locks' CONFIG_LOCK_BREAK ++fi + endmenu + + mainmenu_option next_comment +@@ -628,6 +648,9 @@ + if [ "$CONFIG_DEVICEINFO" = "m" -a "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then + define_tristate CONFIG_CORGI_DEVICEINFO m + fi ++if [ "$CONFIG_DEVICEINFO" = "m" -a "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then ++ define_tristate CONFIG_TOSA_DEVICEINFO m ++fi + endmenu + + source drivers/parport/Config.in +diff -Nur linux_c860_org/arch/arm/def-configs/boxer-j linux/arch/arm/def-configs/boxer-j +--- linux_c860_org/arch/arm/def-configs/boxer-j 2003-11-07 11:37:08.000000000 +0900 ++++ linux/arch/arm/def-configs/boxer-j 2004-06-10 21:09:10.000000000 +0900 +@@ -299,6 +299,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/corgi linux/arch/arm/def-configs/corgi +--- linux_c860_org/arch/arm/def-configs/corgi 2002-11-26 15:25:56.000000000 +0900 ++++ linux/arch/arm/def-configs/corgi 2004-06-10 21:09:10.000000000 +0900 +@@ -295,6 +295,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/corgi_cramfs linux/arch/arm/def-configs/corgi_cramfs +--- linux_c860_org/arch/arm/def-configs/corgi_cramfs 2002-10-21 10:17:42.000000000 +0900 ++++ linux/arch/arm/def-configs/corgi_cramfs 2004-06-10 21:09:10.000000000 +0900 +@@ -297,6 +297,7 @@ + CONFIG_MTD_NAND_POST_BADBLOCK=y + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/corgi_initrd linux/arch/arm/def-configs/corgi_initrd +--- linux_c860_org/arch/arm/def-configs/corgi_initrd 2002-10-21 10:17:42.000000000 +0900 ++++ linux/arch/arm/def-configs/corgi_initrd 2004-06-10 21:09:10.000000000 +0900 +@@ -297,6 +297,7 @@ + CONFIG_MTD_NAND_POST_BADBLOCK=y + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/husky linux/arch/arm/def-configs/husky +--- linux_c860_org/arch/arm/def-configs/husky 2003-05-20 09:48:12.000000000 +0900 ++++ linux/arch/arm/def-configs/husky 2004-06-10 21:09:10.000000000 +0900 +@@ -298,6 +298,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/husky-j linux/arch/arm/def-configs/husky-j +--- linux_c860_org/arch/arm/def-configs/husky-j 2003-05-20 09:48:12.000000000 +0900 ++++ linux/arch/arm/def-configs/husky-j 2004-06-10 21:09:10.000000000 +0900 +@@ -298,6 +298,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/poodle linux/arch/arm/def-configs/poodle +--- linux_c860_org/arch/arm/def-configs/poodle 2002-11-26 15:25:56.000000000 +0900 ++++ linux/arch/arm/def-configs/poodle 2004-06-10 21:09:10.000000000 +0900 +@@ -295,6 +295,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_POODLE=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/poodle-j linux/arch/arm/def-configs/poodle-j +--- linux_c860_org/arch/arm/def-configs/poodle-j 2002-11-26 15:25:56.000000000 +0900 ++++ linux/arch/arm/def-configs/poodle-j 2004-06-10 21:09:10.000000000 +0900 +@@ -295,6 +295,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_POODLE=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/poodle_cramfs linux/arch/arm/def-configs/poodle_cramfs +--- linux_c860_org/arch/arm/def-configs/poodle_cramfs 2002-10-21 10:16:27.000000000 +0900 ++++ linux/arch/arm/def-configs/poodle_cramfs 2004-06-10 21:09:10.000000000 +0900 +@@ -298,6 +298,7 @@ + CONFIG_MTD_NAND_POST_BADBLOCK=y + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + # CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS is not set ++CONFIG_MTD_NAND_SHARP_SL_POODLE=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/shepherd linux/arch/arm/def-configs/shepherd +--- linux_c860_org/arch/arm/def-configs/shepherd 2003-04-04 08:55:58.000000000 +0900 ++++ linux/arch/arm/def-configs/shepherd 2004-06-10 21:09:10.000000000 +0900 +@@ -297,6 +297,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/shepherd-j linux/arch/arm/def-configs/shepherd-j +--- linux_c860_org/arch/arm/def-configs/shepherd-j 2003-04-04 08:56:28.000000000 +0900 ++++ linux/arch/arm/def-configs/shepherd-j 2004-06-10 21:09:10.000000000 +0900 +@@ -297,6 +297,7 @@ + # CONFIG_MTD_NAND_ERASE_BY_FORCE is not set + CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y + CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_CORGI=y + CONFIG_MTD_NAND_SHARP_SL=y + + # +diff -Nur linux_c860_org/arch/arm/def-configs/tosa-j linux/arch/arm/def-configs/tosa-j +--- linux_c860_org/arch/arm/def-configs/tosa-j 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/def-configs/tosa-j 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,1156 @@ ++# ++# Automatically generated by make menuconfig: don't edit ++# ++CONFIG_ARM=y ++# CONFIG_EISA is not set ++# CONFIG_SBUS is not set ++# CONFIG_MCA is not set ++CONFIG_UID16=y ++CONFIG_RWSEM_GENERIC_SPINLOCK=y ++# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set ++# CONFIG_GENERIC_BUST_SPINLOCK is not set ++# CONFIG_GENERIC_ISA_DMA is not set ++ ++# ++# Code maturity level options ++# ++CONFIG_EXPERIMENTAL=y ++# CONFIG_OBSOLETE is not set ++ ++# ++# Loadable module support ++# ++CONFIG_MODULES=y ++# CONFIG_MODVERSIONS is not set ++CONFIG_KMOD=y ++ ++# ++# System Type ++# ++# CONFIG_ARCH_ANAKIN is not set ++# CONFIG_ARCH_ARCA5K is not set ++# CONFIG_ARCH_CLPS7500 is not set ++# CONFIG_ARCH_CLPS711X is not set ++# CONFIG_ARCH_CO285 is not set ++CONFIG_ARCH_PXA=y ++# CONFIG_ARCH_EBSA110 is not set ++# CONFIG_ARCH_CAMELOT is not set ++# CONFIG_ARCH_FOOTBRIDGE is not set ++# CONFIG_ARCH_INTEGRATOR is not set ++# CONFIG_ARCH_L7200 is not set ++# CONFIG_ARCH_MX1ADS is not set ++# CONFIG_ARCH_RPC is not set ++# CONFIG_ARCH_SA1100 is not set ++# CONFIG_ARCH_SHARK is not set ++ ++# ++# Archimedes/A5000 Implementations ++# ++# CONFIG_ARCH_ARC is not set ++# CONFIG_ARCH_A5K is not set ++ ++# ++# Footbridge Implementations ++# ++# CONFIG_ARCH_CATS is not set ++# CONFIG_ARCH_PERSONAL_SERVER is not set ++# CONFIG_ARCH_EBSA285_ADDIN is not set ++# CONFIG_ARCH_EBSA285_HOST is not set ++# CONFIG_ARCH_NETWINDER is not set ++ ++# ++# SA11x0 Implementations ++# ++# CONFIG_SA1100_ASSABET is not set ++# CONFIG_ASSABET_NEPONSET is not set ++# CONFIG_SA1100_ADSBITSY is not set ++# CONFIG_SA1100_BRUTUS is not set ++# CONFIG_SA1100_CEP is not set ++# CONFIG_SA1100_CERF is not set ++# CONFIG_SA1100_COLLIE is not set ++# CONFIG_LOCOMO is not set ++# CONFIG_COLLIE_TS is not set ++# CONFIG_COLLIE_TR0 is not set ++# CONFIG_COLLIE_TR1 is not set ++# CONFIG_COLLIE_DEV is not set ++# CONFIG_COLLIE_G is not set ++# CONFIG_SA1100_H3100 is not set ++# CONFIG_SA1100_H3600 is not set ++# CONFIG_SA1100_H3800 is not set ++# CONFIG_SA1100_H3XXX is not set ++# CONFIG_SA1100_EXTENEX1 is not set ++# CONFIG_SA1100_FLEXANET is not set ++# CONFIG_SA1100_FREEBIRD is not set ++# CONFIG_SA1100_FRODO is not set ++# CONFIG_SA1100_GRAPHICSCLIENT is not set ++# CONFIG_SA1100_GRAPHICSMASTER is not set ++# CONFIG_SA1100_BADGE4 is not set ++# CONFIG_SA1100_JORNADA720 is not set ++# CONFIG_SA1100_HUW_WEBPANEL is not set ++# CONFIG_SA1100_ITSY is not set ++# CONFIG_SA1100_LART is not set ++# CONFIG_SA1100_NANOENGINE is not set ++# CONFIG_SA1100_OMNIMETER is not set ++# CONFIG_SA1100_PANGOLIN is not set ++# CONFIG_SA1100_PLEB is not set ++# CONFIG_SA1100_PT_SYSTEM3 is not set ++# CONFIG_SA1100_SHANNON is not set ++# CONFIG_SA1100_SHERMAN is not set ++# CONFIG_SA1100_SIMPAD is not set ++# CONFIG_SA1100_PFS168 is not set ++# CONFIG_SA1100_VICTOR is not set ++# CONFIG_SA1100_XP860 is not set ++# CONFIG_SA1100_YOPY is not set ++# CONFIG_SA1100_USB is not set ++# CONFIG_SA1100_USB_NETLINK is not set ++# CONFIG_SA1100_USB_CHAR is not set ++# CONFIG_H3600_SLEEVE is not set ++ ++# ++# Intel PXA250/210 Implementations ++# ++# CONFIG_ARCH_LUBBOCK is not set ++# CONFIG_ARCH_PXA_IDP is not set ++# CONFIG_ARCH_PXA_CERF is not set ++# CONFIG_COTULLA_DMA is not set ++# CONFIG_SABINAL_DISCOVERY is not set ++# CONFIG_ARCH_SABINAL is not set ++# CONFIG_ARCH_PXA_POODLE is not set ++# CONFIG_POODLE_TR0 is not set ++# CONFIG_ARCH_PXA_CORGI is not set ++# CONFIG_CORGI_TR0 is not set ++# CONFIG_ARCH_PXA_SHEPHERD is not set ++# CONFIG_ARCH_PXA_HUSKY is not set ++CONFIG_ARCH_PXA_TOSA=y ++CONFIG_ARCH_PXA_TOSA_SKIP=y ++CONFIG_ARCH_SHARP_SL=y ++# CONFIG_ARCH_SHARP_SL_E is not set ++# CONFIG_ARCH_SHARP_SL_V is not set ++# CONFIG_ARCH_SHARP_SL_G is not set ++CONFIG_ARCH_SHARP_SL_J=y ++# CONFIG_ARCH_SHARP_SL_S is not set ++# CONFIG_ARCH_SHARP_SL_I is not set ++# CONFIG_PXA_USB is not set ++# CONFIG_PXA_USB_NETLINK is not set ++# CONFIG_PXA_USB_CHAR is not set ++ ++# ++# CLPS711X/EP721X Implementations ++# ++# CONFIG_ARCH_AUTCPU12 is not set ++# CONFIG_ARCH_CDB89712 is not set ++# CONFIG_ARCH_CLEP7312 is not set ++# CONFIG_ARCH_EDB7211 is not set ++# CONFIG_ARCH_P720T is not set ++# CONFIG_ARCH_FORTUNET is not set ++# CONFIG_ARCH_EP7211 is not set ++# CONFIG_ARCH_EP7212 is not set ++# CONFIG_ARCH_ACORN is not set ++# CONFIG_FOOTBRIDGE is not set ++# CONFIG_FOOTBRIDGE_HOST is not set ++# CONFIG_FOOTBRIDGE_ADDIN is not set ++CONFIG_CPU_32=y ++# CONFIG_CPU_26 is not set ++# CONFIG_CPU_32v3 is not set ++# CONFIG_CPU_32v4 is not set ++# CONFIG_CPU_ARM610 is not set ++# CONFIG_CPU_ARM710 is not set ++# CONFIG_CPU_ARM720T is not set ++# CONFIG_CPU_ARM920T is not set ++# CONFIG_CPU_ARM922T is not set ++# CONFIG_PLD is not set ++# CONFIG_CPU_ARM926T is not set ++# CONFIG_CPU_ARM1020 is not set ++# CONFIG_CPU_SA110 is not set ++# CONFIG_CPU_SA1100 is not set ++CONFIG_CPU_32v5=y ++CONFIG_CPU_XSCALE=y ++CONFIG_BATT=y ++# CONFIG_XSCALE_CACHE_ERRATA is not set ++CONFIG_ARM_THUMB=y ++CONFIG_ARM_FCSE=y ++# CONFIG_DISCONTIGMEM is not set ++ ++# ++# General setup ++# ++# CONFIG_PCI is not set ++# CONFIG_ISA is not set ++# CONFIG_ISA_DMA is not set ++# CONFIG_ZBOOT_ROM is not set ++CONFIG_ZBOOT_ROM_TEXT=0 ++CONFIG_ZBOOT_ROM_BSS=0 ++CONFIG_HOTPLUG=y ++ ++# ++# PCMCIA/CardBus support ++# ++CONFIG_PCMCIA=y ++# CONFIG_I82092 is not set ++# CONFIG_I82365 is not set ++# CONFIG_TCIC is not set ++# CONFIG_PCMCIA_CLPS6700 is not set ++# CONFIG_PCMCIA_SA1100 is not set ++CONFIG_PCMCIA_PXA=y ++CONFIG_NET=y ++CONFIG_SYSVIPC=y ++# CONFIG_BSD_PROCESS_ACCT is not set ++CONFIG_SYSCTL=y ++CONFIG_FPE_NWFPE=y ++# CONFIG_FPE_FASTFPE is not set ++CONFIG_KCORE_ELF=y ++# CONFIG_KCORE_AOUT is not set ++CONFIG_BINFMT_AOUT=y ++CONFIG_BINFMT_ELF=y ++# CONFIG_BINFMT_MISC is not set ++CONFIG_PM=y ++CONFIG_APM=y ++# CONFIG_APM_IGNORE_USER_SUSPEND is not set ++CONFIG_APM_CPU_IDLE=y ++CONFIG_APM_DISPLAY_BLANK=y ++CONFIG_APM_RTC_IS_GMT=y ++# CONFIG_ARTHUR is not set ++CONFIG_CMDLINE="console=ttyS0 root=/dev/mtdblock2" ++CONFIG_SHARPSL_BOOTLDR_PARAMS=y ++CONFIG_ALIGNMENT_TRAP=y ++CONFIG_FREEPG_SIGNAL=y ++CONFIG_OOM_KILL_SURVIVAL=y ++CONFIG_DEVICEINFO=y ++ ++# ++# Parallel port support ++# ++# CONFIG_PARPORT is not set ++ ++# ++# Memory Technology Devices (MTD) ++# ++CONFIG_MTD=y ++# CONFIG_MTD_DEBUG is not set ++CONFIG_MTD_PARTITIONS=y ++# CONFIG_MTD_CONCAT is not set ++# CONFIG_MTD_REDBOOT_PARTS is not set ++CONFIG_MTD_CMDLINE_PARTS=y ++# CONFIG_MTD_AFS_PARTS is not set ++CONFIG_MTD_CHAR=y ++CONFIG_MTD_BLOCK=y ++# CONFIG_FTL is not set ++# CONFIG_NFTL is not set ++ ++# ++# RAM/ROM/Flash chip drivers ++# ++# CONFIG_MTD_CFI is not set ++# CONFIG_MTD_JEDECPROBE is not set ++# CONFIG_MTD_GEN_PROBE is not set ++# CONFIG_MTD_CFI_INTELEXT is not set ++# CONFIG_MTD_CFI_AMDSTD is not set ++# CONFIG_MTD_CFI_STAA is not set ++# CONFIG_MTD_RAM is not set ++CONFIG_MTD_ROM=y ++# CONFIG_MTD_ABSENT is not set ++# CONFIG_MTD_OBSOLETE_CHIPS is not set ++# CONFIG_MTD_AMDSTD is not set ++# CONFIG_MTD_SHARP is not set ++# CONFIG_MTD_JEDEC is not set ++ ++# ++# Mapping drivers for chip access ++# ++# CONFIG_MTD_PHYSMAP is not set ++# CONFIG_MTD_LUBBOCK is not set ++# CONFIG_MTD_NORA is not set ++# CONFIG_MTD_ARM_INTEGRATOR is not set ++# CONFIG_MTD_CDB89712 is not set ++# CONFIG_MTD_SA1100 is not set ++# CONFIG_MTD_DC21285 is not set ++# CONFIG_MTD_IQ80310 is not set ++# CONFIG_MTD_FORTUNET is not set ++# CONFIG_MTD_PXA_CERF is not set ++# CONFIG_MTD_EPXA10DB is not set ++# CONFIG_MTD_AUTCPU12 is not set ++# CONFIG_MTD_EDB7312 is not set ++# CONFIG_MTD_IMPA7 is not set ++# CONFIG_MTD_DISCOVERY is not set ++CONFIG_MTD_SHARP_SL=y ++# CONFIG_MTD_PCI is not set ++ ++# ++# Self-contained MTD device drivers ++# ++# CONFIG_MTD_PMC551 is not set ++# CONFIG_MTD_SLRAM is not set ++# CONFIG_MTD_MTDROM_SA1100 is not set ++# CONFIG_MTD_MTDRAM_SA1100 is not set ++# CONFIG_MTD_MTDRAM is not set ++# CONFIG_MTD_MTDRAM_SHARP_SL is not set ++# CONFIG_MTD_BLKMTD is not set ++# CONFIG_MTD_DOC1000 is not set ++# CONFIG_MTD_DOC2000 is not set ++# CONFIG_MTD_DOC2001 is not set ++# CONFIG_MTD_DOCPROBE is not set ++ ++# ++# NAND Flash Device Drivers ++# ++CONFIG_MTD_NAND=y ++CONFIG_MTD_NAND_ECC=y ++CONFIG_MTD_NAND_VERIFY_WRITE=y ++CONFIG_MTD_NAND_POST_BADBLOCK=y ++# CONFIG_MTD_NAND_ERASE_BY_FORCE is not set ++CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS=y ++CONFIG_MTD_NAND_PAGE_CACHE=y ++CONFIG_MTD_NAND_SHARP_SL_TC6393=y ++# CONFIG_MTD_NAND_SHARP_SL is not set ++ ++# ++# Plug and Play configuration ++# ++# CONFIG_PNP is not set ++# CONFIG_ISAPNP is not set ++ ++# ++# Block devices ++# ++# CONFIG_BLK_DEV_FD is not set ++# CONFIG_BLK_DEV_XD is not set ++# CONFIG_PARIDE is not set ++# CONFIG_BLK_CPQ_DA is not set ++# CONFIG_BLK_CPQ_CISS_DA is not set ++# CONFIG_BLK_DEV_DAC960 is not set ++# CONFIG_BLK_DEV_COLLIE_MMCSD is not set ++CONFIG_BLK_DEV_SL_MMCSD=m ++CONFIG_BLK_DEV_SL_MMCSD_PSAVE=y ++CONFIG_BLK_DEV_LOOP=y ++# CONFIG_BLK_DEV_NBD is not set ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_SIZE=8192 ++CONFIG_BLK_DEV_INITRD=y ++ ++# ++# Multi-device support (RAID and LVM) ++# ++# CONFIG_MD is not set ++# CONFIG_BLK_DEV_MD is not set ++# CONFIG_MD_LINEAR is not set ++# CONFIG_MD_RAID0 is not set ++# CONFIG_MD_RAID1 is not set ++# CONFIG_MD_RAID5 is not set ++# CONFIG_MD_MULTIPATH is not set ++# CONFIG_BLK_DEV_LVM is not set ++ ++# ++# Networking options ++# ++CONFIG_PACKET=y ++CONFIG_PACKET_MMAP=y ++CONFIG_NETLINK_DEV=y ++CONFIG_NETFILTER=y ++# CONFIG_NETFILTER_DEBUG is not set ++# CONFIG_FILTER is not set ++CONFIG_UNIX=y ++CONFIG_INET=y ++# CONFIG_IP_MULTICAST is not set ++# CONFIG_IP_ADVANCED_ROUTER is not set ++# CONFIG_IP_PNP is not set ++# CONFIG_NET_IPIP is not set ++# CONFIG_NET_IPGRE is not set ++# CONFIG_ARPD is not set ++# CONFIG_INET_ECN is not set ++# CONFIG_SYN_COOKIES is not set ++ ++# ++# IP: Netfilter Configuration ++# ++# CONFIG_IP_NF_CONNTRACK is not set ++# CONFIG_IP_NF_QUEUE is not set ++# CONFIG_IP_NF_IPTABLES is not set ++# CONFIG_IP_NF_COMPAT_IPCHAINS is not set ++# CONFIG_IP_NF_COMPAT_IPFWADM is not set ++# CONFIG_IPV6 is not set ++# CONFIG_KHTTPD is not set ++# CONFIG_ATM is not set ++# CONFIG_VLAN_8021Q is not set ++# CONFIG_IPX is not set ++# CONFIG_ATALK is not set ++# CONFIG_DECNET is not set ++# CONFIG_BRIDGE is not set ++# CONFIG_X25 is not set ++# CONFIG_LAPB is not set ++# CONFIG_LLC is not set ++# CONFIG_NET_DIVERT is not set ++# CONFIG_ECONET is not set ++# CONFIG_WAN_ROUTER is not set ++# CONFIG_NET_FASTROUTE is not set ++# CONFIG_NET_HW_FLOWCONTROL is not set ++ ++# ++# QoS and/or fair queueing ++# ++# CONFIG_NET_SCHED is not set ++ ++# ++# Network device support ++# ++CONFIG_NETDEVICES=y ++ ++# ++# ARCnet devices ++# ++# CONFIG_ARCNET is not set ++# CONFIG_DUMMY is not set ++# CONFIG_BONDING is not set ++# CONFIG_EQUALIZER is not set ++# CONFIG_TUN is not set ++# CONFIG_ETHERTAP is not set ++ ++# ++# Ethernet (10 or 100Mbit) ++# ++CONFIG_NET_ETHERNET=y ++# CONFIG_ARM_AM79C961A is not set ++# CONFIG_SUNLANCE is not set ++# CONFIG_SUNBMAC is not set ++# CONFIG_SUNQE is not set ++# CONFIG_SUNGEM is not set ++# CONFIG_NET_VENDOR_3COM is not set ++# CONFIG_LANCE is not set ++# CONFIG_NET_VENDOR_SMC is not set ++# CONFIG_NET_VENDOR_RACAL is not set ++# CONFIG_NET_ISA is not set ++# CONFIG_NET_PCI is not set ++# CONFIG_NET_POCKET is not set ++ ++# ++# Ethernet (1000 Mbit) ++# ++# CONFIG_ACENIC is not set ++# CONFIG_DL2K is not set ++# CONFIG_MYRI_SBUS is not set ++# CONFIG_NS83820 is not set ++# CONFIG_HAMACHI is not set ++# CONFIG_YELLOWFIN is not set ++# CONFIG_SK98LIN is not set ++# CONFIG_FDDI is not set ++# CONFIG_HIPPI is not set ++# CONFIG_PLIP is not set ++CONFIG_PPP=y ++# CONFIG_PPP_MULTILINK is not set ++# CONFIG_PPP_FILTER is not set ++CONFIG_PPP_ASYNC=y ++# CONFIG_PPP_SYNC_TTY is not set ++# CONFIG_PPP_DEFLATE is not set ++CONFIG_PPP_BSDCOMP=y ++# CONFIG_PPPOE is not set ++# CONFIG_SLIP is not set ++ ++# ++# Wireless LAN (non-hamradio) ++# ++CONFIG_NET_RADIO=y ++# CONFIG_STRIP is not set ++# CONFIG_WAVELAN is not set ++# CONFIG_ARLAN is not set ++# CONFIG_AIRONET4500 is not set ++# CONFIG_AIRONET4500_NONCS is not set ++# CONFIG_AIRONET4500_PROC is not set ++CONFIG_HERMES=y ++CONFIG_PCMCIA_HERMES=y ++# CONFIG_AIRO_CS is not set ++CONFIG_NET_WIRELESS=y ++ ++# ++# Token Ring devices ++# ++# CONFIG_TR is not set ++# CONFIG_NET_FC is not set ++# CONFIG_RCPCI is not set ++# CONFIG_SHAPER is not set ++ ++# ++# Wan interfaces ++# ++# CONFIG_WAN is not set ++ ++# ++# PCMCIA network device support ++# ++CONFIG_NET_PCMCIA=y ++# CONFIG_PCMCIA_3C589 is not set ++# CONFIG_PCMCIA_3C574 is not set ++# CONFIG_PCMCIA_FMVJ18X is not set ++CONFIG_PCMCIA_PCNET=y ++# CONFIG_PCMCIA_AXNET is not set ++# CONFIG_PCMCIA_NMCLAN is not set ++# CONFIG_PCMCIA_SMC91C92 is not set ++# CONFIG_PCMCIA_XIRC2PS is not set ++# CONFIG_ARCNET_COM20020_CS is not set ++# CONFIG_PCMCIA_IBMTR is not set ++# CONFIG_NET_PCMCIA_RADIO is not set ++ ++# ++# Amateur Radio support ++# ++# CONFIG_HAMRADIO is not set ++ ++# ++# IrDA (infrared) support ++# ++CONFIG_IRDA=y ++# CONFIG_IRLAN is not set ++# CONFIG_IRNET is not set ++CONFIG_IRCOMM=y ++# CONFIG_IRDA_ULTRA is not set ++# CONFIG_IRDA_CACHE_LAST_LSAP is not set ++CONFIG_IRDA_FAST_RR=y ++# CONFIG_IRDA_DEBUG is not set ++ ++# ++# Infrared-port device drivers ++# ++CONFIG_IRTTY_SIR=y ++# CONFIG_IRPORT_SIR is not set ++# CONFIG_DONGLE is not set ++# CONFIG_USB_IRDA is not set ++# CONFIG_NSC_FIR is not set ++# CONFIG_WINBOND_FIR is not set ++# CONFIG_TOSHIBA_FIR is not set ++# CONFIG_SMC_IRCC_FIR is not set ++# CONFIG_ALI_FIR is not set ++# CONFIG_VLSI_FIR is not set ++ ++# ++# ATA/IDE/MFM/RLL support ++# ++CONFIG_IDE=y ++ ++# ++# IDE, ATA and ATAPI Block devices ++# ++CONFIG_BLK_DEV_IDE=y ++# CONFIG_BLK_DEV_HD_IDE is not set ++# CONFIG_BLK_DEV_HD is not set ++CONFIG_BLK_DEV_IDEDISK=y ++# CONFIG_IDEDISK_MULTI_MODE is not set ++# CONFIG_BLK_DEV_IDEDISK_VENDOR is not set ++# CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set ++# CONFIG_BLK_DEV_IDEDISK_IBM is not set ++# CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set ++# CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set ++# CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set ++# CONFIG_BLK_DEV_IDEDISK_WD is not set ++# CONFIG_BLK_DEV_COMMERIAL is not set ++# CONFIG_BLK_DEV_TIVO is not set ++CONFIG_BLK_DEV_IDECS=y ++# CONFIG_BLK_DEV_IDECD is not set ++# CONFIG_BLK_DEV_IDETAPE is not set ++# CONFIG_BLK_DEV_IDEFLOPPY is not set ++# CONFIG_BLK_DEV_IDESCSI is not set ++# CONFIG_BLK_DEV_CMD640 is not set ++# CONFIG_BLK_DEV_CMD640_ENHANCED is not set ++# CONFIG_BLK_DEV_ISAPNP is not set ++# CONFIG_IDE_CHIPSETS is not set ++# CONFIG_IDEDMA_AUTO is not set ++# CONFIG_DMA_NONPCI is not set ++# CONFIG_BLK_DEV_IDE_MODES is not set ++# CONFIG_BLK_DEV_ATARAID is not set ++# CONFIG_BLK_DEV_ATARAID_PDC is not set ++# CONFIG_BLK_DEV_ATARAID_HPT is not set ++ ++# ++# SCSI support ++# ++CONFIG_SCSI=y ++CONFIG_BLK_DEV_SD=y ++CONFIG_SD_EXTRA_DEVS=40 ++# CONFIG_CHR_DEV_ST is not set ++# CONFIG_CHR_DEV_OSST is not set ++# CONFIG_BLK_DEV_SR is not set ++# CONFIG_CHR_DEV_SG is not set ++# CONFIG_SCSI_DEBUG_QUEUES is not set ++# CONFIG_SCSI_MULTI_LUN is not set ++# CONFIG_SCSI_CONSTANTS is not set ++# CONFIG_SCSI_LOGGING is not set ++ ++# ++# SCSI low-level drivers ++# ++# CONFIG_SCSI_7000FASST is not set ++# CONFIG_SCSI_ACARD is not set ++# CONFIG_SCSI_AHA152X is not set ++# CONFIG_SCSI_AHA1542 is not set ++# CONFIG_SCSI_AHA1740 is not set ++# CONFIG_SCSI_AACRAID is not set ++# CONFIG_SCSI_AIC7XXX is not set ++# CONFIG_SCSI_AIC7XXX_OLD is not set ++# CONFIG_SCSI_DPT_I2O is not set ++# CONFIG_SCSI_ADVANSYS is not set ++# CONFIG_SCSI_IN2000 is not set ++# CONFIG_SCSI_AM53C974 is not set ++# CONFIG_SCSI_MEGARAID is not set ++# CONFIG_SCSI_BUSLOGIC is not set ++# CONFIG_SCSI_DMX3191D is not set ++# CONFIG_SCSI_DTC3280 is not set ++# CONFIG_SCSI_EATA is not set ++# CONFIG_SCSI_EATA_DMA is not set ++# CONFIG_SCSI_EATA_PIO is not set ++# CONFIG_SCSI_FUTURE_DOMAIN is not set ++# CONFIG_SCSI_GDTH is not set ++# CONFIG_SCSI_GENERIC_NCR5380 is not set ++# CONFIG_SCSI_INITIO is not set ++# CONFIG_SCSI_INIA100 is not set ++# CONFIG_SCSI_NCR53C406A is not set ++# CONFIG_SCSI_NCR53C7xx is not set ++# CONFIG_SCSI_PAS16 is not set ++# CONFIG_SCSI_PCI2000 is not set ++# CONFIG_SCSI_PCI2220I is not set ++# CONFIG_SCSI_PSI240I is not set ++# CONFIG_SCSI_QLOGIC_FAS is not set ++# CONFIG_SCSI_SIM710 is not set ++# CONFIG_SCSI_SYM53C416 is not set ++# CONFIG_SCSI_T128 is not set ++# CONFIG_SCSI_U14_34F is not set ++# CONFIG_SCSI_DEBUG is not set ++ ++# ++# PCMCIA SCSI adapter support ++# ++# CONFIG_SCSI_PCMCIA is not set ++ ++# ++# I2O device support ++# ++# CONFIG_I2O is not set ++# CONFIG_I2O_BLOCK is not set ++# CONFIG_I2O_LAN is not set ++# CONFIG_I2O_SCSI is not set ++# CONFIG_I2O_PROC is not set ++ ++# ++# ISDN subsystem ++# ++# CONFIG_ISDN is not set ++ ++# ++# Input core support ++# ++CONFIG_INPUT=y ++CONFIG_INPUT_KEYBDEV=y ++CONFIG_INPUT_MOUSEDEV=y ++CONFIG_INPUT_MOUSEDEV_SCREEN_X=480 ++CONFIG_INPUT_MOUSEDEV_SCREEN_Y=640 ++CONFIG_INPUT_JOYDEV=m ++CONFIG_INPUT_EVDEV=m ++ ++# ++# Character devices ++# ++CONFIG_VT=y ++CONFIG_VT_CONSOLE=y ++CONFIG_SERIAL=y ++# CONFIG_SERIAL_CONSOLE is not set ++CONFIG_SERIAL_SL_SERIES=y ++CONFIG_BLUETOOTH_SL=y ++# CONFIG_SERIAL_EXTENDED is not set ++# CONFIG_SERIAL_NONSTANDARD is not set ++ ++# ++# Serial drivers ++# ++# CONFIG_SERIAL_ANAKIN is not set ++# CONFIG_SERIAL_ANAKIN_CONSOLE is not set ++# CONFIG_SERIAL_AMBA is not set ++# CONFIG_SERIAL_AMBA_CONSOLE is not set ++# CONFIG_SERIAL_CLPS711X is not set ++# CONFIG_SERIAL_CLPS711X_CONSOLE is not set ++# CONFIG_SERIAL_21285 is not set ++# CONFIG_SERIAL_21285_OLD is not set ++# CONFIG_SERIAL_21285_CONSOLE is not set ++# CONFIG_SERIAL_UART00 is not set ++# CONFIG_SERIAL_UART00_CONSOLE is not set ++# CONFIG_SERIAL_SA1100 is not set ++# CONFIG_SERIAL_SA1100_CONSOLE is not set ++# CONFIG_SERIAL_8250 is not set ++# CONFIG_SERIAL_8250_CONSOLE is not set ++# CONFIG_SERIAL_8250_EXTENDED is not set ++# CONFIG_SERIAL_8250_MANY_PORTS is not set ++# CONFIG_SERIAL_8250_SHARE_IRQ is not set ++# CONFIG_SERIAL_8250_DETECT_IRQ is not set ++# CONFIG_SERIAL_8250_MULTIPORT is not set ++# CONFIG_SERIAL_8250_HUB6 is not set ++CONFIG_UNIX98_PTYS=y ++CONFIG_UNIX98_PTY_COUNT=256 ++ ++# ++# I2C support ++# ++# CONFIG_I2C is not set ++ ++# ++# L3 serial bus support ++# ++# CONFIG_L3 is not set ++# CONFIG_L3_ALGOBIT is not set ++# CONFIG_L3_BIT_SA1100_GPIO is not set ++# CONFIG_L3_SA1111 is not set ++# CONFIG_BIT_SA1100_GPIO is not set ++ ++# ++# Mice ++# ++# CONFIG_BUSMOUSE is not set ++# CONFIG_MOUSE is not set ++ ++# ++# Joysticks ++# ++# CONFIG_INPUT_GAMEPORT is not set ++# CONFIG_INPUT_NS558 is not set ++# CONFIG_INPUT_LIGHTNING is not set ++# CONFIG_INPUT_PCIGAME is not set ++# CONFIG_INPUT_CS461X is not set ++# CONFIG_INPUT_EMU10K1 is not set ++# CONFIG_INPUT_SERIO is not set ++# CONFIG_INPUT_SERPORT is not set ++# CONFIG_INPUT_ANALOG is not set ++# CONFIG_INPUT_A3D is not set ++# CONFIG_INPUT_ADI is not set ++# CONFIG_INPUT_COBRA is not set ++# CONFIG_INPUT_GF2K is not set ++# CONFIG_INPUT_GRIP is not set ++# CONFIG_INPUT_INTERACT is not set ++# CONFIG_INPUT_TMDC is not set ++# CONFIG_INPUT_SIDEWINDER is not set ++# CONFIG_INPUT_IFORCE_USB is not set ++# CONFIG_INPUT_IFORCE_232 is not set ++# CONFIG_INPUT_WARRIOR is not set ++# CONFIG_INPUT_MAGELLAN is not set ++# CONFIG_INPUT_SPACEORB is not set ++# CONFIG_INPUT_SPACEBALL is not set ++# CONFIG_INPUT_STINGER is not set ++# CONFIG_INPUT_DB9 is not set ++# CONFIG_INPUT_GAMECON is not set ++# CONFIG_INPUT_TURBOGRAFX is not set ++# CONFIG_QIC02_TAPE is not set ++ ++# ++# Watchdog Cards ++# ++# CONFIG_WATCHDOG is not set ++# CONFIG_INTEL_RNG is not set ++# CONFIG_NVRAM is not set ++# CONFIG_RTC is not set ++CONFIG_COTULLA_RTC=y ++# CONFIG_ADS7846_TS is not set ++CONFIG_TOSA_TS=y ++# CONFIG_DTLK is not set ++# CONFIG_R3964 is not set ++# CONFIG_APPLICOM is not set ++ ++# ++# Ftape, the floppy tape device driver ++# ++# CONFIG_FTAPE is not set ++# CONFIG_AGP is not set ++# CONFIG_DRM is not set ++ ++# ++# PCMCIA character devices ++# ++CONFIG_PCMCIA_SERIAL_CS=y ++CONFIG_PCMCIA_CHRDEV=y ++ ++# ++# Multimedia devices ++# ++# CONFIG_VIDEO_DEV is not set ++ ++# ++# File systems ++# ++# CONFIG_QUOTA is not set ++# CONFIG_AUTOFS_FS is not set ++# CONFIG_AUTOFS4_FS is not set ++CONFIG_FS_SYNC=y ++# CONFIG_REISERFS_FS is not set ++# CONFIG_REISERFS_CHECK is not set ++# CONFIG_REISERFS_PROC_INFO is not set ++# CONFIG_ADFS_FS is not set ++# CONFIG_ADFS_FS_RW is not set ++# CONFIG_AFFS_FS is not set ++# CONFIG_HFS_FS is not set ++# CONFIG_BFS_FS is not set ++# CONFIG_EXT3_FS is not set ++# CONFIG_JBD is not set ++# CONFIG_JBD_DEBUG is not set ++CONFIG_FAT_FS=y ++# CONFIG_MSDOS_FS is not set ++# CONFIG_UMSDOS_FS is not set ++CONFIG_VFAT_FS=y ++# CONFIG_EFS_FS is not set ++# CONFIG_JFFS_FS is not set ++CONFIG_JFFS2_FS=y ++CONFIG_JFFS2_FS_DEBUG=0 ++CONFIG_JFFS2_FS_NAND=y ++CONFIG_JFFS2_PROC_FS=y ++CONFIG_JFFS2_NODEMERGE=y ++CONFIG_JFFS2_DYNFRAGTREE=y ++CONFIG_CRAMFS=y ++CONFIG_TMPFS=y ++# CONFIG_RAMFS is not set ++# CONFIG_ISO9660_FS is not set ++# CONFIG_JOLIET is not set ++# CONFIG_ZISOFS is not set ++CONFIG_MINIX_FS=y ++# CONFIG_VXFS_FS is not set ++# CONFIG_NTFS_FS is not set ++# CONFIG_NTFS_RW is not set ++# CONFIG_HPFS_FS is not set ++CONFIG_PROC_FS=y ++# CONFIG_DEVFS_FS is not set ++# CONFIG_DEVFS_MOUNT is not set ++# CONFIG_DEVFS_DEBUG is not set ++CONFIG_DEVPTS_FS=y ++# CONFIG_QNX4FS_FS is not set ++# CONFIG_QNX4FS_RW is not set ++# CONFIG_ROMFS_FS is not set ++CONFIG_EXT2_FS=y ++# CONFIG_SYSV_FS is not set ++# CONFIG_UDF_FS is not set ++# CONFIG_UDF_RW is not set ++# CONFIG_UFS_FS is not set ++# CONFIG_UFS_FS_WRITE is not set ++ ++# ++# Network File Systems ++# ++# CONFIG_CODA_FS is not set ++# CONFIG_INTERMEZZO_FS is not set ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3=y ++# CONFIG_ROOT_NFS is not set ++# CONFIG_NFSD is not set ++# CONFIG_NFSD_V3 is not set ++CONFIG_SUNRPC=y ++CONFIG_LOCKD=y ++CONFIG_LOCKD_V4=y ++CONFIG_SMB_FS=y ++# CONFIG_SMB_NLS_DEFAULT is not set ++# CONFIG_NCP_FS is not set ++# CONFIG_NCPFS_PACKET_SIGNING is not set ++# CONFIG_NCPFS_IOCTL_LOCKING is not set ++# CONFIG_NCPFS_STRONG is not set ++# CONFIG_NCPFS_NFS_NS is not set ++# CONFIG_NCPFS_OS2_NS is not set ++# CONFIG_NCPFS_SMALLDOS is not set ++# CONFIG_NCPFS_NLS is not set ++# CONFIG_NCPFS_EXTRAS is not set ++# CONFIG_ZISOFS_FS is not set ++CONFIG_ZLIB_FS_INFLATE=y ++ ++# ++# Partition Types ++# ++CONFIG_PARTITION_ADVANCED=y ++# CONFIG_ACORN_PARTITION is not set ++# CONFIG_OSF_PARTITION is not set ++# CONFIG_AMIGA_PARTITION is not set ++# CONFIG_ATARI_PARTITION is not set ++# CONFIG_MAC_PARTITION is not set ++CONFIG_MSDOS_PARTITION=y ++# CONFIG_BSD_DISKLABEL is not set ++# CONFIG_MINIX_SUBPARTITION is not set ++# CONFIG_SOLARIS_X86_PARTITION is not set ++# CONFIG_UNIXWARE_DISKLABEL is not set ++# CONFIG_LDM_PARTITION is not set ++# CONFIG_SGI_PARTITION is not set ++# CONFIG_ULTRIX_PARTITION is not set ++# CONFIG_SUN_PARTITION is not set ++CONFIG_SMB_NLS=y ++CONFIG_NLS=y ++ ++# ++# Native Language Support ++# ++CONFIG_NLS_DEFAULT="iso8859-1" ++CONFIG_NLS_CODEPAGE_437=y ++# CONFIG_NLS_CODEPAGE_737 is not set ++# CONFIG_NLS_CODEPAGE_775 is not set ++CONFIG_NLS_CODEPAGE_850=y ++# CONFIG_NLS_CODEPAGE_852 is not set ++# CONFIG_NLS_CODEPAGE_855 is not set ++# CONFIG_NLS_CODEPAGE_857 is not set ++# CONFIG_NLS_CODEPAGE_860 is not set ++# CONFIG_NLS_CODEPAGE_861 is not set ++# CONFIG_NLS_CODEPAGE_862 is not set ++# CONFIG_NLS_CODEPAGE_863 is not set ++# CONFIG_NLS_CODEPAGE_864 is not set ++# CONFIG_NLS_CODEPAGE_865 is not set ++# CONFIG_NLS_CODEPAGE_866 is not set ++# CONFIG_NLS_CODEPAGE_869 is not set ++# CONFIG_NLS_CODEPAGE_936 is not set ++# CONFIG_NLS_CODEPAGE_950 is not set ++CONFIG_NLS_CODEPAGE_932=y ++# CONFIG_NLS_CODEPAGE_949 is not set ++# CONFIG_NLS_CODEPAGE_874 is not set ++# CONFIG_NLS_ISO8859_8 is not set ++# CONFIG_NLS_CODEPAGE_1250 is not set ++# CONFIG_NLS_CODEPAGE_1251 is not set ++CONFIG_NLS_ISO8859_1=y ++# CONFIG_NLS_ISO8859_2 is not set ++# CONFIG_NLS_ISO8859_3 is not set ++# CONFIG_NLS_ISO8859_4 is not set ++# CONFIG_NLS_ISO8859_5 is not set ++# CONFIG_NLS_ISO8859_6 is not set ++# CONFIG_NLS_ISO8859_7 is not set ++# CONFIG_NLS_ISO8859_9 is not set ++# CONFIG_NLS_ISO8859_13 is not set ++# CONFIG_NLS_ISO8859_14 is not set ++# CONFIG_NLS_ISO8859_15 is not set ++# CONFIG_NLS_KOI8_R is not set ++# CONFIG_NLS_KOI8_U is not set ++CONFIG_NLS_UTF8=y ++ ++# ++# Console drivers ++# ++CONFIG_PC_KEYMAP=y ++# CONFIG_VGA_CONSOLE is not set ++ ++# ++# Frame-buffer support ++# ++CONFIG_FB=y ++CONFIG_DUMMY_CONSOLE=y ++# CONFIG_FB_COLLIE is not set ++# CONFIG_FB_ACORN is not set ++# CONFIG_FB_ANAKIN is not set ++# CONFIG_FB_CLPS711X is not set ++# CONFIG_FB_SA1100 is not set ++# CONFIG_FB_PXA is not set ++# CONFIG_FB_COTULLA is not set ++# CONFIG_FB_POODLE is not set ++# CONFIG_FB_CORGI is not set ++CONFIG_FB_TOSA=y ++CONFIG_SHARP_LOGO_SCREEN=y ++# CONFIG_FB_CYBER2000 is not set ++# CONFIG_FB_VIRTUAL is not set ++CONFIG_FBCON_ADVANCED=y ++# CONFIG_FBCON_MFB is not set ++# CONFIG_FBCON_CFB2 is not set ++# CONFIG_FBCON_CFB4 is not set ++# CONFIG_FBCON_CFB8 is not set ++CONFIG_FBCON_CFB16=y ++# CONFIG_FBCON_CFB24 is not set ++# CONFIG_FBCON_CFB32 is not set ++# CONFIG_FBCON_AFB is not set ++# CONFIG_FBCON_ILBM is not set ++# CONFIG_FBCON_IPLAN2P2 is not set ++# CONFIG_FBCON_IPLAN2P4 is not set ++# CONFIG_FBCON_IPLAN2P8 is not set ++# CONFIG_FBCON_MAC is not set ++# CONFIG_FBCON_VGA_PLANES is not set ++# CONFIG_FBCON_VGA is not set ++# CONFIG_FBCON_HGA is not set ++# CONFIG_FBCON_ROTATE_R is not set ++# CONFIG_FBCON_ROTATE_L is not set ++# CONFIG_FBCON_FONTWIDTH8_ONLY is not set ++CONFIG_FBCON_FONTS=y ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++# CONFIG_FONT_SUN8x16 is not set ++# CONFIG_FONT_SUN12x22 is not set ++# CONFIG_FONT_6x11 is not set ++# CONFIG_FONT_PEARL_8x8 is not set ++# CONFIG_FONT_ACORN_8x8 is not set ++ ++# ++# Sound ++# ++CONFIG_SOUND=y ++# CONFIG_SOUND_BT878 is not set ++# CONFIG_SOUND_COLLIE_SSP is not set ++# CONFIG_SOUND_COLLIE_TC35143 is not set ++# CONFIG_SOUND_CMPCI is not set ++# CONFIG_SOUND_EMU10K1 is not set ++# CONFIG_MIDI_EMU10K1 is not set ++# CONFIG_SOUND_FUSION is not set ++# CONFIG_SOUND_CS4281 is not set ++# CONFIG_SOUND_ES1370 is not set ++# CONFIG_SOUND_ES1371 is not set ++# CONFIG_SOUND_ESSSOLO1 is not set ++# CONFIG_SOUND_MAESTRO is not set ++# CONFIG_SOUND_MAESTRO3 is not set ++# CONFIG_SOUND_ICH is not set ++# CONFIG_SOUND_RME96XX is not set ++# CONFIG_SOUND_SONICVIBES is not set ++# CONFIG_SOUND_TRIDENT is not set ++# CONFIG_SOUND_MSNDCLAS is not set ++# CONFIG_SOUND_MSNDPIN is not set ++# CONFIG_SOUND_VIA82CXXX is not set ++# CONFIG_MIDI_VIA82CXXX is not set ++# CONFIG_SOUND_OSS is not set ++# CONFIG_SOUND_WAVEARTIST is not set ++# CONFIG_SOUND_PXA_AC97 is not set ++# CONFIG_SOUND_POODLE is not set ++# CONFIG_SOUND_CORGI is not set ++CONFIG_SOUND_TOSA=y ++CONFIG_BUZZER_TOSA=y ++# CONFIG_SOUND_TVMIXER is not set ++ ++# ++# Multimedia Capabilities Port drivers ++# ++# CONFIG_MCP is not set ++# CONFIG_MCP_SA1100 is not set ++# CONFIG_MCP_UCB1200 is not set ++# CONFIG_MCP_UCB1200_AUDIO is not set ++# CONFIG_MCP_UCB1200_TS is not set ++# CONFIG_MCP_UCB1400_TS is not set ++ ++# ++# USB support ++# ++CONFIG_USB=y ++# CONFIG_USB_DEBUG is not set ++CONFIG_USB_DEVICEFS=y ++# CONFIG_USB_BANDWIDTH is not set ++# CONFIG_USB_LONG_TIMEOUT is not set ++# CONFIG_USB_UHCI is not set ++# CONFIG_USB_UHCI_ALT is not set ++# CONFIG_USB_OHCI is not set ++# CONFIG_USB_OHCI_SA1111 is not set ++CONFIG_USB_OHCI_TC6393=m ++CONFIG_USB_USE_INTERNAL_MEMORY=y ++# CONFIG_USB_AUDIO is not set ++# CONFIG_USB_BLUETOOTH is not set ++CONFIG_USB_STORAGE=m ++# CONFIG_USB_STORAGE_DEBUG is not set ++# CONFIG_USB_STORAGE_DATAFAB is not set ++# CONFIG_USB_STORAGE_FREECOM is not set ++CONFIG_USB_STORAGE_ISD200=y ++# CONFIG_USB_STORAGE_DPCM is not set ++# CONFIG_USB_STORAGE_HP8200e is not set ++# CONFIG_USB_STORAGE_SDDR09 is not set ++# CONFIG_USB_STORAGE_JUMPSHOT is not set ++CONFIG_USB_ACM=m ++# CONFIG_USB_PRINTER is not set ++CONFIG_USB_HID=m ++# CONFIG_USB_HIDDEV is not set ++CONFIG_USB_KBD=m ++CONFIG_USB_MOUSE=m ++# CONFIG_USB_WACOM is not set ++# CONFIG_USB_DC2XX is not set ++# CONFIG_USB_MDC800 is not set ++# CONFIG_USB_SCANNER is not set ++# CONFIG_USB_MICROTEK is not set ++# CONFIG_USB_HPUSBSCSI is not set ++# CONFIG_USB_PEGASUS is not set ++# CONFIG_USB_KAWETH is not set ++# CONFIG_USB_CATC is not set ++# CONFIG_USB_CDCETHER is not set ++# CONFIG_USB_USBNET is not set ++# CONFIG_USB_USS720 is not set ++ ++# ++# USB Serial Converter support ++# ++# CONFIG_USB_SERIAL is not set ++# CONFIG_USB_SERIAL_GENERIC is not set ++# CONFIG_USB_SERIAL_BELKIN is not set ++# CONFIG_USB_SERIAL_WHITEHEAT is not set ++# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set ++# CONFIG_USB_SERIAL_EMPEG is not set ++# CONFIG_USB_SERIAL_FTDI_SIO is not set ++# CONFIG_USB_SERIAL_VISOR is not set ++# CONFIG_USB_SERIAL_IPAQ is not set ++# CONFIG_USB_SERIAL_IR is not set ++# CONFIG_USB_SERIAL_EDGEPORT is not set ++# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set ++# CONFIG_USB_SERIAL_KEYSPAN is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set ++# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set ++# CONFIG_USB_SERIAL_MCT_U232 is not set ++# CONFIG_USB_SERIAL_KLSI is not set ++# CONFIG_USB_SERIAL_PL2303 is not set ++# CONFIG_USB_SERIAL_CYBERJACK is not set ++# CONFIG_USB_SERIAL_XIRCOM is not set ++# CONFIG_USB_SERIAL_OMNINET is not set ++# CONFIG_USB_RIO500 is not set ++ ++# ++# USB Device Support ++# ++CONFIG_USBD=m ++CONFIG_USBD_VENDORID=04DD ++CONFIG_USBD_PRODUCTID=9032 ++CONFIG_USBD_PRODUCT_NAME="SL-6000" ++CONFIG_USBD_MANUFACTURER="Sharp" ++# CONFIG_USBD_USE_SERIAL_NUMBER is not set ++CONFIG_USBD_SELFPOWERED=y ++CONFIG_USBD_MONITOR=m ++CONFIG_USBD_PROCFS=y ++ ++# ++# Network Function ++# ++CONFIG_USBD_NET=m ++CONFIG_USBD_NET_VENDORID=04DD ++CONFIG_USBD_NET_PRODUCTID=9032 ++CONFIG_USBD_NET_IFNAME="usbd" ++CONFIG_USBD_NET_OUT_ENDPOINT=1 ++CONFIG_USBD_NET_OUT_PKTSIZE=64 ++CONFIG_USBD_NET_IN_ENDPOINT=2 ++CONFIG_USBD_NET_IN_PKTSIZE=64 ++CONFIG_USBD_NET_INT_ENDPOINT=3 ++CONFIG_USBD_NET_INT_PKTSIZE=16 ++# CONFIG_USBD_NET_ALWAYSUP is not set ++# CONFIG_USBD_NET_SAFE is not set ++CONFIG_USBD_NET_MDLM=y ++# CONFIG_USBD_NET_CDC is not set ++CONFIG_USBD_NET_REMOTE_MACADDR="" ++CONFIG_USBD_NET_REMOTE_OUI=400002 ++CONFIG_USBD_MAC_AS_SERIAL_NUMBER=y ++CONFIG_USBD_NET_LOCAL_MACADDR="400001000001" ++CONFIG_USBD_NET_LOCAL_OUI=400001 ++ ++# ++# Serial Function ++# ++# CONFIG_USBD_SERIAL is not set ++ ++# ++# USB Device Bus Interface Support ++# ++CONFIG_USBD_PXA_BUS=m ++# CONFIG_USBD_GENERIC_BUS is not set ++ ++# ++# Bluetooth support ++# ++# CONFIG_BLUEZ is not set ++ ++# ++# Kernel hacking ++# ++CONFIG_FRAME_POINTER=y ++# CONFIG_DEBUG_USER is not set ++# CONFIG_DEBUG_COREDUMP_SIGNAL is not set ++# CONFIG_DEBUG_INFO is not set ++# CONFIG_NO_PGT_CACHE is not set ++# CONFIG_DEBUG_KERNEL is not set ++# CONFIG_DEBUG_SLAB is not set ++# CONFIG_MAGIC_SYSRQ is not set ++# CONFIG_DEBUG_SPINLOCK is not set ++# CONFIG_DEBUG_WAITQ is not set ++# CONFIG_DEBUG_BUGVERBOSE is not set ++# CONFIG_DEBUG_ERRORS is not set ++# CONFIG_DEBUG_LL is not set ++# CONFIG_DEBUG_DC21285_PORT is not set ++# CONFIG_DEBUG_CLPS711X_UART2 is not set +diff -Nur linux_c860_org/arch/arm/kernel/entry-armv.S linux/arch/arm/kernel/entry-armv.S +--- linux_c860_org/arch/arm/kernel/entry-armv.S 2002-12-18 19:27:21.000000000 +0900 ++++ linux/arch/arm/kernel/entry-armv.S 2004-06-10 21:09:10.000000000 +0900 +@@ -769,6 +769,12 @@ + add r4, sp, #S_SP + mov r6, lr + stmia r4, {r5, r6, r7, r8, r9} @ save sp_SVC, lr_SVC, pc, cpsr, old_ro ++#ifdef CONFIG_PREEMPT ++ get_current_task r9 ++ ldr r8, [r9, #TSK_PREEMPT] ++ add r8, r8, #1 ++ str r8, [r9, #TSK_PREEMPT] ++#endif + 1: get_irqnr_and_base r0, r6, r5, lr + movne r1, sp + @ +@@ -776,6 +782,25 @@ + @ + adrsvc ne, lr, 1b + bne do_IRQ ++#ifdef CONFIG_PREEMPT ++2: ldr r8, [r9, #TSK_PREEMPT] ++ subs r8, r8, #1 ++ bne 3f ++ ldr r7, [r9, #TSK_NEED_RESCHED] ++ teq r7, #0 ++ beq 3f ++ ldr r6, .LCirqstat ++ ldr r0, [r6, #IRQSTAT_BH_COUNT] ++ teq r0, #0 ++ bne 3f ++ mov r0, #MODE_SVC ++ msr cpsr_c, r0 @ enable interrupts ++ bl SYMBOL_NAME(preempt_schedule) ++ mov r0, #I_BIT | MODE_SVC ++ msr cpsr_c, r0 @ disable interrupts ++ b 2b ++3: str r8, [r9, #TSK_PREEMPT] ++#endif + ldr r0, [sp, #S_PSR] @ irqs are already disabled + msr spsr, r0 + ldmia sp, {r0 - pc}^ @ load r0 - pc, cpsr +@@ -833,6 +858,9 @@ + .LCprocfns: .word SYMBOL_NAME(processor) + #endif + .LCfp: .word SYMBOL_NAME(fp_enter) ++#ifdef CONFIG_PREEMPT ++.LCirqstat: .word SYMBOL_NAME(irq_stat) ++#endif + + irq_prio_table + +@@ -873,6 +901,12 @@ + stmdb r8, {sp, lr}^ + alignment_trap r4, r7, __temp_irq + zero_fp ++ get_current_task tsk ++#ifdef CONFIG_PREEMPT ++ ldr r0, [tsk, #TSK_PREEMPT] ++ add r0, r0, #1 ++ str r0, [tsk, #TSK_PREEMPT] ++#endif + 1: get_irqnr_and_base r0, r6, r5, lr + movne r1, sp + adrsvc ne, lr, 1b +@@ -880,8 +914,12 @@ + @ routine called with r0 = irq number, r1 = struct pt_regs * + @ + bne do_IRQ ++#ifdef CONFIG_PREEMPT ++ ldr r0, [tsk, #TSK_PREEMPT] ++ sub r0, r0, #1 ++ str r0, [tsk, #TSK_PREEMPT] ++#endif + mov why, #0 +- get_current_task tsk + b ret_to_user + + .align 5 +diff -Nur linux_c860_org/arch/arm/kernel/process.c linux/arch/arm/kernel/process.c +--- linux_c860_org/arch/arm/kernel/process.c 2003-06-18 16:12:25.000000000 +0900 ++++ linux/arch/arm/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -382,7 +382,7 @@ + * a system call from a "real" process, but the process memory space will + * not be free'd until both the parent and the child have exited. + */ +-pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) ++pid_t arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) + { + pid_t __ret; + +diff -Nur linux_c860_org/arch/arm/kernel/time.c linux/arch/arm/kernel/time.c +--- linux_c860_org/arch/arm/kernel/time.c 2002-08-26 14:39:49.000000000 +0900 ++++ linux/arch/arm/kernel/time.c 2004-06-10 21:09:10.000000000 +0900 +@@ -15,6 +15,7 @@ + * fixed set_rtc_mmss, fixed time.year for >= 2000, new mktime + * 1998-12-20 Updated NTP code according to technical memorandum Jan '96 + * "A Kernel Model for Precision Timekeeping" by Dave Mills ++ * 1-Nov-2003 Sharp Corporation for Tosa + */ + #include <linux/config.h> + #include <linux/module.h> +@@ -149,6 +150,15 @@ + #define do_leds() + #endif + ++#ifdef CONFIG_ARCH_PXA_TOSA ++#define AVOID_ROLLBACK ++#ifdef AVOID_ROLLBACK ++int rollback_cancel = 0; ++static unsigned long last_sec = 0; ++static unsigned long last_usec = 0; ++#endif ++#endif ++ + void do_gettimeofday(struct timeval *tv) + { + unsigned long flags; +@@ -172,6 +182,25 @@ + sec++; + } + ++#ifdef CONFIG_ARCH_PXA_TOSA ++#ifdef AVOID_ROLLBACK ++ if (rollback_cancel && last_sec) { ++ if (last_sec>sec && last_sec-sec<4 ) { ++ //X printk("ERROR: time was fixed!(-%d sec)\n",last_sec-sec); ++ sec = last_sec; ++ usec = last_usec+1; ++ } else if (last_sec==sec) { ++ if (last_usec>usec) { // usec is always fixed. ++ //X printk("ERROR: time was fixed!!(-%d usec)\n",last_usec-usec); ++ usec = last_usec+1; ++ } ++ } ++ } ++ last_sec = sec; ++ last_usec = usec; ++#endif ++#endif ++ + tv->tv_sec = sec; + tv->tv_usec = usec; + } +@@ -199,6 +228,13 @@ + time_maxerror = NTP_PHASE_LIMIT; + time_esterror = NTP_PHASE_LIMIT; + write_unlock_irq(&xtime_lock); ++ ++#ifdef CONFIG_ARCH_PXA_TOSA ++#ifdef AVOID_ROLLBACK ++ last_sec = 0; ++ last_usec = 0; ++#endif ++#endif + } + + static struct irqaction timer_irq = { +diff -Nur linux_c860_org/arch/arm/kernel/traps.c linux/arch/arm/kernel/traps.c +--- linux_c860_org/arch/arm/kernel/traps.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/arch/arm/kernel/traps.c 2004-06-10 21:09:10.000000000 +0900 +@@ -14,6 +14,7 @@ + * + * Change Log + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + #include <linux/config.h> +@@ -35,7 +36,7 @@ + #include <asm/unistd.h> + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #include <asm/mach-types.h> + #include <asm/hardware.h> + #include <asm/memory.h> +@@ -292,10 +293,12 @@ + mm_segment_t fs; + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++#if CONFIG_PM + extern sharpsl_fataloff(void); + sharpsl_fataloff(); + #endif ++#endif + + console_verbose(); + +diff -Nur linux_c860_org/arch/arm/mach-pxa/Makefile linux/arch/arm/mach-pxa/Makefile +--- linux_c860_org/arch/arm/mach-pxa/Makefile 2002-11-14 10:33:31.000000000 +0900 ++++ linux/arch/arm/mach-pxa/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -16,7 +16,8 @@ + + export-objs := generic.o irq.o dma.o sa1111.o \ + usb_ctl.o usb_recv.o usb_send.o \ +- discovery.o cotulla_dma.o pxa_ssp.o ++ discovery.o cotulla_dma.o pxa_ssp.o tosa.o \ ++ tosa_ac97.o + + # Common support (must be linked before board specific support) + obj-y += generic.o irq.o +@@ -33,6 +34,8 @@ + obj-$(CONFIG_SABINAL_DISCOVERY) += discovery.o discovery_arch.o pxa_ssp.o + obj-$(CONFIG_ARCH_PXA_POODLE) += poodle.o m62332.o pxa_ssp.o poodle_buzzer.o + obj-$(CONFIG_ARCH_PXA_CORGI) += corgi.o pxa_ssp.o poodle_buzzer.o ++obj-$(CONFIG_ARCH_PXA_TOSA) += tosa.o pxa_nssp.o tosa_ac97.o ++obj-$(CONFIG_BUZZER_TOSA) += tosa_buzzer.o + + # Support for blinky lights + leds-y := leds.o +@@ -66,6 +69,10 @@ + obj-$(CONFIG_BATT) += sharpsl_battery.o sharpsl_param.o + export-objs += sharpsl_battery.o + endif ++ ifeq ($(CONFIG_ARCH_PXA_TOSA),y) ++ obj-$(CONFIG_BATT) += tosa_battery.o sharpsl_param.o ++ export-objs += tosa_battery.o ++ endif + else + obj-$(CONFIG_PM) += pm.o sleep.o + endif +@@ -82,6 +89,9 @@ + ifeq ($(CONFIG_ARCH_PXA_CORGI),y) + devinfo-objs-m += sharpsl_deviceinfo.o + endif ++ ifeq ($(CONFIG_ARCH_PXA_TOSA),y) ++ devinfo-objs-m += sharpsl_deviceinfo.o ++ endif + endif + + obj-m += registers.o +diff -Nur linux_c860_org/arch/arm/mach-pxa/corgi.c linux/arch/arm/mach-pxa/corgi.c +--- linux_c860_org/arch/arm/mach-pxa/corgi.c 2003-06-18 16:12:25.000000000 +0900 ++++ linux/arch/arm/mach-pxa/corgi.c 2004-06-10 21:09:10.000000000 +0900 +@@ -298,7 +298,11 @@ + + static struct map_desc corgi_io_desc[] __initdata = { + /* virtual physical length domain r w c b */ ++#if defined(CONFIG_CORGI_LCD_BUFF) ++ { 0xf1000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 1 }, /* LCDC (readable for Qt driver) */ ++#else + { 0xf1000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* LCDC (readable for Qt driver) */ ++#endif + { 0xf2000000, 0x10800000, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCOOP */ + { 0xf2100000, 0x0C000000, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, /* Nand Flash */ + { 0xef000000, 0x00000000, 0x00800000, DOMAIN_IO, 1, 1, 1, 0 }, /* Boot Flash */ +diff -Nur linux_c860_org/arch/arm/mach-pxa/pxa_nssp.c linux/arch/arm/mach-pxa/pxa_nssp.c +--- linux_c860_org/arch/arm/mach-pxa/pxa_nssp.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/mach-pxa/pxa_nssp.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,57 @@ ++/* ++ * linux/arch/arm/mach-pxa/pxa_nssp.c ++ * ++ * NSSP read routines for tosa (SHARP) ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/sched.h> ++#include <linux/slab.h> ++#include <linux/interrupt.h> ++#include <linux/random.h> ++#include <linux/proc_fs.h> ++#include <linux/delay.h> ++#include <linux/init.h> ++#include <asm/hardware.h> ++ ++static spinlock_t pxa_nssp_lock = SPIN_LOCK_UNLOCKED; ++static unsigned long flag; ++static unsigned char initialized = 0; ++ ++void pxa_nssp_output(unsigned char reg, unsigned char data) ++{ ++ int i; ++ unsigned char dat = ( ((reg << 5) & 0xe0) | (data & 0x1f) ); ++ ++ spin_lock_irqsave(&pxa_nssp_lock, flag); ++ ++ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK); ++ GPCR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS); ++ for(i = 0; i < 8; i++) { ++ if( !(dat & (1<<(7-i))) ) ++ GPCR(GPIO_TG_SPI_MOSI) |= GPIO_bit(GPIO_TG_SPI_MOSI); ++ else ++ GPSR(GPIO_TG_SPI_MOSI) |= GPIO_bit(GPIO_TG_SPI_MOSI); ++ GPSR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK); ++ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK); ++ } ++ GPSR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS); ++ spin_unlock_irqrestore(&pxa_nssp_lock, flag); ++} ++ ++void pxa_nssp_init(void) ++{ ++ /* initialize SSP */ ++ set_GPIO_mode(GPIO_TG_SPI_SCLK | GPIO_OUT); ++ set_GPIO_mode(GPIO_TG_SPI_CS | GPIO_OUT); ++ set_GPIO_mode(GPIO_TG_SPI_MOSI | GPIO_OUT); ++ GPSR(GPIO_TG_SPI_CS) |= GPIO_bit(GPIO_TG_SPI_CS); ++ GPCR(GPIO_TG_SPI_SCLK) |= GPIO_bit(GPIO_TG_SPI_SCLK); ++} +diff -Nur linux_c860_org/arch/arm/mach-pxa/registers.c linux/arch/arm/mach-pxa/registers.c +--- linux_c860_org/arch/arm/mach-pxa/registers.c 2002-09-18 18:42:27.000000000 +0900 ++++ linux/arch/arm/mach-pxa/registers.c 2004-06-10 21:09:10.000000000 +0900 +@@ -5,7 +5,10 @@ + This code is based on SA1110's register moniter + + ****************************************************************************/ +- ++/* ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ */ + /**************************************************************************** + + registers.c: Register monitor of SA-1110 +@@ -66,6 +69,7 @@ + #include <linux/ioport.h> + #include <asm/uaccess.h> /* to copy to/from userspace */ + #include <asm/arch/hardware.h> ++#include <asm/io.h> + + //typedef unsigned long Word; + +@@ -74,6 +78,10 @@ + #define USE_LOCOMO + #elif defined(CONFIG_ARCH_PXA_CORGI) + #define USE_SCOOP ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#define USE_SCOOP ++#define USE_SCOOP2 ++#define USE_KUROHYO + #endif + + #define MODULE_NAME "regmon" +@@ -83,6 +91,12 @@ + #ifdef USE_SCOOP + #define SCOOP_DIRNAME "scoop" + #endif ++#ifdef USE_SCOOP2 ++#define SCOOP2_DIRNAME "scoop2" ++#endif ++#ifdef USE_KUROHYO ++#define KUROHYO_DIRNAME "kurohyo" ++#endif + #ifdef USE_LOCOMO + #define LOCOMO_DIRNAME "locomo" + #endif +@@ -183,6 +197,223 @@ + SCP_REG(current_reg->phyaddr)=newRegValue; + return (count+endp-buffer); + } ++#endif ++#ifdef USE_SCOOP2 ++static ssize_t proc_scoop2_read_reg(struct file * file, char * buf, ++ size_t nbytes, loff_t *ppos); ++static ssize_t proc_scoop2_write_reg(struct file * file, const char * buffer, ++ size_t count, loff_t *ppos); ++ ++ ++static struct file_operations proc_scoop2_reg_operations = { ++ read: proc_scoop2_read_reg, ++ write: proc_scoop2_write_reg ++}; ++ ++typedef struct scoop2_reg_entry { ++ u32 phyaddr; ++ char* name; ++ char* description; ++ unsigned short low_ino; ++} scoop2_reg_entry_t; ++ ++ ++static scoop2_reg_entry_t scoop2_regs[] = ++{ ++/* { phyaddr, name, description } */ ++ { 0x00, "MCR", " " }, ++ { 0x04, "CDR", " " }, ++ { 0x08, "CSR", " " }, ++ { 0x0C, "CPR", " " }, ++ { 0x10, "CCR", " " }, ++ { 0x14, "IRR", " " }, ++ { 0x18, "IMR", " " }, ++ { 0x1C, "ISR", " " }, ++ { 0x20, "GPCR", " " }, ++ { 0x24, "GPWR", " " }, ++ { 0x28, "GPRR", " " } ++}; ++ ++ ++#define NUM_OF_SCOOP2_REG_ENTRY (sizeof(scoop2_regs)/sizeof(scoop2_reg_entry_t)) ++ ++ ++static int proc_scoop2_read_reg(struct file * file, char * buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ char outputbuf[15]; ++ int count; ++ int i; ++ scoop2_reg_entry_t* current_reg=NULL; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ for (i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) { ++ if (scoop2_regs[i].low_ino==i_ino) { ++ current_reg = &scoop2_regs[i]; ++ break; ++ } ++ } ++ if (current_reg==NULL) ++ return -EINVAL; ++ ++ count = sprintf(outputbuf, "0x%04X\n",SCP_JC_REG(current_reg->phyaddr)); ++ *ppos+=count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t proc_scoop2_write_reg(struct file * file, const char * buffer, ++ size_t count, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ scoop2_reg_entry_t* current_reg=NULL; ++ int i; ++ unsigned long newRegValue; ++ char *endp; ++ ++ for (i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) { ++ if (scoop2_regs[i].low_ino==i_ino) { ++ current_reg = &scoop2_regs[i]; ++ break; ++ } ++ } ++ if (current_reg==NULL) ++ return -EINVAL; ++ ++ newRegValue = simple_strtoul(buffer,&endp,0); ++ SCP_JC_REG(current_reg->phyaddr)=newRegValue; ++ return (count+endp-buffer); ++} ++ ++#endif ++#ifdef USE_KUROHYO ++static ssize_t proc_kurohyo_read_reg(struct file * file, char * buf, ++ size_t nbytes, loff_t *ppos); ++static ssize_t proc_kurohyo_write_reg(struct file * file, const char * buffer, ++ size_t count, loff_t *ppos); ++ ++ ++static struct file_operations proc_kurohyo_reg_operations = { ++ read: proc_kurohyo_read_reg, ++ write: proc_kurohyo_write_reg ++}; ++ ++typedef struct kurohyo_reg_entry { ++ u32 phyaddr; ++ char* name; ++ char* description; ++ unsigned short low_ino; ++} kurohyo_reg_entry_t; ++ ++ ++static kurohyo_reg_entry_t kurohyo_regs[] = ++{ ++/* { phyaddr, name, description } */ ++ { 0x000, "PINTST", " " }, ++ { 0x008, "VHLIN", " " }, ++ { 0x00A, "CMDADR_L", " " }, ++ { 0x00C, "CMDADR_H", " " }, ++ { 0x00E, "CMDFIF", " " }, ++ { 0x010, "CMDFINT", " " }, ++ { 0x012, "BINTMSK", " " }, ++ { 0x014, "BINTST", " " }, ++ { 0x016, "FIPT", " " }, ++ { 0x018, "DMAST", " " }, ++ { 0x01C, "COMD_L", " "}, ++ { 0x01E, "COMD_H", " "}, ++ { 0x022, "FIFOR", " "}, ++ { 0x024, "COMSMD", " "}, ++ ++ { 0x100, "PLCNT", " " }, ++ { 0x102, "PLCST", " " }, ++ { 0x108, "PLIST", " " }, ++ { 0x10A, "PLIEN", " " }, ++ { 0x10C, "PLSEN", " " }, ++ { 0x122, "PLDSA_L", " " }, ++ { 0x124, "PLDSA_H", " " }, ++ { 0x12A, "PLPIT_L", " " }, ++ { 0x12C, "PLPIT_H", " " }, ++ { 0x12E, "PLGMD", " " }, ++ { 0x140, "PLHT", " " }, ++ { 0x142, "PLHDS", " " }, ++ { 0x144, "PLHSS", " " }, ++ { 0x146, "PLHSE", " " }, ++ { 0x14C, "PLHPX", " " }, ++ { 0x150, "PLVT", " " }, ++ { 0x152, "PLVDS", " " }, ++ { 0x154, "PLVSS", " " }, ++ { 0x156, "PLVSE", " " }, ++ { 0x160, "PLCLN", " " }, ++ { 0x162, "PLILN", " " }, ++ { 0x164, "PLMOD", " " }, ++ { 0x166, "MISC", " " }, ++ { 0x16A, "PWHSP", " " }, ++ { 0x16C, "PWVDS", " " }, ++ { 0x16E, "PWVDE", " " }, ++ { 0x170, "PWVSP", " " }, ++ { 0x180, "VWADR_L", " " }, ++ { 0x182, "VWADR_H", " " }, ++}; ++ ++ ++#define NUM_OF_KUROHYO_REG_ENTRY (sizeof(kurohyo_regs)/sizeof(kurohyo_reg_entry_t)) ++ ++#define KUROHYO_LCD_INNER_ADDRESS (TC6393_SYS_BASE+TC6393_GC_INTERNAL_REG_BASE) ++ ++static int proc_kurohyo_read_reg(struct file * file, char * buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ char outputbuf[15]; ++ int count; ++ int i; ++ kurohyo_reg_entry_t* current_reg=NULL; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ for (i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) { ++ if (kurohyo_regs[i].low_ino==i_ino) { ++ current_reg = &kurohyo_regs[i]; ++ break; ++ } ++ } ++ if (current_reg==NULL) ++ return -EINVAL; ++ ++ count = sprintf(outputbuf, "0x%04X\n",readw(KUROHYO_LCD_INNER_ADDRESS + current_reg->phyaddr)); ++ *ppos+=count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t proc_kurohyo_write_reg(struct file * file, const char * buffer, ++ size_t count, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ kurohyo_reg_entry_t* current_reg=NULL; ++ int i; ++ unsigned long newRegValue; ++ char *endp; ++ ++ for (i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) { ++ if (kurohyo_regs[i].low_ino==i_ino) { ++ current_reg = &kurohyo_regs[i]; ++ break; ++ } ++ } ++ if (current_reg==NULL) ++ return -EINVAL; ++ ++ newRegValue = simple_strtoul(buffer,&endp,0); ++ writew(newRegValue,KUROHYO_LCD_INNER_ADDRESS + current_reg->phyaddr); ++ return (count+endp-buffer); ++} + + #endif + +@@ -814,6 +1045,14 @@ + static struct proc_dir_entry *scoop_regdir; + static struct proc_dir_entry *scoopdir; + #endif ++#ifdef USE_SCOOP2 ++static struct proc_dir_entry *scoop2_regdir; ++static struct proc_dir_entry *scoop2dir; ++#endif ++#ifdef USE_KUROHYO ++static struct proc_dir_entry *kurohyo_regdir; ++static struct proc_dir_entry *kurohyodir; ++#endif + + #ifdef USE_LOCOMO + static struct proc_dir_entry *locomo_regdir; +@@ -879,6 +1118,62 @@ + } + } + #endif ++#ifdef USE_SCOOP2 ++ scoop2dir = proc_mkdir(SCOOP2_DIRNAME, &proc_root); ++ if (scoop2dir == NULL) { ++ printk(KERN_ERR MODULE_NAME": can't create /proc/" SCOOP2_DIRNAME "\n"); ++ return(-ENOMEM); ++ } ++ ++ scoop2_regdir = proc_mkdir(REG_DIRNAME, scoop2dir); ++ if (scoop2_regdir == NULL) { ++ printk(KERN_ERR MODULE_NAME": can't create /proc/" SCOOP2_DIRNAME "/" REG_DIRNAME "\n"); ++ return(-ENOMEM); ++ } ++ ++ for(i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) { ++ entry = create_proc_entry(scoop2_regs[i].name, ++ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, ++ scoop2_regdir); ++ if(entry) { ++ scoop2_regs[i].low_ino = entry->low_ino; ++ entry->proc_fops = &proc_scoop2_reg_operations; ++ } else { ++ printk( KERN_ERR MODULE_NAME ++ ": can't create /proc/" REG_DIRNAME ++ "/%s\n", scoop2_regs[i].name); ++ return(-ENOMEM); ++ } ++ } ++#endif ++#ifdef USE_KUROHYO ++ kurohyodir = proc_mkdir(KUROHYO_DIRNAME, &proc_root); ++ if (kurohyodir == NULL) { ++ printk(KERN_ERR MODULE_NAME": can't create /proc/" KUROHYO_DIRNAME "\n"); ++ return(-ENOMEM); ++ } ++ ++ kurohyo_regdir = proc_mkdir(REG_DIRNAME, kurohyodir); ++ if (kurohyo_regdir == NULL) { ++ printk(KERN_ERR MODULE_NAME": can't create /proc/" KUROHYO_DIRNAME "/" REG_DIRNAME "\n"); ++ return(-ENOMEM); ++ } ++ ++ for(i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) { ++ entry = create_proc_entry(kurohyo_regs[i].name, ++ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, ++ kurohyo_regdir); ++ if(entry) { ++ kurohyo_regs[i].low_ino = entry->low_ino; ++ entry->proc_fops = &proc_kurohyo_reg_operations; ++ } else { ++ printk( KERN_ERR MODULE_NAME ++ ": can't create /proc/" REG_DIRNAME ++ "/%s\n", kurohyo_regs[i].name); ++ return(-ENOMEM); ++ } ++ } ++#endif + + #ifdef USE_LOCOMO + locomodir = proc_mkdir(LOCOMO_DIRNAME, &proc_root); +@@ -925,6 +1220,18 @@ + remove_proc_entry(REG_DIRNAME, scoopdir); + remove_proc_entry(SCOOP_DIRNAME, &proc_root); + #endif ++#ifdef USE_SCOOP2 ++ for(i=0;i<NUM_OF_SCOOP2_REG_ENTRY;i++) ++ remove_proc_entry(scoop2_regs[i].name,scoop2_regdir); ++ remove_proc_entry(REG_DIRNAME, scoop2dir); ++ remove_proc_entry(SCOOP2_DIRNAME, &proc_root); ++#endif ++#ifdef USE_KUROHYO ++ for(i=0;i<NUM_OF_KUROHYO_REG_ENTRY;i++) ++ remove_proc_entry(kurohyo_regs[i].name,kurohyo_regdir); ++ remove_proc_entry(REG_DIRNAME, kurohyodir); ++ remove_proc_entry(KUROHYO_DIRNAME, &proc_root); ++#endif + #ifdef USE_LOCOMO + for(i=0;i<NUM_OF_LOCOMO_REG_ENTRY;i++) + remove_proc_entry(locomo_regs[i].name,locomo_regdir); +diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_apm.c linux/arch/arm/mach-pxa/sharpsl_apm.c +--- linux_c860_org/arch/arm/mach-pxa/sharpsl_apm.c 2003-06-18 16:12:25.000000000 +0900 ++++ linux/arch/arm/mach-pxa/sharpsl_apm.c 2004-06-10 21:09:10.000000000 +0900 +@@ -49,6 +49,8 @@ + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi + * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on + * 13-Mar-2003 SHARP for PXA255 ++ * 29-Jan-2004 Sharp Corporation for Tosa ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/config.h> +@@ -72,6 +74,12 @@ + #include <asm/system.h> + #include <asm/hardware.h> + ++extern int errno; ++ ++// unistd.h is included for the configuration ioctl stuff ++#define __KERNEL_SYSCALLS__ 1 ++#include <asm/unistd.h> ++ + #ifdef CONFIG_ARCH_SHARP_SL + #include <asm/irq.h> + #include <asm/arch/irqs.h> +@@ -91,7 +99,7 @@ + #define KBDOWN (0) + + #ifdef CONFIG_APM_CPU_IDLE +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #define SHARPSL_NEW_IDLE + #endif + #endif +@@ -99,9 +107,17 @@ + #if defined(CONFIG_SABINAL_DISCOVERY) + extern int discovery_get_main_battery(void); + #define get_main_battery discovery_get_main_battery +-#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++ + extern int sharpsl_get_main_battery(void); + #define get_main_battery sharpsl_get_main_battery ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++extern int sharpsl_jacket_battery; ++extern int sharpsl_jacket_exist; ++extern int sharpsl_get_cardslot_error(void); ++#endif ++ + #ifdef SHARPSL_NEW_IDLE + static int chg_freq_mode = 0; + #endif +@@ -119,17 +135,25 @@ + extern int HWR_flag; + #endif + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++extern unsigned int cccr_clkparam; ++#endif ++ + #if defined(CONFIG_SABINAL_DISCOVERY) + #define SHARPSL_AC_LINE_STATUS (( ASIC3_GPIO_PSTS_D & AC_IN )? APM_AC_OFFLINE : APM_AC_ONLINE) + #define BACKPACK_IN_DETECT() ( ASIC3_GPIO_PSTS_D & BACKPACK_DETECT ) /* 0: exist , 1: not in */ + #else + #define SHARPSL_BATTERY_OK (( GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) ) ? 1 : 0) /* 1: OK / 0: FATAL */ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#define SHARPSL_AC_LINE_STATUS ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) ? APM_AC_OFFLINE : APM_AC_ONLINE) ++#else + #define SHARPSL_AC_LINE_STATUS ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) ? APM_AC_ONLINE : APM_AC_OFFLINE) + #endif ++#endif + + + /// ioctl +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + static u32 apm_event_mask = (APM_EVT_POWER_BUTTON); + #else + static u32 apm_event_mask = (APM_EVT_POWER_BUTTON | APM_EVT_BATTERY_STATUS); +@@ -151,6 +175,7 @@ + + #endif + ++#define DEBUG + #ifdef DEBUG + #define DPRINTK(x, args...) printk(__FUNCTION__ ": " x,##args) + #else +@@ -339,6 +364,7 @@ + }; + #define ERROR_COUNT (sizeof(error_table)/sizeof(lookup_t)) + ++#define APP_NAME_LIST "/etc/suspend.lst" + /* + * Function + */ +@@ -347,6 +373,8 @@ + static int set_power_state(u_short what, u_short state); + #ifndef CONFIG_SABINAL_DISCOVERY + extern int sharpsl_main_battery; ++extern int sharpsl_backup_battery; ++extern int sharpsl_bu_battery; + #endif + static int apm_get_power_status(u_char *ac_line_status, + u_char *battery_status, +@@ -440,7 +468,8 @@ + + #if defined(CONFIG_ARCH_PXA_POODLE) + if (irq == IRQ_GPIO_ON_KEY) { /* suspend */ +- //DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request); ++ ++ DPRINTK("irq=%d count=%d sharpsl_suspend_request%d\n",irq, count, sharpsl_suspend_request); + if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) { + /* release */ + count = 0; +@@ -623,24 +652,75 @@ + struct task_struct* p = NULL; + struct task_struct* tsk = current; + ++ int fd,x; ++ mm_segment_t old_fs = get_fs (); ++ char line_buffer[256]; ++ + if (! spin_trylock(&lock)) + return; ++ ++ // Try opening the send sig application name list ++ set_fs(KERNEL_DS); ++// printk("open sig file\n"); ++ fd = open(APP_NAME_LIST, O_RDONLY, 0); ++ set_fs(old_fs); + + /* send signal to all procs except for kernel-threads */ + read_lock(&tasklist_lock); +- for_each_task(p) { +- struct siginfo si; + +- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) +- continue; ++ if(fd < 0){ ++ for_each_task(p) { ++ struct siginfo si; ++ ++ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) ++ continue; ++ if (!strcmp(p->comm,"cardmgr")) { //Send sig to cardmgr ++// printk ("Send SIG to application\n"); ++ si.si_signo = signo; ++ si.si_errno = 0; ++ si.si_code = SI_KERNEL; ++ si.si_pid = tsk->pid; ++ si.si_uid = tsk->uid; ++ send_sig_info(signo, &si, p); ++ } ++ } ++ ++ }else { ++ for(;;){ ++ memset(line_buffer, '\0', 256); ++ set_fs(KERNEL_DS); ++ for (x = 0; x < 256; x++) { ++ if (!read(fd, &line_buffer[x], 1)) ++ goto sig_send_done; ++ if (line_buffer[x] == '\n' || line_buffer[x] == '\r') ++ break; ++ } ++ set_fs(old_fs); ++ ++ for_each_task(p) { ++ struct siginfo si; ++ ++ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) ++ continue; ++ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) { //Send sig to cardmgr ++// printk ("Send SIG to application\n"); ++ si.si_signo = signo; ++ si.si_errno = 0; ++ si.si_code = SI_KERNEL; ++ si.si_pid = tsk->pid; ++ si.si_uid = tsk->uid; ++ send_sig_info(signo, &si, p); ++ } ++ } ++ } + +- si.si_signo = signo; +- si.si_errno = 0; +- si.si_code = SI_KERNEL; +- si.si_pid = tsk->pid; +- si.si_uid = tsk->uid; +- send_sig_info(signo, &si, p); ++ sig_send_done: ++// printk("close sig\n"); ++ close(fd); + } ++ ++ ++ + read_unlock(&tasklist_lock); + + if (signo == SIGSTOP) { +@@ -652,16 +732,58 @@ + schedule(); + set_current_state(state); + ++ set_fs(KERNEL_DS); ++ fd = open(APP_NAME_LIST, O_RDONLY, 0); ++// printk("open sigstop\n"); ++ set_fs(old_fs); ++ + read_lock(&tasklist_lock); +- for_each_task(p) { +- if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) +- continue; + +- if (p->state != TASK_STOPPED) { +- read_unlock(&tasklist_lock); +- goto retry; ++ if(fd < 0){ ++ for_each_task(p) { ++ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) ++ continue; ++ if (!strcmp(p->comm,"cardmgr")) { ++// printk ("Check application stopped\n"); ++ ++ if (p->state != TASK_STOPPED) { ++ read_unlock(&tasklist_lock); ++ goto retry; ++ } ++ } + } ++ }else { ++ ++ for(;;){ ++ memset(line_buffer, '\0', 256); ++ old_fs = get_fs(); ++ set_fs(KERNEL_DS); ++ for (x = 0; x < 256; x++) { ++ if (!read(fd, &line_buffer[x], 1)) ++ goto sig_stop_done; ++ if (line_buffer[x] == '\n' || line_buffer[x] == '\r') ++ break; ++ } ++ set_fs(old_fs); ++ ++ for_each_task(p) { ++ if (p->pid == 1 || p->pid == tsk->pid || is_kernel_thread(p)) ++ continue; ++ if (!strncmp(p->comm,line_buffer,strlen(p->comm))) { ++// printk ("Check application stopped\n"); ++ ++ if (p->state != TASK_STOPPED) { ++ read_unlock(&tasklist_lock); ++ goto retry; ++ } ++ } ++ } ++ } ++ sig_stop_done: ++// printk("close sigstop\n"); ++ close(fd); + } ++ + read_unlock(&tasklist_lock); + } + +@@ -711,7 +833,11 @@ + } + + static spinlock_t locklockFCS = SPIN_LOCK_UNLOCKED; ++#if 0 // for debug ++static unsigned long lockFCS = 0x80000000; ++#else + static unsigned long lockFCS = 0; ++#endif + static int change_lockFCS = 0; + static spinlock_t lock_power_mode = SPIN_LOCK_UNLOCKED; + static unsigned long power_mode = 0; +@@ -986,6 +1112,49 @@ + + EXPORT_SYMBOL(lock_FCS); + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++static ssize_t cccr_change_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "0x%08X\n", (unsigned int)cccr_clkparam); ++ count++; ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t cccr_change_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%x",¶m); ++ if (param) { ++ printk("Change CCCR = %x.\n",param); ++ cccr_clkparam = param; ++ sharpsl_chg_freq = param; ++ cpu_xscale_sl_change_speed_num(); ++ cccr_reg = CCCR; ++ printk("Changed CCCR = %x.\n",cccr_reg); ++ ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_cccr_change_params_operations = { ++ read: cccr_change_read_params, ++ write: cccr_change_write_params, ++}; ++#endif ++ + #ifdef CONFIG_APM_CPU_IDLE + #ifdef SHARPSL_NEW_IDLE + static int save_icmr; +@@ -1021,21 +1190,35 @@ + if ( !chg_freq_mode ) { + //LCM_LPT1 = 0x0080; + // if (!lockFCS || ((lockFCS == LOCK_FCS_FFUART) && (!(FFMSR & MSR_DSR)))) { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if (!lockFCS) { ++#else + #if defined(CONFIG_ARCH_SHARP_SL_J) + if (!(lockFCS & ~LOCK_FCS_FFUART)) { + #else + if (!lockFCS) { + #endif ++#endif + #if defined(CONFIG_ARCH_PXA_POODLE) + while(1) { + if ( !( LCCR0 & 0x1 ) || ( GPLR(74) & GPIO_bit(74)) ) break; + } + #endif ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ CKEN &= ~CKEN2_AC97; ++#endif ++ + if ( cccr_reg == 0x145 ) { + cpu_xscale_sl_change_speed_121(); + } else { + cpu_xscale_change_speed_121(); + } ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ CKEN |= CKEN2_AC97; ++#endif ++ + } + } + chg_freq_mode = 1; +@@ -1100,22 +1283,46 @@ + } + #endif + MDREFR &= ~MDREFR_APD; +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ CKEN &= ~CKEN2_AC97; ++#endif ++ ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + if ( cccr_reg == 0x161 ) { + cpu_xscale_sl_change_speed_161(); + } + else if ( cccr_reg == 0x145 ) { + cpu_xscale_sl_change_speed_145(); ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ } else { ++ cccr_clkparam = (unsigned int)cccr_reg; ++ cpu_xscale_sl_change_speed_num(); ++ } ++#else + } else { + cpu_xscale_change_speed_241(); + } ++#endif + #else + if ( cccr_reg == 0x145 ) { + cpu_xscale_sl_change_speed_145(); ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ } else { ++ cccr_clkparam = (unsigned int)cccr_reg; ++ cpu_xscale_sl_change_speed_num(); ++ } ++#else + } else { + cpu_xscale_change_speed_241(); + } + #endif ++#endif ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ CKEN |= CKEN2_AC97; ++#endif ++ + } else { + MDREFR &= ~MDREFR_APD; + } +@@ -1281,6 +1488,11 @@ + u_short *battery_life) + { + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++u_char dumm_status; ++u_short dumm_life; ++#endif ++ + #ifdef CONFIG_SABINAL_DISCOVERY + discovery_apm_get_power_status(ac_line_status, + battery_status, battery_flag, battery_percentage, battery_life); +@@ -1290,7 +1502,11 @@ + #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) + sharpsl_apm_get_power_status(ac_line_status, + battery_status, battery_flag, battery_percentage, battery_life); +- ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ sharpsl_apm_get_power_status(ac_line_status, ++ battery_status,&dumm_status,&dumm_status,battery_flag, ++ battery_percentage,&dumm_status,&dumm_status, ++ battery_life,&dumm_life,&dumm_life); + #endif + return APM_SUCCESS; + } +@@ -1302,12 +1518,15 @@ + u_short *battery_life) + { + +-#ifdef CONFIG_SABINAL_DISCOVERY +- ++#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA) ++#if defined(CONFIG_SABINAL_DISCOVERY) + discovery_apm_get_bp_status(ac_line_status, + battery_status, battery_flag, battery_percentage, battery_life); +- ++#else ++ sharpsl_apm_get_bp_status(ac_line_status, ++ battery_status, battery_flag, battery_percentage, battery_life); + #endif // CONFIG_SABINAL_DISCOVERY ++#endif + return APM_SUCCESS; + } + +@@ -1475,6 +1694,9 @@ + is_goto_suspend = 1; + #ifdef CONFIG_PCMCIA + pcmcia_set_detect_interrupt(0, 0, 1); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ pcmcia_set_detect_interrupt(1, 0, 1); ++#endif + #endif + send_sig_to_all_procs(SIGSTOP); + /* map all suspends to ACPI D3 */ +@@ -1498,6 +1720,9 @@ + resume_handling = 1; + #ifdef CONFIG_PCMCIA + pcmcia_set_detect_interrupt(0, 1, 0); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ pcmcia_set_detect_interrupt(1, 1, 0); ++#endif + #endif + + #ifdef CONFIG_SABINAL_DISCOVERY +@@ -1533,6 +1758,9 @@ + send_sig_to_all_procs(SIGCONT); + #ifdef CONFIG_PCMCIA + pcmcia_set_detect_interrupt(0, 1, 1); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ pcmcia_set_detect_interrupt(1, 1, 1); ++#endif + #endif + resume_handling = 0; + +@@ -1681,8 +1909,9 @@ + if (send_event(event)) { + queue_event(event, NULL); + waiting_for_resume = 1; +- if (suspends_pending <= 0) ++ if (suspends_pending <= 0){ + (void) suspend(); ++ } + } + break; + +@@ -1833,7 +2062,7 @@ + + for (;;) { + /* Nothing to do, just sleep for the timeout */ +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + timeout = 2*timeout; + if (timeout > APM_CHECK_TIMEOUT) + #endif +@@ -1863,7 +2092,7 @@ + + for (;;) { + /* Nothing to do, just sleep for the timeout */ +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + timeout = 2*timeout; + if (timeout > APM_CHECK_TIMEOUT) + #endif +@@ -2012,6 +2241,7 @@ + else + queue_event(APM_USER_SUSPEND, as); + if (suspends_pending <= 0) { ++ + if (suspend() != APM_SUCCESS) + return -EIO; + } else { +@@ -2040,7 +2270,7 @@ + case APM_IOC_GET_REGISTER: { + } break; + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + case APM_IOC_RESET_PM: { + extern int sharpsl_main_bk_flag; + sharpsl_main_bk_flag = 1; +@@ -2114,11 +2344,14 @@ + + case APM_IOC_BATTERY_BACK_CHK: { + //return collie_backup_battery; ++#ifdef CONFIG_ARCH_PXA_TOSA ++ return sharpsl_bu_battery; ++#endif + } break; + + case APM_IOC_BATTERY_MAIN_CHK: { + #ifndef CONFIG_SABINAL_DISCOVERY +- return sharpsl_main_battery; ++ return sharpsl_main_battery; + #endif + } break; + +@@ -2132,7 +2365,7 @@ + return 1; + } break; + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + case APM_IOC_SFREQ: { + int freq; + get_user(freq, (unsigned int *)(arg)); +@@ -2179,11 +2412,11 @@ + unsigned long flags; + + sleeping = 1; +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_off_mode = 1; + #endif + save_flags_cli(flags); +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_restart_nonstop(); + #else + sharpsl_restart(); +@@ -2213,7 +2446,25 @@ + apm_event_mask = arg; + return tmp; + } ++ ++ case APM_IOC_GET_CARDSLOT_ERROR: { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ return sharpsl_get_cardslot_error(); ++#endif ++ } ++ ++ case APM_IOC_BATTERY_JACKET_CHK: { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ return sharpsl_jacket_battery; ++#endif ++ } break; ++ ++ case APM_IOC_GET_JACKET_STATE: ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ return sharpsl_jacket_exist; ++#endif + #endif ++ + default: + return -EINVAL; + } +@@ -2236,8 +2487,9 @@ + } + if (as->suspends_pending > 0) { + suspends_pending -= as->suspends_pending; +- if (suspends_pending <= 0) ++ if (suspends_pending <= 0){ + (void) suspend(); ++ } + } + if (user_list == as) + user_list = as->next; +@@ -2367,7 +2619,7 @@ + } + + +-#ifdef CONFIG_SABINAL_DISCOVERY ++#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA) + static int apm_bp_get_info(char *buf, char **start, off_t fpos, int length) + { + char * p; +@@ -2446,8 +2698,7 @@ + } + #endif + +- +-#ifdef CONFIG_SABINAL_DISCOVERY ++#if defined(CONFIG_SABINAL_DISCOVERY) + static int discovery_key_check(void *unused) + { + +@@ -2457,18 +2708,28 @@ + + while(1) { + +- interruptiblee_sleep_on(&fl_key); ++ interruptible_sleep_on(&fl_key); + + while(1) { + interruptible_sleep_on_timeout((wait_queue_head_t*)&queue, KEY_TICK ); +- if ( (ASIC3_GPIO_PSTS_A & PWR_ON_KEY) != 0 ) { //key up +- break; +- } ++#ifdef CONFIG_SABINAL_DISCOVERY ++ if ( (ASIC3_GPIO_PSTS_A & PWR_ON_KEY) != 0 ) { //key up ++ break; ++ } ++#else ++ if ( GPLR(GPIO_ON_KEY) & GPIO_bit(GPIO_ON_KEY) ) { ++ break; ++ } ++#endif + if ( ( jiffies - on_press_time ) < 0 ) { + + if ( ( jiffies + (0xffffffff - on_press_time) ) > FLONT_LIGHT_TOGGLE_TIME ) { + if ( apm_event_mask & APM_EVT_POWER_BUTTON ) { ++#ifdef CONFIG_SABINAL_DISCOVERY + discoveryfl_blank_power_button(); ++#else ++ sharpslfl_blank_power_button(); ++#endif + } else { + handle_scancode(SLKEY_FRONTLIGHT|KBDOWN , 1); + handle_scancode(SLKEY_FRONTLIGHT|KBUP , 0); +@@ -2480,7 +2741,11 @@ + if ( ( jiffies - on_press_time ) > FLONT_LIGHT_TOGGLE_TIME ) { + + if ( apm_event_mask & APM_EVT_POWER_BUTTON ) { ++#ifdef CONFIG_SABINAL_DISCOVERY + discoveryfl_blank_power_button(); ++#else ++ tosa_l_blank_power_button(); ++#endif + } else { + handle_scancode(SLKEY_FRONTLIGHT|KBDOWN , 1); + handle_scancode(SLKEY_FRONTLIGHT|KBUP , 0); +@@ -2623,6 +2888,7 @@ + struct proc_dir_entry *apm_proc; + struct proc_dir_entry *lock_fcs_proc; + struct proc_dir_entry *power_mode_proc; ++ struct proc_dir_entry *cccr_change_proc; + + apm_info.bios = apm_bios_info; + if (apm_info.bios.version == 0) { +@@ -2640,19 +2906,35 @@ + } + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++#if defined(CONFIG_SL_CCCR242) ++ sharpsl_chg_freq = (unsigned int)0x00000242; ++ cccr_clkparam = (unsigned int)sharpsl_chg_freq; ++ cpu_xscale_sl_change_speed_num(); ++#elif defined(CONFIG_SL_CCCR162) ++ sharpsl_chg_freq = (unsigned int)0x00000162; ++ cccr_clkparam = (unsigned int)sharpsl_chg_freq; ++ cpu_xscale_sl_change_speed_num(); ++#else ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_chg_freq = (unsigned int)0x00000161; ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ cccr_clkparam = (unsigned int)sharpsl_chg_freq; ++#endif + cpu_xscale_sl_change_speed_161(); + #else + #if 1 // default 400MHz + sharpsl_chg_freq = (unsigned int)0x00000241; ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ cccr_clkparam = (unsigned int)sharpsl_chg_freq; ++#endif + #else + cpu_xscale_sl_change_speed_145_without_lcd(); + #endif + #endif ++#endif + cccr_reg = CCCR; +- printk("FCS : CCCR = %x\n",cccr_reg); ++// printk("FCS : CCCR = %x\n",cccr_reg); + #endif + + /* +@@ -2732,11 +3014,19 @@ + power_mode_proc->proc_fops = &proc_power_mode_params_operations; + } + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ cccr_change_proc = create_proc_entry("cccr_change", 0, NULL); ++ if (cccr_change_proc) { ++ cccr_change_proc->proc_fops = &proc_cccr_change_params_operations; ++ } ++#endif ++ + kernel_thread(apm_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); + +-#ifdef CONFIG_SABINAL_DISCOVERY ++#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_TOSA) ++#if defined(CONFIG_SABINAL_DISCOVERY) + kernel_thread( discovery_key_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); +- ++#endif + { + struct proc_dir_entry *apm_proc_backpack; + +diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_deviceinfo.c linux/arch/arm/mach-pxa/sharpsl_deviceinfo.c +--- linux_c860_org/arch/arm/mach-pxa/sharpsl_deviceinfo.c 2002-11-14 19:27:18.000000000 +0900 ++++ linux/arch/arm/mach-pxa/sharpsl_deviceinfo.c 2004-06-10 21:09:10.000000000 +0900 +@@ -14,6 +14,10 @@ + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * + */ + + #include <linux/config.h> +@@ -63,7 +67,10 @@ + {"serial", "device individual id"}, + {"checksum", "ROM checksum"}, + {"bootstr", "boot string"}, +- {"hardno", "hardware number"} ++ {"hardno", "hardware number"}, ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ {"equipment", "built-in equipment"}, ++#endif + }; + + #define NUM_OF_DEVICEINFO_ENTRY (sizeof(deviceinfo)/sizeof(deviceinfo_entry_t)) +diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_param.c linux/arch/arm/mach-pxa/sharpsl_param.c +--- linux_c860_org/arch/arm/mach-pxa/sharpsl_param.c 2002-10-23 14:09:20.000000000 +0900 ++++ linux/arch/arm/mach-pxa/sharpsl_param.c 2004-06-10 21:09:10.000000000 +0900 +@@ -16,11 +16,12 @@ + * GNU General Public License for more details. + * + * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + #include <linux/types.h> + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #include <asm/arch/sharpsl_param.h> + #endif + +@@ -28,7 +29,7 @@ + sharpsl_flash_param_info sharpsl_flash_param; + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + int sharpsl_get_comadj() + { + if ( sharpsl_flash_param.comadj_keyword == FLASH_COMADJ_MAJIC ) { +@@ -39,7 +40,7 @@ + } + #endif + +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + int sharpsl_get_phadadj() + { + if ( sharpsl_flash_param.phad_keyword == FLASH_PHAD_MAJIC ) { +@@ -51,7 +52,7 @@ + #endif + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + void sharpsl_get_param(void) + { + // get comadj +diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_power.c linux/arch/arm/mach-pxa/sharpsl_power.c +--- linux_c860_org/arch/arm/mach-pxa/sharpsl_power.c 2003-10-09 14:47:25.000000000 +0900 ++++ linux/arch/arm/mach-pxa/sharpsl_power.c 2004-06-10 21:09:10.000000000 +0900 +@@ -35,6 +35,8 @@ + * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on + * 09-Apr-2003 SHARP for Shaphard (software reset) + * October-2003 SHARP for boxer ++ * 28-Nov-2003 Sharp Corporation for Tosa ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + +@@ -42,12 +44,17 @@ + /* + * Debug macros + */ ++//#define DEBUG 1 + #ifdef DEBUG + # define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args) + #else + # define DPRINTK(fmt, args...) + #endif + ++//#define WUPSRC_DEBUG ++#ifdef WUPSRC_DEBUG ++unsigned int debug1,debug2,debug3,debug4; ++#endif + + #include <linux/config.h> + #include <linux/module.h> +@@ -82,8 +89,15 @@ + #include <asm/arch/keyboard_poodle.h> + #elif defined(CONFIG_ARCH_PXA_CORGI) + #include <asm/arch/keyboard_corgi.h> ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm/arch/keyboard_tosa.h> ++#include <linux/ac97_codec.h> + #endif + ++#ifdef LOGICAL_WAKEUP_SRC ++#include <asm/arch/sharpsl_wakeup.h> ++unsigned long logical_wakeup_src_mask = IDPM_WAKEUP_REC|IDPM_WAKEUP_SYNC; ++#endif + #include "sharpsl_param.h" + + +@@ -116,9 +130,16 @@ + extern int cpu_pxa_do_suspend(void); + extern unsigned short chkFatalBatt(void); + extern int sharpsl_off_charge_battery(void); +-void pxa_ssp_init(void); ++extern int charge_status; + + #if defined(CONFIG_ARCH_PXA_POODLE) ++void pxa_ssp_init(void); ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++void tosa_ac97_init(void); ++int pxa_ac97_get(struct ac97_codec **codec, unsigned char *ac97_on); ++static unsigned char ac97_on = 0; ++#endif ++#if defined(CONFIG_ARCH_PXA_POODLE) + #define PWER_RTC 0x80000000 + #define R_WAKEUP_SRC (GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_CF_STSCHG) /*| + GPIO_bit(GPIO_CHRG_FULL) */ ) +@@ -139,6 +160,32 @@ + GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_MAIN_BAT_LOW)) + #define WAKEUP_SRC ( R_WAKEUP_SRC | F_WAKEUP_SRC | PWER_RTC ) + #define WAKEUP_DEF_SRC ( WAKEUP_SRC ); ++ ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++/* ++<F_WAKEUP_SRC> ++GPIO_POWERON (0) ++GPIO_AC_IN (2) ++GPIO_RECORD_BTN (3) ++GPIO_SYNC (4) ++GPIO_USB_IN (5) ++GPIO_JACKET_DETECT (7) ++GPIO_nSD_DETECT (9) ++GPIO_nSD_INT (10) ++GPIO_BAT1_CRG (12) ++GPIO_CF_CD (13) ++GPIO_BAT0_CRG (14) ++*/ ++#define PWER_RTC 0x80000000 ++#define R_WAKEUP_SRC (GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_JACKET_DETECT)) ++#define F_WAKEUP_SRC (GPIO_bit(GPIO_POWERON) | GPIO_bit(GPIO_RESET) | \ ++ GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_RECORD_BTN) | \ ++ GPIO_bit(GPIO_SYNC) | GPIO_bit(GPIO_USB_IN) | \ ++ GPIO_bit(GPIO_JACKET_DETECT) ) ++#define WAKEUP_SRC ( R_WAKEUP_SRC | F_WAKEUP_SRC | PWER_RTC ) ++#define WAKEUP_DEF_SRC ( GPIO_bit(GPIO_POWERON) | GPIO_bit(GPIO_RESET) | \ ++ GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_JACKET_DETECT) | \ ++ GPIO_bit(GPIO_RECORD_BTN) | GPIO_bit(GPIO_SYNC) ) + #endif + + #if defined(CONFIG_SABINAL_DISCOVERY) +@@ -148,6 +195,7 @@ + u32 sharpsl_emergency_off = 0; + unsigned int sharpsl_chg_freq = 0x0145; + static DECLARE_WAIT_QUEUE_HEAD(wq_off); ++static DECLARE_WAIT_QUEUE_HEAD(key_off); + int sharpsl_off_mode = 0; + int sharpsl_off_state = 0; + int pass_charge_flag = 0; +@@ -158,18 +206,26 @@ + extern int corgi_wakeup_remocon_hook(void); + #endif + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + extern unsigned long cccr_reg; + static int sharpsl_alarm_flag; + #endif + ++//@@#if defined(CONFIG_ARCH_PXA_TOSA) ++//@@extern int sharpsl_get_jacket_status(void); ++//@@#endif ++ ++#if defined(CONFIG_SL_CCCR_CHANGE) ++extern unsigned int cccr_clkparam; ++#endif ++ + void PrintParamTable(void); + + #ifdef CONFIG_SABINAL_DISCOVERY + static u32 alarm_enable=0; + #endif + +-#ifdef CONFIG_ARCH_PXA_SHEPHERD ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + int sharpsl_restart(void) + { + return sharpsl_restart_core(0); +@@ -183,16 +239,23 @@ + int sharpsl_restart_core(int nonstop_flag) + { + int flag = 1; +- ++#if !defined(CONFIG_ARCH_PXA_TOSA) + if (nonstop_flag) { + SCP_REG_GPWR |= SCP_LED_GREEN; + } + else { + SCP_REG_GPWR &= ~SCP_LED_GREEN; + } +- ++#endif + RCSR = 0xf; + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if( nonstop_flag && ((MSC0 & 0xffff0000) == 0x7ff00000) ) ++ MSC0 = (MSC0 & 0xffff)|0x7ee00000; ++ // GPIO reset ++ set_GPIO_mode(GPIO_ON_RESET | GPIO_OUT); ++ GPCR(GPIO_ON_RESET) |= GPIO_bit(GPIO_ON_RESET); ++#else + OSMR3 = OSCR+0x100; + OWER = 0x01; + OIER |= 0x08; +@@ -200,7 +263,7 @@ + while(1) { + if ( flag++ > 0x20000000 ) break; + } +- ++#endif + return 0; + } + #else +@@ -258,17 +321,47 @@ + + #if !defined(CONFIG_SABINAL_DISCOVERY) + +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + int sharpsl_wakeup_check_charge(void) + { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ unsigned int pfer; ++ unsigned int prer; ++ ++ pfer = F_WAKEUP_SRC & apm_wakeup_src_mask & WAKEUP_SRC; ++ prer = R_WAKEUP_SRC & apm_wakeup_src_mask & WAKEUP_SRC; ++ //printk("pfer = %08x",pfer); ++ //printk("prer = %08x",prer); ++ ++ pfer &= ~(F_WAKEUP_SRC & R_WAKEUP_SRC); ++ prer &= ~(F_WAKEUP_SRC & R_WAKEUP_SRC); ++ //printk("pfer = %08x",pfer); ++ //printk("prer = %08x",prer); ++ ++ pfer = ~GPLR0 & pfer; ++ prer = GPLR0 & prer; ++ //printk("pfer = %08x",pfer); ++ //printk("prer = %08x",prer); ++ ++ if(pfer != 0 || prer != 0){ ++ apm_wakeup_factor = pfer | prer; ++ return 0; // wakeup ++ } ++ ++ if ( ( ( RTAR - RCNR ) < 20 ) && ( RTSR & RTSR_ALE ) ) { ++ return -1; // go off. ++ } ++ ++ return 1; // continue. ++#else + unsigned int temp; + + temp = ~GPLR0 & ( GPIO_bit(GPIO_AC_IN) | GPIO_bit(GPIO_KEY_INT) | GPIO_bit(GPIO_WAKEUP) ); + if ( temp != 0 ) { + apm_wakeup_factor = temp; + } +- + return temp; ++#endif + } + #endif + +@@ -276,31 +369,71 @@ + { + int i; + u32 gplr; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ int batt_fault = ((PSSR & 0x02) != 0); ++#endif + + /* setting GPIO */ + GPDR0 = sys_ctx.gpdr0; + GAFR0_L = sys_ctx.gafr0_l; + GPDR0 &= ~WAKEUP_SRC; +- GAFR0_L &= ~WAKEUP_SRC; ++// GAFR0_L &= ~WAKEUP_SRC; + gplr = GPLR0; + ++#ifdef WUPSRC_DEBUG ++ debug1 = PEDR; ++ debug2 = WAKEUP_SRC; ++ debug3 = apm_wakeup_src_mask; ++ debug4 = PSSR; ++#endif + apm_wakeup_factor = PEDR & WAKEUP_SRC & apm_wakeup_src_mask; +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + apm_wakeup_factor &= ~0x80000000; /* clear ALARM */ + if ( ( RTSR & 0x1 ) && ( RTSR & RTSR_ALE ) ) + #else + if ( RTSR & 0x1 ) + #endif + apm_wakeup_factor |= 0x80000000; /* ALARM */ ++ ++ + PEDR = WAKEUP_SRC; + +- if ( !apm_wakeup_factor ) ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if(batt_fault) PSSR = 0x02; /* clear BFS bit */ ++#endif ++ ++ if ( !apm_wakeup_factor ){ + return 0; /* no wakeup factor */ ++ } + + #if defined(CONFIG_ARCH_PXA_CORGI) + gplr &= ~GPIO_bit(GPIO_KEY_INT); + #endif + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ //if(PSSR & 0x02){ ++ if(batt_fault){ ++ // Asserted battery fault. ++ // It must have changed the main battery. ++ if(GPIO_bit(GPIO_POWERON) & apm_wakeup_factor){ ++ int change_ac_status = 0; ++ if ( apm_wakeup_src_mask & GPIO_bit(GPIO_AC_IN)){ ++ if ( !charge_status && ( gplr & GPIO_bit(GPIO_AC_IN) ) == 0) ++ change_ac_status = 1; ++ ++ if ( charge_status && ( gplr & GPIO_bit(GPIO_AC_IN) ) != 0) ++ change_ac_status = 1; ++ } ++ if(change_ac_status) ++ apm_wakeup_factor |= GPIO_bit(GPIO_AC_IN); ++ ++ return apm_wakeup_factor; ++ } ++ if(GPIO_bit(GPIO_RESET) & apm_wakeup_factor){ ++ return apm_wakeup_factor; ++ } ++ } ++#endif + /* Faulty operation check */ + for (i = 0; i <= 15; i++) { + #if defined(CONFIG_ARCH_PXA_CORGI) +@@ -329,27 +462,56 @@ + u32 gplr = GPLR0; + int is_resume = 0; + ++ DPRINTK("GPLR0 = %x\n",gplr); ++#ifdef WUPSRC_DEBUG ++ printk("PEDR=%08x\n",debug1); ++ printk("src=%08x\n",debug2); ++ printk("src_mask=%08x\n",debug3); ++ printk("PSSR=%08x->%08x\n",debug4,PSSR); ++#endif + if ( (apm_wakeup_factor & GPIO_bit(GPIO_AC_IN)) && + sharpsl_battery_charge_hook ) { ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( !(gplr & GPIO_bit(GPIO_AC_IN)) ) { ++#else + if ( gplr & GPIO_bit(GPIO_AC_IN) ) { ++#endif + sharpsl_battery_charge_hook(2); /* charge on */ + } else ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( gplr & GPIO_bit(GPIO_AC_IN) ) { ++#else + if ( !( gplr & GPIO_bit(GPIO_AC_IN) ) ) { ++#endif + sharpsl_battery_charge_hook(1); /* charge off */ + } + } ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( (apm_wakeup_factor & GPIO_bit(GPIO_BAT0_CRG)) && ++ sharpsl_battery_charge_hook ) { ++ sharpsl_battery_charge_hook(0); /* tosa: main battery full */ ++ } ++ if ( (apm_wakeup_factor & GPIO_bit(GPIO_BAT1_CRG)) && ++ sharpsl_battery_charge_hook ) { ++ sharpsl_battery_charge_hook(3); /* tosa: jacket battery full */ ++ } ++#else + if ( (apm_wakeup_factor & GPIO_bit(GPIO_CHRG_FULL)) && + sharpsl_battery_charge_hook ) { + sharpsl_battery_charge_hook(0); /* charge off */ + } ++#endif ++ + #if defined(CONFIG_ARCH_PXA_POODLE) + if ( apm_wakeup_factor & GPIO_bit(GPIO_ON_KEY) ) + is_resume |= GPIO_bit(GPIO_ON_KEY); + #endif + #if defined(CONFIG_ARCH_PXA_CORGI) + if ( apm_wakeup_factor & GPIO_bit(GPIO_KEY_INT) ) { +- if (sharppda_kbd_is_wakeup()) ++ if (sharppda_kbd_is_wakeup()){ + is_resume |= GPIO_bit(GPIO_KEY_INT); ++ } + } + #if defined(CONFIG_ARCH_PXA_SHEPHERD) + if ((apm_wakeup_factor & GPIO_bit(GPIO_MAIN_BAT_LOW)) && +@@ -373,14 +535,15 @@ + ( sharpsl_battery_charge_hook )) { + sharpsl_battery_charge_hook(1); /* charge off */ + } +- + #else + if ( apm_wakeup_factor & GPIO_bit(GPIO_MAIN_BAT_LOW) ) + apm_wakeup_src_mask = 0; + #endif + #endif ++#if !defined(CONFIG_ARCH_PXA_TOSA) + if ( apm_wakeup_factor & GPIO_bit(GPIO_WAKEUP) ) + is_resume |= GPIO_bit(GPIO_WAKEUP); ++#endif + #if defined(CONFIG_ARCH_PXA_POODLE) + if ( (apm_wakeup_factor & GPIO_bit(GPIO_GA_INT)) && (LCM_KIC & 1) ) { + LCM_KIC &= ~0x100; +@@ -397,28 +560,116 @@ + #endif + #if defined(CONFIG_ARCH_PXA_CORGI) + if ( apm_wakeup_factor & GPIO_bit(GPIO_AK_INT) ) { +- if ( corgi_wakeup_remocon_hook() ) ++ if ( corgi_wakeup_remocon_hook() ){ + is_resume |= GPIO_bit(GPIO_AK_INT); ++ } ++ } ++#endif ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( (apm_wakeup_factor & GPIO_bit(GPIO_AC_IN)) ) { ++#ifdef LOGICAL_WAKEUP_SRC ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_AC) { ++ is_resume |= GPIO_bit(GPIO_AC_IN); ++ } ++#endif ++ } ++ if (apm_wakeup_factor & GPIO_bit(GPIO_POWERON)) { // function key ++ if (sharppda_kbd_is_wakeup()){ ++ is_resume |= GPIO_bit(GPIO_POWERON); ++ } ++ } ++ if (apm_wakeup_factor & GPIO_bit(GPIO_RECORD_BTN)) { // rec key ++ if (sharppda_kbd_is_wakeup()){ ++ is_resume |= GPIO_bit(GPIO_RECORD_BTN); ++ } ++ } ++ if (apm_wakeup_factor & GPIO_bit(GPIO_SYNC)) { // sync key ++ if (sharppda_kbd_is_wakeup()){ ++ is_resume |= GPIO_bit(GPIO_SYNC); ++ } ++ } ++ if (apm_wakeup_factor & GPIO_bit(GPIO_USB_IN)) { ++#ifdef LOGICAL_WAKEUP_SRC ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_USBD) { ++ is_resume |= GPIO_bit(GPIO_USB_IN); ++ } ++#endif ++ } ++ if (apm_wakeup_factor & GPIO_bit(GPIO_JACKET_DETECT)){ ++ sharpsl_battery_charge_hook(4); ++#ifdef LOGICAL_WAKEUP_SRC ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_JACKET) { ++ is_resume |= GPIO_bit(GPIO_JACKET_DETECT); ++ } ++#endif + } + #endif + +- DPRINTK("alarm flag = %8x\n",sharpsl_alarm_flag); +- if ( ( apm_wakeup_factor & PWER_RTC ) && !sharpsl_alarm_flag) ++ if ( ( apm_wakeup_factor & PWER_RTC ) && !sharpsl_alarm_flag){ + is_resume |= PWER_RTC; ++ } + + return is_resume; + } + #endif + +- ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#define BATTERY_CHECK_TIME (60*5) // 5 min ++#else + #define BATTERY_CHECK_TIME 60*10 // 10 min +-extern int charge_status; ++#endif ++ ++//extern int charge_status; + extern int sharpsl_off_charge; + + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#if 0 ///////////////////////////////////////////////////////// ++static void tc6393_susx(void) ++{ ++#if 1 ++ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON); ++// reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND); ++// reset_scoop_gpio(SCP_TC6393_REST_IN); ++#endif ++ ++// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_CARD_VCC_ON; ++// TC6393_SYS_REG(TC6393_SYS_GPODSR1) = 0; /* CARD_VCC_OFF */ ++#if 1 ++// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE; ++// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_CARD_VCC_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CARD_VCC_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE; ++#endif ++} ++ ++static void tc6393_resx(void) ++{ ++ set_GPIO_mode(GPIO11_3_6MHz_MD); ++ set_GPIO_mode(GPIO18_RDY_MD); ++ mdelay(1); ++ set_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND); ++ mdelay(10); ++ set_scoop_gpio(SCP_TC6393_REST_IN); ++ //set_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON); ++ TC6393_SYS_REG(TC6393_SYS_FER) = 0; ++ /* clock setting */ ++ TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1; ++ TC6393_SYS_REG(TC6393_SYS_CCR) = 0x1310; ++ TC6393_SYS_REG(TC6393_SYS_MCR) = 0x80AA; ++ /* GPIO */ ++ TC6393_SYS_REG(TC6393_SYS_GPER) = 0x0030; /* 15-0 GPO */ ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE; ++ /* 15-0 GPO set H */ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON; ++} ++#endif /////////////////////////////////////////////// ++#endif + + int pxa_suspend(void) + { ++ + unsigned long flags; + #if defined (CONFIG_SABINAL_DISCOVERY) + unsigned long RTAR_buffer; +@@ -426,10 +677,11 @@ + #else + unsigned long RTAR_buffer; + unsigned long RTAR_buffer2; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ unsigned long RCNR_buffer; ++#endif + #endif + +- +- + #ifndef CONFIG_SABINAL_DISCOVERY + sharpsl_off_state = 1; + +@@ -459,13 +711,22 @@ + cpu_xscale_sl_change_speed_145_without_lcd(); + cccr_reg = CCCR; + break; +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + case 0x161: + if ( CCCR == 0x0161 ) break; + cpu_xscale_sl_change_speed_161(); + cccr_reg = CCCR; + break; + #endif ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ default: ++ if ( (sharpsl_chg_freq & 0xffff) !=0 ){ ++ cccr_clkparam = (unsigned int)(sharpsl_chg_freq & 0xffff); ++ cpu_xscale_sl_change_speed_num(); ++ cccr_reg = CCCR; ++ } ++ break; ++#endif + } + sharpsl_chg_freq &= 0x0000ffff; + mdelay(500); +@@ -473,7 +734,7 @@ + } + #endif + +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + if (sharpsl_off_mode == 2) sharpsl_restart(); /* off in maintenance */ + #endif + +@@ -553,7 +814,7 @@ + ASIC3_GPIO_INTSTAT_D = 0; + #endif + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + if ( CCCR != 0x241 ) { + cpu_xscale_sl_change_speed_241_without_lcd(); + } +@@ -561,20 +822,39 @@ + DPRINTK("FCS : CCCR = %x\n",cccr_reg); + #endif + +- +-DO_SUSPEND: +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ // check jacket status. ++ sharpsl_request_dac_init(); // in sharpsl_battery.c ++ if(sharpsl_battery_charge_hook) ++ sharpsl_battery_charge_hook(4); // check jacket. ++#endif + ++DO_SUSPEND: + ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++ DPRINTK("pass_charge_flag = %d\n",pass_charge_flag); + if ( !pass_charge_flag ) { + // not charging and AC-IN ! +- if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) != 0 ) { ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ DPRINTK("check AC-adaptor\n"); ++ if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) == 0){ ++#else ++ if ( !charge_status && ( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) != 0){ ++#endif + DPRINTK("kick charging\n"); + charge_status = 1; + sharpsl_off_charge_battery(); + } + } + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ tosa_check_ac_and_jacket_state(); ++ DPRINTK("ac97&tc6393 down\n"); ++ tc6393_suspend(); ++ tosa_ac97_exit(); ++#endif ++ + if ( charge_status ) { + if ( ( ( RTAR - RCNR ) < ( BATTERY_CHECK_TIME + 30 ) ) && ( RTSR & RTSR_ALE ) ) { + // maybe alarm will occur +@@ -611,6 +891,8 @@ + } else { + PGSR1 &= ~GPIO_bit(GPIO43_BTTXD); + } ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++// non + #endif + + #endif +@@ -657,12 +939,12 @@ + LCM_ICR &= ~0x100; + #endif + +-#if !defined(CONFIG_SABINAL_DISCOVERY) ++#if !defined(CONFIG_SABINAL_DISCOVERY) + /* Scoop suspend */ + sys_ctx.scp_gpwr = SCP_REG_GPWR; + SCP_REG_GPWR = 0; +-#endif + ++#endif + sys_ctx.gpdr0 = GPDR0; + sys_ctx.gpdr1 = GPDR1; + sys_ctx.gpdr2 = GPDR2; +@@ -718,7 +1000,9 @@ + PWER = WAKEUP_SRC & apm_wakeup_src_mask; + PRER = R_WAKEUP_SRC & apm_wakeup_src_mask; + PFER = F_WAKEUP_SRC & apm_wakeup_src_mask; ++ + PEDR = WAKEUP_SRC & apm_wakeup_src_mask; ++ + for (i = 0; i <=15; i++) { + if ( PRER & PFER & GPIO_bit(i) ) { + if ( GPLR0 & GPIO_bit(i) ) +@@ -728,14 +1012,13 @@ + } + } + +- + /* Clear reset status */ + RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR; + + /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ + PCFR = PCFR_OPDE; + +-#ifdef CONFIG_ARCH_PXA_CORGI ++#if defined(CONFIG_ARCH_PXA_CORGI) + /* GPIO Sleep Register */ + PGSR2 = (PGSR2 & ~GPIO_ALL_STROBE_BIT) | GPIO_STROBE_BIT(0); + +@@ -747,6 +1030,19 @@ + #endif + GPDR1 = 0x00FFAFC3; + GPDR2 = 0x0001C004; ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ /* GPIO Sleep Register */ ++ PGSR1 = (PGSR1 & ~GPIO_LOW_STROBE_BIT); ++ PGSR2 = (PGSR2 & ~GPIO_HIGH_STROBE_BIT); ++#ifdef LOGICAL_WAKEUP_SRC ++ if (logical_wakeup_src_mask & ++ (IDPM_WAKEUP_ADDRESSBOOK|IDPM_WAKEUP_CALENDAR|IDPM_WAKEUP_MENU|IDPM_WAKEUP_MAIL)) { ++ PGSR1 |= GPIO_STROBE_BIT(4); ++ } ++#endif ++ GPDR0 = 0xC3810940; ++ GPDR1 = 0xFCFFAB82; ++ GPDR2 = 0x000F501f; + #endif + } + #endif +@@ -764,7 +1060,6 @@ + + #if !defined(CONFIG_SABINAL_DISCOVERY) + sharpsl_wakeup_check(); +- + FFMCR = sys_ctx.ffmcr; + FFSPR = sys_ctx.ffspr; + FFLCR = sys_ctx.fflcr; +@@ -847,15 +1142,42 @@ + #endif + + #if !defined(CONFIG_SABINAL_DISCOVERY) ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( sharpsl_alarm_flag ) { ++ RCNR_buffer = RCNR; ++ } ++ DPRINTK("ac97&tc6393 up\n"); ++ tosa_ac97_init(); ++ pxa_ac97_get(&codec,&ac97_on); // initialize 'codec' pointer ++ i2c_init(1); ++ tc6393_resume(); ++ ++ sharpsl_request_dac_init(); // in sharpsl_battery.c ++#else + pxa_ssp_init(); ++#endif + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + if ( sharpsl_alarm_flag ) { + RTAR_buffer2 = RTAR; + RTAR = RTAR_buffer; + DPRINTK("back the ALARM Time\n"); + } + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( sharpsl_alarm_flag && ( RCNR_buffer == RTAR_buffer2 ) ) { ++ //printk("RCNR_buffer=%d\n",RCNR_buffer); ++ if(sharpsl_battery_charge_hook) ++ sharpsl_battery_charge_hook(5); ++#if 1 ++ if(tosa_check_charge_full(BATTERY_CHECK_TIME) < 0) { ++ goto DO_SUSPEND; ++ } ++#else ++ goto DO_SUSPEND; ++#endif ++ } ++#else + if ( sharpsl_alarm_flag && ( RCNR == RTAR_buffer2 ) ) { + if ( sharpsl_off_charge_battery() ) { + DPRINTK("charge timer \n"); +@@ -863,6 +1185,7 @@ + } + } + #endif ++#endif + + /* ----- hardware resume ----- */ + if ( !sharpsl_wakeup_hook() ) { +@@ -877,6 +1200,19 @@ + printk("return to suspend (fatal) ....\n"); + goto DO_SUSPEND; + } ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ if ( (GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) == 0){ ++ if(sharpsl_off_charge_battery() < 0){ ++ printk("return to suspend (no main batt) ....\n"); ++ goto DO_SUSPEND; ++ } ++ } ++ ++ if ( ( (GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED)) == 0 ) ++ || ( !sharpsl_off_mode && chkFatalBatt() == 0 ) ) { ++ printk("return to suspend (fatal) ....\n"); ++ goto DO_SUSPEND; ++ } + #else + if ( ( (GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW)) == 0 ) + || ( chkFatalBatt() == 0 ) ) { +@@ -888,7 +1224,7 @@ + #endif + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + PMCR = 0x01; + + if ( sharpsl_off_mode ) +@@ -896,24 +1232,33 @@ + #endif + + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + if ( sharpsl_chg_freq == 0x0145 ) { + cpu_xscale_sl_change_speed_145_without_lcd(); ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + } +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) + else if ( sharpsl_chg_freq == 0x0161 ) { + cpu_xscale_sl_change_speed_161(); ++#endif ++#if defined(CONFIG_SL_CCCR_CHANGE) + } ++ else if ( sharpsl_chg_freq != 0x0 ){ ++ cccr_clkparam = (unsigned int)sharpsl_chg_freq; ++ cpu_xscale_sl_change_speed_num(); + #endif ++ } ++ + cccr_reg = CCCR; + printk("FCS : CCCR = %x\n",cccr_reg); + #if defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_SHARP_SL_J) + sharpsl_off_charge = 1; + #else ++ + sharpsl_off_charge = 0; + #endif + #endif + ++ + #if 1 // ensure that OS Timer irq occurs + OSMR0 = sys_ctx.oscr + LATCH; + #else +@@ -1004,16 +1349,14 @@ + int pm_do_suspend(void) + { + int retval; +- +- DPRINTK("yea\n"); +- + retval = pm_send_all(PM_SUSPEND, (void *)2); +- if (retval) ++ if (retval) + return retval; + + retval = pxa_suspend(); + + retval = pm_send_all(PM_RESUME, (void *)0); ++ + if (retval) + return retval; + +@@ -1040,7 +1383,7 @@ + + + +-int pxa_fatal_suspend(void) ++static int pxa_fatal_suspend(void) + { + unsigned long flags; + unsigned long RTAR_buffer; +@@ -1056,7 +1399,7 @@ + save_flags_cli(flags); + clf(); + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + if ( CCCR != 0x241 ) { + cpu_xscale_sl_change_speed_241_without_lcd(); + } +@@ -1092,6 +1435,8 @@ + PGSR1 &= ~GPIO_bit(GPIO43_BTTXD); + } + #endif ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++// non + #endif + + #if defined(CONFIG_ARCH_PXA_POODLE) +@@ -1145,6 +1490,7 @@ + PRER = R_WAKEUP_SRC & apm_wakeup_src_mask; + PFER = F_WAKEUP_SRC & apm_wakeup_src_mask; + PEDR = WAKEUP_SRC & apm_wakeup_src_mask; ++ + for (i = 0; i <=15; i++) { + if ( PRER & PFER & GPIO_bit(i) ) { + if ( GPLR0 & GPIO_bit(i) ) +@@ -1154,14 +1500,14 @@ + } + } + +- + /* Clear reset status */ + RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR; + + /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ + PCFR = PCFR_OPDE; + +-#ifdef CONFIG_ARCH_PXA_CORGI ++ ++#if defined(CONFIG_ARCH_PXA_CORGI) + /* GPIO Sleep Register */ + PGSR2 = (PGSR2 & ~GPIO_ALL_STROBE_BIT) | GPIO_STROBE_BIT(0); + +@@ -1172,6 +1518,19 @@ + #endif + GPDR1 = 0x00FFAFC3; + GPDR2 = 0x0001C004; ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ /* GPIO Sleep Register */ ++ PGSR1 = (PGSR1 & ~GPIO_LOW_STROBE_BIT); ++ PGSR2 = (PGSR2 & ~GPIO_HIGH_STROBE_BIT); ++#ifdef LOGICAL_WAKEUP_SRC ++ if (logical_wakeup_src_mask & ++ (IDPM_WAKEUP_ADDRESSBOOK|IDPM_WAKEUP_CALENDAR|IDPM_WAKEUP_MENU|IDPM_WAKEUP_MAIL)) { ++ PGSR1 |= GPIO_STROBE_BIT(4); ++ } ++#endif ++ GPDR0 = 0xC3810940; ++ GPDR1 = 0xFCFFAB82; ++ GPDR2 = 0x000F501f; + #endif + } + #endif +@@ -1228,14 +1587,20 @@ + } + #endif + +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat)) + #define SCP_INIT_DATA_END ((unsigned long)-1) + void sharpsl_corgi_fataloff(void) + { + #ifdef CONFIG_PM ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ tc6393_fatal_off(); ++ tc6393_suspend(); ++ tosa_ac97_exit(); ++#else + w100_fatal_off(); + #endif ++#endif + + { + static const unsigned long scp_init[] = +@@ -1253,12 +1618,37 @@ + SCP_INIT_DATA(SCP_GPWR,SCP_IO_OUT), // 24 + SCP_INIT_DATA_END + }; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ static const unsigned long scp_jc_init[] = ++ { ++ SCP_INIT_DATA(SCP_MCR,0x0140), // 00 ++ SCP_INIT_DATA(SCP_MCR,0x0100), ++ SCP_INIT_DATA(SCP_CDR,0x0000), // 04 ++ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C ++ SCP_INIT_DATA(SCP_CCR,0x0000), // 10 ++ SCP_INIT_DATA(SCP_IMR,0x0000), // 18 ++ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14 ++ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C ++ SCP_INIT_DATA(SCP_IRM,0x0000), ++ SCP_INIT_DATA(SCP_GPCR,SCP_JC_IO_DIR), // 20 ++ SCP_INIT_DATA(SCP_GPWR,SCP_JC_IO_OUT), // 24 ++ SCP_INIT_DATA_END ++ }; ++#endif + int i; + for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++) + { + int adr = scp_init[i] >> 16; + SCP_REG(adr) = scp_init[i] & 0xFFFF; + } ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ for(i=0; scp_jc_init[i] != SCP_INIT_DATA_END; i++) ++ { ++ int adr = scp_jc_init[i] >> 16; ++ SCP_JC_REG(adr) = scp_jc_init[i] & 0xFFFF; ++ } ++#endif ++ + } + + } +@@ -1267,6 +1657,10 @@ + + void sharpsl_fataloff(void) + { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ return; ++#endif ++ + if ( PSSR & 0x02 ) { + + printk("PSSR = %8x\n",PSSR); +@@ -1278,19 +1672,18 @@ + PSPR = 0x00; + RCSR = 0xf; + +- printk("off\n"); + pxa_fatal_suspend(); +- printk("off 2\n"); + #endif +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_corgi_fataloff(); + + PSPR = 0x00; + RCSR = 0xf; + +- printk("off\n"); + pxa_fatal_suspend(); +- printk("off 2\n"); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ sharpsl_restart(); ++#endif + #endif + } + } +@@ -1308,15 +1701,14 @@ + interruptible_sleep_on(&wq_off); + DPRINTK("start off sequence ! \n"); + +-#if !defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_off_mode = 1; + #endif +- + handle_scancode(SLKEY_OFF|KBDOWN , 1); + mdelay(10); + handle_scancode(SLKEY_OFF|KBUP , 0); + +-#if !defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA) + // wait off signal + // if can not recieve off siganl , so force off. + time_cnt = jiffies; +@@ -1333,7 +1725,50 @@ + return 0; + } + +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++static int key_suspend_thread(void* unused) ++{ ++ int time_cnt = 0; ++ ++ // daemonize(); ++ strcpy(current->comm, "off_thread"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ sleep_on(&key_off); ++ printk("start off sequence ! \n"); ++ ++ handle_scancode(SLKEY_OFF|KBDOWN , 1); ++ mdelay(10); ++ handle_scancode(SLKEY_OFF|KBUP , 0); ++ ++ // wait off signal ++ // if can not recieve off siganl , so force off. ++// time_cnt = jiffies; ++// while(1) { ++// if ( ( jiffies - time_cnt ) > 500 ) break; ++// schedule(); ++// } ++ ++ // maybe apps is dead, so we have to restart. ++ pm_do_suspend(); ++ } ++ return 0; ++} ++ ++void slc7x0_key_suspend(void) ++{ ++ apm_wakeup_src_mask = 0; ++ wake_up(&key_off); ++} ++ ++EXPORT_SYMBOL(slc7x0_key_suspend); ++ ++#endif ++ ++ ++ ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + static struct timer_list bat_switch_timer; + + void sharpsl_emerge_restart(void) +@@ -1347,10 +1782,16 @@ + void sharpsl_emerge_off(int irq, void *dev_id, struct pt_regs *regs) + { + ++ DPRINTK("DBG:sharpsl_emerge_off [non-battery]\n"); ++ + /* noise ? */ + mdelay(10); +- if ( 0x1234ABCD != regs && +- GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) ) { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if ( 0x1234ABCD != regs && GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED) ) ++#else ++ if ( 0x1234ABCD != regs && GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW) ) ++#endif ++ { + #if defined(CONFIG_ARCH_PXA_SHEPHERD) + sharpsl_battery_charge_hook(1); /* charge off */ + if (sharppda_kbd_resetcheck()) { +@@ -1364,11 +1805,10 @@ + return; + } + +-#if defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if (defined(CONFIG_ARCH_PXA_CORGI)) && !defined(CONFIG_ARCH_PXA_SHEPHERD) && !defined(CONFIG_ARCH_PXA_TOSA) + if (!(GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW))) + apm_wakeup_src_mask = 0; + #endif +- + wake_up(&wq_off); + + } +@@ -1386,6 +1826,8 @@ + /* Set transition detect */ + #ifdef CONFIG_ARCH_PXA_SHEPHERD + set_GPIO_IRQ_edge( GPIO_MAIN_BAT_LOW , GPIO_BOTH_EDGES ); ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ set_GPIO_IRQ_edge( GPIO_BAT_LOCKED , GPIO_BOTH_EDGES ); + #else + set_GPIO_IRQ_edge( GPIO_MAIN_BAT_LOW , GPIO_FALLING_EDGE ); + #endif +@@ -1394,17 +1836,29 @@ + /* this registration can be done in init/main.c. */ + if(1){ + int err; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ err = request_irq(IRQ_GPIO_BAT_LOCKED,sharpsl_emerge_off , SA_INTERRUPT, "batok", NULL); ++#else + err = request_irq(IRQ_GPIO_MAIN_BAT_LOW,sharpsl_emerge_off , SA_INTERRUPT, "batok", NULL); ++#endif + if( err ){ + printk("batok install error %d\n",err); + }else{ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ enable_irq(IRQ_GPIO_BAT_LOCKED); ++#else + enable_irq(IRQ_GPIO_MAIN_BAT_LOW); ++#endif + printk("batok installed\n"); + } + } + + kernel_thread(sharpsl_off_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++ kernel_thread(key_suspend_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++#endif ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) ++//#if defined(CONFIG_ARCH_PXA_SHEPHERD) + init_timer(&bat_switch_timer); + bat_switch_timer.function = sharpsl_emerge_restart; + #endif +@@ -1464,12 +1918,55 @@ + + void set_apm_wakeup_src_mask(u32 SetValue) + { ++#ifdef LOGICAL_WAKEUP_SRC ++ logical_wakeup_src_mask = 0; ++ // RTC ++ if (SetValue&IDPM_WAKEUP_RTC) { ++ apm_wakeup_src_mask |= GPIO_bit(31); ++ logical_wakeup_src_mask |= IDPM_WAKEUP_RTC; ++ } else apm_wakeup_src_mask &= ~GPIO_bit(31); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ // Sync key ++ if (SetValue&IDPM_WAKEUP_SYNC) { ++ apm_wakeup_src_mask |= GPIO_bit(GPIO_SYNC); ++ logical_wakeup_src_mask |= IDPM_WAKEUP_SYNC; ++ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_SYNC); ++ // Record key ++ if (SetValue&IDPM_WAKEUP_REC) { ++ apm_wakeup_src_mask |= GPIO_bit(GPIO_RECORD_BTN); ++ logical_wakeup_src_mask |= IDPM_WAKEUP_REC; ++ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_RECORD_BTN); ++ // USBD ++ if (SetValue&IDPM_WAKEUP_USBD) { ++ apm_wakeup_src_mask |= GPIO_bit(GPIO_USB_IN); ++ logical_wakeup_src_mask |= IDPM_WAKEUP_USBD; ++ } else apm_wakeup_src_mask &= ~GPIO_bit(GPIO_USB_IN); ++ // only Logical ++ if (SetValue&IDPM_WAKEUP_AC) logical_wakeup_src_mask |= IDPM_WAKEUP_AC; ++ if (SetValue&IDPM_WAKEUP_JACKET) logical_wakeup_src_mask |= IDPM_WAKEUP_JACKET; ++ if (SetValue&IDPM_WAKEUP_CALENDAR) logical_wakeup_src_mask |= IDPM_WAKEUP_CALENDAR; ++ if (SetValue&IDPM_WAKEUP_ADDRESSBOOK) logical_wakeup_src_mask |= IDPM_WAKEUP_ADDRESSBOOK; ++ if (SetValue&IDPM_WAKEUP_MAIL) logical_wakeup_src_mask |= IDPM_WAKEUP_MAIL; ++ if (SetValue&IDPM_WAKEUP_MENU) logical_wakeup_src_mask |= IDPM_WAKEUP_MENU; ++#ifdef WUPSRC_DEBUG ++ printk("set_wakeup_src=%08x->%08x[%08x]\n",SetValue,logical_wakeup_src_mask,apm_wakeup_src_mask); ++#endif ++#endif ++#else + apm_wakeup_src_mask = SetValue; ++#endif + } + + u32 get_apm_wakeup_src_mask(void) + { ++#ifdef LOGICAL_WAKEUP_SRC ++#ifdef WUPSRC_DEBUG ++ printk("get_wakeup_src=%08x\n",logical_wakeup_src_mask); ++#endif ++ return (u32)logical_wakeup_src_mask; ++#else + return (u32)apm_wakeup_src_mask; ++#endif + } + + u32 get_apm_wakeup_factor(void) +diff -Nur linux_c860_org/arch/arm/mach-pxa/sharpsl_suspend.S linux/arch/arm/mach-pxa/sharpsl_suspend.S +--- linux_c860_org/arch/arm/mach-pxa/sharpsl_suspend.S 2003-06-18 16:12:25.000000000 +0900 ++++ linux/arch/arm/mach-pxa/sharpsl_suspend.S 2004-06-10 21:09:10.000000000 +0900 +@@ -34,6 +34,7 @@ + * 12-Dec-2002 Lineo Japan, Inc. + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi + * 14-Mar-2003 Sharp for PXA255 ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/linkage.h> +@@ -59,10 +60,17 @@ + + .global sleep_param + .global sleep_param_p ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ .global cccr_clkparam ++#endif + + sleep_param: .word 0 @ virtual address of parameter array + sleep_param_p: .word 0 @ physical address of parameter array + ++#if defined(CONFIG_SL_CCCR_CHANGE) ++cccr_clkparam: .word 0 ++#endif ++ + IC_BASE: .word io_p2v(0x40D00000) + + +@@ -228,7 +236,7 @@ + str r1, [r0] @ turn off all GPIOs + #endif + +- ldr r3, sleep_param ++ ldr r3, sleep_param + ldr r2, =Awake_address @ store Virtual return address + str r2, [r3], #4 + +@@ -1053,7 +1061,7 @@ + .align 5 + .text + +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + + ENTRY(cpu_xscale_sl_change_speed_161) + stmfd sp!, {r0, r1, r2, r3, r4, lr} +@@ -1081,3 +1089,30 @@ + .text + + #endif ++ ++#if defined(CONFIG_SL_CCCR_CHANGE) ++ENTRY(cpu_xscale_sl_change_speed_num) ++ stmfd sp!, {r0, r1, r2, r3, r4, lr} ++ ++ ldr r0, CMR_BASE ++ ldr r1, cccr_clkparam ++ str r1, [r0, #CMR_CCCR] ++ ++ ldr r0, MD_BASE ++ ldr r2, [r0, #MD_MDREFR] ++ ++ bl CodeOnCache_num ++ ++ .align 5 ++ .text ++CodeOnCache_num: ++ mov r1, #0x2 ++ mcr p14, 0, r1, c6, c0, 0 ++ str r2, [r0, #MD_MDREFR] ++ ldr r2, [r0, #MD_MDREFR] ++ ++ ldmfd sp!, {r0, r1, r2, r3, r4, pc} ++ ++ .align 5 ++ .text ++#endif +diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa.c linux/arch/arm/mach-pxa/tosa.c +--- linux_c860_org/arch/arm/mach-pxa/tosa.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/mach-pxa/tosa.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,483 @@ ++/* ++ * arch/arm/mach-pxa/tosa.c ++ * ++ * Support for the SHARP Tosa Board. ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/arch/arm/mach-pxa/lubbock.c ++ * ++ * Support for the Intel DBPXA250 Development Platform. ++ * ++ * Author: Nicolas Pitre ++ * Created: Jun 15, 2001 ++ * Copyright: MontaVista Software Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * Change Log ++ * 26-Dec-2003 Sharp Corporation for Tosa ++ * ++ */ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/major.h> ++#include <linux/fs.h> ++#include <linux/interrupt.h> ++#include <linux/sched.h> ++#include <linux/delay.h> ++ ++#include <asm/types.h> ++#include <asm/setup.h> ++#include <asm/memory.h> ++#include <asm/mach-types.h> ++#include <asm/hardware.h> ++#include <asm/irq.h> ++ ++#include <asm/mach/arch.h> ++#include <asm/mach/map.h> ++#include <asm/mach/irq.h> ++ ++#include <asm/arch/irq.h> ++ ++#include "generic.h" ++#include <linux/ac97_codec.h> ++#include <linux/pm.h> ++#ifdef CONFIG_PM ++static struct pm_dev *ga_pm_dev; ++extern int pxa_suspend(void); ++#endif ++ ++extern void sharpsl_get_param(void); ++extern void sharpsl_charge_start(void); ++//extern unsigned short chkFatalBatt(void); ++extern void pxa_nssp_init(void); ++extern void tosa_ac97_init(void); ++extern void i2c_init(int reset); ++ ++unsigned short reset_scoop_gpio(unsigned short); ++ ++static void tc6393_IRQ_demux( int irq, void *dev_id, struct pt_regs *regs ) ++{ ++ int req, i; ++ ++ while ( (req = (TC6393_SYS_REG(TC6393_SYS_ISR) ++ & ~(TC6393_SYS_REG(TC6393_SYS_IMR)))) ) { ++ for (i = 0; i <= 7; i++) { ++ if ((req & (0x0001<<i))) { ++ switch (TC6393_IRQ(i)) { ++ case TC6393_IRQ_USBINT: ++#if 0 ++ if (!(TC6393_USB_REG(TC6393_USB_SVPMCS) & TC6393_USB_PM_PMES)) ++ continue; ++#endif ++ break; ++ } ++ do_IRQ( TC6393_IRQ(i) , regs ); ++ } ++ } ++ break; ++ } ++} ++ ++static struct irqaction tc6393_irq = { ++ name: "TC6393", ++ handler: tc6393_IRQ_demux, ++ flags: SA_INTERRUPT ++}; ++ ++static void tc6393_mask_and_ack_irq(unsigned int irq) ++{ ++ TC6393_SYS_REG(TC6393_SYS_IMR) |= (0x0001 << (irq - TC6393_IRQ(0))); ++ switch (irq) { ++ case TC6393_IRQ_USBINT: ++ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_PMES; ++ break; ++ } ++} ++ ++static void tc6393_mask_irq(unsigned int irq) ++{ ++ TC6393_SYS_REG(TC6393_SYS_IMR) |= (0x0001 << (irq - TC6393_IRQ(0))); ++} ++ ++static void tc6393_unmask_irq(unsigned int irq) ++{ ++ TC6393_SYS_REG(TC6393_SYS_IMR) &= ~(0x0001 << (irq - TC6393_IRQ(0))); ++} ++ ++static void __init scoop_init(void) ++{ ++ ++#define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat)) ++#define SCP_INIT_DATA_END ((unsigned long)-1) ++ static const unsigned long scp_init[] = ++ { ++ SCP_INIT_DATA(SCP_MCR,0x0140), // 00 ++ SCP_INIT_DATA(SCP_MCR,0x0100), ++ SCP_INIT_DATA(SCP_CDR,0x0000), // 04 ++ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C ++ SCP_INIT_DATA(SCP_CCR,0x0000), // 10 ++ SCP_INIT_DATA(SCP_IMR,0x0000), // 18 ++ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14 ++ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C ++ SCP_INIT_DATA(SCP_IRM,0x0000), ++ SCP_INIT_DATA(SCP_GPCR,SCP_IO_DIR), // 20 ++ SCP_INIT_DATA(SCP_GPWR,SCP_IO_OUT), // 24 ++ SCP_INIT_DATA_END ++ }; ++ int i; ++ for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++) ++ { ++ int adr = scp_init[i] >> 16; ++ SCP_REG(adr) = scp_init[i] & 0xFFFF; ++ } ++} ++ ++static spinlock_t scoop_lock = SPIN_LOCK_UNLOCKED; ++ ++unsigned short set_scoop_gpio(unsigned short bit) ++{ ++ unsigned short gpio_bit; ++ unsigned long flag; ++ ++ spin_lock_irqsave(&scoop_lock, flag); ++ gpio_bit = SCP_REG_GPWR | bit; ++ SCP_REG_GPWR = gpio_bit; ++ spin_unlock_irqrestore(&scoop_lock, flag); ++ ++ return gpio_bit; ++} ++EXPORT_SYMBOL(set_scoop_gpio); ++ ++unsigned short reset_scoop_gpio(unsigned short bit) ++{ ++ unsigned short gpio_bit; ++ unsigned long flag; ++ ++ spin_lock_irqsave(&scoop_lock, flag); ++ gpio_bit = SCP_REG_GPWR & ~bit; ++ SCP_REG_GPWR = gpio_bit; ++ spin_unlock_irqrestore(&scoop_lock, flag); ++ ++ return gpio_bit; ++} ++EXPORT_SYMBOL(reset_scoop_gpio); ++ ++ ++static void __init scoop_jc_init(void) ++{ ++ static const unsigned long scp_jc_init[] = ++ { ++ SCP_INIT_DATA(SCP_MCR,0x0140), // 00 ++ SCP_INIT_DATA(SCP_MCR,0x0100), ++ SCP_INIT_DATA(SCP_CDR,0x0000), // 04 ++ SCP_INIT_DATA(SCP_CPR,0x0000), // 0C ++ SCP_INIT_DATA(SCP_CCR,0x0000), // 10 ++ SCP_INIT_DATA(SCP_IMR,0x0000), // 18 ++ SCP_INIT_DATA(SCP_IRM,0x00FF), // 14 ++ SCP_INIT_DATA(SCP_ISR,0x0000), // 1C ++ SCP_INIT_DATA(SCP_IRM,0x0000), ++ SCP_INIT_DATA(SCP_GPCR,SCP_JC_IO_DIR), // 20 ++ SCP_INIT_DATA(SCP_GPWR,SCP_JC_IO_OUT), // 24 ++ SCP_INIT_DATA_END ++ }; ++ int i; ++ for(i=0; scp_jc_init[i] != SCP_INIT_DATA_END; i++) { ++ int adr = scp_jc_init[i] >> 16; ++ SCP_JC_REG(adr) = scp_jc_init[i] & 0xFFFF; ++ } ++ ++ reset_scoop_gpio(SCP_IR_POWERDWN); ++} ++ ++static spinlock_t scoop_jc_lock = SPIN_LOCK_UNLOCKED; ++ ++unsigned short set_scoop_jc_gpio(unsigned short bit) ++{ ++ unsigned short gpio_bit; ++ unsigned long flag; ++ ++ spin_lock_irqsave(&scoop_jc_lock, flag); ++ gpio_bit = SCP_JC_REG_GPWR | bit; ++ SCP_JC_REG_GPWR = gpio_bit; ++ spin_unlock_irqrestore(&scoop_jc_lock, flag); ++ ++ return gpio_bit; ++} ++EXPORT_SYMBOL(set_scoop_jc_gpio); ++ ++unsigned short reset_scoop_jc_gpio(unsigned short bit) ++{ ++ unsigned short gpio_bit; ++ unsigned long flag; ++ ++ spin_lock_irqsave(&scoop_jc_lock, flag); ++ gpio_bit = SCP_JC_REG_GPWR & ~bit; ++ SCP_JC_REG_GPWR = gpio_bit; ++ spin_unlock_irqrestore(&scoop_jc_lock, flag); ++ ++ return gpio_bit; ++} ++EXPORT_SYMBOL(reset_scoop_jc_gpio); ++ ++static void tc6393_init(void) ++{ ++ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON); ++ reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND); ++ reset_scoop_gpio(SCP_TC6393_REST_IN); ++ set_GPIO_mode(GPIO11_3_6MHz_MD); ++ set_GPIO_mode(GPIO18_RDY_MD); ++ mdelay(1); ++ set_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND); ++ mdelay(10); ++ set_scoop_gpio(SCP_TC6393_REST_IN); ++ set_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON); ++ ++ printk("init TC6369 Revision %d\n", TC6393_SYS_REG(TC6393_SYS_RIDR)); ++ TC6393_SYS_REG(TC6393_SYS_FER) = 0; ++ ++ /* clock setting */ ++ TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1; ++ //TC6393_SYS_REG(TC6393_SYS_ConfigCR) = 0x1; ++ //TC6393_SYS_REG(TC6393_SYS_PLL1CR1) = 0xdf00; ++ //TC6393_SYS_REG(TC6393_SYS_PLL1CR2) = 0x002c; ++ //TC6393_SYS_REG(TC6393_SYS_ConfigCR) = 0x0; ++ TC6393_SYS_REG(TC6393_SYS_CCR) = 0x1310; ++ ++ TC6393_SYS_REG(TC6393_SYS_MCR) = 0x80AA; ++ ++ /* GPIO */ ++ TC6393_SYS_REG(TC6393_SYS_GPER) = 0x3300; /* 15-0 GPO */ ++// TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE; ++// TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON;/* 15-0 GPO set */ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) = TC6393_CARD_VCC_ON | TC6393_CHARGE_OFF_JC;/* 15-0 GPO set */ ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) = TC6393_GPO_OE; ++ ++} ++ ++void tc6393_resume(void) ++{ ++ tc6393_init(); ++} ++EXPORT_SYMBOL(tc6393_resume); ++ ++void tc6393_suspend(void) ++{ ++ reset_scoop_jc_gpio(SCP_JC_TC3693_L3V_ON); ++ reset_scoop_gpio(SCP_TC6393_REST_IN); ++ reset_scoop_jc_gpio(SCP_JC_TC6393_SUSPEND); ++ set_GPIO_mode(GPIO11_3_6MHz|GPIO_OUT); ++ GPSR0 = GPIO_bit(GPIO11_3_6MHz); ++} ++EXPORT_SYMBOL(tc6393_suspend); ++ ++#ifdef CONFIG_PM ++static int ga_pm_callback(struct pm_dev* pm_dev, pm_request_t req, void *data) ++{ ++ switch (req) { ++ case PM_SUSPEND: ++ break; ++ case PM_RESUME: ++ break; ++ } ++ return 0; ++} ++#endif ++ ++void resume_init(void) ++{ ++// MSC0 = 0x02da02da; //msc0 ++// MSC1 = 0x7FFC7FFC; //msc1 ++// MSC2 = 0x7FF47FFC; //msc2 ++ ++// GPDR0=0xDB828000; ++// GPDR1=0xFFB6A887; ++// GPDR2=0x0001FFFF; ++ ++// PGSR0 = 0x01008000; //Sleep State ++// PGSR1 = 0x00160802; //Sleep State ++// PGSR2 = 0x0001C000; //Sleep State ++ ++#if 0 ++ GRER0 = (GRER0 | 1); //raising ++ GFER0 = (GFER0 | 1); //failing ++ ++ ICLR = 0; ++ ++ ICMR |= (1 << 10); //bit10, gpio02_80 enable ++ ICMR |= (1 << 8); //bit8, gpio00 enable ++ ++ ICCR = 1; //Only enabled and unmasked will bring the Cotulla out of IDLE mode. ++#endif ++ ++ CKEN |= 0x03; ++ CKEN |= CKEN3_SSP; ++ CKEN |= CKEN1_PWM1; ++} ++ ++static int __init tosa_hw_init(void) ++{ ++ ++ /* scoop initialize */ ++ scoop_init(); ++ scoop_jc_init(); ++ ++ /* initialize I2C */ ++ i2c_init(1); ++ ++ /* TC6393 initialize */ ++ tc6393_init(); ++ ++ /* initialize SSP & CS */ ++ pxa_nssp_init(); ++ ++ /* initialize AC97 */ ++ tosa_ac97_init(); ++ ++ return 0; ++} ++ ++static void __init tosa_init_irq(void) ++{ ++ int irq; ++ ++ pxa_init_irq(); ++ ++ /* setup extra tosa irqs */ ++ TC6393_SYS_REG(TC6393_SYS_IRR) = 0; ++ TC6393_SYS_REG(TC6393_SYS_IMR) = 0xbf; ++ for (irq = TC6393_IRQ(0); irq <= TC6393_IRQ(7); irq++) { ++ irq_desc[irq].valid = 1; ++ irq_desc[irq].probe_ok = 1; ++ irq_desc[irq].mask_ack = tc6393_mask_and_ack_irq; ++ irq_desc[irq].mask = tc6393_mask_irq; ++ irq_desc[irq].unmask = tc6393_unmask_irq; ++ } ++ GPDR(GPIO_TC6393_INT) &= ~GPIO_bit(GPIO_TC6393_INT); ++ set_GPIO_IRQ_edge( GPIO_TC6393_INT, GPIO_FALLING_EDGE ); ++ setup_arm_irq( IRQ_GPIO_TC6393_INT, &tc6393_irq ); ++ ++ tosa_hw_init(); ++} ++ ++static int __init tosa_init(void) ++{ ++#ifdef CONFIG_PM ++ extern u32 sharpsl_emergency_off; ++#endif ++ ++ // enable batt_fault ++ PMCR = 0x01; ++ ++ /* charge check */ ++ if ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN)) == 0) { ++ sharpsl_charge_start(); ++ } ++ ++ //sharpsl_kick_jacket_check_queue(); ++ ++ printk("RCSR = %d\n",RCSR); ++ ++#ifdef CONFIG_PM ++ /* fatal check */ ++#ifndef CONFIG_ARCH_PXA_TOSA_SKIP ++ if ( !(GPLR(GPIO_MAIN_BAT_LOW) & GPIO_bit(GPIO_MAIN_BAT_LOW)) ) { ++ printk("corgi.c : main batt low\n"); ++ sharpsl_emergency_off = 1; ++ pxa_suspend(); ++ } ++#endif /* CONFIG_ARCH_PXA_TOSA_SKIP */ ++ ++ if ( RCSR == 0x01 || RCSR == 0x6) { ++ printk("full reset !\n"); ++ sharpsl_emergency_off = 1; ++ } ++ ++ ga_pm_dev = pm_register(PM_SYS_DEV, 0, ga_pm_callback); ++#endif ++ ++ return 0; ++} ++ ++__initcall(tosa_init); ++ ++static void __init fixup_tosa(struct machine_desc *desc, ++ struct param_struct *params, ++ char **cmdline, struct meminfo *mi) ++{ ++ SET_BANK (0, 0xa0000000, 64*1024*1024); ++ mi->nr_banks = 1; ++#if defined(CONFIG_BLK_DEV_INITRD) ++ setup_ramdisk (1, 0, 0, 8192); ++ setup_initrd (__phys_to_virt(0xa1000000), 4*1024*1024); ++ ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); ++#elif defined(CONFIG_MTD) ++ ROOT_DEV = MKDEV(31, 0); /* /dev/mtdblock0 */ ++#endif ++ ++#ifdef CONFIG_SHARPSL_BOOTLDR_PARAMS ++ if (params->u1.s.page_size != PAGE_SIZE) { ++ params->u1.s.page_size = PAGE_SIZE; ++ params->u1.s.nr_pages = 32 * 1024 * 1024 / PAGE_SIZE; ++ params->u1.s.ramdisk_size = 0; ++ params->u1.s.flags = FLAG_READONLY | FLAG_RDLOAD | FLAG_RDPROMPT; ++ params->u1.s.rootdev = ROOT_DEV; ++ params->u1.s.initrd_start = 0; ++ params->u1.s.initrd_size = 0; ++ params->u1.s.rd_start = 0; ++ params->u1.s.system_rev = 0; ++ params->u1.s.system_serial_low = 0; ++ params->u1.s.system_serial_high = 0; ++ strcpy(params->commandline, CONFIG_CMDLINE); ++ } ++#endif ++ ++ sharpsl_get_param(); ++} ++ ++static struct map_desc tosa_io_desc[] __initdata = { ++ /* virtual physical length domain r w c b */ ++ /* TC6393 (LCDC, USBC, NANDC) */ ++ { 0xf1000000, TOSA_LCDC_PHYS, 0x00400000, DOMAIN_IO, 1, 1, 0, 0 }, ++ /* SCOOP2 for internel CF */ ++ { 0xf2000000, TOSA_CF_PHYS, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, ++ /* SCOOP2 for Jacket CF */ ++ { 0xf2200000, TOSA_SCOOP_PHYS, 0x00001000, DOMAIN_IO, 0, 1, 0, 0 }, ++ /* Nor Flash */ ++ { 0xef000000, 0x00000000, 0x00800000, DOMAIN_IO, 1, 1, 1, 0 }, ++ LAST_DESC ++}; ++ ++static void __init tosa_map_io(void) ++{ ++ pxa_map_io(); ++ iotable_init(tosa_io_desc); ++ ++ set_GPIO_mode(GPIO_ON_RESET | GPIO_IN); ++ ++ /* setup sleep mode values */ ++ PWER = 0x00000002; ++ PFER = 0x00000000; ++ PRER = 0x00000002; ++ PGSR0 = 0x00000000; ++ PGSR1 = 0x00FF0002; ++ PGSR2 = 0x00014000; ++ PCFR |= PCFR_OPDE; ++} ++ ++MACHINE_START(TOSA, "SHARP Tosa") ++ MAINTAINER("Lineo uSolutions, Inc.") ++ BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) ++#ifdef CONFIG_SHARPSL_BOOTLDR_PARAMS ++ BOOT_PARAMS(0xa0000100) ++#endif ++ FIXUP(fixup_tosa) ++ MAPIO(tosa_map_io) ++ INITIRQ(tosa_init_irq) ++MACHINE_END ++ +diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_ac97.c linux/arch/arm/mach-pxa/tosa_ac97.c +--- linux_c860_org/arch/arm/mach-pxa/tosa_ac97.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/mach-pxa/tosa_ac97.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,587 @@ ++/* ++ * linux/asm/arch/mach-pxa/tosa_ac97.c ++ * ++ * AC97 interface for the Tosa chip ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/drivers/sound/pxa-ac97.c -- AC97 interface for the Cotula chip ++ * Author: Nicolas Pitre ++ * Created: Aug 15, 2001 ++ * Copyright: MontaVista Software Inc. ++ * ++ * linux/drivers/sound/ac97_codec.c -- Generic AC97 mixer/modem module ++ * Derived from ac97 mixer in maestro and trident driver. ++ * Copyright 2000 Silicon Integrated System Corporation ++ * ++ * ChangeLong: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include <linux/init.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/bitops.h> ++#include <linux/slab.h> ++#include <linux/pci.h> ++#include <linux/completion.h> ++#include <linux/delay.h> ++#include <linux/poll.h> ++#include <linux/sound.h> ++#include <linux/soundcard.h> ++#include <linux/ac97_codec.h> ++ ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/uaccess.h> ++#include <asm/semaphore.h> ++#include <asm/dma.h> ++ ++#include <asm/arch/tosa_wm9712.h> ++ ++#ifdef CONFIG_PM ++#include <asm/sharp_apm.h> ++#endif ++ ++#define CODEC_ID_BUFSZ 14 ++ ++typedef struct { ++ unsigned short ctl_val, pdown_val; ++} power_mode_t; ++ ++static power_mode_t pwr_values[] = { ++ { 0x6F00, 0x7FFF }, // Off ++ { 0x4600, 0x73FF }, // Rec with no HP ++ { 0x4100, 0x1F77 }, // Play with no HP ++ { 0x4600, 0x73FF }, // Rec with Stereo HP ++ { 0x0100, 0x1CEF }, // Play with Stereo HP ++ { 0x4600, 0x73FF }, // Rec with Mic HP ++ { 0x0100, 0x1EEF }, // Play with Mic HP ++ { 0x4700, 0x7FFF }, // Tablet (waiting for pen-down) ++ { 0x4700, 0x7FFF }, // Tablet (continuous conversion) ++ { 0x4700, 0x7BFF }, // Enable MICBIAS for detecting Mic HP ++ { 0x0000, 0x0000 }, // Full power ++}; ++static const int num_of_pwr_values = sizeof(pwr_values)/sizeof(pwr_values[0]); ++ ++static power_mode_t power_mode_status[NUM_OF_WM9712_DEV]; ++static power_mode_t cur_power_status; ++ ++struct ac97_codec *codec; ++ ++static struct completion CAR_completion; ++static DECLARE_MUTEX(CAR_mutex); ++ ++/************************************************************ ++ * Debug ++ ************************************************************/ ++#define DBG_LEVEL 0 ++#define DBG_L1 1 ++#define DBG_L2 2 ++#define DBG_L3 3 ++#define DEBUG(level, x, args...) \ ++ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args) ++ ++/************************************************************ ++ * AC97 Sequense ++ ************************************************************/ ++typedef struct { ++ u16 val; ++ u8 seq; ++} ac97_seq_t; ++static volatile u32 *ac97_addr = NULL; ++static ac97_seq_t ac97_seq; ++ ++#define AC97_SEQ_READ1 0x01 ++#define AC97_SEQ_READ2 0x02 ++#define AC97_SEQ_READ_DONE 0x03 ++#define AC97_SEQ_WRITE_DONE 0x04 ++ ++/************************************************************ ++ * AC97 IDs ++ ************************************************************/ ++typedef struct { ++ u32 id; ++ char *name; ++ struct ac97_ops *ops; ++ int flags; ++} ac97_ids_t; ++ ++static struct ac97_ops null_ops = { NULL, NULL, NULL }; ++ ++static ac97_ids_t ac97_ids[] = { ++ { 0x574D4C12, "Wolfson WM9711/WM9712", &null_ops }, ++}; ++ ++/************************************************************ ++ * Timer interrupt for AC97 lost interrupt ++ ************************************************************/ ++static unsigned char ac97_timer_on = 0; ++static struct timer_list ac97_timer; ++static void ac97_timer_set(unsigned long); ++static void ac97_timer_clear(void); ++ ++static void ac97_timer_func(unsigned long data) ++{ ++ ac97_timer_on = 0; ++ if ( (ac97_seq.seq == AC97_SEQ_READ_DONE) || ++ (ac97_seq.seq == AC97_SEQ_WRITE_DONE) ) { ++ DEBUG(DBG_L2, "CAR_completion\n"); ++ complete(&CAR_completion); ++ ac97_timer_set(data); ++ } else { ++ printk(KERN_WARNING "AC97: lost interrupt(%08lx)\n", data); ++ ac97_timer_set(data); ++ } ++} ++ ++static void ac97_timer_clear(void) ++{ ++ if ( ac97_timer_on ) ++ del_timer(&ac97_timer); ++ ac97_timer_on = 0; ++} ++ ++static void ac97_timer_set(unsigned long val) ++{ ++ ac97_timer_clear(); ++ init_timer(&ac97_timer); ++ ac97_timer.data = val; ++ ac97_timer.function = ac97_timer_func; ++ ac97_timer.expires = jiffies + HZ; ++ add_timer(&ac97_timer); ++ ac97_timer_on = 1; ++} ++ ++/************************************************************ ++ * AC97 functions ++ ************************************************************/ ++#define AC97_TIMEOUT_VAL 0x10000 ++static u16 pxa_ac97_read(struct ac97_codec *codec, u8 reg) ++{ ++ down(&CAR_mutex); ++ lock_FCS(LOCK_FCS_AC97_SUB, 1); ++ if ( !(CAR & CAR_CAIP) ) { ++ ac97_addr = (volatile u32 *)&PAC_REG_BASE + (reg >> 1); ++#ifdef USE_AC97_INTERRUPT ++ ac97_seq.val = -1; ++ ac97_seq.seq = AC97_SEQ_READ1; ++ ++ init_completion(&CAR_completion); ++ ++ ac97_timer_set(ac97_seq.seq); ++ ++ (void)*ac97_addr; ++ wait_for_completion(&CAR_completion); ++ ++ ac97_timer_clear(); ++#else ++ { ++ u16 data=0; ++ int timeout; ++ // dummy ++ GSR |= GSR_RDCS; ++ GSR |= GSR_SDONE; ++ data = *ac97_addr; ++ timeout = 0; ++ while((GSR & GSR_SDONE)==0 && timeout++<AC97_TIMEOUT_VAL); ++ if ((GSR & GSR_RDCS)!=0 || timeout>=AC97_TIMEOUT_VAL) { ++ GSR |= GSR_RDCS; ++ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n"); ++ lock_FCS(LOCK_FCS_AC97_SUB, 0); ++ up(&CAR_mutex); ++ return data; ++ } ++ ++ // actual read ++ GSR |= GSR_SDONE; ++ data = *ac97_addr; ++ timeout = 0; ++ while((GSR & GSR_SDONE)==0 && timeout++<AC97_TIMEOUT_VAL); ++ if ((GSR & GSR_RDCS)!=0 || timeout>=AC97_TIMEOUT_VAL) { ++ GSR |= GSR_RDCS; ++ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n"); ++ } ++ lock_FCS(LOCK_FCS_AC97_SUB, 0); ++ up(&CAR_mutex); ++ return data; ++ } ++#endif // end USE_AC97_INTERRUPT ++ } else { ++ printk(KERN_CRIT __FUNCTION__": CAR_CAIP already set\n"); ++ } ++ lock_FCS(LOCK_FCS_AC97_SUB, 0); ++ up(&CAR_mutex); ++ return ac97_seq.val; ++} ++ ++static void pxa_ac97_write(struct ac97_codec *codec, u8 reg, u16 val) ++{ ++ down(&CAR_mutex); ++ lock_FCS(LOCK_FCS_AC97_SUB, 1); ++ if ( !(CAR & CAR_CAIP) ) { ++ ac97_addr = (volatile u32 *)&PAC_REG_BASE + (reg >> 1); ++#ifdef USE_AC97_INTERRUPT ++ ac97_seq.val = val; ++ ac97_seq.seq = AC97_SEQ_WRITE_DONE; ++ init_completion(&CAR_completion); ++ ++ ac97_timer_set(ac97_seq.seq); ++ ++ *ac97_addr = ac97_seq.val; ++ wait_for_completion(&CAR_completion); ++ ++ ac97_timer_clear(); ++#else ++ { ++ int timeout=0; ++ GSR |= GSR_CDONE; ++ *ac97_addr = val; ++ while((GSR & GSR_CDONE)==0 && timeout++<AC97_TIMEOUT_VAL); ++ if (timeout>=AC97_TIMEOUT_VAL) { ++ printk(KERN_CRIT __FUNCTION__": AC97 is busy.\n"); ++ } ++ } ++#endif // end USE_AC97_INTERRUPT ++ } else { ++ printk(KERN_CRIT __FUNCTION__": CAR_CAIP already set\n"); ++ } ++ lock_FCS(LOCK_FCS_AC97_SUB, 0); ++ up(&CAR_mutex); ++} ++ ++static void pxa_ac97_bit_clear(struct ac97_codec *codec, u8 reg, u16 val) ++{ ++ unsigned short dat = codec->codec_read(codec, reg); ++ dat &= ~val; ++ codec->codec_write(codec, reg, dat); ++} ++ ++static void pxa_ac97_bit_set(struct ac97_codec *codec, u8 reg, u16 val) ++{ ++ unsigned short dat = codec->codec_read(codec, reg); ++ dat |= val; ++ codec->codec_write(codec, reg, dat); ++} ++ ++static void pxa_ac97_irq(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ if (GSR & (GSR_SDONE|GSR_CDONE)) { ++ GSR = GSR_SDONE|GSR_CDONE; ++ ++ ac97_timer_set(ac97_seq.seq); ++ ++ switch ( ac97_seq.seq ) { ++ case AC97_SEQ_READ1: ++ ac97_seq.seq = AC97_SEQ_READ2; ++ (void)*ac97_addr; ++ break; ++ case AC97_SEQ_READ2: ++ ac97_seq.seq = AC97_SEQ_READ_DONE; ++ if ( GSR & GSR_RDCS ) { ++ GSR |= GSR_RDCS; ++ printk(KERN_CRIT __FUNCTION__": read codec register timeout.\n"); ++ } ++ ac97_seq.val = *ac97_addr; ++ break; ++ case AC97_SEQ_READ_DONE: ++ udelay(20); ++ complete(&CAR_completion); ++ break; ++ case AC97_SEQ_WRITE_DONE: ++ complete(&CAR_completion); ++ break; ++ } ++ } ++} ++ ++static struct ac97_codec pxa_ac97_codec = { ++ codec_read: pxa_ac97_read, ++ codec_write: pxa_ac97_write, ++ codec_bit_clear: pxa_ac97_bit_clear, ++ codec_bit_set: pxa_ac97_bit_set, ++}; ++ ++static DECLARE_MUTEX(pxa_ac97_mutex); ++static int pxa_ac97_refcount = 0; ++ ++static char *codec_id(u16 id1, u16 id2, char *buf) ++{ ++ if(id1&0x8080) { ++ snprintf(buf, CODEC_ID_BUFSZ, "0x%04x:0x%04x", id1, id2); ++ } else { ++ buf[0] = (id1 >> 8); ++ buf[1] = (id1 & 0xFF); ++ buf[2] = (id2 >> 8); ++ snprintf(buf+3, CODEC_ID_BUFSZ - 3, "%d", id2&0xFF); ++ } ++ return buf; ++} ++ ++static int ac97_check_modem(struct ac97_codec *codec) ++{ ++ /* Check for an AC97 1.0 soft modem (ID1) */ ++ if(codec->codec_read(codec, AC97_RESET) & 2) ++ return 1; ++ /* Check for an AC97 2.x soft modem */ ++ codec->codec_write(codec, AC97_EXTENDED_MODEM_ID, 0L); ++ if(codec->codec_read(codec, AC97_EXTENDED_MODEM_ID) & 1) ++ return 1; ++ return 0; ++} ++ ++static int ac97_probe(struct ac97_codec *codec) ++{ ++ u16 id1, id2; ++ u16 audio; ++ int i; ++ char cidbuf[CODEC_ID_BUFSZ]; ++ ++ codec->codec_write(codec, AC97_RESET, 0L); ++ ++ /* also according to spec, we wait for codec-ready state */ ++ if ( codec->codec_wait ) codec->codec_wait(codec); ++ else udelay(10); ++ ++ if ( (audio = codec->codec_read(codec, AC97_RESET)) & 0x8000 ) { ++ printk(KERN_ERR "ac97_codec: %s ac97 codec not present\n", ++ (codec->id & 0x2) ? (codec->id&1 ? "4th" : "Tertiary") ++ : (codec->id&1 ? "Secondary": "Primary")); ++ return 0; ++ } ++ ++ /* probe for Modem Codec */ ++ codec->modem = ac97_check_modem(codec); ++ codec->name = NULL; ++ codec->codec_ops = &null_ops; ++ ++ id1 = codec->codec_read(codec, AC97_VENDOR_ID1); ++ id2 = codec->codec_read(codec, AC97_VENDOR_ID2); ++ for (i = 0; i < ARRAY_SIZE(ac97_ids); i++) { ++ if (ac97_ids[i].id == ((id1 << 16) | id2)) { ++ codec->type = ac97_ids[i].id; ++ codec->name = ac97_ids[i].name; ++ codec->codec_ops = ac97_ids[i].ops; ++ codec->flags = ac97_ids[i].flags; ++ break; ++ } ++ } ++ ++ /* A device which thinks its a modem but isnt */ ++ if ( codec->flags & AC97_DELUDED_MODEM ) ++ codec->modem = 0; ++ ++ if ( codec->name == NULL ) ++ codec->name = "Unknown"; ++ printk(KERN_INFO "ac97_codec: AC97 %s codec, id: %s (%s)\n", ++ codec->modem ? "Modem" : (audio ? "Audio" : ""), ++ codec_id(id1, id2, cidbuf), codec->name); ++ return 1; ++} ++ ++int pxa_ac97_get(struct ac97_codec **codec, unsigned char *ac97_on) ++{ ++ if ( *ac97_on != 0 ) return 0; ++ ++ *codec = NULL; ++ down(&pxa_ac97_mutex); ++ ++ DEBUG(DBG_L1, "count(%d)\n", pxa_ac97_refcount); ++ pxa_ac97_refcount++; ++ up(&pxa_ac97_mutex); ++ *codec = &pxa_ac97_codec; ++ *ac97_on = 1; ++ ++ return 0; ++} ++ ++void pxa_ac97_put(unsigned char *ac97_on) ++{ ++ if ( *ac97_on == 0 ) return; ++ down(&pxa_ac97_mutex); ++ pxa_ac97_refcount--; ++ DEBUG(DBG_L1, "count(%d)\n", pxa_ac97_refcount); ++ up(&pxa_ac97_mutex); ++ *ac97_on = 0; ++} ++ ++unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate) ++{ ++ unsigned int new_rate = rate; ++ u32 dacp; ++ u32 mast_vol, phone_vol, mono_vol, pcm_vol; ++ u32 mute_vol = 0x8000; /* The mute volume? */ ++ ++ if( rate != codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE) ) { ++ /* Mute several registers */ ++ mast_vol = codec->codec_read(codec, AC97_MASTER_VOL_STEREO); ++ mono_vol = codec->codec_read(codec, AC97_MASTER_VOL_MONO); ++ phone_vol = codec->codec_read(codec, AC97_HEADPHONE_VOL); ++ pcm_vol = codec->codec_read(codec, AC97_PCMOUT_VOL); ++ codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mute_vol); ++ codec->codec_write(codec, AC97_MASTER_VOL_MONO, mute_vol); ++ codec->codec_write(codec, AC97_HEADPHONE_VOL, mute_vol); ++ codec->codec_write(codec, AC97_PCMOUT_VOL, mute_vol); ++ ++ /* Power down the DAC */ ++ dacp=codec->codec_read(codec, AC97_POWER_CONTROL); ++ codec->codec_write(codec, AC97_POWER_CONTROL, dacp|0x0200); ++ /* Load the rate and read the effective rate */ ++ codec->codec_write(codec, AC97_PCM_FRONT_DAC_RATE, rate); ++ new_rate=codec->codec_read(codec, AC97_PCM_FRONT_DAC_RATE); ++ /* Power it back up */ ++ codec->codec_write(codec, AC97_POWER_CONTROL, dacp); ++ ++ /* Restore volumes */ ++ codec->codec_write(codec, AC97_MASTER_VOL_STEREO, mast_vol); ++ codec->codec_write(codec, AC97_MASTER_VOL_MONO, mono_vol); ++ codec->codec_write(codec, AC97_HEADPHONE_VOL, phone_vol); ++ codec->codec_write(codec, AC97_PCMOUT_VOL, pcm_vol); ++ } ++ return new_rate; ++} ++ ++unsigned int ac97_set_adc_rate(struct ac97_codec *codec, unsigned int rate) ++{ ++ unsigned int new_rate = rate; ++ u32 dacp; ++ if( rate != codec->codec_read(codec, AC97_PCM_LR_ADC_RATE) ) { ++ /* Power "Up" the ADC */ ++ dacp=codec->codec_read(codec, AC97_POWER_CONTROL); ++ dacp &= ~(0x1<<8); ++ codec->codec_write(codec, AC97_POWER_CONTROL, dacp); ++ ++ codec->codec_write(codec, AC97_PCM_LR_ADC_RATE, rate); ++ new_rate=codec->codec_read(codec, AC97_PCM_LR_ADC_RATE); ++ ++ /* Power it back up */ ++ codec->codec_write(codec, AC97_POWER_CONTROL, dacp); ++ } ++ return new_rate; ++} ++ ++void wm9712_power_mode(int dev, int mode) ++{ ++ int i; ++ power_mode_t new_power_status; ++ dev %= NUM_OF_WM9712_DEV; ++ mode %= num_of_pwr_values; ++ // printk("wm9712_power_mode(%d,%d)\n",dev,mode); ++ power_mode_status[dev] = pwr_values[mode]; ++ // create new state ++ new_power_status = power_mode_status[0]; ++ for (i=1; i<NUM_OF_WM9712_DEV; i++) { ++ new_power_status.ctl_val &= power_mode_status[i].ctl_val; ++ new_power_status.pdown_val &= power_mode_status[i].pdown_val; ++ } ++ // compare with current state ++ if (new_power_status.pdown_val != cur_power_status.pdown_val) { ++ ac97_write(AC97_POWERDOWN, new_power_status.pdown_val); ++ cur_power_status.pdown_val = new_power_status.pdown_val; ++ // printk("change status PWDOWN = %04X\n", cur_power_status.pdown_val); ++ } ++ if (new_power_status.ctl_val != cur_power_status.ctl_val) { ++ ac97_write(AC97_POWER_CONTROL, new_power_status.ctl_val); ++ cur_power_status.ctl_val = new_power_status.ctl_val; ++ // printk("change status PW_CTRL = %04X\n", cur_power_status.ctl_val); ++ } ++ ++} ++ ++void tosa_ac97_init(void) ++{ ++ int i; ++ int ret,timeo; ++ ++ lock_FCS(LOCK_FCS_AC97, 1); ++ codec = NULL; ++ pxa_ac97_refcount = 0; ++ set_GPIO_mode(GPIO31_SYNC_AC97_MD); ++ set_GPIO_mode(GPIO30_SDATA_OUT_AC97_MD); ++ set_GPIO_mode(GPIO28_BITCLK_AC97_MD); ++ set_GPIO_mode(GPIO29_SDATA_IN_AC97_MD); ++ set_GPIO_mode(GPIO20_DREQ0_MD); ++ ++ for (i=0; i<NUM_OF_WM9712_DEV; i++) { ++ power_mode_status[i].ctl_val = pwr_values[WM9712_PWR_OFF].ctl_val; ++ power_mode_status[i].pdown_val = pwr_values[WM9712_PWR_OFF].pdown_val; ++ } ++ memset(&cur_power_status,0,sizeof(cur_power_status)); ++ ++#if 1 // move from ac97_get ++ CKEN |= CKEN2_AC97; ++ /* AC97 power on sequense */ ++ while ( 1 ) { ++ GCR = 0; ++ udelay(100); ++ GCR |= GCR_COLD_RST; ++ udelay(5); ++ GCR |= GCR_WARM_RST; ++ udelay(5); ++ for ( timeo = 0x10000; timeo > 0; timeo-- ) { ++ if ( GSR & GSR_PCR ) break; ++ //X schedule(); ++ mdelay(5); ++ } ++ if( timeo > 0 ) break; ++ printk(KERN_WARNING "AC97 power on retry!!\n"); ++ } ++ ++#ifdef USE_AC97_INTERRUPT ++ if( (ret = request_irq(IRQ_AC97, pxa_ac97_irq, 0, "AC97", NULL)) ) { ++ lock_FCS(LOCK_FCS_AC97, 0); ++ return ret; ++ } ++ } ++#endif ++ ++ if ( (ret = ac97_probe(&pxa_ac97_codec)) != 1 ) { ++#ifdef USE_AC97_INTERRUPT ++ free_irq(IRQ_AC97, NULL); ++#endif ++ GCR = GCR_ACLINK_OFF; ++ CKEN &= ~CKEN2_AC97; ++ lock_FCS(LOCK_FCS_AC97, 0); ++ return ret; ++ } ++ pxa_ac97_write(&pxa_ac97_codec, AC97_EXTENDED_STATUS, 1); ++ /* ++ * Setting AC97 GPIO ++ * i/o function ++ * GPIO1: input EAR_IN signal ++ * GPIO2: output IRQ signal ++ * GPIO3: output PENDOWN signal ++ * GPIO4: input MASK signal ++ * GPIO5: input DETECT MIC signal ++ */ ++ pxa_ac97_bit_clear(&pxa_ac97_codec, AC97_GPIO_FUNC, ++ ((1<<2)|(1<<3)|(1<<4)|(1<<5))); ++ pxa_ac97_bit_clear(&pxa_ac97_codec, AC97_GPIO_CONFIG,(1<<2)|(1<<3)); ++ pxa_ac97_bit_set(&pxa_ac97_codec, AC97_GPIO_CONFIG, (1<<1)|(1<<4)|(1<<5)); ++#endif ++ codec = &pxa_ac97_codec; ++ lock_FCS(LOCK_FCS_AC97, 0); ++} ++ ++void tosa_ac97_exit(void) ++{ ++#if 1 // move from ac97_put ++ GCR = GCR_ACLINK_OFF; ++ CKEN &= ~CKEN2_AC97; ++#ifdef USE_AC97_INTERRUPT ++ free_irq(IRQ_AC97, NULL); ++#endif ++ pxa_ac97_refcount = 0; ++#endif ++} ++ ++EXPORT_SYMBOL(ac97_set_dac_rate); ++EXPORT_SYMBOL(ac97_set_adc_rate); ++EXPORT_SYMBOL(pxa_ac97_get); ++EXPORT_SYMBOL(pxa_ac97_put); ++EXPORT_SYMBOL(wm9712_power_mode); +diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_battery.c linux/arch/arm/mach-pxa/tosa_battery.c +--- linux_c860_org/arch/arm/mach-pxa/tosa_battery.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/mach-pxa/tosa_battery.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,2603 @@ ++/* ++ * linux/arch/arm/mach-pxa/tosa_battery.c ++ * ++ * Based on ++ * linux/arch/arm/mach-sa1100/collie_battery.c ++ * linux/arch/arm/mach-pxa/sharpsl_battery.c ++ * ++ * Battery routines for tosa (SHARP) ++ * ++ * Copyright (C) 2004 SHARP ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * ChangeLog: ++ * ++ */ ++ ++ ++/* this driver support the following functions ++ * - apm_get_power_status ++ * - charge proc ++ */ ++ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include <linux/poll.h> ++#include <linux/types.h> ++#include <linux/stddef.h> ++#include <linux/timer.h> ++#include <linux/fcntl.h> ++#include <linux/slab.h> ++#include <linux/stat.h> ++#include <linux/proc_fs.h> ++#include <linux/miscdevice.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/pm.h> ++#include <linux/kernel.h> ++#include <linux/smp_lock.h> ++#include <linux/apm_bios.h> ++#include <linux/delay.h> ++ ++#include <asm/io.h> ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/mach/irq.h> ++#include <asm/hardirq.h> ++ ++#include <asm/sharp_char.h> ++#include <asm/sharp_keycode.h> ++#include <linux/ac97_codec.h> ++#include <asm/arch/tosa_wm9712.h> ++#include <asm/arch/keyboard_tosa.h> ++#include <asm/arch/tosa.h> ++#include <video/tosa_backlight.h> ++#include <asm/arch/sharpsl_battery.h> ++ ++#define TOSA_BATTERY_FAILSAFE_LOWBAT ++#define TOSA_BATTERY_AD_OFFSET (0) ++ ++#define TOSA_OFF_CHARGE_FAILSAFE ++ ++#define TOSA_FOR_ENGLISH ++ ++#ifdef DEBUG ++#define DPRINTK(x, args...) printk(x,##args) ++#else ++#define DPRINTK(x, args...) if ( msglevel & 1 ) printk(x,##args); ++#endif ++ ++#ifdef DEBUG2 ++#define DPRINTK2(x, args...) printk( x,##args) ++#else ++#define DPRINTK2(x, args...) if ( msglevel & 2 ) printk(x,##args); ++#endif ++ ++#ifdef DEBUG3 ++#define DPRINTK3(x, args...) printk( x,##args) ++#else ++#define DPRINTK3(x, args...) if ( msglevel & 4 ) printk(x,##args); ++#endif ++ ++#ifdef DEBUG4 ++#define DPRINTK4(x, args...) printk( x,##args) ++#else ++#define DPRINTK4(x, args...) if ( msglevel & 8 ) printk(x,##args); ++#endif ++ ++#ifdef TOSA_FOR_ENGLISH ++#ifdef DEBUG5 ++#define DPRINTK5(x, args...) printk( x,##args) ++#else ++#define DPRINTK5(x, args...) if ( msglevel & 16 ) printk("[CHKCHGFULL]: "x,##args); ++#endif ++#endif // TOSA_FOR_ENGLISH ++ ++#define CHECK_LOG (0) // for DEBUG ++#if CHECK_LOG ++int gStartTime = 0; ++#endif ++ ++/* ++ * The battery device is one of the misc char devices. ++ * This is its minor number. ++ */ ++#define BATTERY_MINOR_DEV 215 ++ ++#define SEL_MAIN 0 ++#define SEL_JACKET 1 ++#define SEL_BU 2 ++ ++static void tosa_charge_on_off(int,int); ++ ++#define CHARGE_ON() ( { CHARGE_0_ON(); CHARGE_1_ON(); } ) ++#define CHARGE_OFF() ( { CHARGE_0_OFF(); CHARGE_1_OFF(); } ) ++ ++#define CHARGE_0_ON() tosa_charge_on_off(SEL_MAIN, 1) ++#define CHARGE_0_OFF() tosa_charge_on_off(SEL_MAIN, 0) ++ ++#define CHARGE_1_ON() tosa_charge_on_off(SEL_JACKET, 1) ++#define CHARGE_1_OFF() tosa_charge_on_off(SEL_JACKET, 0) ++ ++extern void sharpsl_charge_err_off(void); ++#define CHARGE_LED_ON() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_CHARGING) ++#define CHARGE_LED_OFF() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_OFF) ++#define CHARGE_LED_ERR() set_led_status(SHARP_LED_CHARGER,LED_CHARGER_ERROR) ++#define CHARGE_LED_ERR_OFF() sharpsl_charge_err_off() ++ ++#define SHARPSL_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH ++#define SHARPSL_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW ++#define SHARPSL_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW ++#define SHARPSL_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL ++ ++#define APM_BATL_CLOSE 0 ++#define APM_BATL_OPEN 1 ++#define SHARPSL_BAT_LOCKED_STATUS \ ++ (( GPLR(GPIO_BAT_LOCKED) & GPIO_bit(GPIO_BAT_LOCKED) ) ? APM_BATL_CLOSE : APM_BATL_OPEN) ++ ++static int tosa_ac_line_status(int); ++#define SHARPSL_AC_LINE_STATUS tosa_ac_line_status(20 /* msec */) ++ ++#define SHARPSL_MAIN_BATT_FATAL \ ++ (( GPLR(GPIO_BAT0_LOW) & GPIO_bit(GPIO_BAT0_LOW) ) ? 0 : 1 ) ++ ++#define SHARPSL_JACKET_BATT_FATAL \ ++ (( GPLR(GPIO_BAT1_LOW) & GPIO_bit(GPIO_BAT1_LOW) ) ? 0 : 1 ) ++ ++#define SHARPSL_MAIN_BATT_FULL \ ++ (( GPLR(GPIO_BAT0_CRG) & GPIO_bit(GPIO_BAT0_CRG) ) ? 1 : 0 ) ++ ++#define SHARPSL_JACKET_BATT_FULL \ ++ (( GPLR(GPIO_BAT1_CRG) & GPIO_bit(GPIO_BAT1_CRG) ) ? 1 : 0 ) ++ ++ ++#define SHARPSL_APO_DEFAULT ( ( 3 * 60 ) * SHARPSL_PM_TICK ) // 3 min ++#define SHARPSL_LPO_DEFAULT ( 20 * SHARPSL_PM_TICK ) // 20 sec ++ ++ ++#define SHARPSL_PM_TICK ( HZ ) // 1 sec ++#define SHARPSL_BATCHK_TIME ( SHARPSL_PM_TICK ) // 1 sec ++#define SHARPSL_MAIN_GOOD_COUNT ( HZ / SHARPSL_PM_TICK ) // 1 sec ++#define SHARPSL_MAIN_NOGOOD_COUNT ( HZ / SHARPSL_PM_TICK ) // 1 sec ++ ++#define SHARPSL_BATTERY_CK_TIME ( 10*60*1*100 ) // 10min ( base jiffies ) ++#define TOSA_TEMP_READ_WAIT_TIME (5) // 5msec [Fix] ++#define TOSA_BATTERY_READ_WAIT_TIME (5) // 5msec [Fix] ++#define TOSA_DISCHARGE_WAIT_TIME (10) // 10msec ++ ++#define TOSA_MAIN_BATTERY_EXIST_THRESH (3600) // 2.9V [Fix] ++#define TOSA_JACKET_BATTERY_EXIST_THRESH (3600) // 2.9V [Fix] ++ ++#define TOSA_MAIN_BATTERY_ERR_THRESH (1200) // 2.9V [Fix] ++#define TOSA_JACKET_BATTERY_ERR_THRESH (1200) // 2.9V [Fix] ++ ++ ++#define TOSA_MAIN_BATT_FATAL_ACIN_VOLT (1572+TOSA_BATTERY_AD_OFFSET) // 3.80V [Fix] ++#define TOSA_JACKET_BATT_FATAL_ACIN_VOLT (1572+TOSA_BATTERY_AD_OFFSET) // 3.80V [Fix] ++#define TOSA_MAIN_BATT_FATAL_NOACIN_VOLT (1551+TOSA_BATTERY_AD_OFFSET) // 3.75V [Fix] ++#define TOSA_JACKET_BATT_FATAL_NOACIN_VOLT (1551+TOSA_BATTERY_AD_OFFSET) // 3.75V [Fix] ++ ++ ++#define TOSA_JC_CHECK_WAIT_TIME 10 // 10*10mS Jacket Check [Fix] ++#define TOSA_JC_CHECK_TIMES 5 // 5 times ++ ++#define SHARPSL_TOSA_WAIT_CO_TIME 20 // 20 Sec ++ //NOTICE !! you want to change this value , so you must change ++ // alarm check mirgin time ( +30 ) in the sharpsl_power.c. ++ ++#define SHARPSL_CAUTION_CONTRAST TOSA_BL_CAUTION_CONTRAST ++#define SHARPSL_RESET_CONTRAST TOSA_BL_RESET_CONTRAST ++#define SHARPSL_LIMIT_CONTRAST(x) tosa_bl_set_limit_contrast(x) ++ ++#define CHARGE_STEP1 1 ++#define CHARGE_STEP2 2 ++#define CHARGE_STEP3 3 ++#define CHARGE_STEP4 4 ++#define CHARGE_STEP5 5 ++#define CHARGE_STEP6 6 ++#define CHARGE_STEP7 7 ++#define CHARGE_STEP_END 10 ++#define CHARGE_STEP_EXIT 11 ++#define CHARGE_STEP_ERROR 12 ++#define SHARPSL_CHARGE_RETRY_CNT 1 // 10 min ++#define SHARPSL_AFTER_CHARGE_CNT 0 // 0 ++ ++#define SHARPSL_CNV_VALUE_NUM 10 ++#define SHARPSL_CNV_TEMP_NUM 10 ++ ++ ++typedef struct BatteryThresh { ++ int voltage; ++ int percentage; ++ int status; ++} BATTERY_THRESH; ++ ++/*** prototype *********************************************************************/ ++static int tosa_get_jacket_status(void); ++static void tosa_request_off(void); ++static int tosa_battery_thread_main(void); ++static int tosa_get_sel_battery(int); //[Fix] ++static int tosa_read_battery(int); //[Fix] ++static int tosa_read_temp(int); //[Fix] ++static int tosa_read_battery_avg(int); ++static int tosa_read_temp_avg(int); //[Fix] ++static int tosa_check_battery_error(int,int); ++static int tosa_check_battery_exist(int,int); //[Fix] ++static int tosa_check_main_battery_error(void); ++static int tosa_check_jacket_battery_error(void); ++static int tosa_check_main_battery_not_exist(void); //[Fix] ++static int tosa_check_jacket_battery_not_exist(void); //[Fix] ++static int tosa_read_main_battery(void); ++static int tosa_read_jacket_battery(void); ++static int tosa_read_backup_battery(void); ++static int tosa_check_main_batt_fatal(void); ++static int tosa_check_jacket_batt_fatal(void); ++static void tosa_charge_start(void); //[Fix] ++static void tosa_charge_stop(void); //[Fix] ++static void tosa_reset_battery_info(void); ++static void tosa_jacket_kick_timer(void); ++static void tosa_jacket_interrupt(int,void *,struct pt_regs *); ++static void tosa_ac_interrupt(int,void *,struct pt_regs *); ++static void tosa_main_batt_fatal_interrupt(int,void *,struct pt_regs *); ++static void tosa_jacket_batt_fatal_interrupt(int,void *,struct pt_regs *); ++static int tosa_cnv_battery(int,int); ++static void tosa_get_all_battery(void); //[Fix] ++static int tosa_get_sel_charge_percent(int,int); ++static BATTERY_THRESH *tosa_get_sel_level(int,int); ++static int tosa_get_dac_value(int); //[Fix] ++static int get_select_val(int *); ++static int tosa_get_jacket_status_for_on(void); ++static void tosa_off_jc_card_limit(void); ++ ++ ++/* thread */ ++static int tosa_charge_on(void*); ++static int tosa_charge_off(void*); ++static int tosa_battery_thread(void*); ++static int tosa_fatal_check(void*); ++static int tosa_jacket_check(void*); ++ ++ ++/*** extern ***********************************************************************/ ++extern u32 apm_wakeup_src_mask; ++extern int counter_step_contrast; ++extern void handle_scancode(unsigned char,int); ++extern unsigned long ssp_get_dac_val(unsigned long,int); ++extern int sharpsl_is_power_mode_sensitive_battery(void); ++extern int ac97_ad_input(int,unsigned short *); ++extern int set_led_status(int,int); ++extern unsigned short set_scoop_jc_gpio(unsigned short); ++extern unsigned short reset_scoop_jc_gpio(unsigned short); ++ ++#ifdef CONFIG_PM ++extern int pass_charge_flag; ++//extern int counter_step_save; ++#endif ++ ++/*** variables ********************************************************************/ ++ ++/* BL 5-3 */ ++BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = { ++ { 1663, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1605, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1564, 50, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1510, 25, SHARPSL_BATTERY_STATUS_LOW}, ++ { 1435, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, ++}; ++ ++/* BL 2-0 */ ++BATTERY_THRESH sharpsl_main_battery_thresh_nofl[] = { ++ { 1679, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1617, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1576, 50, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1530, 25, SHARPSL_BATTERY_STATUS_LOW}, ++ { 1448, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, ++}; ++ ++/* BL 5-3 */ ++BATTERY_THRESH sharpsl_jacket_battery_thresh_fl[] = { ++ { 1663, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1605, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1564, 50, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1510, 25, SHARPSL_BATTERY_STATUS_LOW}, ++ { 1435, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, ++}; ++ ++/* BL 2-0 */ ++BATTERY_THRESH sharpsl_jacket_battery_thresh_nofl[] = { ++ { 1679, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1617, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1576, 50, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 1530, 25, SHARPSL_BATTERY_STATUS_LOW}, ++ { 1448, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, ++}; ++ ++BATTERY_THRESH sharpsl_bu_battery_thresh_fl[] = { ++ { 3226, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_VERYLOW}, ++}; ++ ++BATTERY_THRESH sharpsl_bu_battery_thresh_nofl[] = { ++ { 3226, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 0, 0, SHARPSL_BATTERY_STATUS_VERYLOW}, ++}; ++ ++ ++#if 1 ++static struct file_operations sharpsl_battery_fops = { ++}; ++#else ++static struct file_operations sharpsl_battery_fops = { ++ owner: THIS_MODULE, ++ read: do_read, ++ poll: do_poll, ++ ioctl: do_ioctl, ++ open: do_open, ++ release: do_release, ++}; ++#endif ++ ++static struct miscdevice battery_device = { ++ BATTERY_MINOR_DEV, ++ "battery", ++ &sharpsl_battery_fops ++}; ++ ++ ++int charge_status = 0; /* charge status 1 : charge 0: not charge */ ++int sharpsl_off_charge = 0; /* 0: on , 1 : off */ ++ ++unsigned int APOCnt = SHARPSL_APO_DEFAULT; ++unsigned int APOCntWk = 0; ++unsigned int LPOCnt = SHARPSL_LPO_DEFAULT; ++unsigned int LPOCntWk = 0; ++static DECLARE_WAIT_QUEUE_HEAD(battery_queue); ++static int msglevel; ++ ++int sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH; ++int sharpsl_main_battery_percentage = 100; ++int sharpsl_jacket_battery = SHARPSL_BATTERY_STATUS_HIGH; ++int sharpsl_jacket_battery_percentage = 100; ++int sharpsl_bu_battery = SHARPSL_BATTERY_STATUS_HIGH; ++int sharpsl_bu_battery_percentage = 100; ++ ++int sharpsl_bat_locked = 0; ++ ++int sharpsl_jacket_exist = 0; ++int sharpsl_jacket_batt_exist = 0; ++static int tosa_jacket_status_change = 0; ++static int tosa_jacket_check_only = 0; ++static int tosa_cardslot_error = 0; ++#define ERR_CARDSLOT_CF1 (0x1<<0) ++#define ERR_CARDSLOT_CF2 (0x1<<1) ++#define ERR_CARDSLOT_SD (0x1<<2) ++ ++int sharpsl_ac_status = APM_AC_OFFLINE; ++ ++static int MainCntWk = SHARPSL_MAIN_GOOD_COUNT; ++static int MainCnt = SHARPSL_MAIN_NOGOOD_COUNT; ++static int back_ac_status = -1; ++ ++static int back_battery_status = -1; ++static int back_jacket_battery_status = -1; ++static int back_bu_battery_status = -1; ++static int sharpsl_check_time = SHARPSL_BATCHK_TIME; ++ ++static int sharpsl_main_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++static int sharpsl_main_percent_bk = 100; ++static int sharpsl_jacket_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++static int sharpsl_jacket_percent_bk = 100; ++static int sharpsl_bu_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++static int sharpsl_bu_percent_bk = 100; ++ ++int sharpsl_main_bk_flag = 0; ++ ++static struct timer_list ac_kick_timer; ++static struct timer_list jacket_kick_timer; ++ ++#ifdef CONFIG_PM ++static struct pm_dev *battery_pm_dev; /* registered PM device */ ++#endif ++ ++static int battery_off_flag = 0; /* charge : suspend while get adc */ ++static int is_ac_adaptor = 0; /* AC adaptor in/out */ ++ ++static DECLARE_WAIT_QUEUE_HEAD(charge_on_queue); ++static DECLARE_WAIT_QUEUE_HEAD(charge_off_queue); ++static DECLARE_WAIT_QUEUE_HEAD(battery_waitqueue); ++static DECLARE_WAIT_QUEUE_HEAD(fatal_chk_queue); ++static DECLARE_WAIT_QUEUE_HEAD(jacket_chk_queue); ++ ++static int is_enabled_off = 1; ++ ++int sharpsl_charge_cnt = 0; ++int sharpsl_charge_dummy_cnt = 1; ++ ++static int sharpsl_ad_main[SHARPSL_CNV_VALUE_NUM+1]; ++static int sharpsl_ad_index_main = 0; ++static int sharpsl_ad_jacket[SHARPSL_CNV_VALUE_NUM+1]; ++static int sharpsl_ad_index_jacket = 0; ++static int sharpsl_ad_bu[SHARPSL_CNV_VALUE_NUM+1]; ++static int sharpsl_ad_index_bu = 0; ++ ++static int tosa_jacket_check_count = 0; ++static unsigned int tosa_jacket_state = 0; ++static int tosa_dac_init = 0; ++ ++ ++static int sharpsl_change_battery_status = 0; ++ ++static int tosa_jc_card_limit_sel = 0; ++ ++static int tosa_off_main_batt_full = 0; ++static int tosa_off_jacket_batt_full = 0; ++ ++static int tosa_off_check_jacket_req = 0; ++ ++// for DEBUG ++static int sharpsl_debug_flag = 0; ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++#define TOSA_CHARGE_FULL_MAX_TIME (4*60*60) // 4H ++#define TOSA_CHARGE_FULL_DIFF_VOLT (20) // about 50mV ++static int tosa_charge_full_enable = 0; ++static int tosa_charge_full_counter = 0; ++static int tosa_charge_full_main_batt = 0; ++static int tosa_charge_full_jacket_batt = 0; ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ ++#ifdef TOSA_FOR_ENGLISH ++static int tosa_charge_full_state = 0; ++static int tosa_decide_charge_full_counter = 0; ++int logo_lang = 0; // (default): En , (1): Jp ++#define TOSA_DECIDE_CHARGE_FULL_COUNTER ( 60*100 ) // 1min ( base jiffies ) ++#define DISCONNECT_AC (0) ++#define CONNECT_AC (1) ++#define DETECT_CHARGE_FULL (2) ++#define DECIDE_CHARGE_FULL (3) ++#define GET_CHARGE_FULL_STATE() tosa_charge_full_state ++#define SET_CHARGE_FULL_STATE(state) (tosa_charge_full_state = state) ++#define IS_ENGLISH_MODEL() (logo_lang != 1) ++#endif // TOSA_FOR_ENGLISH ++ ++void set_jacketslot_error( int on ) ++{ ++ if (on) { ++ if (!(tosa_cardslot_error&ERR_CARDSLOT_CF2)) { ++ tosa_cardslot_error |= ERR_CARDSLOT_CF2; ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ } ++ } else { ++ if (tosa_cardslot_error&ERR_CARDSLOT_CF2) { ++ tosa_cardslot_error &= ~ERR_CARDSLOT_CF2; ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ } ++ } ++} ++ ++int current_cardslot_error( int num ) ++{ ++ if (num==0) { ++ return (tosa_cardslot_error & ERR_CARDSLOT_CF1)?1:0; ++ } else { // slot 1 ++ return (tosa_cardslot_error & ERR_CARDSLOT_CF2)?1:0; ++ } ++} ++ ++/*** apm subroutines ***********************************************************/ ++static int tosa_get_jacket_status(void) ++{ ++ if (tosa_jacket_check_count == 0){ ++ tosa_jacket_state = GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT); ++ tosa_jacket_check_count++; ++ return 0; ++ } ++ ++ if (tosa_jacket_state == (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT))){ ++ if (tosa_jacket_check_count++ >= TOSA_JC_CHECK_TIMES){ ++ if (tosa_jacket_state){ ++ sharpsl_jacket_exist = 0; // non-exsistent (unit) ++ sharpsl_jacket_batt_exist = 0; // non-exststent (battery) ++ DPRINTK2("[BATT] jacket was removed.\n"); ++ }else{ ++ sharpsl_jacket_exist = 1; // exsistent (unit) ++ DPRINTK2("JACKET STATUS [ EXIST ]\n"); ++ if(!tosa_check_jacket_battery_not_exist()){ ++ sharpsl_jacket_batt_exist = 1; // exsistent (battery) ++ DPRINTK2("JACKET BATTERY STATUS [ EXIST ]\n"); ++ }else{ ++ sharpsl_jacket_batt_exist = 0; // non-exststent (battery) ++ DPRINTK2("JACKET BATTERY STATUS [ NOT EXIST ]\n"); ++ } ++ } ++ // jacket battery charge control. ++ if(sharpsl_jacket_batt_exist){ ++ CHARGE_1_ON(); ++ }else{ ++ CHARGE_1_OFF(); ++ } ++ ++ tosa_jacket_status_change = 1; // jacket status is changed. ++ ++ if(!tosa_jacket_check_only){ ++ sharpsl_change_battery_status = 1; // change status ++ wake_up_interruptible(&battery_waitqueue); ++ } ++ ++ tosa_jacket_check_count = 0; ++ return 1; ++ } ++ }else{ ++ tosa_jacket_check_count = 0; ++ } ++ return 0; ++} ++ ++static int tosa_get_jacket_status_for_on(void) ++{ ++ tosa_jacket_check_count = 0; ++ tosa_jacket_check_only = 1; ++ while(1){ ++ if(tosa_get_jacket_status()){ ++ mdelay(TOSA_JC_CHECK_WAIT_TIME*10); ++ break; ++ } ++ mdelay(TOSA_JC_CHECK_WAIT_TIME*10); ++ } ++ tosa_jacket_check_only = 0; ++ return 0; ++} ++ ++int sharpsl_apm_get_power_status(u_char *ac_line_status, ++ u_char *battery_main_status, ++ u_char *battery_jacket_status, ++ u_char *battery_bu_status, ++ u_char *battery_flag, ++ u_char *battery_main_percentage, ++ u_char *battery_jacket_percentage, ++ u_char *battery_bu_percentage, ++ u_short *battery_main_life, ++ u_short *battery_jacket_life, ++ u_short *battery_bu_life) ++ ++{ ++ // set ac status ++ *ac_line_status = sharpsl_ac_status; ++ ++ // set battery_status main ++ *battery_main_status = sharpsl_main_battery; ++ *battery_jacket_status = sharpsl_jacket_battery; ++ *battery_bu_status = sharpsl_bu_battery; ++ ++ // set battery percentage ++ *battery_main_percentage = sharpsl_main_battery_percentage; ++ *battery_jacket_percentage = sharpsl_jacket_battery_percentage; ++ *battery_bu_percentage = sharpsl_bu_battery_percentage; ++ ++ if ( *ac_line_status == APM_AC_ONLINE ){ ++ *battery_main_percentage = 100; ++ *battery_jacket_percentage = 100; ++ *battery_bu_percentage = 100; ++ } ++ ++ // set battery_flag ++ if ( *battery_main_status == SHARPSL_BATTERY_STATUS_VERYLOW ){ ++ *battery_flag = (1 << 5); ++ }else{ ++ *battery_flag = (1 << *battery_main_status); ++ } ++ ++ // chk charge status ++#ifdef TOSA_FOR_ENGLISH ++ if ( charge_status && (!IS_ENGLISH_MODEL() || (GET_CHARGE_FULL_STATE() != DECIDE_CHARGE_FULL))) { ++#else ++ if ( charge_status ) { ++#endif // TOSA_FOR_ENGLISH ++ *battery_main_status = APM_BATTERY_STATUS_CHARGING; ++ *battery_jacket_status = APM_BATTERY_STATUS_CHARGING; ++ *battery_bu_status = APM_BATTERY_STATUS_CHARGING; ++ *battery_flag = (1 << 3); ++ // charging now, so can not get battery percentage. ++ *battery_main_percentage = -1; ++ *battery_jacket_percentage = -1; ++ *battery_bu_percentage = -1; ++ } ++ ++ // set battery life ++ *battery_main_life = APM_BATTERY_LIFE_UNKNOWN; ++ *battery_jacket_life = APM_BATTERY_LIFE_UNKNOWN; ++ *battery_bu_life = APM_BATTERY_LIFE_UNKNOWN; ++ ++ return APM_SUCCESS; ++} ++ ++ ++int sharpsl_apm_get_bp_status(u_char *ac_line_status, ++ u_char *battery_status, ++ u_char *battery_flag, ++ u_char *battery_percentage, ++ u_short *battery_life) ++{ ++ *ac_line_status = APM_AC_OFFLINE;//collie_ac_status; ++ ++ if ( sharpsl_jacket_batt_exist ){ ++ /* In charging stage ,battery status */ ++ if ( charge_status ){ ++#ifdef TOSA_FOR_ENGLISH ++ if ( IS_ENGLISH_MODEL() && (GET_CHARGE_FULL_STATE() == DECIDE_CHARGE_FULL) ) { ++ *battery_status = SHARPSL_BATTERY_STATUS_HIGH; ++ *battery_percentage = 100; ++ *battery_flag = (1 << SHARPSL_BATTERY_STATUS_HIGH); ++ }else{ ++#endif // TOSA_FOR_ENGLISH ++ *battery_status = APM_BATTERY_STATUS_CHARGING; ++ *battery_flag = (1 << 3);//0x08; ++ /* set battery percentage */ ++ *battery_percentage = -1; ++#ifdef TOSA_FOR_ENGLISH ++ } ++#endif // TOSA_FOR_ENGLISH ++ }else{ ++ *battery_status = sharpsl_jacket_battery; ++ if( !(*battery_status) ){ ++ *battery_flag = 0x01; ++ }else if(*battery_status == APM_BATTERY_STATUS_VERY_LOW){ ++ *battery_flag = 0x20; ++ }else{ ++ *battery_flag = *battery_status << 1; ++ } ++ /* set battery percentage */ ++ *battery_percentage = sharpsl_jacket_battery_percentage; ++ } ++ }else{ ++ *battery_status = APM_BATTERY_STATUS_FAULT; ++ *battery_flag = APM_BATTERY_STATUS_FAULT << 1; ++ /* set battery percentage */ ++ *battery_percentage = 0; ++ } ++ ++ /* set battery life */ ++ *battery_life = APM_BATTERY_LIFE_UNKNOWN; ++ ++ return APM_SUCCESS; ++} ++ ++ ++/*** battery main thread ***********************************************************/ ++// waitms : waitms*10 msec wait ++// flag : 0 : check battery w/o reflcting battery status. ++// 1 : check battery w/ reflcting battery status. ++// 2 : check battery w/ refresh battery status. ++void sharpsl_kick_battery_check(int before_waitms,int after_waitms,int flag) ++{ ++ MainCntWk = MainCnt + 1; ++ ++ // before check battery ++ mdelay(before_waitms*10); ++ ++ switch (flag) { ++ case 0: ++ tosa_battery_thread_main(); ++ break; ++ case 1: ++ if ( sharpsl_main_bk_flag == 0 ) { ++ sharpsl_main_bk_flag = 1; ++ tosa_battery_thread_main(); ++ sharpsl_main_bk_flag = 0; ++ } else { ++ tosa_battery_thread_main(); ++ } ++ break; ++ case 2: ++ back_battery_status = -1; ++ back_jacket_battery_status = -1; ++ back_bu_battery_status = -1; ++ tosa_battery_thread_main(); ++ break; ++ } ++ ++ // after check battery ++ mdelay(after_waitms*10); ++} ++ ++static void tosa_request_off(void) ++{ ++ is_enabled_off = 0; ++ handle_scancode(SLKEY_OFF|KBDOWN , 1); ++ mdelay(10); ++ handle_scancode(SLKEY_OFF|KBUP , 0); ++} ++ ++static int tosa_battery_thread_main(void) ++{ ++ // start battery check ++ if ((jiffies > SHARPSL_BATTERY_CK_TIME) && (sharpsl_main_bk_flag == 0)) { ++ sharpsl_main_bk_flag = 1; ++ DPRINTK2("start check battery ! \n"); ++ } ++ ++ // get ac status. if change ac status , chk main battery. ++ sharpsl_ac_status = SHARPSL_AC_LINE_STATUS; ++ if ( back_ac_status != sharpsl_ac_status ) { ++ MainCntWk = MainCnt + 1; // chk battery ++ sharpsl_change_battery_status = 1; // change status ++ wake_up_interruptible(&battery_waitqueue); ++ } ++ back_ac_status = sharpsl_ac_status; ++ ++ // get battery status. ++ tosa_get_all_battery(); ++ ++ if ( sharpsl_ac_status == APM_AC_ONLINE ){ ++ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited ++ tosa_jc_card_limit_sel = 0; ++ }else if( !sharpsl_jacket_batt_exist ){ ++ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited ++ tosa_jc_card_limit_sel = 1; ++ }else if(!sharpsl_main_bk_flag){ ++ //default. ++ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited ++ tosa_jc_card_limit_sel = 0; ++ }else if (sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_VERYLOW || ++ sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_CRITICAL){ ++ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited ++ tosa_jc_card_limit_sel = 1; ++ }else { ++ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited ++ tosa_jc_card_limit_sel = 0; ++ } ++ ++ // if battery is low , backlight driver become to save power. ++ if ( ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_VERYLOW ) || ++ ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_CRITICAL ) ) && ++ ( (sharpsl_main_battery != back_battery_status) || (sharpsl_jacket_battery != back_jacket_battery_status) ) && ++ ( sharpsl_main_bk_flag ) && ++ ( ( !sharpsl_jacket_batt_exist ) || ( tosa_jc_card_limit_sel ) ) ) { ++ SHARPSL_LIMIT_CONTRAST(SHARPSL_CAUTION_CONTRAST); ++ } else if ( (sharpsl_main_battery != back_battery_status) || ++ (sharpsl_jacket_battery != back_jacket_battery_status) ) { ++ SHARPSL_LIMIT_CONTRAST(SHARPSL_RESET_CONTRAST); ++ } ++ ++ back_battery_status = sharpsl_main_battery; ++ back_jacket_battery_status = sharpsl_jacket_battery; ++ back_bu_battery_status = sharpsl_bu_battery; ++ ++ // good or ac in --> GOOD_COUNT ++ // low or very low --> NOGOOD_COUNT ++ if ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_HIGH ) || ( sharpsl_ac_status == APM_AC_ONLINE ) ) ++ MainCnt = SHARPSL_MAIN_GOOD_COUNT; ++ else ++ MainCnt = SHARPSL_MAIN_NOGOOD_COUNT; ++ DPRINTK("[BATT] MainCnt = %d\n",MainCnt); ++ ++ if(tosa_jacket_status_change && sharpsl_main_bk_flag){ ++ int battlow = 1; ++ ++ tosa_jacket_status_change = 0; // status clear. ++ ++ // main battery low irq control. ++ if(tosa_check_main_batt_fatal()){ ++ DPRINTK2("[BATT] IRQ: Disable BAT0\n"); ++ disable_irq(IRQ_GPIO_BAT0_LOW); ++ }else{ ++ DPRINTK2("[BATT] IRQ: Enable BAT0\n"); ++ enable_irq(IRQ_GPIO_BAT0_LOW); ++ battlow = 0; ++ } ++ ++ // jacket battery low irq control. ++ if(sharpsl_jacket_batt_exist){ ++ if(tosa_check_jacket_batt_fatal()){ ++ // jacket battery is fatal. ++ DPRINTK2("[BATT] IRQ: Disable BAT1 (jacket battery fatal)\n"); ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++ }else{ ++ DPRINTK2("[BATT] IRQ: Enable BAT1 (status change)\n"); ++ enable_irq(IRQ_GPIO_BAT1_LOW); ++ battlow = 0; ++ } ++ }else{ ++ // no jacket. ++ DPRINTK2("[BATT] IRQ: Disable BAT1 (no jacket battery)\n"); ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++ } ++ if(battlow) ++ tosa_request_off(); ++ } ++ ++#ifdef TOSA_BATTERY_FAILSAFE_LOWBAT ++ // check critical ( check fatal ) ++ if ( ( sharpsl_main_battery == SHARPSL_BATTERY_STATUS_CRITICAL ) && ++ is_enabled_off && sharpsl_main_bk_flag ) { ++ ++ if( !sharpsl_jacket_batt_exist ){ ++ tosa_request_off(); ++ DPRINTK2("[BATT] <* Fail-Safe *> Fatal Off by ADC \n"); ++ }else{ ++ if( sharpsl_jacket_battery == SHARPSL_BATTERY_STATUS_CRITICAL ){ ++ tosa_request_off(); ++ DPRINTK2("[BATT] <* Fail-Safe *>Fatal Off by ADC \n"); ++ } ++ } ++ } ++#endif ++ ++ DPRINTK("[BATT] LOWBAT0=%d\n",tosa_check_main_batt_fatal()); ++ DPRINTK("[BATT] LOWBAT1=%d\n",tosa_check_jacket_batt_fatal()); ++ ++#ifdef TOSA_BATTERY_FAILSAFE ++ if( sharpsl_jacket_batt_exist ){ ++ // jacket battery exists. (main battery always exists.) ++ if( sharpsl_main_bk_flag && is_enabled_off && ++ tosa_check_main_batt_fatal() && tosa_check_jacket_batt_fatal() ){ ++ ++ tosa_request_off(); ++ DPRINTK("Fatal Off by DETECTOR\n"); ++ } ++ }else{ ++ if( sharpsl_main_bk_flag && is_enabled_off && ++ ( ( GPLR(GPIO_BAT0_LOW) & GPIO_bit(GPIO_BAT0_LOW) ) == 0 ) ){ ++ tosa_request_off(); ++ DPRINTK("Fatal Off by DETECTOR\n"); ++ } ++ } ++#endif ++ ++ if(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF){ ++ CHARGE_0_ON(); ++ }else{ ++ } ++ ++#ifdef TOSA_FOR_ENGLISH ++ if(IS_ENGLISH_MODEL() && sharpsl_main_bk_flag){ ++ ++ int detected_charge_full = 0; ++ ++ // In other than the Japanese version, ++ // the following processings are performed. ++ // Charging LED is switched off on a full charge. ++ ++ switch(GET_CHARGE_FULL_STATE()){ ++ case DISCONNECT_AC: ++ DPRINTK5("DISCONNECT_AC\n"); ++ if( sharpsl_ac_status == APM_AC_ONLINE ){ ++ DPRINTK5("* (%d) ac in !\n",tosa_charge_full_state); ++ SET_CHARGE_FULL_STATE(CONNECT_AC); ++ } ++ break; ++ case CONNECT_AC: ++ DPRINTK5("CONNECT_AC\n"); ++ if( sharpsl_ac_status == APM_AC_OFFLINE ){ ++ DPRINTK5("* (%d) ac out !\n",tosa_charge_full_state); ++ SET_CHARGE_FULL_STATE(DISCONNECT_AC); ++ break; ++ } ++ ++ DPRINTK5("* (%d) ac in !\n",tosa_charge_full_state); ++ DPRINTK5("* TC6393_SYS_GPOOECR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPOOECR1)); ++ DPRINTK5("* TC6393_SYS_GPODSR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1)); ++ tosa_decide_charge_full_counter = 0; ++ detected_charge_full = SHARPSL_MAIN_BATT_FULL; ++ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){ ++ detected_charge_full = SHARPSL_JACKET_BATT_FULL; ++ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ } ++ if( detected_charge_full ){ ++ SET_CHARGE_FULL_STATE(DETECT_CHARGE_FULL); ++ tosa_decide_charge_full_counter = jiffies; ++ break; ++ } ++ break; ++ case DETECT_CHARGE_FULL: ++ DPRINTK5("DETECT_CHARGE_FULL !\n",tosa_charge_full_state); ++ DPRINTK5("* TC6393_SYS_GPOOECR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPOOECR1)); ++ DPRINTK5("* TC6393_SYS_GPODSR1 = %08x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1)); ++ if( sharpsl_ac_status == APM_AC_OFFLINE ){ ++ DPRINTK5("* (%d) ac out !\n",tosa_charge_full_state); ++ SET_CHARGE_FULL_STATE(DISCONNECT_AC); ++ break; ++ } ++ DPRINTK5("* (%d) c = %d \n",tosa_charge_full_state,(jiffies - tosa_decide_charge_full_counter)); ++ detected_charge_full = SHARPSL_MAIN_BATT_FULL; ++ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){ ++ detected_charge_full = SHARPSL_JACKET_BATT_FULL; ++ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ } ++ if( !detected_charge_full ){ ++ DPRINTK5("* (%d) canceled charge full !\n",tosa_charge_full_state); ++ SET_CHARGE_FULL_STATE(CONNECT_AC); ++ break; ++ } ++ ++ if((jiffies - tosa_decide_charge_full_counter) > TOSA_DECIDE_CHARGE_FULL_COUNTER){ ++ DPRINTK5("* (%d) fixed charge full !\n",tosa_charge_full_state); ++ CHARGE_LED_OFF(); ++ SET_CHARGE_FULL_STATE(DECIDE_CHARGE_FULL); ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ break; ++ } ++ break; ++ case DECIDE_CHARGE_FULL: ++ DPRINTK5("DECIDE_CHARGE_FULL !\n",tosa_charge_full_state); ++ if( sharpsl_ac_status == APM_AC_OFFLINE ){ ++ DPRINTK5("* (%d)ac out !\n",tosa_charge_full_state); ++ CHARGE_LED_OFF(); ++ SET_CHARGE_FULL_STATE(DISCONNECT_AC); ++ break; ++ } ++ detected_charge_full = SHARPSL_MAIN_BATT_FULL; ++ DPRINTK5("* (%d) main charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ if( detected_charge_full && sharpsl_jacket_exist && sharpsl_jacket_batt_exist ){ ++ detected_charge_full = SHARPSL_JACKET_BATT_FULL; ++ DPRINTK5("* (%d) jacket charge full = %d!\n",tosa_charge_full_state,detected_charge_full); ++ } ++ if( !detected_charge_full ){ ++ DPRINTK5("* (%d)canceled charge full !\n",tosa_charge_full_state); ++ CHARGE_LED_ON(); ++ SET_CHARGE_FULL_STATE(CONNECT_AC); ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ break; ++ } ++ break; ++ default: ++ DPRINTK5("* (%d)error state !\n",tosa_charge_full_state); ++ SET_CHARGE_FULL_STATE(DISCONNECT_AC); ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ break; ++ } ++ } ++#endif // TOSA_FOR_ENGLISH ++ return 0; ++} ++ ++ ++static int tosa_battery_thread(void* unused) ++{ ++ strcpy(current->comm, "sharpsl_bat"); ++ sharpsl_check_time = SHARPSL_BATCHK_TIME; ++ ++ while(1) { ++ interruptible_sleep_on_timeout((wait_queue_head_t*)&battery_queue, sharpsl_check_time ); ++ ++ // AC adapter is inserted , but charging not start. ++ // SW can not confirm inserted AC adapter, so kick ! ++ if ( ( charge_status == 0 ) && ( sharpsl_ac_status == APM_AC_ONLINE )) { ++ wake_up(&charge_on_queue); ++ } else if ( ( charge_status == 1 ) && ( sharpsl_ac_status == APM_AC_OFFLINE )) { ++ wake_up(&charge_off_queue); ++ } ++ ++ /* check battery ! */ ++ tosa_battery_thread_main(); ++ } ++ return 0; ++} ++ ++ ++ ++// TOSA-FUNCTIONS ++ ++static void tosa_charge_on_off(int nsel,int on) ++{ ++ switch(nsel) { ++ case SEL_MAIN: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_CHARGE_OFF; ++ if(on){ ++ if((TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF) != TC6393_CHARGE_OFF){ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF; ++ mdelay(1); ++ } ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_CHARGE_OFF; ++ mdelay(1); ++ }else{ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF; ++ } ++ break; ++ case SEL_JACKET: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_CHARGE_OFF_JC; ++ if(on){ ++ if((TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC) != TC6393_CHARGE_OFF_JC){ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF_JC; ++ mdelay(1); ++ } ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_CHARGE_OFF_JC; ++ mdelay(1); ++ }else{ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_CHARGE_OFF_JC; ++ } ++ break; ++ default: ++ printk("%s: parameter error !\n",__func__); ++ break; ++ } ++} ++ ++// ++// 0:main 1:jacket 2:backup ++// ++static int tosa_get_sel_battery(int nsel) //[Fix] ++{ ++ int i = 0; ++ BATTERY_THRESH *thresh; ++ int voltage; ++ ++ while(1) { ++ voltage = tosa_read_battery(nsel); ++ if ( voltage > 0 ) break; ++ if ( i++ > 5 ) { ++ switch(nsel) { ++ case SEL_MAIN: ++ voltage = sharpsl_main_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET; ++ break; ++ case SEL_JACKET: ++ voltage = sharpsl_jacket_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET; ++ break; ++ case SEL_BU: ++ voltage = sharpsl_bu_battery_thresh_fl[0].voltage + TOSA_BATTERY_AD_OFFSET; ++ break; ++ } ++ printk("please fix me! can not read battery[%d] \n",nsel); ++ break; ++ } ++ } ++ ++ voltage = tosa_cnv_battery(nsel,voltage); ++ thresh = tosa_get_sel_level(nsel,voltage); ++ ++ switch(nsel) { ++ case SEL_MAIN: ++ if ( sharpsl_main_bk_flag == 0 ) { ++ return sharpsl_main_battery; ++ } ++ sharpsl_main_battery = thresh->status; ++ sharpsl_main_battery_percentage = thresh->percentage; ++ break; ++ case SEL_JACKET: ++ if ( sharpsl_main_bk_flag == 0 ) { ++ return sharpsl_jacket_battery; ++ } ++ sharpsl_jacket_battery = thresh->status; ++ sharpsl_jacket_battery_percentage = thresh->percentage; ++ break; ++ case SEL_BU: ++ sharpsl_bu_battery = thresh->status; ++ sharpsl_bu_battery_percentage = thresh->percentage; ++ break; ++ } ++ ++ // Value is kept until it will operate OFF and AC, once low AD comes out. ++ switch(nsel){ ++ case SEL_MAIN: ++ if ( sharpsl_main_battery_percentage < sharpsl_main_percent_bk ) { ++ sharpsl_main_status_bk = sharpsl_main_battery; ++ sharpsl_main_percent_bk = sharpsl_main_battery_percentage; ++ ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ } else { ++ sharpsl_main_battery = sharpsl_main_status_bk; ++ sharpsl_main_battery_percentage = sharpsl_main_percent_bk; ++ } ++ return sharpsl_main_battery; ++ break; ++ case SEL_JACKET: ++ if ( sharpsl_jacket_battery_percentage < sharpsl_jacket_percent_bk) { ++ sharpsl_jacket_status_bk = sharpsl_jacket_battery; ++ sharpsl_jacket_percent_bk = sharpsl_jacket_battery_percentage; ++ ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ } else { ++ sharpsl_jacket_battery = sharpsl_jacket_status_bk; ++ sharpsl_jacket_battery_percentage = sharpsl_jacket_percent_bk; ++ } ++ return sharpsl_jacket_battery; ++ break; ++ case SEL_BU: ++ if ( sharpsl_bu_battery_percentage < sharpsl_bu_percent_bk ) { ++ sharpsl_bu_status_bk = sharpsl_bu_battery; ++ sharpsl_bu_percent_bk = sharpsl_bu_battery_percentage; ++ ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++ } else { ++ sharpsl_bu_battery = sharpsl_bu_status_bk; ++ sharpsl_bu_battery_percentage = sharpsl_bu_percent_bk; ++ } ++ return sharpsl_bu_battery; ++ break; ++ } ++ return sharpsl_main_battery; ++} ++ ++// 0:main 1:jacket 2:backup ++static int tosa_read_battery(int nsel) //[Fix] ++{ ++ int voltage = -1; ++ ++ switch (nsel){ ++ case SEL_MAIN: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT1_V_ON | TC6393_BAT_SW_ON); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT0_V_ON; ++ mdelay(TOSA_BATTERY_READ_WAIT_TIME); ++ voltage = tosa_get_dac_value(BATT_V); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON); ++ DPRINTK("[BATT] main voltage = %d \n",voltage); ++ break; ++ case SEL_JACKET: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT_SW_ON); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT1_V_ON; ++ mdelay(TOSA_BATTERY_READ_WAIT_TIME); ++ voltage = tosa_get_dac_value(BATT_V); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_V_ON | TC6393_BAT1_V_ON | TC6393_BAT_SW_ON); ++ DPRINTK("[BATT] jacket voltage = %d \n",voltage); ++ break; ++ case SEL_BU: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= (TC6393_BU_CHRG_ON); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= (TC6393_BU_CHRG_ON); ++ mdelay(TOSA_BATTERY_READ_WAIT_TIME); ++ voltage = tosa_get_dac_value(BU_V); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BU_CHRG_ON; ++ DPRINTK("[BATT] backup voltage = %d \n",voltage); ++ break; ++ default: ++ printk("%s: parameter error !\n",__func__); ++ break; ++ } ++ return voltage; ++} ++ ++static int tosa_read_temp(int nsel) //[Fix] ++{ ++ int temp = -1; ++ ++ switch (nsel){ ++ case SEL_MAIN: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT0_TH_ON | TC6393_BAT1_TH_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT0_TH_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT1_TH_ON; ++ mdelay(TOSA_TEMP_READ_WAIT_TIME); ++ temp = tosa_get_dac_value(BATT_TH); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_TH_ON|TC6393_BAT1_TH_ON); ++ break; ++ case SEL_JACKET: ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT0_TH_ON | TC6393_BAT1_TH_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT1_TH_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT0_TH_ON; ++ mdelay(TOSA_TEMP_READ_WAIT_TIME); ++ temp = tosa_get_dac_value(BATT_TH); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~(TC6393_BAT0_TH_ON|TC6393_BAT1_TH_ON); ++ break; ++ default: ++ printk("%s: parameter error !\n",__func__); ++ break; ++ } ++ return temp; ++} ++ ++static int tosa_read_battery_avg(int nsel) ++{ ++ int temp,i; ++ int buff[5]; ++ ++ for(i=0;i<5;i++) { ++ buff[i] = tosa_read_battery(nsel); ++ } ++ temp = get_select_val(buff); ++ return temp; ++} ++ ++static int tosa_read_temp_avg(int nsel) //[Fix] ++{ ++ int temp,i; ++ int buff[5]; ++ ++ for(i=0;i<5;i++) { ++ buff[i] = tosa_read_temp(nsel); ++ } ++ temp = get_select_val(buff); ++ return temp; ++} ++ ++static int tosa_check_battery_error(int nsel,int thresh) ++{ ++ int temp; ++ ++ if ( in_interrupt() ) { ++ printk("%s: call in interrupt.\n",__func__); ++ return 1; ++ } ++ temp = tosa_read_battery_avg(nsel); ++ ++ if ( temp < thresh ) return 1; // (1) battery error! ++ ++ return 0; // (0) battery ok! ++} ++ ++static int tosa_check_battery_exist(int nsel,int thresh) //[Fix] ++{ ++ int temp; ++ ++ if ( in_interrupt() ) { ++ printk("%s: call in interrupt.<nsel:%d>\n",__func__,nsel); ++ return 1; ++ } ++ temp = tosa_read_temp_avg(nsel); ++ DPRINTK3("[BATT] batt exist check <nsel = %d, temp = %d>\n",nsel,temp); ++ ++ if ( temp > thresh ) return 1; // (1) not exist ++ ++ return 0; // (0) exist ++} ++ ++static int tosa_check_main_battery_error(void) ++{ ++ // 0: not error , 1: error ++ return tosa_check_battery_error(SEL_MAIN, TOSA_MAIN_BATTERY_ERR_THRESH); ++} ++ ++static int tosa_check_jacket_battery_error(void) ++{ ++ // 0: not error , 1: error ++ return tosa_check_battery_error(SEL_JACKET, TOSA_JACKET_BATTERY_ERR_THRESH); ++} ++ ++static int tosa_check_main_battery_not_exist(void) //[Fix] ++{ ++#ifdef TOSA_BATTERY_SKIP ++ return 0; ++#endif //TOSA_BATTERY_SKIP ++ ++ // 0: exist , 1: not exist ++ return tosa_check_battery_exist(SEL_MAIN, TOSA_MAIN_BATTERY_EXIST_THRESH); ++} ++ ++static int tosa_check_jacket_battery_not_exist(void) //[Fix] ++{ ++ // 0: exist , 1: not exist ++ return tosa_check_battery_exist(SEL_JACKET, TOSA_JACKET_BATTERY_EXIST_THRESH); ++} ++ ++static int tosa_read_main_battery(void) ++{ ++ return tosa_get_sel_battery(SEL_MAIN); ++} ++ ++static int tosa_read_jacket_battery(void) ++{ ++ return tosa_get_sel_battery(SEL_JACKET); ++} ++ ++static int tosa_read_backup_battery(void) ++{ ++ return tosa_get_sel_battery(SEL_BU); ++} ++ ++static int tosa_check_main_batt_fatal(void) ++{ ++ int i; ++ for(i=0;i<2;i++){ ++ udelay(1); ++ if(!SHARPSL_MAIN_BATT_FATAL) return 0; ++ } ++ return 1; // (1) fatal ++} ++ ++static int tosa_check_jacket_batt_fatal(void) ++{ ++ int i; ++ for(i=0;i<2;i++){ ++ udelay(1); ++ if(!SHARPSL_JACKET_BATT_FATAL) return 0; ++ } ++ return 1; // (1) fatal ++} ++ ++static void tosa_charge_start(void) //[Fix] ++{ ++ if ( tosa_check_main_battery_not_exist() ) { ++ ++ /* error led on */ ++ CHARGE_LED_ERR(); ++ ++ /* charge status flag reset */ ++ charge_status = 0; ++ ++ } else { ++ ++ /* led on */ ++ CHARGE_LED_OFF(); ++ CHARGE_LED_ON(); ++ ++ /* charge status flag set */ ++ charge_status = 1; ++ } ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++} ++ ++static void tosa_charge_stop(void) //[Fix] ++{ ++ if ( tosa_check_main_battery_not_exist() ){ ++ ++ /* error led on */ ++ CHARGE_LED_ERR(); ++ ++ /* charge status flag reset */ ++ charge_status = 0; ++ ++ }else{ ++ /* led off */ ++ CHARGE_LED_OFF(); ++ ++ /* charge status flag reset */ ++ charge_status = 0; ++ } ++ sharpsl_change_battery_status = 1; ++ wake_up_interruptible(&battery_waitqueue); ++} ++ ++ ++static void tosa_reset_battery_info(void) ++{ ++ sharpsl_main_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++ sharpsl_main_percent_bk = 100; ++ sharpsl_jacket_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++ sharpsl_jacket_percent_bk = 100; ++ sharpsl_bu_status_bk = SHARPSL_BATTERY_STATUS_HIGH; ++ sharpsl_bu_percent_bk = 100; ++ ++ sharpsl_ad_index_main = 0; ++ sharpsl_ad_index_jacket = 0; ++ sharpsl_ad_index_bu = 0; ++} ++ ++static int tosa_ac_line_status(int m_sec) ++{ ++ int ac_status=(( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE); ++ int counter=0; ++ if(m_sec == 0) return ac_status; ++ while(1){ ++ mdelay(1); ++ if(ac_status == (( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE)){ ++ counter++; ++ }else{ ++ ac_status = (( GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN) ) ? APM_AC_OFFLINE : APM_AC_ONLINE); ++ counter=0; ++ } ++ if(counter>m_sec) break; ++ } ++ return ac_status; ++} ++ ++////////////////////// ++ ++void sharpsl_kick_battery_check_queue(void) ++{ ++ MainCntWk = MainCnt + 1; ++ wake_up(&battery_queue); ++} ++ ++void sharpsl_kick_jacket_check_queue(void) ++{ ++ wake_up_interruptible(&jacket_chk_queue); ++} ++ ++void sharpsl_charge_start(void) ++{ ++ tosa_charge_start(); ++} ++ ++int sharpsl_get_main_battery(void) ++{ ++ return tosa_read_main_battery(); ++} ++ ++void sharpsl_request_dac_init(void) ++{ ++ tosa_dac_init = 0; ++} ++ ++static int tosa_charge_on(void* unused) ++{ ++ ++ // daemonize(); ++ strcpy(current->comm, "battchrgon"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ interruptible_sleep_on(&charge_on_queue); ++ ++ if (SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE) continue; ++ ++ // flag clear ++ tosa_reset_battery_info(); ++ ++ is_ac_adaptor = 1; ++ ++ tosa_charge_start(); ++ } ++ return 0; ++} ++ ++ ++static int tosa_charge_off(void* unused) ++{ ++ // daemonize(); ++ strcpy(current->comm, "battchrgoff"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ interruptible_sleep_on(&charge_off_queue); ++ ++ if (SHARPSL_AC_LINE_STATUS == APM_AC_ONLINE) continue; ++ ++ tosa_reset_battery_info(); ++ ++ is_ac_adaptor = 0; ++ ++ tosa_charge_stop(); ++ } ++ return 0; ++} ++ ++static int tosa_fatal_check(void* unused) ++{ ++ int is_fatal; ++ ++ // daemonize(); ++ strcpy(current->comm, "fatalchk"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ interruptible_sleep_on(&fatal_chk_queue); ++ ++ is_fatal=0; ++ ++ DPRINTK2("[BATT] BAT0LOW OR BAT1LOW IRQ \n"); ++ if(tosa_check_main_batt_fatal()){ ++ disable_irq(IRQ_GPIO_BAT0_LOW); ++ DPRINTK2("[BATT] IRQ: Disable BAT0\n"); ++ is_fatal = 1; ++ } ++ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ if(tosa_check_jacket_batt_fatal()){ ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++ DPRINTK2("[BATT] IRQ: Disable BAT1\n"); ++ }else{ ++ is_fatal = 0; ++ } ++ } ++ ++ if(is_fatal){ ++ DPRINTK2("[BATT] FATAL OFF !!!\n"); ++ tosa_request_off(); ++ }else{ ++ DPRINTK2("[BATT] FATAL OFF CANCEL !\n"); ++ } ++ } ++ return 0; ++} ++ ++static int tosa_jacket_check(void* unused) ++{ ++ int sts; ++ ++ // daemonize(); ++ strcpy(current->comm, "jacketchk"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ interruptible_sleep_on(&jacket_chk_queue); ++ ++ sts = tosa_get_jacket_status(); ++ if (sts == 0){ ++ mod_timer(&jacket_kick_timer, ++ jiffies + HZ / 100 * TOSA_JC_CHECK_WAIT_TIME); ++ }else{ ++ sharpsl_kick_battery_check_queue(); ++ } ++ } ++ return 0; ++} ++ ++// card error ( System must eject the card ) ++// RET = 0:no error, bit0:pcmcia slot0, bit1:pcmcia slot1, bit2:sdslot0 ++int sharpsl_get_cardslot_error(void) ++{ ++ int cardslot_err = tosa_cardslot_error; ++ //printk("%s:\n",__func__); ++ tosa_cardslot_error = 0; // clear ++ return cardslot_err; ++} ++ ++/*** Int ***********************************************************************/ ++ ++static void tosa_jacket_kick_timer(void) ++{ ++ sharpsl_kick_jacket_check_queue(); ++} ++ ++static void sharpsl_ac_kick_timer(void) ++{ ++ int level = tosa_ac_line_status(0); ++ int match = 0; ++ int err = 0; ++ ++ while(1) { ++ if ( level == tosa_ac_line_status(0) ) { ++ match++; ++ } else { ++ level = tosa_ac_line_status(0); ++ match = 0; ++ err++; ++ } ++ if ( match > 1 ) break; ++ if ( err > 50 ) { ++ // if ac port is not stable , so use last port data. ++ level = tosa_ac_line_status(0); ++ printk("err : ac port\n"); ++ break; ++ } ++ } ++ ++#if 1 // Hardware Issue. ++ if ( charge_status == 1 && level == APM_AC_OFFLINE ){ ++ // AC IN -> OUT ++ wake_up(&charge_off_queue); ++ }else if ( charge_status == 0 && level == APM_AC_ONLINE ){ ++ // AC OUT -> IN ++ wake_up(&charge_on_queue); ++ } ++#else ++ if ( level == APM_AC_OFFLINE ) { ++ /* High->Low : desert */ ++ wake_up(&charge_off_queue); ++ } else { ++ /* Low->High : assert */ ++ wake_up(&charge_on_queue); ++ } ++#endif ++ ++ sharpsl_kick_battery_check_queue(); ++} ++ ++static void tosa_jacket_interrupt(int irq, void *dummy, struct pt_regs *fp) ++{ ++ mod_timer(&jacket_kick_timer, jiffies + HZ / 100); ++} ++ ++static void tosa_ac_interrupt(int irq, void *dummy, struct pt_regs *fp) ++{ ++ mod_timer(&ac_kick_timer, jiffies + HZ / 100); ++} ++ ++static void tosa_main_batt_fatal_interrupt(int irq, void *dummy, struct pt_regs *fp) ++{ ++ wake_up_interruptible(&fatal_chk_queue); ++} ++ ++static void tosa_jacket_batt_fatal_interrupt(int irq, void *dummy, struct pt_regs *fp) ++{ ++ wake_up_interruptible(&fatal_chk_queue); ++} ++ ++/*** get adc *********************************************************************/ ++ ++static int tosa_cnv_battery(int nsel,int ad) ++{ ++ int ad_val = 0; ++ int ret = -1,i; ++ ++ switch(nsel){ ++ case SEL_MAIN: ++ if ( sharpsl_main_battery != SHARPSL_BATTERY_STATUS_HIGH ) { ++ sharpsl_ad_index_main = 0; ++ return ad; ++ } ++ sharpsl_ad_main[sharpsl_ad_index_main] = ad; ++ sharpsl_ad_index_main++; ++ if ( sharpsl_ad_index_main >= SHARPSL_CNV_VALUE_NUM ) { ++ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++) ++ sharpsl_ad_main[i] = sharpsl_ad_main[i+1]; ++ sharpsl_ad_index_main = SHARPSL_CNV_VALUE_NUM -1; ++ } ++ for(i=0;i<sharpsl_ad_index_main;i++) ++ ad_val += sharpsl_ad_main[i]; ++ ret = ( ad_val / sharpsl_ad_index_main ); ++ break; ++ case SEL_JACKET: ++ if ( sharpsl_jacket_battery != SHARPSL_BATTERY_STATUS_HIGH ) { ++ sharpsl_ad_index_jacket = 0; ++ return ad; ++ } ++ sharpsl_ad_jacket[sharpsl_ad_index_jacket] = ad; ++ sharpsl_ad_index_jacket++; ++ if ( sharpsl_ad_index_jacket >= SHARPSL_CNV_VALUE_NUM ) { ++ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++) ++ sharpsl_ad_jacket[i] = sharpsl_ad_jacket[i+1]; ++ sharpsl_ad_index_jacket = SHARPSL_CNV_VALUE_NUM -1; ++ } ++ for(i=0;i<sharpsl_ad_index_jacket;i++) ++ ad_val += sharpsl_ad_jacket[i]; ++ ret = ( ad_val / sharpsl_ad_index_jacket ); ++ break; ++ case SEL_BU: ++ if ( sharpsl_bu_battery != SHARPSL_BATTERY_STATUS_HIGH ) { ++ sharpsl_ad_index_bu = 0; ++ return ad; ++ } ++ sharpsl_ad_bu[sharpsl_ad_index_bu] = ad; ++ sharpsl_ad_index_bu++; ++ if ( sharpsl_ad_index_bu >= SHARPSL_CNV_VALUE_NUM ) { ++ for(i=0;i<(SHARPSL_CNV_VALUE_NUM-1);i++) ++ sharpsl_ad_bu[i] = sharpsl_ad_bu[i+1]; ++ sharpsl_ad_index_bu = SHARPSL_CNV_VALUE_NUM -1; ++ } ++ for(i=0;i<sharpsl_ad_index_bu;i++) ++ ad_val += sharpsl_ad_bu[i]; ++ ret = ( ad_val / sharpsl_ad_index_bu ); ++ break; ++ default: ++ printk("%s: parameter error !\n",__func__); ++ break; ++ } ++ return ret; ++} ++ ++static void tosa_get_all_battery(void) //[Fix] ++{ ++ MainCntWk++; ++ ++ if ( MainCntWk > MainCnt ) { ++ ++ MainCntWk = 0; ++ ++ // check main battery status. ++ tosa_read_main_battery(); ++ ++ // check backup battery status. ++ tosa_read_backup_battery(); ++ ++ if (sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ // jacket exists , and jacket's battery exists. ++ // check jacket battery status. ++ tosa_read_jacket_battery(); ++ DPRINTK3("[BATT] jacket-unit is existend, and battery is existent therein.\n"); ++ }else{ ++ if(!sharpsl_jacket_exist){ ++ DPRINTK3("[BATT] jacket-unit is non-existent.\n"); ++ }else{ ++ DPRINTK3("[BATT] jacket-unit is existent, but battery is non-existent therein.\n"); ++ } ++ } ++ ++ }else{ ++ DPRINTK("[BATT] MainCntWk = %d\n",MainCntWk); ++ } ++} ++ ++static BATTERY_THRESH *tosa_get_sel_level(int nsel, int Volt ) ++{ ++ int i; ++ BATTERY_THRESH *thresh; ++ ++ //DPRINTK(" volt = %d \n",Volt); ++ ++ switch(nsel){ ++ case SEL_MAIN: ++ if (counter_step_contrast > 2) ++ thresh = sharpsl_main_battery_thresh_fl; ++ else ++ thresh = sharpsl_main_battery_thresh_nofl; ++ break; ++ case SEL_JACKET: ++ if (counter_step_contrast > 2) ++ thresh = sharpsl_jacket_battery_thresh_fl; ++ else ++ thresh = sharpsl_jacket_battery_thresh_nofl; ++ break; ++ case SEL_BU: ++ if (counter_step_contrast > 2) ++ thresh = sharpsl_bu_battery_thresh_fl; ++ else ++ thresh = sharpsl_bu_battery_thresh_nofl; ++ break; ++ default: ++ printk("%s: parameter error !\n",__func__); ++ thresh = sharpsl_main_battery_thresh_fl; ++ break; ++ } ++ for (i = 0; thresh[i].voltage > 0; i++) { ++ if (Volt >= (thresh[i].voltage + TOSA_BATTERY_AD_OFFSET)) ++ return &thresh[i]; ++ } ++ return &thresh[i]; ++} ++ ++/* ++ * Translate Analog signal to Digital data ++ */ ++static int tosa_get_dac_value(int channel) //[Fix] ++{ ++ unsigned short indata; ++ int voltage; ++ ++ ++ lock_FCS(POWER_MODE_BATTERY, 1); ++ ++ battery_off_flag = 0; ++ ++ if (tosa_dac_init == 0){ ++ ac97_write(AC97_TS_REG2, 0xc009); ++ ac97_write(AC97_TS_REG1, 0x0030); ++ //ac97_bit_set(AC97_ADITFUNC1, (1<<1)); ++ set_GPIO_mode(GPIO32_SDATA_IN1_AC97_MD); ++ tosa_dac_init = 1; ++ } ++ ++ wm9712_power_mode_ts(WM9712_PWR_TP_CONV); ++ if ((voltage = ac97_ad_input(channel,&indata)) == 0){ ++ voltage = (int)(indata & 0xfff); ++ } ++ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT); ++ ++#ifdef TOSA_BATTERY_SKIP ++ voltage = 0xfff; // for TEST ++#endif //TOSA_BATTERY_SKIP ++ ++ lock_FCS(POWER_MODE_BATTERY, 0); ++ ++ if ( battery_off_flag ) ++ voltage = -1; ++ ++ return voltage; ++} ++ ++ ++static int get_select_val(int *val) ++{ ++ int i,j,k,temp,sum = 0; ++ ++ // Get MAX ++ temp = val[0]; ++ j=0; ++ for(i=1;i<5;i++) { ++ if ( temp < val[i] ) { temp = val[i]; j = i; } ++ } ++ ++ // Get MIN ++ temp = val[4]; ++ k=4; ++ for(i=3;i>=0;i--) { ++ if ( temp > val[i] ) { temp = val[i]; k = i; } ++ } ++ ++ for(i=0;i<5;i++) { ++ if ( i == j || i == k ) continue; ++ sum += val[i]; ++ } ++ return ( sum / 3 ); ++} ++ ++ ++/*** PM *************************************************************************/ ++ ++#ifdef CONFIG_PM ++static int Sharpsl_battery_pm_callback(struct pm_dev *pm_dev, pm_request_t req, void *data) ++{ ++ switch (req) { ++ case PM_SUSPEND: ++ ++ disable_irq(IRQ_GPIO_AC_IN); ++ disable_irq(IRQ_GPIO_JACKET_DETECT); ++#ifndef TOSA_BATTERY_SKIP ++ disable_irq(IRQ_GPIO_BAT0_LOW); ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++#endif ++ ++ // flag clear ++ tosa_reset_battery_info(); ++ ++ tosa_off_main_batt_full = 0; ++ tosa_off_jacket_batt_full = 0; ++ tosa_off_check_jacket_req = 0; ++ ++ if ( !sharpsl_main_bk_flag ) ++ sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH; ++ ++ battery_off_flag = 1; ++ ++ CHARGE_LED_OFF(); ++ charge_status = 0; ++ pass_charge_flag = 0; ++ ++ apm_wakeup_src_mask |= ( GPIO_bit(GPIO_AC_IN) | ++ GPIO_bit(GPIO_JACKET_DETECT) ); ++ apm_wakeup_src_mask &= ~( GPIO_bit(GPIO_BAT0_CRG) | GPIO_bit(GPIO_BAT1_CRG) ); ++ ++ // wake up by key ++ apm_wakeup_src_mask |= GPIO_bit(0); ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ tosa_charge_full_enable = 0; ++ tosa_charge_full_counter = 0; ++ tosa_charge_full_main_batt = 0; ++ tosa_charge_full_jacket_batt = 0; ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ break; ++ ++ case PM_RESUME: ++ is_enabled_off = 1; ++ MainCntWk = MainCnt + 1; // chk battery ++ back_battery_status = -1; ++ back_jacket_battery_status = -1; ++ back_bu_battery_status = -1; ++ back_ac_status = -1; ++ tosa_dac_init = 0; ++ sharpsl_ad_index_main = 0; ++ sharpsl_ad_index_jacket = 0; ++ sharpsl_ad_index_bu = 0; ++ tosa_off_check_jacket_req = 0; ++#ifdef TOSA_FOR_ENGLISH ++ if(IS_ENGLISH_MODEL()){ ++ SET_CHARGE_FULL_STATE(DISCONNECT_AC); ++ tosa_decide_charge_full_counter = 0; ++ } ++#endif // TOSA_FOR_ENGLISH ++ ++ DPRINTK("[BATT] kick ac check!\n"); ++ // AC insert , so kick the charging ++ if (SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE) { ++ wake_up(&charge_on_queue); ++ } else { ++ wake_up(&charge_off_queue); ++ } ++ ++ DPRINTK2("[BATT] kick jacket check!\n"); ++ tosa_get_jacket_status_for_on(); ++ tosa_off_jc_card_limit(); ++ ++ CHARGE_0_ON(); ++ ++ DPRINTK("[BATT] kick battery check!\n"); ++ sharpsl_kick_battery_check_queue(); ++ ++ DPRINTK("[BATT] enabled all irq!\n"); ++#ifndef TOSA_BATTERY_SKIP ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++ disable_irq(IRQ_GPIO_BAT0_LOW); ++#endif ++ enable_irq(IRQ_GPIO_JACKET_DETECT); ++ enable_irq(IRQ_GPIO_AC_IN); ++ break; ++ } ++ return 0; ++} ++#endif ++ ++/*** check fatal battery ************************************************/ ++// Fatal : 0 ++// OK : 1 ++unsigned short chkFatalBatt(void) ++{ ++ int volt,thresh_mbat,thresh_jbat; ++ int charge_value; ++ ++ DPRINTK("[BATT] check fatal battery\n"); ++ ++ if (SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE ) { ++ thresh_mbat = TOSA_MAIN_BATT_FATAL_ACIN_VOLT; ++ thresh_jbat = TOSA_JACKET_BATT_FATAL_ACIN_VOLT; ++ }else{ ++ thresh_mbat = TOSA_MAIN_BATT_FATAL_NOACIN_VOLT; ++ thresh_jbat = TOSA_JACKET_BATT_FATAL_NOACIN_VOLT; ++ } ++ ++ charge_value = TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF; //Main ++ CHARGE_0_OFF(); //Main ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT_SW_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT_SW_ON; ++ mdelay(TOSA_DISCHARGE_WAIT_TIME); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT_SW_ON; ++ ++ volt = tosa_read_battery_avg(SEL_MAIN); ++ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= charge_value; ++ charge_value=0; ++ mdelay(1); ++ ++ DPRINTK3("[BATT] check batt exist(1)\n"); ++ if(tosa_check_jacket_battery_not_exist()){ ++ if( volt < thresh_mbat ){ ++ DPRINTK("[BATT] main fatal battery (no jacket)\n"); ++ return 0; // MAIN BATTERY FATAL ++ } ++ }else{ ++ if( volt < thresh_mbat ){ ++ ++ charge_value = TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC; //Jacket ++ CHARGE_1_OFF(); //Jacket ++ TC6393_SYS_REG(TC6393_SYS_GPOOECR1) |= TC6393_BAT_SW_ON; ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BAT_SW_ON; ++ mdelay(TOSA_DISCHARGE_WAIT_TIME); ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BAT_SW_ON; ++ ++ volt = tosa_read_battery_avg(SEL_JACKET); ++ ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= charge_value; ++ mdelay(1); ++ ++ if( volt < thresh_jbat ){ ++ DPRINTK("[BATT] main & jacket fatal battery\n"); ++ return 0; // MAIN & JACKET BATTERY FATAL ++ } ++ } ++ } ++ DPRINTK("[BATT] not fatal\n"); ++ ++ return 1; // OK ++} ++ ++ ++/*** for suspend hook ***********************************************************/ ++#ifdef CONFIG_PM ++int sharpsl_off_charge_battery(void) ++{ ++ if ( tosa_check_main_battery_not_exist() ) { ++ ++ DPRINTK("No main battery !\n"); ++ ++ // battery error! ++ CHARGE_LED_ERR_OFF(); ++ CHARGE_LED_ERR(); ++ charge_status = 0; /* charge status flag reset */ ++ ++ // if error is occured , so led is blinking continue... ++ while(1) { ++ if (SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE) break; ++ } ++ ++ CHARGE_LED_OFF(); ++ return -1; ++ ++ } else { ++ ++ // charge start! ++ CHARGE_LED_OFF(); ++ CHARGE_LED_ON(); /* led on */ ++ charge_status = 1; /* charge status flag set */ ++ ++ } ++ return 0; ++} ++ ++static void tosa_off_jc_card_limit(void) ++{ ++ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){ ++ // ac-in. ++ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited ++ tosa_jc_card_limit_sel = 0; ++ }else if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ // ac-out, and jacket exist. ++ int volt = tosa_read_battery_avg(SEL_JACKET); ++ if(volt > TOSA_JACKET_BATT_FATAL_NOACIN_VOLT){ ++ set_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // non-limited ++ tosa_jc_card_limit_sel = 0; ++ }else{ ++ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited ++ tosa_jc_card_limit_sel = 1; ++ } ++ }else{ ++ reset_scoop_jc_gpio(SCP_JC_CARD_LIMIT_SEL); // limited ++ tosa_jc_card_limit_sel = 1; ++ } ++} ++ ++int tosa_check_charge_full(int cktime) ++{ ++ int time; ++ unsigned int ret; ++ int is_all_battery_full; ++ int jacket_state, batt_sw_state; ++ extern int sharpsl_wakeup_check_charge(void); ++ time = RCNR; ++ ++ jacket_state = (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT)); ++ batt_sw_state = SHARPSL_BAT_LOCKED_STATUS; ++ ++#if CHECK_LOG ++ printk("*** CHG_CHK_START: time=%d(%08x) ***\n",RCNR-gStartTime,RCNR); ++ printk(" MAIN AD: %08x JACKET AD %08x\n",tosa_read_battery(SEL_MAIN),tosa_read_battery(SEL_JACKET)); ++ printk(" TC6393_SYS_GPODSR1=%x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1)); ++#endif ++ ++ if(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_CHARGE_OFF_JC /*Jacket*/){ ++ if(sharpsl_jacket_batt_exist){ ++#if CHECK_LOG ++ printk(" jacket battery charge on !\n"); ++#endif ++ CHARGE_1_ON(); ++ } ++#if CHECK_LOG ++ printk(" TC6393_SYS_GPODSR1=%x\n",TC6393_SYS_REG(TC6393_SYS_GPODSR1)); ++#endif ++ } ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ if(!tosa_charge_full_enable){ ++ tosa_charge_full_enable = 1; // @ Start!! ++ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter. ++ tosa_charge_full_main_batt = tosa_read_battery(SEL_MAIN); ++ if(sharpsl_jacket_batt_exist) ++ tosa_charge_full_jacket_batt = tosa_read_battery(SEL_JACKET); ++#if CHECK_LOG ++ printk("*** CHG_FAILSAFE_COUNTER_START: time=%d(%08x) ***\n",RCNR-tosa_charge_full_counter,RCNR); ++#endif ++ } ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ ++ while(1){ ++ int jacket_batt_exist_now = 0; ++ ++ // ac out ? ++ if ( SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE ) { ++ charge_status = 0; ++ CHARGE_LED_OFF(); ++ //printk("%s: [go off] ac out !\n",__func__); ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ tosa_charge_full_enable = 0; // @ Stop!! ++#endif ++ ret = -1; ++ break; ++ } ++ ++ // check wakeup interrupt. ++ if ( ( ret = sharpsl_wakeup_check_charge() ) != 1 ) { ++ break; ++ } ++ ++ // timeout ? ++ if ( ( RCNR - time ) > SHARPSL_TOSA_WAIT_CO_TIME ) { ++ //printk("%s: [go off] finished! not full !\n",__func__); ++ ret = -1; ++ break; ++ } ++ ++ // battery switch status change ? ++ if(batt_sw_state != SHARPSL_BAT_LOCKED_STATUS){ ++ //printk("%s: [go off] battery switch status is changed !\n",__func__); ++ ret = -1; ++ break; ++ } ++ ++ // jacket detect status change ? ++ if(jacket_state != (GPLR(GPIO_JACKET_DETECT) & GPIO_bit(GPIO_JACKET_DETECT))) { ++ tosa_get_jacket_status_for_on(); ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ tosa_charge_full_enable = 0; // @ Stop!! ++#endif ++ //printk("%s: [go off] jacket status is changed !\n",__func__); ++ ret = -1; ++ break; ++ } ++ ++ // battery full ? ++ tosa_off_main_batt_full = SHARPSL_MAIN_BATT_FULL; ++ tosa_off_jacket_batt_full = 0; ++ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ tosa_off_jacket_batt_full = SHARPSL_JACKET_BATT_FULL; ++ } ++ is_all_battery_full = 0; ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ if(tosa_charge_full_enable){ ++ if((RCNR - tosa_charge_full_counter) > (TOSA_CHARGE_FULL_MAX_TIME-cktime)){ ++#if CHECK_LOG ++ printk("*** ALL BATTERY is FULL by FAILSAFE.***\n"); ++ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter); ++#endif ++ is_all_battery_full = 1; ++ } ++ } ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ ++ if(charge_status && tosa_off_main_batt_full){ ++ // main battery full ! ++#if CHECK_LOG ++ printk("\n"); ++ printk(" MAIN BATTERY is FULL.\n"); ++#endif ++ if(sharpsl_jacket_batt_exist){ ++ if(tosa_off_jacket_batt_full){ ++ // all battery full ! ++ is_all_battery_full = 1; ++#if CHECK_LOG ++ printk(" JACKET BATTERY is FULL.\n"); ++#endif ++ } ++ }else{ ++ // all battery full ! (non-jacket) ++ is_all_battery_full = 1; ++#if CHECK_LOG ++ printk(" JACKET BATTERY is NON.\n"); ++#endif ++ } ++ } ++#if CHECK_LOG ++ else{ ++ printk("."); ++ } ++#endif ++ if(is_all_battery_full){ ++ ++ // ac out ? ++ if ( SHARPSL_AC_LINE_STATUS == APM_AC_OFFLINE ) { ++ continue; ++ } ++ ++ // all battery full !!!! ++ //printk("%s: [go off] all battery full !\n",__func__); ++#if CHECK_LOG ++ printk("\n"); ++ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter); ++ printk("*** CHG_CHK_END: t=%d (%08x) ***\n",RCNR-gStartTime,RCNR); ++ printk("*** ALL BATTERY is FULL!! ***\n"); ++#endif ++ CHARGE_LED_OFF(); // led off ++ charge_status = 0; ++ pass_charge_flag = 1; ++ ret = -1; // go off. ++ return ret; ++ } ++ } ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ if(tosa_charge_full_enable){ ++ int batt_now; ++ ++#if CHECK_LOG ++ printk("\n"); ++ printk(" MAIN VOLTAGE CHECK: "); ++#endif ++ batt_now = tosa_read_battery(SEL_MAIN); ++ if((tosa_charge_full_main_batt - batt_now) >= TOSA_CHARGE_FULL_DIFF_VOLT){ ++#if CHECK_LOG ++ printk("[NG] (%d->%d)\n",tosa_charge_full_main_batt,batt_now); ++ printk(" * RESTART: time=%d \n",RCNR); ++#endif ++ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter. ++ } ++#if CHECK_LOG ++ else{ ++ printk("[OK] (%d->%d)\n",tosa_charge_full_main_batt,batt_now); ++ } ++#endif ++ tosa_charge_full_main_batt = batt_now; ++ ++#if CHECK_LOG ++ printk(" JACKET VOLTAGE CHECK: "); ++#endif ++ if(sharpsl_jacket_batt_exist){ ++ batt_now = tosa_read_battery(SEL_JACKET); ++ if((tosa_charge_full_jacket_batt - batt_now) >= TOSA_CHARGE_FULL_DIFF_VOLT){ ++ tosa_charge_full_counter = RCNR; // @ Reset Failsafe Counter. ++#if CHECK_LOG ++ printk("[NG] (%d->%d)\n",tosa_charge_full_main_batt,batt_now); ++ printk(" * RESTART: time=%d ***\n",RCNR); ++#endif ++ } ++#if CHECK_LOG ++ else{ ++ printk("[OK] (%d->%d)\n",tosa_charge_full_jacket_batt,batt_now); ++ } ++#endif ++ tosa_charge_full_jacket_batt = batt_now; ++ } ++#if CHECK_LOG ++ else{ ++ printk("[OK] (NON-JACKET)\n"); ++ } ++#endif ++ } ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++#if CHECK_LOG ++ if(tosa_charge_full_enable){ ++ printk(" CHG_FAILSAFE_COUNTER: time=%d\n",RCNR - tosa_charge_full_counter); ++ } ++#endif ++#endif ++ ++#if CHECK_LOG ++ printk("*** CHG_CHK_END: time=%d(%08x) ***\n",RCNR-gStartTime,RCNR); ++ printk("\n"); ++#endif ++ ++ pass_charge_flag = 0; ++ return ret; ++} ++ ++void tosa_check_ac_and_jacket_state(void) ++{ ++ int is_all_battery_full = 0; ++ ++ if(!pass_charge_flag){ ++ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){ ++ sharpsl_off_charge_battery(); ++ charge_status = 1; ++ CHARGE_LED_ON(); ++ }else{ ++ charge_status = 0; ++ CHARGE_LED_OFF(); ++ } ++ } ++ if(!tosa_off_check_jacket_req){ ++ return; ++ } ++ tosa_off_check_jacket_req = 0; ++ // restart charge. ++ CHARGE_ON(); ++ ++ // check jacket. ++ tosa_get_jacket_status_for_on(); ++ mdelay(100); ++ ++ tosa_off_main_batt_full = 0; ++ tosa_off_jacket_batt_full = 0; ++ charge_status = 0; ++ ++ if(SHARPSL_AC_LINE_STATUS != APM_AC_OFFLINE){ ++ // ac in. ++ tosa_off_main_batt_full = SHARPSL_MAIN_BATT_FULL; ++ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ tosa_off_jacket_batt_full = SHARPSL_JACKET_BATT_FULL; ++ } ++ //sharpsl_off_charge_battery(); ++ charge_status = 1; ++ CHARGE_LED_ON(); ++#if CHECK_LOG ++ printk("*** CHG_START: time=0(%08x) ***\n",RCNR); ++ gStartTime = RCNR; ++ printk(" MAIN AD: %d JACKET AD %d\n",tosa_read_battery(SEL_MAIN),tosa_read_battery(SEL_JACKET)); ++#endif ++ }else{ ++ // ac out. ++ charge_status = 0; ++ CHARGE_LED_OFF(); ++ } ++ ++ tosa_off_jc_card_limit(); ++ ++ DPRINTK4("[BATT]sharpsl_jacket_exist = %d\n",sharpsl_jacket_exist); ++ DPRINTK4("[BATT]sharpsl_jacket_batt_exist = %d\n",sharpsl_jacket_batt_exist); ++ DPRINTK4("[BATT]charge_status = %d\n",charge_status); ++ DPRINTK4("[BATT]main_batt_full = %d\n",tosa_off_main_batt_full); ++ DPRINTK4("[BATT]jacket_batt_full = %d\n",tosa_off_jacket_batt_full); ++ ++ pass_charge_flag = 0; ++ return; ++} ++ ++void sharpsl_battery_charge_hook(int mode) ++{ ++ switch (mode){ ++ case 0: // Main Battery Full ++ DPRINTK4("[IRQ]main battery full.\n"); ++ break; ++ case 1: // Charge Off ++ DPRINTK4("[IRQ]ac out.\n"); ++ break; ++ case 2: // Charge On ++ DPRINTK4("[IRQ]ac in.\n"); ++ break; ++ case 3: // Jacket Battery Full ++ DPRINTK4("[IRQ]jacket battery full.\n"); ++ break; ++ case 4: // Jacket Detect ++ DPRINTK4("[IRQ]check jacket.\n"); ++ break; ++ case 5: ++ DPRINTK4("[IRQ]timer.(%d)\n",RCNR); ++ tosa_check_ac_and_jacket_state(); ++ tosa_off_check_jacket_req = 0; ++ return; ++ break; ++ default: ++ return; ++ break; ++ } ++#ifdef TOSA_OFF_CHARGE_FAILSAFE ++ if(tosa_charge_full_enable){ ++ tosa_charge_full_enable = 0; ++ } ++#endif //TOSA_OFF_CHARGE_FAILSAFE ++ tosa_off_check_jacket_req = 1; ++ return; ++} ++ ++#endif /* CONFIG_PM */ ++ ++ ++/*** Config & Setup **********************************************************/ ++void battery_init(void) ++{ ++ int err; ++ ++ init_timer(&ac_kick_timer); ++ ac_kick_timer.function = (void*)sharpsl_ac_kick_timer; ++ ++ init_timer(&jacket_kick_timer); ++ jacket_kick_timer.function = (void*)tosa_jacket_kick_timer; ++ ++ GPDR(GPIO_AC_IN) &= ~GPIO_bit(GPIO_AC_IN); ++ GPDR(GPIO_BAT0_CRG) &= ~GPIO_bit(GPIO_BAT0_CRG); ++ GPDR(GPIO_BAT1_CRG) &= ~GPIO_bit(GPIO_BAT1_CRG); ++ ++ GPDR(GPIO_BAT0_LOW) &= ~GPIO_bit(GPIO_BAT0_LOW); ++ GPDR(GPIO_BAT1_LOW) &= ~GPIO_bit(GPIO_BAT1_LOW); ++ ++ printk("SHARPSL_AC_LINE_STATUS=%x\n",SHARPSL_AC_LINE_STATUS); ++ ++ /* Set transition detect */ ++ set_GPIO_IRQ_edge( GPIO_AC_IN , GPIO_BOTH_EDGES ); /* AC IN */ ++ set_GPIO_IRQ_edge( GPIO_JACKET_DETECT , GPIO_BOTH_EDGES ); ++#ifndef TOSA_BATTERY_SKIP ++ set_GPIO_IRQ_edge( GPIO_BAT0_LOW , GPIO_FALLING_EDGE ); ++ set_GPIO_IRQ_edge( GPIO_BAT1_LOW , GPIO_FALLING_EDGE ); ++#endif ++ ++ /* Register interrupt handler. */ ++ if ((err = request_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt, ++ SA_INTERRUPT, "ACIN", tosa_ac_interrupt))) { ++ printk("Could not get irq %d.\n", IRQ_GPIO_AC_IN); ++ return; ++ } ++ if ((err = request_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt, ++ SA_INTERRUPT, "JACKET_DETECT", tosa_jacket_interrupt))) { ++ printk("Could not get irq %d.\n", IRQ_GPIO_JACKET_DETECT); ++ return; ++ } ++ ++#ifndef TOSA_BATTERY_SKIP ++ if ((err = request_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt, ++ SA_INTERRUPT, "MAIN_FATAL", tosa_main_batt_fatal_interrupt))) { ++ printk("Could not get irq %d.\n", IRQ_GPIO_BAT0_LOW); ++ return; ++ } ++ disable_irq(IRQ_GPIO_BAT0_LOW); ++ ++ if ((err = request_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt, ++ SA_INTERRUPT, "JACKET_FATAL", tosa_jacket_batt_fatal_interrupt))) { ++ printk("Could not get irq %d.\n", IRQ_GPIO_BAT1_LOW); ++ return; ++ } ++ disable_irq(IRQ_GPIO_BAT1_LOW); ++#endif ++ ++ /* regist to Misc driver */ ++ misc_register(&battery_device); ++ ++ /* Make threads */ ++ kernel_thread(tosa_charge_on, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ kernel_thread(tosa_charge_off, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ kernel_thread(tosa_battery_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ kernel_thread(tosa_fatal_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ kernel_thread(tosa_jacket_check, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ ++ tosa_get_jacket_status_for_on(); ++} ++ ++ ++ ++#ifdef CONFIG_PROC_FS ++struct proc_dir_entry *proc_batt; ++ ++typedef struct sharpsl_battery_entry { ++ int* addr; ++ int def_value; ++ char* name; ++ char* description; ++ unsigned short low_ino; ++} sharpsl_battery_entry_t; ++ ++static sharpsl_battery_entry_t sharpsl_battery_params[] = { ++/* { addr, def_value, name, description }*/ ++ { &msglevel, 0, "msglevel", "debug message output level" }, ++ { &sharpsl_debug_flag , 0 , "dflag", "debug flag" }, ++ { &sharpsl_change_battery_status , 0 , "chg_status", "Change status" } ++}; ++#define NUM_OF_BATTERY_ENTRY (sizeof(sharpsl_battery_params)/sizeof(sharpsl_battery_entry_t)) ++ ++static ssize_t sharpsl_battery_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ char outputbuf[15]; ++ int count; ++ int i; ++ sharpsl_battery_entry_t *current_param = NULL; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) { ++ if (sharpsl_battery_params[i].low_ino==i_ino) { ++ current_param = &sharpsl_battery_params[i]; ++ break; ++ } ++ } ++ if (current_param==NULL) { ++ return -EINVAL; ++ } ++ count = sprintf(outputbuf, "0x%08X\n", ++ *((volatile Word *) current_param->addr)); ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t sharpsl_battery_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ sharpsl_battery_entry_t *current_param = NULL; ++ int i; ++ unsigned long param; ++ char *endp; ++ ++ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) { ++ if(sharpsl_battery_params[i].low_ino==i_ino) { ++ current_param = &sharpsl_battery_params[i]; ++ break; ++ } ++ } ++ if (current_param==NULL) { ++ return -EINVAL; ++ } ++ ++ param = simple_strtoul(buf,&endp,0); ++ if (param == -1) { ++ *current_param->addr = current_param->def_value; ++ } else { ++ *current_param->addr = param; ++ } ++ return nbytes+endp-buf; ++} ++ ++static unsigned int sharpsl_battery_poll(struct file *fp, poll_table * wait) ++{ ++ poll_wait(fp, &battery_waitqueue, wait); ++ if ( sharpsl_change_battery_status ) { ++ sharpsl_change_battery_status = 0; ++ return POLLIN | POLLRDNORM; ++ } else { ++ return 0; ++ } ++} ++ ++static struct file_operations proc_params_operations = { ++ read: sharpsl_battery_read_params, ++ write: sharpsl_battery_write_params, ++ poll: sharpsl_battery_poll, ++}; ++#endif ++ ++int __init Sharpsl_battery_init(void) ++{ ++#ifdef CONFIG_PM ++ battery_pm_dev = pm_register(PM_SYS_DEV, 0, Sharpsl_battery_pm_callback); ++#endif ++ ++ battery_init(); ++ ++#ifdef CONFIG_PROC_FS ++ { ++ int i; ++ struct proc_dir_entry *entry; ++ ++ proc_batt = proc_mkdir("driver/battery", NULL); ++ if (proc_batt == NULL) { ++ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt); ++ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt); ++#ifndef TOSA_BATTERY_SKIP ++ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt); ++ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt); ++#endif ++ misc_deregister(&battery_device); ++ printk(KERN_ERR "can't create /proc/driver/battery\n"); ++ return -ENOMEM; ++ } ++ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) { ++ entry = create_proc_entry(sharpsl_battery_params[i].name, ++ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, ++ proc_batt); ++ if (entry) { ++ sharpsl_battery_params[i].low_ino = entry->low_ino; ++ entry->proc_fops = &proc_params_operations; ++ } else { ++ int j; ++ for (j=0; j<i; j++) { ++ remove_proc_entry(sharpsl_battery_params[i].name, proc_batt); ++ } ++ remove_proc_entry("driver/battery", &proc_root); ++ proc_batt = 0; ++ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt); ++ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt); ++#ifndef TOSA_BATTERY_SKIP ++ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt); ++ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt); ++#endif ++ misc_deregister(&battery_device); ++ printk(KERN_ERR "battery: can't create /proc/driver/battery\n"); ++ return -ENOMEM; ++ } ++ } ++ } ++#endif ++ return 0; ++} ++ ++module_init(Sharpsl_battery_init); ++ ++ ++ ++#ifdef MODULE ++int init_module(void) ++{ ++ Sharpsl_battery_init(); ++ return 0; ++} ++ ++void cleanup_module(void) ++{ ++ free_irq(IRQ_GPIO_AC_IN, tosa_ac_interrupt); ++ free_irq(IRQ_GPIO_JACKET_DETECT, tosa_jacket_interrupt); ++#ifndef TOSA_BATTERY_SKIP ++ free_irq(IRQ_GPIO_BAT0_LOW, tosa_main_batt_fatal_interrupt); ++ free_irq(IRQ_GPIO_BAT1_LOW, tosa_jacket_batt_fatal_interrupt); ++#endif ++ ++#ifdef CONFIG_PROC_FS ++ { ++ int i; ++ for (i=0; i<NUM_OF_BATTERY_ENTRY; i++) { ++ remove_proc_entry(sharpsl_battery_params[i].name, proc_batt); ++ } ++ remove_proc_entry("driver/battery", NULL); ++ proc_batt = 0; ++ } ++#endif ++ ++ misc_deregister(&battery_device); ++} ++#endif /* MODULE */ ++ +diff -Nur linux_c860_org/arch/arm/mach-pxa/tosa_buzzer.c linux/arch/arm/mach-pxa/tosa_buzzer.c +--- linux_c860_org/arch/arm/mach-pxa/tosa_buzzer.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/arch/arm/mach-pxa/tosa_buzzer.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,279 @@ ++/* ++ * arch/arm/mach-pxa/tosa_buzzer.c ++ * ++ * PXA buzzer ctrl for Tosa (SHARP) ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on collie_buzzer ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * ChangeLog: ++ * 16-Jan-2003 SHARP sleep_on -> interruptible_sleep_on ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * ++ */ ++#include <linux/module.h> ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/poll.h> ++#include <linux/major.h> ++#include <linux/config.h> ++#include <linux/fcntl.h> ++#include <linux/errno.h> ++#include <linux/mm.h> ++#include <linux/malloc.h> ++#include <linux/sound.h> ++#include <linux/init.h> ++#include <linux/delay.h> ++ ++#ifdef CONFIG_PM ++#include <linux/pm.h> ++#endif /* CONFIG_PM */ ++ ++#include <asm/system.h> ++#include <asm/irq.h> ++#include <asm/pgtable.h> ++#include <asm/uaccess.h> ++#include <asm/io.h> ++#include <linux/soundcard.h> ++#include <asm/proc/cache.h> ++ ++#include <asm/sharp_char.h> ++#include <asm/arch/tosa_wm9712.h> ++ ++#undef DEBUG ++//#define DEBUG ++#ifdef DEBUG ++#define DPRINTK( x... ) printk( ##x ) ++#else ++#define DPRINTK( x... ) ++#endif ++ ++/*** sound data *********************************************************/ ++#include "poodle_key.h" ++#include "poodle_tap.h" ++#include "poodle_alarm.h" ++ ++/*** Some declarations ***********************************************/ ++static DECLARE_WAIT_QUEUE_HEAD(buzzer_proc); ++static int now_playing = 0 ; ++static int buzzer_soundid = 0; ++static int repeat_sound = 0; ++ ++ ++// following functions include tosa audio driver. ++int audio_buzzer_write(const char *,int); ++int audio_buzzer_intmode(const short *,int,int); ++int audio_buzzer_release(void); ++int audio_buzzer_open(int); ++ ++/*** buzzer ******************************************************************/ ++int tosa_buz_buffer_init() ++{ ++ return 0; ++} ++ ++int tosa_play_sound_by_id(int soundid,int volume) ++{ ++ ++ switch( soundid ){ ++ ++ case SHARP_BUZ_TOUCHSOUND: ++ if ( wm9712_busy() && !repeat_sound ) { ++ } else { ++ while (buzzer_soundid) schedule(); ++ buzzer_soundid = soundid; ++ wake_up(&buzzer_proc); ++ } ++ break; ++ ++ case SHARP_BUZ_KEYSOUND: ++ if ( wm9712_busy() && !repeat_sound ) { ++ } else { ++ while (buzzer_soundid) schedule(); ++ buzzer_soundid = soundid; ++ wake_up(&buzzer_proc); ++ } ++ break; ++ ++ case SHARP_BUZ_SCHEDULE_ALARM: ++ if ( wm9712_busy() ) { ++ buzzer_soundid = soundid; ++ wake_up(&buzzer_proc); ++ } else { ++ while (buzzer_soundid) schedule(); ++ buzzer_soundid = soundid; ++ wake_up(&buzzer_proc); ++ } ++ break; ++ ++ case SHARP_PDA_WARNSOUND: ++ break; ++ ++ case SHARP_BUZ_GOT_MAIL: ++ case SHARP_BUZ_DAILY_ALARM: ++ case SHARP_PDA_ERRORSOUND: ++ case SHARP_PDA_CRITICALSOUND: ++ break; ++ ++ default: ++ return -EINVAL; ++ break; ++ } ++ ++ return 0; ++} ++int tosa_buzzer_supported(int which) ++{ ++ switch( which ){ ++ case SHARP_BUZ_TOUCHSOUND: ++ case SHARP_BUZ_KEYSOUND: ++ case SHARP_BUZ_SCHEDULE_ALARM: ++ case SHARP_BUZ_DAILY_ALARM: ++ case SHARP_BUZ_GOT_MAIL: ++ case SHARP_PDA_WARNSOUND: ++ case SHARP_PDA_ERRORSOUND: ++ case SHARP_PDA_CRITICALSOUND: ++ break; ++ default: ++ return -EINVAL; ++ break; ++ } ++ return 4; ++} ++ ++int tosa_play_sound_by_hz(unsigned int hz,unsigned int msecs,int volume) ++{ ++ return 0; ++} ++ ++int current_freq; ++static void change_freq( int new_freq ) ++{ ++ if (current_freq!=new_freq) { ++ audio_buzzer_release(); ++ audio_buzzer_open(new_freq); ++ current_freq = new_freq; ++ } ++} ++ ++static void tosa_buzzer_thread(void) ++{ ++ // daemonize(); ++ strcpy(current->comm, "buzzer"); ++ sigfillset(¤t->blocked); ++ ++ while(1) { ++ if (buzzer_soundid==0) { ++ //while(buzzer_soundid==0) ++ interruptible_sleep_on(&buzzer_proc); ++ } else { ++ if (wm9712_busy()) { ++ if (buzzer_soundid==SHARP_BUZ_SCHEDULE_ALARM) { ++ //audio_buzzer_intmode(alarm_data,sizeof(alarm_data),44100); ++ audio_buzzer_intmode(alarm_data,sizeof(alarm_data),8000); ++ } ++ buzzer_soundid=0; ++ continue; ++ } ++ now_playing = 1; ++ current_freq = key_freq; ++ audio_buzzer_open(current_freq); ++ while ( buzzer_soundid!=0 ) { ++ int tmpid = buzzer_soundid; ++ buzzer_soundid=0; ++ ++ switch( tmpid ) { ++ ++ case SHARP_BUZ_TOUCHSOUND: ++ repeat_sound = 1; ++ change_freq(tap_freq); ++ audio_buzzer_write(tap_data, sizeof(tap_data)); ++ audio_buzzer_sync(); ++ break; ++ ++ case SHARP_BUZ_KEYSOUND: ++ repeat_sound = 1; ++ change_freq(key_freq); ++ audio_buzzer_write(key_data, sizeof(key_data)); ++ audio_buzzer_sync(); ++ break; ++ ++ case SHARP_BUZ_SCHEDULE_ALARM: ++ { ++ int alarm_data_size = sizeof(alarm_data); ++ unsigned char *alarm_data0 = alarm_data; ++ int cnt; ++ ++ repeat_sound = 0; ++ //change_freq(44100); ++ change_freq(8000); ++ while(1) { ++ cnt = audio_buzzer_write(alarm_data0,alarm_data_size); ++ audio_buzzer_sync(); ++ if ( cnt <= 0 ) break; ++ alarm_data_size -= cnt; ++ alarm_data0 += cnt; ++ } ++ break; ++ } ++ ++ case SHARP_PDA_WARNSOUND: ++ case SHARP_BUZ_GOT_MAIL: ++ case SHARP_BUZ_DAILY_ALARM: ++ case SHARP_PDA_ERRORSOUND: ++ case SHARP_PDA_CRITICALSOUND: ++ repeat_sound = 0; ++ break; ++ ++ default: ++ repeat_sound = 0; ++ break; ++ } // switch ++ } // while loop ++ audio_buzzer_release(); ++ repeat_sound = 0; ++ now_playing = 0; ++ } ++ } // while(1) loop ++} ++ ++ ++int tosa_buzzer_dev_init(void) ++{ ++ kernel_thread(tosa_buzzer_thread, NULL, ++ CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ return 0; ++} ++ ++int tosa_suspend_buzzer(void) ++{ ++#if 0 ++ printk("tosa_suspend_buzzer\n"); ++ while ( now_playing ) { ++ schedule(); ++ } ++#endif ++ return 0; ++} ++ ++int tosa_resume_buzzer(void) ++{ ++ return 0; ++} ++ ++void tosa_stop_sound() ++{ ++ return; ++} +diff -Nur linux_c860_org/arch/arm/mm/fault-armv.c linux/arch/arm/mm/fault-armv.c +--- linux_c860_org/arch/arm/mm/fault-armv.c 2003-06-18 16:12:26.000000000 +0900 ++++ linux/arch/arm/mm/fault-armv.c 2004-06-10 21:09:10.000000000 +0900 +@@ -11,6 +11,7 @@ + * Change Log + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi + * 04-Apr-2003 Sharp for ARM FCSE ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + #include <linux/config.h> +@@ -126,12 +127,14 @@ + } + #endif + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++#ifdef CONFIG_PM + { + extern sharpsl_fataloff(void); + sharpsl_fataloff(); + } + #endif ++#endif + + if (!inf->fn(addr, error_code, regs)) + return; +diff -Nur linux_c860_org/arch/arm/mm/proc-xscale.S linux/arch/arm/mm/proc-xscale.S +--- linux_c860_org/arch/arm/mm/proc-xscale.S 2003-10-15 16:42:00.000000000 +0900 ++++ linux/arch/arm/mm/proc-xscale.S 2004-06-10 21:09:10.000000000 +0900 +@@ -25,6 +25,7 @@ + * 20-Mar-2003 SHARP supported PXA255 + * 04-Apr-2003 Sharp for ARM FCSE + * 15-Oct-2003 Sharp fix icache flush ++ * 16-Jul-2003 Sharp Corporation + */ + + #include <linux/config.h> +diff -Nur linux_c860_org/arch/arm/tools/getconstants.c linux/arch/arm/tools/getconstants.c +--- linux_c860_org/arch/arm/tools/getconstants.c 2002-08-26 14:39:51.000000000 +0900 ++++ linux/arch/arm/tools/getconstants.c 2004-06-10 21:09:10.000000000 +0900 +@@ -13,6 +13,7 @@ + + #include <asm/pgtable.h> + #include <asm/uaccess.h> ++#include <asm/hardirq.h> + + /* + * Make sure that the compiler and target are compatible. +@@ -39,6 +40,11 @@ + DEFN("TSS_SAVE", OFF_TSK(thread.save)); + DEFN("TSS_FPESAVE", OFF_TSK(thread.fpstate.soft.save)); + ++#ifdef CONFIG_PREEMPT ++DEFN("TSK_PREEMPT", OFF_TSK(preempt_count)); ++DEFN("IRQSTAT_BH_COUNT", (unsigned long)&(((irq_cpustat_t *)0)->__local_bh_count)); ++#endif ++ + #ifdef CONFIG_CPU_32 + DEFN("TSS_DOMAIN", OFF_TSK(thread.domain)); + +diff -Nur linux_c860_org/arch/arm/tools/mach-types linux/arch/arm/tools/mach-types +--- linux_c860_org/arch/arm/tools/mach-types 2002-08-29 12:27:22.000000000 +0900 ++++ linux/arch/arm/tools/mach-types 2004-06-10 21:09:10.000000000 +0900 +@@ -205,3 +205,4 @@ + discovery SABINAL_DISCOVERY DISCOVERY 194 + poodle ARCH_PXA_POODLE POODLE 195 + corgi ARCH_PXA_CORGI CORGI 196 ++tosa ARCH_PXA_TOSA TOSA 197 +diff -Nur linux_c860_org/arch/cris/drivers/ds1302.c linux/arch/cris/drivers/ds1302.c +--- linux_c860_org/arch/cris/drivers/ds1302.c 2002-08-26 14:39:59.000000000 +0900 ++++ linux/arch/cris/drivers/ds1302.c 2004-06-10 21:09:10.000000000 +0900 +@@ -357,6 +357,7 @@ + { + struct rtc_time rtc_tm; + ++ memset(&rtc_tm, 0, sizeof (struct rtc_time)); + get_rtc_time(&rtc_tm); + if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time))) + return -EFAULT; +diff -Nur linux_c860_org/arch/i386/config.in linux/arch/i386/config.in +--- linux_c860_org/arch/i386/config.in 2002-08-26 14:45:20.000000000 +0900 ++++ linux/arch/i386/config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -186,6 +186,10 @@ + bool 'Math emulation' CONFIG_MATH_EMULATION + bool 'MTRR (Memory Type Range Register) support' CONFIG_MTRR + bool 'Symmetric multi-processing support' CONFIG_SMP ++bool 'Preemptible Kernel' CONFIG_PREEMPT ++if [ "$CONFIG_PREEMPT" = "y" ]; then ++ bool 'Break selected locks' CONFIG_LOCK_BREAK ++fi + if [ "$CONFIG_SMP" != "y" ]; then + bool 'Local APIC support on uniprocessors' CONFIG_X86_UP_APIC + dep_bool 'IO-APIC support on uniprocessors' CONFIG_X86_UP_IOAPIC $CONFIG_X86_UP_APIC +@@ -199,9 +203,12 @@ + bool 'Multiquad NUMA system' CONFIG_MULTIQUAD + fi + +-if [ "$CONFIG_SMP" = "y" -a "$CONFIG_X86_CMPXCHG" = "y" ]; then +- define_bool CONFIG_HAVE_DEC_LOCK y ++if [ "$CONFIG_SMP" = "y" -o "$CONFIG_PREEMPT" = "y" ]; then ++ if [ "$CONFIG_X86_CMPXCHG" = "y" ]; then ++ define_bool CONFIG_HAVE_DEC_LOCK y ++ fi + fi ++ + endmenu + + mainmenu_option next_comment +diff -Nur linux_c860_org/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S +--- linux_c860_org/arch/i386/kernel/entry.S 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900 +@@ -71,7 +71,7 @@ + * these are offsets into the task-struct. + */ + state = 0 +-flags = 4 ++preempt_count = 4 + sigpending = 8 + addr_limit = 12 + exec_domain = 16 +@@ -79,8 +79,28 @@ + tsk_ptrace = 24 + processor = 52 + ++/* These are offsets into the irq_stat structure ++ * There is one per cpu and it is aligned to 32 ++ * byte boundry (we put that here as a shift count) ++ */ ++irq_array_shift = CONFIG_X86_L1_CACHE_SHIFT ++ ++irq_stat_local_irq_count = 4 ++irq_stat_local_bh_count = 8 ++ + ENOSYS = 38 + ++#ifdef CONFIG_SMP ++#define GET_CPU_INDX movl processor(%ebx),%eax; \ ++ shll $irq_array_shift,%eax ++#define GET_CURRENT_CPU_INDX GET_CURRENT(%ebx); \ ++ GET_CPU_INDX ++#define CPU_INDX (,%eax) ++#else ++#define GET_CPU_INDX ++#define GET_CURRENT_CPU_INDX GET_CURRENT(%ebx) ++#define CPU_INDX ++#endif + + #define SAVE_ALL \ + cld; \ +@@ -247,12 +267,30 @@ + ALIGN + ENTRY(ret_from_intr) + GET_CURRENT(%ebx) ++#ifdef CONFIG_PREEMPT ++ cli ++ decl preempt_count(%ebx) ++#endif + ret_from_exception: + movl EFLAGS(%esp),%eax # mix EFLAGS and CS + movb CS(%esp),%al + testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor? + jne ret_from_sys_call ++#ifdef CONFIG_PREEMPT ++ cmpl $0,preempt_count(%ebx) ++ jnz restore_all ++ cmpl $0,need_resched(%ebx) ++ jz restore_all ++ movl SYMBOL_NAME(irq_stat)+irq_stat_local_bh_count CPU_INDX,%ecx ++ addl SYMBOL_NAME(irq_stat)+irq_stat_local_irq_count CPU_INDX,%ecx ++ jnz restore_all ++ incl preempt_count(%ebx) ++ sti ++ call SYMBOL_NAME(preempt_schedule) ++ jmp ret_from_intr ++#else + jmp restore_all ++#endif + + ALIGN + reschedule: +@@ -289,6 +327,9 @@ + GET_CURRENT(%ebx) + call *%edi + addl $8,%esp ++#ifdef CONFIG_PREEMPT ++ cli ++#endif + jmp ret_from_exception + + ENTRY(coprocessor_error) +@@ -308,12 +349,18 @@ + movl %cr0,%eax + testl $0x4,%eax # EM (math emulation bit) + jne device_not_available_emulate ++#ifdef CONFIG_PREEMPT ++ cli ++#endif + call SYMBOL_NAME(math_state_restore) + jmp ret_from_exception + device_not_available_emulate: + pushl $0 # temporary storage for ORIG_EIP + call SYMBOL_NAME(math_emulate) + addl $4,%esp ++#ifdef CONFIG_PREEMPT ++ cli ++#endif + jmp ret_from_exception + + ENTRY(debug) +diff -Nur linux_c860_org/arch/i386/kernel/i387.c linux/arch/i386/kernel/i387.c +--- linux_c860_org/arch/i386/kernel/i387.c 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/kernel/i387.c 2004-06-10 21:09:10.000000000 +0900 +@@ -10,6 +10,7 @@ + + #include <linux/config.h> + #include <linux/sched.h> ++#include <linux/spinlock.h> + #include <asm/processor.h> + #include <asm/i387.h> + #include <asm/math_emu.h> +@@ -65,6 +66,8 @@ + { + struct task_struct *tsk = current; + ++ preempt_disable(); ++ + if (tsk->flags & PF_USEDFPU) { + __save_init_fpu(tsk); + return; +diff -Nur linux_c860_org/arch/i386/kernel/process.c linux/arch/i386/kernel/process.c +--- linux_c860_org/arch/i386/kernel/process.c 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -485,7 +485,7 @@ + /* + * Create a kernel thread + */ +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + long retval, d0; + +@@ -508,6 +508,7 @@ + "r" (arg), "r" (fn), + "b" (flags | CLONE_VM) + : "memory"); ++ + return retval; + } + +diff -Nur linux_c860_org/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c +--- linux_c860_org/arch/i386/kernel/smp.c 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/kernel/smp.c 2004-06-10 21:09:10.000000000 +0900 +@@ -354,10 +354,13 @@ + + asmlinkage void smp_invalidate_interrupt (void) + { +- unsigned long cpu = smp_processor_id(); ++ unsigned long cpu; ++ ++ preempt_disable(); + ++ cpu = smp_processor_id(); + if (!test_bit(cpu, &flush_cpumask)) +- return; ++ goto out; + /* + * This was a BUG() but until someone can quote me the + * line from the intel manual that guarantees an IPI to +@@ -378,6 +381,8 @@ + } + ack_APIC_irq(); + clear_bit(cpu, &flush_cpumask); ++out: ++ preempt_enable(); + } + + static void flush_tlb_others (unsigned long cpumask, struct mm_struct *mm, +@@ -427,17 +432,22 @@ + void flush_tlb_current_task(void) + { + struct mm_struct *mm = current->mm; +- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); ++ unsigned long cpu_mask; + ++ preempt_disable(); ++ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); + local_flush_tlb(); + if (cpu_mask) + flush_tlb_others(cpu_mask, mm, FLUSH_ALL); ++ preempt_enable(); + } + + void flush_tlb_mm (struct mm_struct * mm) + { +- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); ++ unsigned long cpu_mask; + ++ preempt_disable(); ++ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); + if (current->active_mm == mm) { + if (current->mm) + local_flush_tlb(); +@@ -446,13 +456,16 @@ + } + if (cpu_mask) + flush_tlb_others(cpu_mask, mm, FLUSH_ALL); ++ preempt_enable(); + } + + void flush_tlb_page(struct vm_area_struct * vma, unsigned long va) + { + struct mm_struct *mm = vma->vm_mm; +- unsigned long cpu_mask = mm->cpu_vm_mask & ~(1 << smp_processor_id()); ++ unsigned long cpu_mask; + ++ preempt_disable(); ++ cpu_mask = mm->cpu_vm_mask & ~(1UL << smp_processor_id()); + if (current->active_mm == mm) { + if(current->mm) + __flush_tlb_one(va); +@@ -462,6 +475,7 @@ + + if (cpu_mask) + flush_tlb_others(cpu_mask, mm, va); ++ preempt_enable(); + } + + static inline void do_flush_tlb_all_local(void) +diff -Nur linux_c860_org/arch/i386/kernel/traps.c linux/arch/i386/kernel/traps.c +--- linux_c860_org/arch/i386/kernel/traps.c 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/kernel/traps.c 2004-06-10 21:09:10.000000000 +0900 +@@ -694,6 +694,8 @@ + * + * Careful.. There are problems with IBM-designed IRQ13 behaviour. + * Don't touch unless you *really* know how it works. ++ * ++ * Must be called with kernel preemption disabled. + */ + asmlinkage void math_state_restore(struct pt_regs regs) + { +diff -Nur linux_c860_org/arch/i386/lib/dec_and_lock.c linux/arch/i386/lib/dec_and_lock.c +--- linux_c860_org/arch/i386/lib/dec_and_lock.c 2002-08-26 14:39:33.000000000 +0900 ++++ linux/arch/i386/lib/dec_and_lock.c 2004-06-10 21:09:10.000000000 +0900 +@@ -8,6 +8,7 @@ + */ + + #include <linux/spinlock.h> ++#include <linux/sched.h> + #include <asm/atomic.h> + + int atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock) +diff -Nur linux_c860_org/arch/ia64/kernel/process.c linux/arch/ia64/kernel/process.c +--- linux_c860_org/arch/ia64/kernel/process.c 2002-08-26 14:39:53.000000000 +0900 ++++ linux/arch/ia64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -182,7 +182,7 @@ + * | | <-- sp (lowest addr) + * +---------------------+ + * +- * Note: if we get called through kernel_thread() then the memory ++ * Note: if we get called through arch_kernel_thread() then the memory + * above "(highest addr)" is valid kernel stack memory that needs to + * be copied as well. + * +@@ -415,7 +415,7 @@ + } + + pid_t +-kernel_thread (int (*fn)(void *), void *arg, unsigned long flags) ++arch_kernel_thread (int (*fn)(void *), void *arg, unsigned long flags) + { + struct task_struct *parent = current; + int result, tid; +diff -Nur linux_c860_org/arch/m68k/bvme6000/rtc.c linux/arch/m68k/bvme6000/rtc.c +--- linux_c860_org/arch/m68k/bvme6000/rtc.c 2002-08-26 14:39:46.000000000 +0900 ++++ linux/arch/m68k/bvme6000/rtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -54,6 +54,7 @@ + /* Ensure clock and real-time-mode-register are accessible */ + msr = rtc->msr & 0xc0; + rtc->msr = 0x40; ++ memset(&wtime, 0, sizeof(struct rtc_time)); + do { + wtime.tm_sec = BCD2BIN(rtc->bcd_sec); + wtime.tm_min = BCD2BIN(rtc->bcd_min); +diff -Nur linux_c860_org/arch/m68k/kernel/process.c linux/arch/m68k/kernel/process.c +--- linux_c860_org/arch/m68k/kernel/process.c 2002-08-26 14:39:45.000000000 +0900 ++++ linux/arch/m68k/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -124,7 +124,7 @@ + /* + * Create a kernel thread + */ +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + int pid; + mm_segment_t fs; +diff -Nur linux_c860_org/arch/m68k/mvme16x/rtc.c linux/arch/m68k/mvme16x/rtc.c +--- linux_c860_org/arch/m68k/mvme16x/rtc.c 2002-08-26 14:39:47.000000000 +0900 ++++ linux/arch/m68k/mvme16x/rtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -52,6 +52,7 @@ + cli(); + /* Ensure clock and real-time-mode-register are accessible */ + rtc->ctrl = RTC_READ; ++ memset(&wtime, 0, sizeof(struct rtc_time)); + wtime.tm_sec = BCD2BIN(rtc->bcd_sec); + wtime.tm_min = BCD2BIN(rtc->bcd_min); + wtime.tm_hour = BCD2BIN(rtc->bcd_hr); +diff -Nur linux_c860_org/arch/mips/kernel/process.c linux/arch/mips/kernel/process.c +--- linux_c860_org/arch/mips/kernel/process.c 2002-08-26 14:39:37.000000000 +0900 ++++ linux/arch/mips/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -154,7 +154,7 @@ + /* + * Create a kernel thread + */ +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + long retval; + +diff -Nur linux_c860_org/arch/mips64/kernel/process.c linux/arch/mips64/kernel/process.c +--- linux_c860_org/arch/mips64/kernel/process.c 2002-08-26 14:39:55.000000000 +0900 ++++ linux/arch/mips64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -150,7 +150,7 @@ + /* + * Create a kernel thread + */ +-int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) + { + int retval; + +diff -Nur linux_c860_org/arch/parisc/kernel/process.c linux/arch/parisc/kernel/process.c +--- linux_c860_org/arch/parisc/kernel/process.c 2002-08-26 14:39:58.000000000 +0900 ++++ linux/arch/parisc/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -118,7 +118,7 @@ + */ + + extern pid_t __kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); +-pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) ++pid_t arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) + { + + /* +diff -Nur linux_c860_org/arch/ppc/kernel/misc.S linux/arch/ppc/kernel/misc.S +--- linux_c860_org/arch/ppc/kernel/misc.S 2002-08-26 14:39:39.000000000 +0900 ++++ linux/arch/ppc/kernel/misc.S 2004-06-10 21:09:10.000000000 +0900 +@@ -860,9 +860,9 @@ + + /* + * Create a kernel thread +- * kernel_thread(fn, arg, flags) ++ * arch_kernel_thread(fn, arg, flags) + */ +-_GLOBAL(kernel_thread) ++_GLOBAL(arch_kernel_thread) + mr r6,r3 /* function */ + ori r3,r5,CLONE_VM /* flags */ + li r0,__NR_clone +diff -Nur linux_c860_org/arch/s390/kernel/process.c linux/arch/s390/kernel/process.c +--- linux_c860_org/arch/s390/kernel/process.c 2002-08-26 14:39:56.000000000 +0900 ++++ linux/arch/s390/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -93,7 +93,7 @@ + show_trace((unsigned long *) regs->gprs[15]); + } + +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + int clone_arg = flags | CLONE_VM; + int retval; +diff -Nur linux_c860_org/arch/s390x/kernel/process.c linux/arch/s390x/kernel/process.c +--- linux_c860_org/arch/s390x/kernel/process.c 2002-08-26 14:39:59.000000000 +0900 ++++ linux/arch/s390x/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -93,7 +93,7 @@ + show_trace((unsigned long *) regs->gprs[15]); + } + +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + int clone_arg = flags | CLONE_VM; + int retval; +diff -Nur linux_c860_org/arch/sh/config.in linux/arch/sh/config.in +--- linux_c860_org/arch/sh/config.in 2002-08-26 14:45:40.000000000 +0900 ++++ linux/arch/sh/config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -125,6 +125,8 @@ + hex 'Physical memory start address' CONFIG_MEMORY_START 08000000 + hex 'Physical memory size' CONFIG_MEMORY_SIZE 00400000 + fi ++bool 'Preemptible Kernel' CONFIG_PREEMPT ++dep_bool 'Break selected locks' CONFIG_LOCK_BREAK $CONFIG_PREEMPT + endmenu + + if [ "$CONFIG_SH_HP690" = "y" ]; then +diff -Nur linux_c860_org/arch/sh/kernel/entry.S linux/arch/sh/kernel/entry.S +--- linux_c860_org/arch/sh/kernel/entry.S 2002-08-26 14:39:52.000000000 +0900 ++++ linux/arch/sh/kernel/entry.S 2004-06-10 21:09:10.000000000 +0900 +@@ -60,10 +60,18 @@ + /* + * These are offsets into the task-struct. + */ +-flags = 4 ++preempt_count = 4 + sigpending = 8 + need_resched = 20 + tsk_ptrace = 24 ++flags = 84 ++ ++/* ++ * These offsets are into irq_stat. ++ * (Find irq_cpustat_t in asm-sh/hardirq.h) ++ */ ++local_irq_count = 8 ++local_bh_count = 12 + + PT_TRACESYS = 0x00000002 + PF_USEDFPU = 0x00100000 +@@ -143,7 +151,7 @@ + mov.l __INV_IMASK, r11; \ + stc sr, r10; \ + and r11, r10; \ +- stc k_g_imask, r11; \ ++ stc k_g_imask, r11; \ + or r11, r10; \ + ldc r10, sr + +@@ -304,8 +312,8 @@ + mov.l @(tsk_ptrace,r0), r0 ! Is current PTRACE_SYSCALL'd? + mov #PT_TRACESYS, r1 + tst r1, r0 +- bt ret_from_syscall +- bra syscall_ret_trace ++ bf syscall_ret_trace ++ bra ret_from_syscall + nop + + .align 2 +@@ -505,8 +513,6 @@ + .long syscall_ret_trace + __syscall_ret: + .long syscall_ret +-__INV_IMASK: +- .long 0xffffff0f ! ~(IMASK) + + + .align 2 +@@ -518,7 +524,84 @@ + .align 2 + 1: .long SYMBOL_NAME(schedule) + ++#ifdef CONFIG_PREEMPT ++ ! ++ ! Returning from interrupt during kernel mode: check if ++ ! preempt_schedule should be called. If need_resched flag ++ ! is set, preempt_count is zero, and we're not currently ++ ! in an interrupt handler (local irq or bottom half) then ++ ! call preempt_schedule. ++ ! ++ ! Increment preempt_count to prevent a nested interrupt ++ ! from reentering preempt_schedule, then decrement after ++ ! and drop through to regular interrupt return which will ++ ! jump back and check again in case such an interrupt did ++ ! come in (and didn't preempt due to preempt_count). ++ ! ++ ! NOTE: because we just checked that preempt_count was ++ ! zero before getting to the call, can't we use immediate ++ ! values (1 and 0) rather than inc/dec? Also, rather than ++ ! drop through to ret_from_irq, we already know this thread ++ ! is kernel mode, can't we go direct to ret_from_kirq? In ++ ! fact, with proper interrupt nesting and so forth could ++ ! the loop simply be on the need_resched w/o checking the ++ ! other stuff again? Optimize later... ++ ! ++ .align 2 ++ret_from_kirq: ++ ! Nonzero preempt_count prevents scheduling ++ stc k_current, r1 ++ mov.l @(preempt_count,r1), r0 ++ cmp/eq #0, r0 ++ bf restore_all ++ ! Zero need_resched prevents scheduling ++ mov.l @(need_resched,r1), r0 ++ cmp/eq #0, r0 ++ bt restore_all ++ ! If in_interrupt(), don't schedule ++ mov.l __irq_stat, r1 ++ mov.l @(local_irq_count,r1), r0 ++ mov.l @(local_bh_count,r1), r1 ++ or r1, r0 ++ cmp/eq #0, r0 ++ bf restore_all ++ ! Allow scheduling using preempt_schedule ++ ! Adjust preempt_count and SR as needed. ++ stc k_current, r1 ++ mov.l @(preempt_count,r1), r0 ! Could replace this ... ++ add #1, r0 ! ... and this w/mov #1? ++ mov.l r0, @(preempt_count,r1) ++ STI() ++ mov.l __preempt_schedule, r0 ++ jsr @r0 ++ nop ++ /* CLI */ ++ stc sr, r0 ++ or #0xf0, r0 ++ ldc r0, sr ++ ! ++ stc k_current, r1 ++ mov.l @(preempt_count,r1), r0 ! Could replace this ... ++ add #-1, r0 ! ... and this w/mov #0? ++ mov.l r0, @(preempt_count,r1) ++ ! Maybe should bra ret_from_kirq, or loop over need_resched? ++ ! For now, fall through to ret_from_irq again... ++#endif /* CONFIG_PREEMPT */ ++ + ret_from_irq: ++ mov #OFF_SR, r0 ++ mov.l @(r0,r15), r0 ! get status register ++ shll r0 ++ shll r0 ! kernel space? ++#ifndef CONFIG_PREEMPT ++ bt restore_all ! Yes, it's from kernel, go back soon ++#else /* CONFIG_PREEMPT */ ++ bt ret_from_kirq ! From kernel: maybe preempt_schedule ++#endif /* CONFIG_PREEMPT */ ++ ! ++ bra ret_from_syscall ++ nop ++ + ret_from_exception: + mov #OFF_SR, r0 + mov.l @(r0,r15), r0 ! get status register +@@ -564,6 +647,13 @@ + .long SYMBOL_NAME(do_signal) + __irq_stat: + .long SYMBOL_NAME(irq_stat) ++#ifdef CONFIG_PREEMPT ++__preempt_schedule: ++ .long SYMBOL_NAME(preempt_schedule) ++#endif /* CONFIG_PREEMPT */ ++__INV_IMASK: ++ .long 0xffffff0f ! ~(IMASK) ++ + + .align 2 + restore_all: +@@ -679,7 +769,7 @@ + __fpu_prepare_fd: + .long SYMBOL_NAME(fpu_prepare_fd) + __init_task_flags: +- .long SYMBOL_NAME(init_task_union)+4 ++ .long SYMBOL_NAME(init_task_union)+flags + __PF_USEDFPU: + .long PF_USEDFPU + #endif +diff -Nur linux_c860_org/arch/sh/kernel/irq.c linux/arch/sh/kernel/irq.c +--- linux_c860_org/arch/sh/kernel/irq.c 2002-08-26 14:39:52.000000000 +0900 ++++ linux/arch/sh/kernel/irq.c 2004-06-10 21:09:10.000000000 +0900 +@@ -229,6 +229,14 @@ + struct irqaction * action; + unsigned int status; + ++ /* ++ * At this point we're now about to actually call handlers, ++ * and interrupts might get reenabled during them... bump ++ * preempt_count to prevent any preemption while the handler ++ * called here is pending... ++ */ ++ preempt_disable(); ++ + /* Get IRQ number */ + asm volatile("stc r2_bank, %0\n\t" + "shlr2 %0\n\t" +@@ -298,8 +306,17 @@ + desc->handler->end(irq); + spin_unlock(&desc->lock); + ++ + if (softirq_pending(cpu)) + do_softirq(); ++ ++ /* ++ * We're done with the handlers, interrupts should be ++ * currently disabled; decrement preempt_count now so ++ * as we return preemption may be allowed... ++ */ ++ preempt_enable_no_resched(); ++ + return 1; + } + +diff -Nur linux_c860_org/arch/sh/kernel/process.c linux/arch/sh/kernel/process.c +--- linux_c860_org/arch/sh/kernel/process.c 2002-08-26 14:39:52.000000000 +0900 ++++ linux/arch/sh/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -118,7 +118,7 @@ + * This is the mechanism for creating a new kernel thread. + * + */ +-int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { /* Don't use this in BL=1(cli). Or else, CPU resets! */ + register unsigned long __sc0 __asm__ ("r0"); + register unsigned long __sc3 __asm__ ("r3") = __NR_clone; +diff -Nur linux_c860_org/arch/sparc/kernel/process.c linux/arch/sparc/kernel/process.c +--- linux_c860_org/arch/sparc/kernel/process.c 2002-08-26 14:39:35.000000000 +0900 ++++ linux/arch/sparc/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -657,7 +657,7 @@ + * a system call from a "real" process, but the process memory space will + * not be free'd until both the parent and the child have exited. + */ +-pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + long retval; + +diff -Nur linux_c860_org/arch/sparc64/kernel/process.c linux/arch/sparc64/kernel/process.c +--- linux_c860_org/arch/sparc64/kernel/process.c 2002-08-26 14:39:47.000000000 +0900 ++++ linux/arch/sparc64/kernel/process.c 2004-06-10 21:09:10.000000000 +0900 +@@ -661,7 +661,7 @@ + * a system call from a "real" process, but the process memory space will + * not be free'd until both the parent and the child have exited. + */ +-pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) + { + long retval; + +diff -Nur linux_c860_org/drivers/acorn/char/i2c.c linux/drivers/acorn/char/i2c.c +--- linux_c860_org/drivers/acorn/char/i2c.c 2002-08-26 14:45:01.000000000 +0900 ++++ linux/drivers/acorn/char/i2c.c 2004-06-10 21:09:10.000000000 +0900 +@@ -166,6 +166,7 @@ + break; + + case RTC_RD_TIME: ++ memset(&rtctm, 0, sizeof(struct rtc_time)); + get_rtc_time(&rtc_raw, &year); + rtctm.tm_sec = rtc_raw.secs; + rtctm.tm_min = rtc_raw.mins; +diff -Nur linux_c860_org/drivers/block/Config.in linux/drivers/block/Config.in +--- linux_c860_org/drivers/block/Config.in 2003-11-07 11:46:57.000000000 +0900 ++++ linux/drivers/block/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -37,7 +37,6 @@ + dep_tristate 'Compaq Smart Array 5xxx support' CONFIG_BLK_CPQ_CISS_DA $CONFIG_PCI + dep_tristate 'Mylex DAC960/DAC1100 PCI RAID Controller support' CONFIG_BLK_DEV_DAC960 $CONFIG_PCI + +- + tristate 'Loopback device support' CONFIG_BLK_DEV_LOOP + dep_tristate 'Network block device support' CONFIG_BLK_DEV_NBD $CONFIG_NET + +diff -Nur linux_c860_org/drivers/char/Config.in linux/drivers/char/Config.in +--- linux_c860_org/drivers/char/Config.in 2002-08-29 12:25:54.000000000 +0900 ++++ linux/drivers/char/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -17,10 +17,26 @@ + fi + if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o \ + "$CONFIG_ARCH_PXA_POODLE" = "y" -o \ +- "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then ++ "$CONFIG_ARCH_PXA_CORGI" = "y" -o \ ++ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then + bool ' SL-series serial port support' CONFIG_SERIAL_SL_SERIES + fi ++ if [ "$CONFIG_SABINAL_DISCOVERY" = "y" -o \ ++ "$CONFIG_ARCH_PXA_POODLE" = "y" -o \ ++ "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then ++ bool ' SL-series touchscreen pressure value read (EXPERIMENTAL)' CONFIG_SL_TS_PRESSURE ++ dep_bool ' Boot On touchscreen pressure value read' CONFIG_BOOT_PRESSURE_ON $CONFIG_SL_TS_PRESSURE ++ bool ' SL-C Series power key suspend (EXPERIMENTAL)' CONFIG_SL7X0_POWER_KEY_OFF ++ dep_bool ' Boot On power key suspend' CONFIG_BOOT_POWER_KEY_OFF $CONFIG_SL7X0_POWER_KEY_OFF ++ bool ' SL-C Series 3 Button touch screen (EXPERIMENTAL)' CONFIG_SL_3BUTTON_PATCH ++ dep_bool ' Boot On 3 Button touch screen' CONFIG_BOOT_3BUTTON_PATCH_ON $CONFIG_SL_3BUTTON_PATCH ++ bool ' SL-series write ts data (EXPERIMENTAL)' CONFIG_SL_WRITE_TS ++ fi ++ if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then ++ bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL ++ fi + fi ++bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE + if [ "$CONFIG_SA1100_COLLIE" = "y" ]; then + bool 'COLLIE serial port support' CONFIG_SERIAL_COLLIE + dep_bool ' Console on COLLIE serial port' CONFIG_SERIAL_COLLIE_CONSOLE $CONFIG_SERIAL_COLLIE +@@ -216,6 +232,7 @@ + if [ "$CONFIG_ARCH_SHARP_SL" = "y" ]; then + tristate 'Cotulla Real Time Clock' CONFIG_COTULLA_RTC + tristate 'ADS7846 Touch Pannel' CONFIG_ADS7846_TS ++ tristate 'Tosa Touch Pannel' CONFIG_TOSA_TS + fi + if [ "$CONFIG_SABINAL_DISCOVERY" = "y" ]; then + tristate 'Discovery LED ' CONFIG_DISCOVERY_LED $(CONFIG_SABINAL_DISCOVERY) +diff -Nur linux_c860_org/drivers/char/Makefile linux/drivers/char/Makefile +--- linux_c860_org/drivers/char/Makefile 2002-10-11 21:13:44.000000000 +0900 ++++ linux/drivers/char/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -12,7 +12,8 @@ + # + # This file contains the font map for the default (hardware) font + # +-FONTMAPFILE = cp437.uni ++#FONTMAPFILE = cp437.uni ++FONTMAPFILE = direct.uni + + O_TARGET := char.o + +@@ -114,6 +115,11 @@ + KEYMAP := corgi_keymap.o + # SERIAL = + endif ++ ifeq ($(CONFIG_ARCH_PXA_TOSA),y) ++ KEYBD := tosa_keyb.o tosa_logkey.o ++ KEYMAP := tosa_keymap.o ++# SERIAL = ++ endif + endif + + ifeq ($(ARCH),sh) +@@ -232,6 +238,9 @@ + obj-$(CONFIG_DISCOVERY_LED) += sharp_led.o discovery_led.o + obj-$(CONFIG_ARCH_PXA_POODLE) += sharp_led.o sharp_kbdctl.o sharpsl_led.o sharp_buzzer.o + obj-$(CONFIG_ARCH_PXA_CORGI) += sharp_led.o sharpsl_led.o sharp_kbdctl.o corgi_rc.o sharp_buzzer.o ++obj-$(CONFIG_ARCH_PXA_TOSA) += sharp_led.o sharpsl_led.o sharp_kbdctl.o ++obj-$(CONFIG_BUZZER_TOSA) += sharp_buzzer.o ++ + obj-$(CONFIG_BUSMOUSE) += busmouse.o + obj-$(CONFIG_DTLK) += dtlk.o + obj-$(CONFIG_R3964) += n_r3964.o +@@ -248,6 +257,7 @@ + obj-$(CONFIG_SA1100_RTC) += sa1100-rtc.o + obj-$(CONFIG_COTULLA_RTC) += cotulla-rtc.o + obj-$(CONFIG_ADS7846_TS) += ads7846_ts.o ++obj-$(CONFIG_TOSA_TS) += tosa_ts.o + ifeq ($(CONFIG_PPC),) + obj-$(CONFIG_NVRAM) += nvram.o + endif +@@ -340,3 +350,7 @@ + + corgi_keymap.c: corgi_keymap.map + set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@ ++ ++tosa_keymap.c: tosa_keymap.map ++ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@ ++ +diff -Nur linux_c860_org/drivers/char/ads7846_ts.c linux/drivers/char/ads7846_ts.c +--- linux_c860_org/drivers/char/ads7846_ts.c 2003-06-18 16:12:26.000000000 +0900 ++++ linux/drivers/char/ads7846_ts.c 2004-06-10 21:09:10.000000000 +0900 +@@ -14,6 +14,7 @@ + * 31-Jul-2002 Lineo Japan, Inc. for ARCH_PXA + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi + * 27-Feb-2003 Sharp modified for Poodle ++ * 12-Dec-2002 Sharp Corporation for Poodle and Corgi + * + */ + +@@ -85,7 +86,56 @@ + static DECLARE_WAIT_QUEUE_HEAD(queue); + static int head, tail, sample; + static char pendown = 0; +-unsigned long Pressure; ++static unsigned long Pressure; ++#if defined(CONFIG_SL_TS_PRESSURE) || defined(CONFIG_SL7X0_POWER_KEY_OFF) || \ ++ defined(CONFIG_SL_3BUTTON_PATCH) || defined(CONFIG_SL_WRITE_TS) ++#include <linux/proc_fs.h> ++#endif ++ ++#if defined(CONFIG_SL_TS_PRESSURE) ++static unsigned long tsPressure; ++#if defined(CONFIG_BOOT_PRESSURE_ON) ++static unsigned int tspressure_mode = 1; ++#else ++static unsigned int tspressure_mode = 0; ++#endif ++ ++static ssize_t tspressure_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "%d\n", (unsigned int)tspressure_mode); ++ count++; ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t tspressure_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%d",¶m); ++ if (tspressure_mode != param) { ++ tspressure_mode = param; ++ printk("tspressure = %d\n", tspressure_mode); ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_tspressure_operations = { ++ read: tspressure_read_params, ++ write: tspressure_write_params, ++}; ++#endif + #if defined(CONFIG_ARCH_PXA_CORGI) + static char ispass = 1; + #endif +@@ -97,6 +147,88 @@ + static char PowerDownMode = PMPD_MODE_ACTIVE; + #endif // CONFIG_PM + #endif ++ ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++extern unsigned int power_key_off_mode; ++ ++static ssize_t power_key_off_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "%d\n", (unsigned int)power_key_off_mode); ++ count++; ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t power_key_off_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%d",¶m); ++ if (power_key_off_mode != param) { ++ power_key_off_mode = param; ++ printk("power_key_off = %d\n", power_key_off_mode); ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_power_key_off_operations = { ++ read: power_key_off_read_params, ++ write: power_key_off_write_params, ++}; ++#endif ++ ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++extern int pressure_alt; ++extern unsigned int three_button_mode; ++ ++static ssize_t three_button_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "%d\n", (unsigned int)three_button_mode); ++ count++; ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t three_button_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%d",¶m); ++ if (three_button_mode != param) { ++ three_button_mode = param; ++ printk("three_button = %d\n", three_button_mode); ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_three_button_operations = { ++ read: three_button_read_params, ++ write: three_button_write_params, ++}; ++#endif ++ + //extern unsigned short touch_panel_intr; + + #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) +@@ -147,7 +279,7 @@ + + //#define WAIT_AFTER_SYNC_HS 151 /* 41us */ + //#define WAIT_AFTER_SYNC_HS 142 /* 38.5us */ +-static unsigned long wait_after_sync_hs = 0; ++static long wait_after_sync_hs = 0; + #define WAIT_AFTER_SYNC_HS wait_after_sync_hs + #define SyncHS() while((GPLR(GPIO_HSYNC) & GPIO_bit(GPIO_HSYNC)) == 0);\ + while((GPLR(GPIO_HSYNC) & GPIO_bit(GPIO_HSYNC)) != 0); +@@ -157,20 +289,35 @@ + #if 1 + #define WAIT_HS_333_VGA 5791 // 17.995us + #define WAIT_HS_400_VGA 7013 // 17.615us ++#define WAIT_HS_471_VGA 8257 // 17.615us ++#define WAIT_HS_400_VGA_FASTSYSCLK 5260 // 17.615us ++#define WAIT_HS_471_VGA_FASTSYSCLK 6192 // 17.615us ++ ++#define WAIT_HS_400_VGA640 21376 // 17.615us ++#define WAIT_HS_471_VGA640 25170 // 17.615us ++#define WAIT_HS_400_VGA640_FASTSYSCLK 16032 // 17.615us ++#define WAIT_HS_471_VGA640_FASTSYSCLK 18878 // 17.615us ++ ++ + #define WAIT_HS_333_QVGA 13969 // 42.100us + #define WAIT_HS_400_QVGA 16621 // 41.750us ++#define WAIT_HS_471_QVGA 19571 // 41.750us ++ + #else + #define WAIT_HS_333_VGA 6403 // 19.3us + #define WAIT_HS_400_VGA 7683 // 19.3us + #define WAIT_HS_333_QVGA 13935 // 42.0us + #define WAIT_HS_400_QVGA 16720 // 42.0us ++ + #endif + #define LCD_MODE_480 0 + #define LCD_MODE_320 1 + #define LCD_MODE_240 2 ++#define LCD_MODE_640 3 + extern int w100fb_lcdMode; + extern int w100fb_isblank; + extern unsigned long cccr_reg; ++extern int fastsysclk_mode; + + static int sync_receive_data_send_cmd(int doRecive,int doSend,int sCmd) + { +@@ -195,21 +342,54 @@ + // 332MHz + if (w100fb_lcdMode == LCD_MODE_480) { + wait_time = WAIT_HS_333_VGA - wait_after_sync_hs; +- } +- else { ++ }else { + wait_time = WAIT_HS_333_QVGA - wait_after_sync_hs; + } +- } +- else { +- // 400MHz +- if (w100fb_lcdMode == LCD_MODE_480) { +- wait_time = WAIT_HS_400_VGA - wait_after_sync_hs; ++ }else if(cccr_reg == 0x242 || cccr_reg == 0x162) { ++ ++ // 471MHz ++ if (fastsysclk_mode == 100 ){ ++ if (w100fb_lcdMode == LCD_MODE_480) { ++ wait_time = WAIT_HS_471_VGA_FASTSYSCLK - wait_after_sync_hs; ++ }else if(w100fb_lcdMode == LCD_MODE_640){ ++ wait_time = WAIT_HS_471_VGA640_FASTSYSCLK - wait_after_sync_hs; ++ }else { ++ wait_time = WAIT_HS_471_QVGA - wait_after_sync_hs; ++ } ++ }else { ++ if (w100fb_lcdMode == LCD_MODE_480) { ++ wait_time = WAIT_HS_471_VGA - wait_after_sync_hs; ++ }else if(w100fb_lcdMode == LCD_MODE_640){ ++ wait_time = WAIT_HS_471_VGA640 - wait_after_sync_hs; ++ }else { ++ wait_time = WAIT_HS_471_QVGA - wait_after_sync_hs; ++ } + } +- else { +- wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs; ++ ++ }else { ++ ++ // 400MHz ++ if (fastsysclk_mode == 100 ){ ++ if (w100fb_lcdMode == LCD_MODE_480) { ++ wait_time = WAIT_HS_400_VGA_FASTSYSCLK - wait_after_sync_hs; ++ }else if(w100fb_lcdMode == LCD_MODE_640){ ++ wait_time = WAIT_HS_400_VGA640_FASTSYSCLK - wait_after_sync_hs; ++ }else { ++ wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs; ++ } ++ }else { ++ if (w100fb_lcdMode == LCD_MODE_480) { ++ wait_time = WAIT_HS_400_VGA - wait_after_sync_hs; ++ }else if(w100fb_lcdMode == LCD_MODE_640){ ++ wait_time = WAIT_HS_400_VGA640 - wait_after_sync_hs; ++ }else { ++ wait_time = WAIT_HS_400_QVGA - wait_after_sync_hs; ++ } + } + } + ++ ++ + CCNT_ON(); + + /* polling HSync */ +@@ -229,7 +409,7 @@ + + /* Wait after HSync */ + CCNT(timer2); +- if (w100fb_lcdMode != LCD_MODE_480) { ++ if ((w100fb_lcdMode != LCD_MODE_480) && (w100fb_lcdMode != LCD_MODE_640)) { + while((timer2-timer1) < wait_time){ + CCNT(timer2); + } +@@ -324,7 +504,11 @@ + ((int)((x)-(y))<(int)(d)) && \ + ((int)((y)-(x))<(int)(d)) ) + unsigned long cmd; ++#if defined(CONFIG_SL_TS_PRESSURE) ++ unsigned int t,x,y,z[2],z2,dummy; ++#else + unsigned int t,x,y,z[2]; ++#endif + int i,j,k; + int d = 8, c = 10; + int err = 0; +@@ -335,7 +519,18 @@ + (3u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH); + t = ads7846_rw(cmd); + z[i] = ads7846_rw(cmd); +- ++ ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) { ++ /* Z2 */ ++ cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) | ++ (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH); ++ dummy = ads7846_rw(cmd); ++ udelay(1); ++ z2 = ads7846_rw(cmd); ++ } ++#endif ++ + if( i ) break; + + /* X-axis */ +@@ -369,6 +564,10 @@ + } + } + Pressure = 1; ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) ++ if (z[1]) tsPressure = (15000 - x * (z2 - z[1]) / z[1]) >> 4; ++#endif + for(i=0;i<2;i++){ + if( !z[i] ) + Pressure = 0; +@@ -482,12 +681,19 @@ + + // printk("x=%d,y=%d\n",tp->xd,tp->yd); + +- if (z1 != 0) ++ if (z1 != 0) { + Pressure = Rx * (tp->xd) * ((10*z2/z1) - 1*10) >> 10; +- else ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) ++ tsPressure = (15000 - x[3] * (z2 - z1) / z1) >> 4; ++ } ++#endif ++ else ++#if defined(CONFIG_SL_TS_PRESSURE) ++ tsPressure = Pressure = 0; ++#else + Pressure = 0; +- +- ++#endif + cmd = (1u << ADSCTRL_PD0_SH) | (1u << ADSCTRL_PD1_SH) | + (4u << ADSCTRL_ADR_SH) | (1u << ADSCTRL_STS_SH); + /* Power-Down Enable */ +@@ -566,11 +772,25 @@ + // printk("fail %d\n", fail); + + if (fail == TOUCH_PANEL_AVERAGE) { ++#if defined(CONFIG_SL_TS_PRESSURE) ++ tsPressure = Pressure = 0; ++#else + Pressure = 0; ++#endif + // printk("pen up\n"); + } + else { ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) { ++ if (z1) { ++ tsPressure = Pressure = (15000 - x * (z2 - z1) / z1) >> 4; ++ } else ++ tsPressure = Pressure = 0; ++ } else ++ tsPressure = Pressure = 1; ++#else + Pressure = 1; ++#endif + tp->xd = tx / (TOUCH_PANEL_AVERAGE - fail); + tp->yd = ty / (TOUCH_PANEL_AVERAGE - fail); + // printk("pen position (%d,%d)\n", tx, ty); +@@ -742,7 +962,11 @@ + + static void new_data(void) + { ++#if !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_POODLE) ++#if !defined(CONFIG_POODLE_TR0) + int diff0, diff1, diff2, diff3; ++#endif ++#endif + + #ifdef CONFIG_PM + if( PowerDownMode != PMPD_MODE_ACTIVE ) +@@ -862,6 +1086,25 @@ + } + #endif + ++/// write ts data ++#if defined(CONFIG_SL_WRITE_TS) ++static void write_new_data(TS_EVENT write_data) ++{ ++ write_data.millisecs = jiffies; ++ tbuf[head++] = write_data; ++ ++ if (head >= BUFSIZE) { head = 0; } ++ ++ if (head == tail && ++tail >= BUFSIZE) { tail = 0; } ++ ++ if (fasync) ++ kill_fasync(&fasync, SIGIO, POLL_IN); ++ ++ wake_up_interruptible(&queue); ++} ++#endif ++ ++ + static void cotulla_main_ts_timer(unsigned long irq) + { + // ts_interrupt(irq, NULL, NULL); +@@ -896,6 +1139,7 @@ + // printk("!(%d,%d)",pos_dt.xd,pos_dt.yd); + tc.x = pos_dt.xd; + tc.y = pos_dt.yd; ++ + #if defined(CONFIG_ARCH_PXA_POODLE) + lock_FCS(POWER_MODE_TOUCH, 1); // not enter FCS mode. + #if defined(CONFIG_POODLE_TR0) +@@ -907,11 +1151,53 @@ + tc.pressure = 500; + #elif defined(CONFIG_ARCH_PXA_CORGI) + if( pos_dt.xd && pos_dt.yd && Pressure ) { ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++ if (three_button_mode) { ++ switch (pressure_alt) { ++ case 0x00: ++ tc.pressure = 500; ++ break; ++ case 0x01: ++ tc.pressure = 1000; ++ break; ++ case 0x02: ++ tc.pressure = 2000; ++ break; ++ default: ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) ++ tc.pressure = Pressure; ++ else ++ tc.pressure = 500; ++#else ++ tc.pressure = 500; ++#endif ++ break; ++ } ++ ++ /* printk("pressure = %d \n",tc.pressure); */ ++ } else ++#endif ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) ++ tc.pressure = Pressure; ++ else ++ tc.pressure = 500; ++#else + tc.pressure = 500; ++#endif ++ + #else + if( pos_dt.xd && pos_dt.yd ){ ++#if defined(CONFIG_SL_TS_PRESSURE) ++ if (tspressure_mode) ++ tc.pressure = Pressure; ++ else ++ tc.pressure = 1; ++#else + tc.pressure = 1; + #endif ++#endif + before_data = tc; + pendown = 1; + new_data(); +@@ -956,7 +1242,37 @@ + static void ts_hardware_init(void) + { + unsigned int dummy; ++ ++#if defined(CONFIG_SL_TS_PRESSURE) ++ struct proc_dir_entry *tspressure_proc; ++#endif ++ ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++ struct proc_dir_entry *three_button_proc; ++#endif ++ ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++ struct proc_dir_entry *power_key_off_proc; ++#endif ++ ++#if defined(CONFIG_SL_TS_PRESSURE) ++ tspressure_proc = create_proc_entry("tspressure", 0, NULL); ++ if (tspressure_proc) ++ tspressure_proc->proc_fops = &proc_tspressure_operations; ++#endif + ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++ three_button_proc = create_proc_entry("three_button", 0, NULL); ++ if (three_button_proc) ++ three_button_proc->proc_fops = &proc_three_button_operations; ++#endif ++ ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++ power_key_off_proc = create_proc_entry("power_key_off", 0, NULL); ++ if (power_key_off_proc) ++ power_key_off_proc->proc_fops = &proc_power_key_off_operations; ++#endif ++ + #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) + pxa_ssp_init(); + #else +@@ -1043,6 +1359,7 @@ + y_rev = 0; + xyswap = 1; + #else ++#ifdef CONFIG_FBCON_ROTATE_R + res_x = 480; + res_y = 640; + +@@ -1050,7 +1367,17 @@ + x_rev = 1; + y_rev = 0; + xyswap = 1; ++#else ++ res_x = 640; ++ res_y = 480; ++ ++ cal_ok = 1; ++ x_rev = 0; ++ y_rev = 0; ++ xyswap = 0; ++#endif + #endif ++ + #else + #ifdef USE_SL5500_QT + res_x = 240; +@@ -1170,7 +1497,6 @@ + + r.pressure = t.pressure; + r.millisecs = t.millisecs; +- //printk("ts:ts_read(x, y, p) = (%d, %d, %d)\n", (unsigned int)r.x, (unsigned int)r.y, (unsigned int)r.pressure); + + copy_to_user(buffer,&r,sizeof(TS_EVENT)); + } +@@ -1180,10 +1506,54 @@ + static ssize_t ts_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) + { + #if defined(CONFIG_ARCH_PXA_CORGI) +- unsigned long param; + char *endp; +- wait_after_sync_hs = simple_strtoul(buffer, &endp, 0); ++#if defined(CONFIG_SL_WRITE_TS) ++ ++ static TS_EVENT data, raw_data; ++ char tmp[50]; ++ int len; ++ len=49; ++ if(len>count) len=count; ++ copy_from_user(tmp,buffer,len); ++ tmp[len]='\0'; ++ ++ if (sscanf(tmp,"%d %d %d %d",&data.pressure, &data.x, &data.y, &data.millisecs) == 4) { ++// printk("pressure= %d : x= %d : y= %d : millosecs= %d\n", data.pressure, data.x, data.y, data.millisecs); ++ ++ if (cal_ok) { ++ raw_data.x = (x_rev) ? raw_max_x - ((raw_max_x - raw_min_x) * data.x) / res_x ++ : raw_min_x + ((raw_max_x - raw_min_x) * data.x) / res_x; ++ ++ raw_data.y = (y_rev) ? raw_max_y - ((raw_max_y - raw_min_y) * data.y) / res_y ++ : raw_min_y + ((raw_max_y - raw_min_y) * data.y) / res_y; ++ ++ } else { ++ raw_data.x = data.x; ++ raw_data.y = data.y; ++ } ++ ++ if (xyswap) { ++ short tmp = raw_data.x; ++ raw_data.x = raw_data.y; ++ raw_data.y = tmp; ++ } ++ ++ raw_data.pressure = data.pressure; ++ raw_data.millisecs = data.millisecs; ++ ++ write_new_data(raw_data); ++ return count; ++ ++ }else { ++#endif ++ wait_after_sync_hs = simple_strtol(buffer, &endp, 0); ++ printk("Wait_after_sync_hs: %d\n",(int) wait_after_sync_hs); + return count+endp-buffer; ++ ++#if defined(CONFIG_SL_WRITE_TS) ++ } ++#endif ++ + #else + return 0; + #endif +@@ -1234,6 +1604,13 @@ + case 17: /* Clear all buffer data */ + print_par(); + break; ++#if defined(CONFIG_SL_TS_PRESSURE) ++ case 64: /* read Pressure */ ++ if (tspressure_mode) { ++ copy_to_user((void *)arg, &tsPressure, sizeof(tsPressure)); ++ break; ++ } ++#endif + default: + return -EINVAL; + } +diff -Nur linux_c860_org/drivers/char/console.c linux/drivers/char/console.c +--- linux_c860_org/drivers/char/console.c 2002-12-18 19:27:56.000000000 +0900 ++++ linux/drivers/char/console.c 2004-06-10 21:09:10.000000000 +0900 +@@ -94,6 +94,11 @@ + #include <linux/slab.h> + #include <linux/major.h> + #include <linux/mm.h> ++ ++#ifdef CONFIG_UNICON ++#include <linux/fb_doublebyte.h> ++#endif ++ + #include <linux/console.h> + #include <linux/init.h> + #include <linux/devfs_fs_kernel.h> +@@ -118,7 +123,10 @@ + + #include "console_macros.h" + +- ++#ifdef CONFIG_UNICON ++#define video_erase_char_ext ((video_erase_char)&0xff) ++extern unsigned short translations[][256]; ++#endif + const struct consw *conswitchp; + + /* A bitmap for codes <32. A bit of 1 indicates that the code +@@ -244,6 +252,20 @@ + p = sw->con_screen_pos(vc_cons[currcons].d, offset); + return p; + } ++#ifdef CONFIG_UNICON ++static inline unsigned short *screenpos_ext(int currcons, int offset, int viewed) ++{ ++ unsigned short *p; ++ ++ if (!viewed) ++ p = (unsigned short *)(origin + offset + screenbuf_size); ++ else if (!sw->con_screen_pos) ++ p = (unsigned short *)(visible_origin + offset + screenbuf_size); ++ else ++ p = sw->con_screen_pos(vc_cons[currcons].d, -offset-1); ++ return p; ++} ++#endif + + static inline void scrolldelta(int lines) + { +@@ -270,6 +292,14 @@ + s = (unsigned short *) (origin+video_size_row*(t+nr)); + scr_memcpyw(d, s, (b-t-nr) * video_size_row); + scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char, video_size_row*nr); ++ ++#ifdef CONFIG_UNICON ++ d += (screenbuf_size>>1); ++ s += (screenbuf_size>>1); ++ scr_memcpyw(d, s, (b-t-nr) * video_size_row); ++ scr_memsetw(d + (b-t-nr) * video_num_columns, video_erase_char_ext, video_size_row*nr); ++#endif ++ + } + + static void +@@ -288,6 +318,11 @@ + step = video_num_columns * nr; + scr_memmovew(s + step, s, (b-t-nr)*video_size_row); + scr_memsetw(s, video_erase_char, 2*step); ++#ifdef CONFIG_UNICON ++ s += (screenbuf_size>>1); ++ scr_memmovew(s + step, s, (b-t-nr)*video_size_row); ++ scr_memsetw(s, video_erase_char_ext, 2*step); ++#endif + } + + static void do_update_region(int currcons, unsigned long start, int count) +@@ -311,6 +346,10 @@ + int startx = xx; + u16 *q = p; + while (xx < video_num_columns && count) { ++#ifdef CONFIG_UNICON ++ //line by line, so the following putcs will be assured to ++ //handle only in-line string. ++#endif + if (attrib != (scr_readw(p) & 0xff00)) { + if (p > q) + sw->con_putcs(vc_cons[currcons].d, q, p-q, yy, startx); +@@ -440,6 +479,39 @@ + } + + /* used by selection: complement pointer position */ ++#ifdef CONFIG_UNICON ++void complement_pos(int currcons, int offset) ++{ ++ static unsigned short *p = NULL; ++ static unsigned short old = 0; ++ static unsigned short oldx = 0, oldy = 0; ++ static unsigned short *p_ext = NULL; ++ static unsigned short old_ext = 0; ++ ++ if (p) { ++ scr_writew(old, p); ++ //scr_writew(old_ext, p_ext); ++ if (DO_UPDATE) ++ sw->con_putc(vc_cons[currcons].d, (old_ext<<16)| old, oldy, oldx); ++ } ++ if (offset == -1) ++ p = NULL; ++ else { ++ unsigned short new; ++ p = screenpos(currcons, offset, 1); ++ p_ext = screenpos_ext(currcons, offset, 1); ++ old = scr_readw(p); ++ old_ext = scr_readw(p_ext); ++ new = old ^ complement_mask; ++ scr_writew(new, p); ++ if (DO_UPDATE) { ++ oldx = (offset >> 1) % video_num_columns; ++ oldy = (offset >> 1) / video_num_columns; ++ sw->con_putc(vc_cons[currcons].d, (old_ext<<16) | new, oldy, oldx); ++ } ++ } ++} ++#else + void complement_pos(int currcons, int offset) + { + static unsigned short *p; +@@ -466,15 +538,23 @@ + } + } + } +- ++#endif + static void insert_char(int currcons, unsigned int nr) + { + unsigned short *p, *q = (unsigned short *) pos; + + p = q + video_num_columns - nr - x; +- while (--p >= q) ++ while (--p >= q) { + scr_writew(scr_readw(p), p + nr); ++#ifdef CONFIG_UNICON ++ scr_writew(scr_readw(p+(screenbuf_size>>1)),p+(screenbuf_size>>1)+nr); ++#endif ++ } + scr_memsetw(q, video_erase_char, nr*2); ++#ifdef CONFIG_UNICON ++ scr_memsetw(q+(screenbuf_size>>1),video_erase_char_ext,nr*2); ++#endif ++ + need_wrap = 0; + if (DO_UPDATE) { + unsigned short oldattr = attr; +@@ -482,8 +562,9 @@ + video_num_columns-x-nr); + attr = video_erase_char >> 8; + while (nr--) +- sw->con_putc(vc_cons[currcons].d, ++ sw->con_putc(vc_cons[currcons].d, + video_erase_char,y,x+nr); ++ + attr = oldattr; + } + } +@@ -492,12 +573,17 @@ + { + unsigned int i = x; + unsigned short *p = (unsigned short *) pos; +- + while (++i <= video_num_columns - nr) { + scr_writew(scr_readw(p+nr), p); ++#ifdef CONFIG_UNICON ++ scr_writew(scr_readw(p+nr+(screenbuf_size>>1)),p+(screenbuf_size>>1)); ++#endif + p++; + } + scr_memsetw(p, video_erase_char, nr*2); ++#ifdef CONFIG_UNICON ++ scr_memsetw(p+(screenbuf_size>>1), video_erase_char_ext, nr*2); ++#endif + need_wrap = 0; + if (DO_UPDATE) { + unsigned short oldattr = attr; +@@ -506,8 +592,8 @@ + attr = video_erase_char >> 8; + while (nr--) + sw->con_putc(vc_cons[currcons].d, +- video_erase_char, y, +- video_num_columns-1-nr); ++ video_erase_char, y, ++ video_num_columns-1-nr); + attr = oldattr; + } + } +@@ -528,7 +614,11 @@ + if ((type & 0x40) && ((i & 0x700) == ((i & 0x7000) >> 4))) i ^= 0x0700; + scr_writew(i, (u16 *) pos); + if (DO_UPDATE) ++#ifndef CONFIG_UNICON + sw->con_putc(vc_cons[currcons].d, i, y, x); ++#else ++ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | (i & 0xffff), y, x); ++#endif + } + + static void hide_cursor(int currcons) +@@ -538,7 +628,11 @@ + if (softcursor_original != -1) { + scr_writew(softcursor_original,(u16 *) pos); + if (DO_UPDATE) ++#ifndef CONFIG_UNICON + sw->con_putc(vc_cons[currcons].d, softcursor_original, y, x); ++#else ++ sw->con_putc(vc_cons[currcons].d, scr_readw((u16 *) pos+ (screenbuf_size>>1))<<16 | softcursor_original, y, x); ++#endif + softcursor_original = -1; + } + sw->con_cursor(vc_cons[currcons].d,CM_ERASE); +@@ -685,7 +779,11 @@ + visual_init(currcons, 1); + if (!*vc_cons[currcons].d->vc_uni_pagedir_loc) + con_set_default_unimap(currcons); ++#ifndef CONFIG_UNICON + q = (long)kmalloc(screenbuf_size, GFP_KERNEL); ++#else ++ q = (long)kmalloc(screenbuf_size*2,GFP_KERNEL); ++#endif + if (!q) { + kfree((char *) p); + vc_cons[currcons].d = NULL; +@@ -727,7 +825,11 @@ + (cc == video_num_columns && ll == video_num_lines)) + newscreens[currcons] = NULL; + else { ++#ifndef CONFIG_UNICON + unsigned short *p = (unsigned short *) kmalloc(ss, GFP_USER); ++#else ++ unsigned short *p = (unsigned short *) kmalloc(ss*2, GFP_USER); ++#endif + if (!p) { + for (i = first; i< currcons; i++) + if (newscreens[i]) +@@ -769,13 +871,23 @@ + + while (ol < scr_end) { + scr_memcpyw((unsigned short *) nl, (unsigned short *) ol, rlth); ++#ifdef CONFIG_UNICON ++ scr_memcpyw((unsigned short *) (nl + ss), (unsigned short*) (ol + oss), rlth); ++#endif + if (rrem) + scr_memsetw((void *)(nl + rlth), video_erase_char, rrem); ++#ifdef CONFIG_UNICON ++ if (rrem) ++ scr_memsetw((void *)(nl + rlth + ss), video_erase_char_ext, rrem); ++#endif + ol += osr; + nl += sr; + } + if (nlend > nl) + scr_memsetw((void *) nl, video_erase_char, nlend - nl); ++#ifdef CONFIG_UNICON ++ scr_memsetw((void *) (nl + ss), video_erase_char_ext, nlend - nl); ++#endif + if (kmalloced) + kfree(screenbuf); + screenbuf = newscreens[currcons]; +@@ -998,6 +1110,9 @@ + return; + } + scr_memsetw(start, video_erase_char, 2*count); ++#ifdef CONFIG_UNICON ++ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count); ++#endif + need_wrap = 0; + } + +@@ -1032,6 +1147,9 @@ + return; + } + scr_memsetw(start, video_erase_char, 2 * count); ++#ifdef CONFIG_UNICON ++ scr_memsetw(start + (screenbuf_size>>1), video_erase_char_ext, 2*count); ++#endif + need_wrap = 0; + } + +@@ -1044,6 +1162,9 @@ + count = (vpar > video_num_columns-x) ? (video_num_columns-x) : vpar; + + scr_memsetw((unsigned short *) pos, video_erase_char, 2 * count); ++#ifdef CONFIG_UNICON ++ scr_memsetw((unsigned short *) pos + (screenbuf_size>>1), video_erase_char_ext, 2*count); ++#endif + if (DO_UPDATE) + sw->con_clear(vc_cons[currcons].d, y, x, 1, count); + need_wrap = 0; +@@ -1720,7 +1841,12 @@ + if (ques) { + clear_selection(); + if (par[0]) ++#ifndef CONFIG_UNICON + complement_mask = par[0]<<8 | par[1]; ++#else ++ // force the low byte to be zero ++ complement_mask = par[0]<<8; ++#endif + else + complement_mask = s_complement_mask; + return 0; +@@ -1966,6 +2092,11 @@ + const unsigned char *orig_buf; + int orig_count; + ++#ifdef CONFIG_UNICON ++#define GB_LEFT 0x8000 ++#define GB_RIGHT 0xc000 ++#endif ++ + if (in_interrupt()) + return count; + +@@ -2076,6 +2207,56 @@ + ((attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) : + (attr << 8) + tc, + (u16 *) pos); ++#ifdef CONFIG_UNICON ++#define HIGH_WORD ((u16 *) ((long)pos + screenbuf_size)) ++#define HIGH_WORD_PREV ((u16 *) ((long)pos - 2 + screenbuf_size)) ++#define HIGH_WORD_NEXT ((u16 *) ((long)pos + 2 + screenbuf_size)) ++ /* ++ * following condiction we do not tread the char as ++ * double byte. ++ * 1. default encoding is NULL. The encode module not ++ * install yet. ++ * 2. Current char set is not the default one. We are ++ * possible drawing a table lines right now. ++ * -Chris ++ */ ++ ++ if (doublebyte_default && translate == translations[0] ++ && (pos==origin||!(scr_readw(HIGH_WORD_PREV)&DB_HALF_MASK)) ++ && doublebyte_default->is_left(tc)){ ++ /*possible the left char of the Double Byte ++ , but we don't know yet, because the right ++ char is unknow right now. So mark it as ++ Half char, the possible candidate ++ -Chris ++ */ ++ scr_writew(DB_HALF_MASK,HIGH_WORD); ++ ++ } else if(doublebyte_default&& translate == translations ++ && scr_readw(HIGH_WORD_PREV)==DB_HALF_MASK ++ && doublebyte_default->is_right(tc)) { ++ scr_writew(DB_LEFT|(tc & 0xff),HIGH_WORD_PREV); ++ scr_writew(DB_RIGHT|(scr_readw((u16*)(pos-2))&0xff),HIGH_WORD); ++ if (DO_UPDATE && draw_x < 0) { ++ draw_from = pos-2 ; ++ if (x>0) { ++ draw_x = x-1; ++ } else { ++ draw_to = pos; ++ draw_x = video_num_columns -1; ++ y--; ++ FLUSH ++ y++; ++ draw_x = 0; ++ draw_from = pos; ++ } ++ } ++ } else { ++ /*normal ASCII or table lines, clean hight byte*/ ++ scr_writew(0,HIGH_WORD); ++ } ++ ++#endif + if (DO_UPDATE && draw_x < 0) { + draw_x = x; + draw_from = pos; +@@ -2234,6 +2415,9 @@ + continue; + } + scr_writew((attr << 8) + c, (unsigned short *) pos); ++#ifdef CONFIG_UNICON ++ scr_writew(0,(unsigned short *) pos + (screenbuf_size>>1)); ++#endif + cnt++; + if (myx == video_num_columns - 1) { + need_wrap = 1; +@@ -2591,7 +2775,11 @@ + vt_cons[currcons] = (struct vt_struct *) + alloc_bootmem(sizeof(struct vt_struct)); + visual_init(currcons, 1); ++#ifdef CONFIG_UNICON ++ screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size * 2); ++#else + screenbuf = (unsigned short *) alloc_bootmem(screenbuf_size); ++#endif + kmalloced = 0; + vc_init(currcons, video_num_lines, video_num_columns, + currcons || !sw->con_save_screen); +@@ -3064,7 +3252,12 @@ + gotoxy(currcons, p[0], p[1]); + set_cursor(currcons); + } +- ++#ifdef CONFIG_UNICON ++/* ++Now, the unicon doesn't support vcs! ++To support it, first change the vc_screen.c! ++*/ ++#endif + u16 vcs_scr_readw(int currcons, const u16 *org) + { + if ((unsigned long)org == pos && softcursor_original != -1) +@@ -3106,6 +3299,15 @@ + /* + * Visible symbols for modules + */ ++#ifdef CONFIG_UNICON ++int (*Unicon_fnKeyHook) ++ (struct tty_struct *tty, unsigned char ch, char flag) = NULL; ++int (*Unicon_fnLowerKeyHook) (unsigned char ch) = NULL; ++ ++EXPORT_SYMBOL(Unicon_fnLowerKeyHook); ++EXPORT_SYMBOL(Unicon_fnKeyHook); ++EXPORT_SYMBOL(vc_cons); ++#endif + + EXPORT_SYMBOL(color_table); + EXPORT_SYMBOL(default_red); +diff -Nur linux_c860_org/drivers/char/consolemap.c linux/drivers/char/consolemap.c +--- linux_c860_org/drivers/char/consolemap.c 2002-08-26 14:38:30.000000000 +0900 ++++ linux/drivers/char/consolemap.c 2004-06-10 21:09:10.000000000 +0900 +@@ -22,7 +22,11 @@ + #include <linux/console_struct.h> + #include <linux/vt_kern.h> + ++#ifndef CONFIG_UNICON + static unsigned short translations[][256] = { ++#else ++unsigned short translations[][256] = { ++#endif + /* 8-bit Latin-1 mapped to Unicode -- trivial mapping */ + { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, +diff -Nur linux_c860_org/drivers/char/corgi_logkey.c linux/drivers/char/corgi_logkey.c +--- linux_c860_org/drivers/char/corgi_logkey.c 2003-06-18 16:12:26.000000000 +0900 ++++ linux/drivers/char/corgi_logkey.c 2004-06-10 21:09:10.000000000 +0900 +@@ -605,6 +605,7 @@ + + #if CHECK_ROLLOVER + #define MAX_KEY_PRESS (6) ++#define MAX_KEY_PRESS_THRESHOLD (6 + 1) + #endif + + void sharppda_scan_key_gpio(void* dummy) +@@ -707,8 +708,8 @@ + if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_FUNCTION)) { + rollover_count--; + } +- if ((rollover_count > 3) || +- ((rollover_count == 3) && ++ if ((rollover_count > MAX_KEY_PRESS_THRESHOLD) || ++ ((rollover_count == MAX_KEY_PRESS_THRESHOLD) && + (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) || + ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) && + (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) || +diff -Nur linux_c860_org/drivers/char/direct.uni linux/drivers/char/direct.uni +--- linux_c860_org/drivers/char/direct.uni 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/direct.uni 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,259 @@ ++0x00 U+0000 ++0x20 U+0020 ++0x21 U+0021 ++0x22 U+0022 ++0x23 U+0023 ++0x24 U+0024 ++0x25 U+0025 ++0x26 U+0026 ++0x27 U+0027 ++0x28 U+0028 ++0x29 U+0029 ++0x2a U+002a ++0x2b U+002b ++0x2c U+002c ++0x2d U+002d ++0x2e U+002e ++0x2f U+002f ++0x30 U+0030 ++0x31 U+0031 ++0x32 U+0032 ++0x33 U+0033 ++0x34 U+0034 ++0x35 U+0035 ++0x36 U+0036 ++0x37 U+0037 ++0x38 U+0038 ++0x39 U+0039 ++0x3a U+003a ++0x3b U+003b ++0x3c U+003c ++0x3d U+003d ++0x3e U+003e ++0x3f U+003f ++0x40 U+0040 ++0x41 U+0041 ++0x42 U+0042 ++0x43 U+0043 ++0x44 U+0044 ++0x45 U+0045 ++0x46 U+0046 ++0x47 U+0047 ++0x48 U+0048 ++0x49 U+0049 ++0x4a U+004a ++0x4b U+004b ++0x4c U+004c ++0x4d U+004d ++0x4e U+004e ++0x4f U+004f ++0x50 U+0050 ++0x51 U+0051 ++0x52 U+0052 ++0x53 U+0053 ++0x54 U+0054 ++0x55 U+0055 ++0x56 U+0056 ++0x57 U+0057 ++0x58 U+0058 ++0x59 U+0059 ++0x5a U+005a ++0x5b U+005b ++0x5c U+005c ++0x5d U+005d ++0x5e U+005e ++0x5f U+005f ++0x60 U+0060 ++0x61 U+0061 ++0x62 U+0062 ++0x63 U+0063 ++0x64 U+0064 ++0x65 U+0065 ++0x66 U+0066 ++0x67 U+0067 ++0x68 U+0068 ++0x69 U+0069 ++0x6a U+006a ++0x6b U+006b ++0x6c U+006c ++0x6d U+006d ++0x6e U+006e ++0x6f U+006f ++0x70 U+0070 ++0x71 U+0071 ++0x72 U+0072 ++0x73 U+0073 ++0x74 U+0074 ++0x75 U+0075 ++0x76 U+0076 ++0x77 U+0077 ++0x78 U+0078 ++0x79 U+0079 ++0x7a U+007a ++0x7b U+007b ++0x7c U+007c ++0x7d U+007d ++0x7e U+007e ++0x7f U+007f ++0x80 U+0080 ++0x81 U+0081 ++0x82 U+0082 ++0x83 U+0083 ++0x84 U+0084 ++0x85 U+0085 ++0x86 U+0086 ++0x87 U+0087 ++0x88 U+0088 ++0x89 U+0089 ++0x8a U+008a ++0x8b U+008b ++0x8c U+008c ++0x8d U+008d ++0x8e U+008e ++0x8f U+008f ++0x90 U+0090 ++0x91 U+0091 ++0x92 U+0092 ++0x93 U+0093 ++0x94 U+0094 ++0x95 U+0095 ++0x96 U+0096 ++0x97 U+0097 ++0x98 U+0098 ++0x99 U+0099 ++0x9a U+009a ++0x9b U+009b ++0x9c U+009c ++0x9d U+009d ++0x9e U+009e ++0x9f U+009f ++0xa0 U+00a0 ++0xa1 U+00a1 ++0xa2 U+00a2 ++0xa3 U+00a3 ++0xa4 U+00a4 ++0xa5 U+00a5 ++0xa6 U+00a6 ++0xa7 U+00a7 ++0xa8 U+00a8 ++0xa9 U+00a9 ++0xaa U+00aa ++0xab U+00ab ++0xac U+00ac ++0xad U+00ad ++0xae U+00ae ++0xaf U+00af ++0xb0 U+00b0 ++0xb1 U+00b1 ++0xb2 U+00b2 ++0xb3 U+00b3 ++0xb4 U+00b4 ++0xb5 U+00b5 ++0xb6 U+00b6 ++0xb7 U+00b7 ++0xb8 U+00b8 ++0xb9 U+00b9 ++0xba U+00ba ++0xbb U+00bb ++0xbc U+00bc ++0xbd U+00bd ++0xbe U+00be ++0xbf U+00bf ++0xc0 U+00c0 ++0xc1 U+00c1 ++0xc2 U+00c2 ++0xc3 U+00c3 ++0xc4 U+00c4 ++0xc5 U+00c5 ++0xc6 U+00c6 ++0xc7 U+00c7 ++0xc8 U+00c8 ++0xc9 U+00c9 ++0xca U+00ca ++0xcb U+00cb ++0xcc U+00cc ++0xcd U+00cd ++0xce U+00ce ++0xcf U+00cf ++0xd0 U+00d0 ++0xd1 U+00d1 ++0xd2 U+00d2 ++0xd3 U+00d3 ++0xd4 U+00d4 ++0xd5 U+00d5 ++0xd6 U+00d6 ++0xd7 U+00d7 ++0xd8 U+00d8 ++0xd9 U+00d9 ++0xda U+00da ++0xdb U+00db ++0xdc U+00dc ++0xdd U+00dd ++0xde U+00de ++0xdf U+00df ++0xe0 U+00e0 ++0xe1 U+00e1 ++0xe2 U+00e2 ++0xe3 U+00e3 ++0xe4 U+00e4 ++0xe5 U+00e5 ++0xe6 U+00e6 ++0xe7 U+00e7 ++0xe8 U+00e8 ++0xe9 U+00e9 ++0xea U+00ea ++0xeb U+00eb ++0xec U+00ec ++0xed U+00ed ++0xee U+00ee ++0xef U+00ef ++0xf0 U+00f0 ++0xf1 U+00f1 ++0xf2 U+00f2 ++0xf3 U+00f3 ++0xf4 U+00f4 ++0xf5 U+00f5 ++0xf6 U+00f6 ++0xf7 U+00f7 ++0xf8 U+00f8 ++0xf9 U+00f9 ++0xfa U+00fa ++0xfb U+00fb ++0xfc U+00fc ++0xfd U+00fd ++0xfe U+00fe ++0xff U+00ff ++0x07 U+2022 ++0x13 U+203c ++0x4b U+212a ++0x1b U+2190 ++0x18 U+2191 ++0x1a U+2192 ++0x19 U+2193 ++0x1d U+2194 ++0x12 U+2195 ++0x17 U+21a8 ++0x1c U+221f ++0x16 U+25ac ++0x1e U+25b2 ++0x10 U+25b6 ++0x10 U+25ba ++0x1f U+25bc ++0x11 U+25c0 ++0x11 U+25c4 ++0x04 U+25c6 ++0x09 U+25cb ++0x08 U+25d8 ++0x0a U+25d9 ++0x01 U+263a ++0x02 U+263b ++0x0f U+263c ++0x0c U+2640 ++0x0b U+2642 ++0x06 U+2660 ++0x05 U+2663 ++0x03 U+2665 ++0x04 U+2666 ++0x0d U+266a ++0x0e U+266b ++0x5f U+f804 +diff -Nur linux_c860_org/drivers/char/efirtc.c linux/drivers/char/efirtc.c +--- linux_c860_org/drivers/char/efirtc.c 2002-08-26 14:38:31.000000000 +0900 ++++ linux/drivers/char/efirtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -118,6 +118,7 @@ + static void + convert_from_efi_time(efi_time_t *eft, struct rtc_time *wtime) + { ++ memset(wtime, 0, sizeof(struct rtc_time)); + wtime->tm_sec = eft->second; + wtime->tm_min = eft->minute; + wtime->tm_hour = eft->hour; +diff -Nur linux_c860_org/drivers/char/keyboard.c linux/drivers/char/keyboard.c +--- linux_c860_org/drivers/char/keyboard.c 2002-12-18 19:27:58.000000000 +0900 ++++ linux/drivers/char/keyboard.c 2004-06-10 21:09:10.000000000 +0900 +@@ -40,6 +40,7 @@ + + #include <asm/keyboard.h> + #include <asm/bitops.h> ++#include <asm/uaccess.h> + + #include <linux/kbd_kern.h> + #include <linux/kbd_diacr.h> +@@ -118,6 +119,23 @@ + static struct kbd_struct * kbd = kbd_table; + static struct tty_struct * tty; + ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++#if defined(CONFIG_BOOT_POWER_KEY_OFF) ++unsigned int power_key_off_mode = 1; ++#else ++unsigned int power_key_off_mode = 0; ++#endif ++#endif ++ ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++#if defined(CONFIG_BOOT_3BUTTON_PATCH_ON) ++unsigned int three_button_mode = 1; ++#else ++unsigned int three_button_mode = 0; ++#endif ++int pressure_alt; ++#endif ++ + static void kbd_processkeycode(unsigned char scancode, char up_flag, int autorepeat); + void compute_shiftstate(void); + +@@ -179,6 +197,8 @@ + + static struct pm_dev *pm_kbd; + ++ ++ + /* + * Many other routines do put_queue, but I think either + * they produce ASCII, or they produce some user-assigned +@@ -224,6 +244,55 @@ + + void handle_scancode(unsigned char scancode, int down) + { ++ ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++ /* printk("scancode = %x down = %x \n",scancode,down); */ ++ /* SL-C700 side power 0x6d */ ++ if ( power_key_off_mode && ( scancode == 0x6d ) && ( down == 0x01 ) ){ ++ ++ printk("power button\n"); ++ slc7x0_key_suspend(); ++ ++ ++ /* SL-C700 Calender down 0x58 */ ++ } else ++#endif ++#if defined(CONFIG_SL_3BUTTON_PATCH) ++ if ( three_button_mode && ( scancode == 0x59 ) && ( down == 0x01 ) ){ ++ ++ pressure_alt=0x01; ++ handle_scancode_main ( scancode, down ); ++ ++ /* SL-C700 Calender up 0xd8 */ ++ } else if ( three_button_mode && ( scancode == 0xd9 ) && ( down == 0x00 ) ){ ++ ++ pressure_alt=0x00; ++ handle_scancode_main ( scancode, down ); ++ ++ /* SL-C700 Address down 0x59 */ ++ } else if ( three_button_mode && ( scancode == 0x28 ) && ( down == 0x01 ) ){ ++ ++ pressure_alt=0x02; ++ handle_scancode_main ( scancode, down ); ++ ++ /* SL-C700 Address up 0xd9 */ ++ } else if ( three_button_mode && ( scancode == 0xa8 ) && ( down == 0x00 ) ){ ++ ++ pressure_alt=0x00; ++ handle_scancode_main ( scancode, down ); ++ } else ++#endif ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH) ++ { ++ ++ handle_scancode_main ( scancode, down ); ++ ++ } ++} ++ ++void handle_scancode_main(unsigned char scancode, int down) ++{ ++#endif + unsigned char keycode; + char up_flag = down ? 0 : 0200; + char raw_mode; +@@ -274,8 +343,8 @@ + static void + kbd_processkeycode(unsigned char keycode, char up_flag, int autorepeat) + { +- char raw_mode = (kbd->kbdmode == VC_RAW); + ++ char raw_mode = (kbd->kbdmode == VC_RAW); + if (up_flag) { + rep = 0; + if(!test_and_clear_bit(keycode, key_down)) +@@ -1020,12 +1089,35 @@ + + pm_callback pm_kbd_request_override = NULL; + ++#if defined(CONFIG_KBD_DEV_FILE) ++#define KBD_MAJOR 241 ++struct fasync_struct *fasync_kbd; ++ ++static int kbd_open(struct inode *, struct file *); ++static int kbd_release(struct inode *, struct file *); ++static int kbd_fasync(int fd, struct file *filp, int on); ++static ssize_t kbd_read(struct file *, char *, size_t, loff_t *); ++static ssize_t kbd_write(struct file *, const char *, size_t, loff_t *); ++ ++struct file_operations kbd_fops = { ++ open: kbd_open, ++ release: kbd_release, ++ fasync: kbd_fasync, ++ read: kbd_read, ++ write: kbd_write, ++}; ++#endif ++ + int __init kbd_init(void) + { + int i; + struct kbd_struct kbd0; + extern struct tty_driver console_driver; + ++#if defined(CONFIG_KBD_DEV_FILE) ++ if ( register_chrdev(KBD_MAJOR,"kbd",&kbd_fops) ) ++ printk("unable to get major %d for keyboard\n", KBD_MAJOR); ++#endif + kbd0.ledflagstate = kbd0.default_ledflagstate = KBD_DEFLEDS; + kbd0.ledmode = LED_SHOW_FLAGS; + kbd0.lockstate = KBD_DEFLOCK; +@@ -1047,3 +1139,56 @@ + + return 0; + } ++ ++#if defined(CONFIG_KBD_DEV_FILE) ++static int kbd_open(struct inode *inode, struct file *file) ++{ ++ kdev_t dev = inode->i_rdev; ++ ++ return 0; ++} ++ ++ ++static int kbd_release(struct inode *inode, struct file *file) ++{ ++ kbd_fasync(-1, file, 0); ++ return 0; ++} ++ ++static int kbd_fasync(int fd, struct file *filp, int on) ++{ ++ int retval; ++ ++ retval = fasync_helper(fd, filp, on, &fasync_kbd); ++ if (retval < 0) ++ return retval; ++ return 0; ++} ++ ++static ssize_t kbd_read(struct file *file, char *buffer, size_t count, loff_t *ppos) ++{ ++// printk("kbd read\n"); ++ return 0; ++} ++ ++static ssize_t kbd_write(struct file *file, const char *buffer, size_t count, loff_t *ppos) ++{ ++ char tmp[50]; ++ int len; ++ int kbd_scancode,kbd_down; ++ ++ len=49; ++ ++ if(len>count) len=count; ++ copy_from_user(tmp,buffer,len); ++ tmp[len]='\0'; ++ ++ if (sscanf(tmp,"%d %d",&kbd_scancode, &kbd_down) == 2) { ++// printk("kbd write %02x %02x\n",kbd_scancode,kbd_down); ++ handle_scancode(kbd_scancode,kbd_down); ++ } ++ ++// printk("kbd write\n"); ++ return count; ++} ++#endif +diff -Nur linux_c860_org/drivers/char/mem.c linux/drivers/char/mem.c +--- linux_c860_org/drivers/char/mem.c 2002-08-26 14:44:15.000000000 +0900 ++++ linux/drivers/char/mem.c 2004-06-10 21:09:10.000000000 +0900 +@@ -397,7 +397,7 @@ + if (count > size) + count = size; + +- zap_page_range(mm, addr, count); ++ zap_page_range(mm, addr, count, ZPR_NORMAL); + zeromap_page_range(addr, count, PAGE_COPY); + + size -= count; +diff -Nur linux_c860_org/drivers/char/pc_keyb.c linux/drivers/char/pc_keyb.c +--- linux_c860_org/drivers/char/pc_keyb.c 2002-08-26 14:38:31.000000000 +0900 ++++ linux/drivers/char/pc_keyb.c 2004-06-10 21:09:10.000000000 +0900 +@@ -464,14 +464,36 @@ + + static unsigned char kbd_exists = 1; + +-static inline void handle_keyboard_event(unsigned char scancode) ++#ifdef CONFIG_UNICON ++extern int (*Unicon_fnLowerKeyHook) (unsigned char ch); ++extern int (*Unicon_fnKeyHook) (struct tty_struct *tty, \ ++ unsigned char ch, char flag); ++#endif ++static inline int handle_keyboard_event(unsigned char scancode) + { + #ifdef CONFIG_VT + kbd_exists = 1; +- if (do_acknowledge(scancode)) +- handle_scancode(scancode, !(scancode & 0x80)); ++ if (do_acknowledge(scancode)){ ++#ifdef CONFIG_UNICON ++ if (Unicon_fnLowerKeyHook != NULL){ ++ /* return 1 ==> processed by kernel ++ return 0 ==> processed by app */ ++ if (scancode == 0x58){ /* F12 kill unicode */ ++ Unicon_fnKeyHook = NULL; ++ Unicon_fnLowerKeyHook = NULL; ++ return 1; ++ } ++ if ((*Unicon_fnLowerKeyHook) (scancode) == 1) ++ return 1; ++ else ++ handle_scancode(scancode,!(scancode & 0x80)); ++ } else ++#endif ++ handle_scancode(scancode, !(scancode & 0x80)); ++ } + #endif + tasklet_schedule(&keyboard_tasklet); ++ return 0; + } + + /* +@@ -501,7 +523,8 @@ + if (status & KBD_STAT_MOUSE_OBF) + handle_mouse_event(scancode); + else +- handle_keyboard_event(scancode); ++ if(handle_keyboard_event(scancode)) ++ return status; + } + + status = kbd_read_status(); +diff -Nur linux_c860_org/drivers/char/pcmcia/Config.in linux/drivers/char/pcmcia/Config.in +--- linux_c860_org/drivers/char/pcmcia/Config.in 2002-08-26 14:44:23.000000000 +0900 ++++ linux/drivers/char/pcmcia/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -5,13 +5,7 @@ + mainmenu_option next_comment + comment 'PCMCIA character devices' + +-if [ "$CONFIG_SERIAL" = "y" -o "$CONFIG_SERIAL_8250" = "y" ]; then +- dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS y +-else +- if [ "$CONFIG_SERIAL" = "m" -o "$CONFIG_SERIAL_8250" = "m" ]; then +- dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS m +- fi +-fi ++dep_tristate 'PCMCIA serial device support' CONFIG_PCMCIA_SERIAL_CS $CONFIG_SERIAL + if [ "$CONFIG_PCMCIA_SERIAL_CS" = "y" ]; then + define_bool CONFIG_PCMCIA_CHRDEV y + fi +diff -Nur linux_c860_org/drivers/char/rtc.c linux/drivers/char/rtc.c +--- linux_c860_org/drivers/char/rtc.c 2002-08-26 14:38:31.000000000 +0900 ++++ linux/drivers/char/rtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -326,7 +326,7 @@ + * means "don't care" or "match all". Only the tm_hour, + * tm_min, and tm_sec values are filled in. + */ +- ++ memset(&wtime, 0, sizeof(struct rtc_time)); + get_rtc_alm_time(&wtime); + break; + } +@@ -374,6 +374,7 @@ + } + case RTC_RD_TIME: /* Read the time/date from RTC */ + { ++ memset(&wtime, 0, sizeof(struct rtc_time)); + get_rtc_time(&wtime); + break; + } +diff -Nur linux_c860_org/drivers/char/serial.c linux/drivers/char/serial.c +--- linux_c860_org/drivers/char/serial.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/char/serial.c 2004-06-10 21:09:10.000000000 +0900 +@@ -61,6 +61,7 @@ + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 + * 31-Jul-2002 Lineo Japan, Inc. for ARCH_PXA + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + static char *serial_version = "5.05c"; +@@ -98,11 +99,14 @@ + + #include <linux/config.h> + #include <linux/version.h> ++ + #if defined(CONFIG_SABINAL_DISCOVERY) || \ + defined(CONFIG_ARCH_PXA_POODLE) || \ +- defined(CONFIG_ARCH_PXA_CORGI) ++ defined(CONFIG_ARCH_PXA_CORGI) || \ ++ defined(CONFIG_ARCH_PXA_TOSA) + #undef CONFIG_SERIAL_CONSOLE + #endif ++ + #if defined(CONFIG_SABINAL_DISCOVERY) + #define CONFIG_REDEFINE_IO8BIT + #endif +@@ -259,7 +263,8 @@ + #elif defined(CONFIG_SA1100_COLLIE) || \ + defined(CONFIG_SABINAL_DISCOVERY) || \ + defined(CONFIG_ARCH_PXA_POODLE) || \ +- defined(CONFIG_ARCH_PXA_CORGI) ++ defined(CONFIG_ARCH_PXA_CORGI) || \ ++ defined(CONFIG_ARCH_PXA_TOSA) + #define SERIAL_DEV_OFFSET 3 + #else + #define SERIAL_DEV_OFFSET 0 +@@ -1332,7 +1337,7 @@ + #ifdef CONFIG_ARCH_PXA + if (state->type == PORT_PXA) { + switch ((long)state->iomem_base) { +-#if defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY) ++#if defined(CONFIG_PM) && defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY) + case (long)&FFUART: lock_FCS(LOCK_FCS_FFUART, 1); CKEN |= CKEN6_FFUART; break; + case (long)&BTUART: lock_FCS(LOCK_FCS_BTUART, 1); CKEN |= CKEN7_BTUART; break; + case (long)&STUART: lock_FCS(LOCK_FCS_STUART, 1); CKEN |= CKEN5_STUART; break; +@@ -1615,7 +1620,7 @@ + #ifdef CONFIG_ARCH_PXA + if (state->type == PORT_PXA) { + switch ((long)state->iomem_base) { +-#if defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY) ++#if defined(CONFIG_PM) && defined(CONFIG_ARCH_SHARP_SL) && !defined(CONFIG_SABINAL_DISCOVERY) + case (long)&FFUART: CKEN &= ~CKEN6_FFUART; lock_FCS(LOCK_FCS_FFUART, 0); break; + case (long)&BTUART: CKEN &= ~CKEN7_BTUART; lock_FCS(LOCK_FCS_BTUART, 0); break; + case (long)&STUART: CKEN &= ~CKEN5_STUART; lock_FCS(LOCK_FCS_STUART, 0); break; +@@ -6103,7 +6108,7 @@ + { + register_console(&sercons); + } +-#endif ++#endif /* CONFIG_SERIAL_CONSOLE */ + + /* + Local variables: +diff -Nur linux_c860_org/drivers/char/serial_pxa200.c linux/drivers/char/serial_pxa200.c +--- linux_c860_org/drivers/char/serial_pxa200.c 2003-01-29 16:14:45.000000000 +0900 ++++ linux/drivers/char/serial_pxa200.c 2004-06-10 21:09:10.000000000 +0900 +@@ -59,6 +59,8 @@ + * + * Change Log + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + static char *serial_version = "5.05c"; +@@ -228,8 +230,9 @@ + #endif + #ifdef CONFIG_PM + #include <linux/pm.h> +-#include <linux/apm_bios.h> + #endif ++#include <linux/apm_bios.h> ++#include <asm/sharp_char.h> + + /* + * All of the compatibilty code so we can compile serial.c against +@@ -414,7 +417,7 @@ + + #define CONFIG_DISCOVERY_DVT + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #define CONFIG_SHARPSL_PXA + #endif + +@@ -439,17 +442,24 @@ + #define XPA210_DISCOVERY_IRDA_LINE 1 + #define xpa210_discovery_is_irda_line(line) ((line) == XPA210_DISCOVERY_IRDA_LINE) + +-void clr_discovery_irda(u8 x){ ++static void clr_discovery_irda(u8 x){ + #if defined(CONFIG_SABINAL_DISCOVERY) + ASIC3_GPIO_PIOD_B &= ~(0x1000); ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ reset_scoop_gpio(SCP_IR_POWERDWN); ++ set_GPIO_mode(GPIO47_STTXD|GPIO_OUT); ++ GPCR(GPIO47_STTXD) = GPIO_bit(GPIO47_STTXD); + #elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) + GPSR(GPIO_IR_ON) = GPIO_bit(GPIO_IR_ON); + #endif + //printk("discovery_irda power on\n"); +- } +-void set_discovery_irda(u8 x){ ++} ++static void set_discovery_irda(u8 x){ + #if defined(CONFIG_SABINAL_DISCOVERY) + ASIC3_GPIO_PIOD_B |= 0x1000; ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ set_GPIO_mode(GPIO47_STTXD_MD); ++ set_scoop_gpio(SCP_IR_POWERDWN); + #elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) + GPCR(GPIO_IR_ON) = GPIO_bit(GPIO_IR_ON); + #endif +@@ -470,14 +480,53 @@ + + #endif + ++#if defined(CONFIG_BLUETOOTH_SL) ++#define PXA_BLUETOOTH_LINE 2 ++#define pxa_is_bluetooth_line(line) ((line) == PXA_BLUETOOTH_LINE) ++ ++static int has_bluetooth = -1; ++static int bluetooth_open = 0; ++struct async_struct *bluetooth_info = 0; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#define AVOID_ROLLBACK ++#ifdef AVOID_ROLLBACK ++extern int rollback_cancel; ++#endif ++#endif ++static int pxa_check_bluetooth_unit() ++{ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ set_GPIO_mode(GPIO42_BTRXD|GPIO_IN); ++ set_GPIO_mode(GPIO43_BTTXD|GPIO_IN); ++ set_GPIO_mode(GPIO44_BTCTS|GPIO_IN); ++ set_GPIO_mode(GPIO45_BTRTS|GPIO_IN); ++ set_scoop_gpio(SCP_BT_PWR_EN); ++ mdelay(5); ++ if ( (GPLR(GPIO42_BTRXD) & GPIO_bit(GPIO42_BTRXD))==0 && ++ (GPLR(GPIO44_BTCTS) & GPIO_bit(GPIO44_BTCTS))==0) { ++ reset_scoop_gpio(SCP_BT_PWR_EN); ++ has_bluetooth=0; ++ return 0; // no bluetooth ++ } ++ reset_scoop_gpio(SCP_BT_PWR_EN); ++ has_bluetooth=1; ++ return 1; ++#else ++ return 0; ++#endif ++} ++#endif // end CONFIG_BLUETOOTH_SL ++ + #ifdef CONFIG_PM + static struct pm_dev *serial_pm_dev; + #endif + + +-#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)) ++#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)) ++#ifdef CONFIG_PM + extern int change_power_mode(unsigned long,int); + #endif ++#endif + + /* + * tmp_buf is used as a temporary buffer by serial_write. We need to +@@ -544,6 +593,7 @@ + read &= ~UART_MSR_CTS; + else + read |= UART_MSR_CTS; ++ + if ( read & UART_MSR_DSR ) + read &= ~UART_MSR_DSR; + else +@@ -633,9 +683,10 @@ + #define STUART_MCR *(volatile unsigned char*)(&STUART + UART_MCR*4) + #define STUART_ISR *(volatile unsigned char*)(&STUART + 8*4) + ++#ifdef CONFIG_PM + void xpa210_discovery_irda_resume (void) { + +-#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)) ++#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)) + if ( !change_power_mode(LOCK_FCS_STUART, 1) ) return; + #endif + +@@ -652,14 +703,17 @@ + //printk("xpa210_discovery_irda_resume\n"); + + } ++#endif + + int xpa210_discovery_irda_enable(struct async_struct * info, u8 x){ + + if (x == 0) { + CKEN &= ~(0x20); //stuart + +-#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)) ++#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)) ++#ifdef CONFIG_PM + change_power_mode(LOCK_FCS_STUART, 0); ++#endif /* CONFIG_PM */ + #endif + + info->IER &= ~(UART_IER_UUE); +@@ -675,8 +729,10 @@ + + //printk("xpa210_discovery_irda_disable\n"); + } else { +-#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI)) ++#if (defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA)) ++#ifdef CONFIG_PM + if ( !change_power_mode(LOCK_FCS_STUART, 1) ) return 1; ++#endif /* CONFIG_PM */ + #endif + + CKEN |= 0x20; //stuart +@@ -696,9 +752,91 @@ + } + return 0; + } ++#endif ++ ++#if defined(CONFIG_BLUETOOTH_SL) ++static int pxa_bluetooth_enable(struct async_struct * info, u8 x) ++{ ++ if (has_bluetooth==0) return -ENODEV; ++ if (x==0) { // off ++ set_scoop_gpio(SCP_BT_RESET); ++ CKEN &= ~(0x1<<7); //btuart ++ set_GPIO_mode(GPIO42_BTRXD|GPIO_IN); ++ set_GPIO_mode(GPIO43_BTTXD|GPIO_IN); ++ set_GPIO_mode(GPIO44_BTCTS|GPIO_IN); ++ set_GPIO_mode(GPIO45_BTRTS|GPIO_IN); ++ mdelay(10); // wait 10ms ++ reset_scoop_gpio(SCP_BT_RESET); ++ reset_scoop_gpio(SCP_BT_PWR_EN); ++ set_led_status(SHARP_LED_BLUETOOTH,0); // turn off BT LED ++ ++ ICMR &= ~(1 << 21); //btuart ++ ++ info->IER &= ~(UART_IER_UUE); ++ serial_out(info, UART_IER, info->IER); ++ ++ info->MCR = 0x0; ++ serial_out(info, UART_MCR, info->MCR); ++ ++ info->IER |= UART_IER_UUE; /* enable UUE */ ++ serial_out(info, UART_IER, info->IER); ++ ++#ifdef CONFIG_PM ++ change_power_mode(LOCK_FCS_BTUART, 0); ++#endif /* CONFIG_PM */ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#ifdef AVOID_ROLLBACK ++ rollback_cancel = 0; ++#endif ++#endif ++ // printk("bluetooth close success.\n"); ++ } else { // on ++#ifdef CONFIG_PM ++ if ( !change_power_mode(LOCK_FCS_BTUART, 1) ) return 1; ++#endif /* CONFIG_PM */ ++ ICMR &= ~(1 << 21); //btuart ++ reset_scoop_gpio(SCP_BT_RESET); ++ set_scoop_gpio(SCP_BT_PWR_EN); ++ ++ set_GPIO_mode(GPIO42_BTRXD_MD); ++ set_GPIO_mode(GPIO43_BTTXD_MD); ++ set_GPIO_mode(GPIO44_BTCTS_MD); ++ set_GPIO_mode(GPIO45_BTRTS_MD); ++ ++ CKEN |= (0x1<<7); //btuart + ++ info->IER &= ~(UART_IER_UUE); ++ serial_out(info, UART_IER, info->IER); ++ ++ info->MCR = UART_MCR_OUT2; ++ serial_out(info, UART_MCR, info->MCR); ++ ++ info->tty->termios->c_cflag &= ~CBAUD; ++ info->tty->termios->c_cflag |= (17 & CBAUD); // set 115.2k ++ change_speed(info, 0); ++ ++ info->IER = UART_IER_UUE|UART_IER_RDI|UART_IER_MSI|UART_IER_RTOIE; /* enable UUE */ ++ serial_out(info, UART_IER, info->IER); ++ serial_inp(info, UART_RX); // reset DR ++ ++ ICMR |= (1 << 21); //btuart ++ ++ set_scoop_gpio(SCP_BT_RESET); ++ mdelay(20); // wait 20ms ++ reset_scoop_gpio(SCP_BT_RESET); ++ set_led_status(SHARP_LED_BLUETOOTH,1); // BT LED on ++ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#ifdef AVOID_ROLLBACK ++ rollback_cancel = 1; ++#endif + #endif + ++ // printk("bluetooth open success.\n"); ++ } ++ return 0; ++} ++#endif + + /* + * For the 16C950 +@@ -824,11 +962,25 @@ + + icount = &info->state->icount; + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + *status = serial_inp(info, UART_LSR); + while (!(*status & UART_LSR_DR)) { + printk("WoWWWW!\n"); + } ++#if 1 // ++ if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ if (*status & UART_LSR_OE) { ++ printk("ERROR: Bluetooth Overrun!!\n"); ++ } ++ if (*status & (UART_LSR_PE|UART_LSR_FE|0x80) ) { ++ printk("ERROR: Bluetooth Error!!\n"); ++ } ++ } ++#endif + } + + do { +@@ -838,7 +990,11 @@ + return; // if TTY_DONT_FLIP is set + } + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + while (!(*status & UART_LSR_DR)) + ; + } +@@ -851,7 +1007,11 @@ + #ifdef SERIAL_DEBUG_INTR + printk("DR%02x:%02x...", ch, *status); + #endif ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + goto IRDA_SKIP; + } + *tty->flip.flag_buf_ptr = 0; +@@ -894,7 +1054,11 @@ + *status &= info->read_status_mask; + + #ifdef CONFIG_SERIAL_CONSOLE ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (!xpa2X0_is_st_uart(info->iomem_base) && !xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (!xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + if (info->line == sercons.index) { + /* Recover the break flag from console xmit */ + *status |= lsr_break_flag; +@@ -996,7 +1160,19 @@ + // udelay(800); + + serial_outp(info, XPA2X0_UART_ISR, XPA210_DISCOVERY_IR_RECV); +- ++#if defined(CONFIG_BLUETOOTH_SL) ++ } else if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ ++ while (!(serial_inp(info, UART_LSR) & UART_LSR_TEMT)) ++ ; ++ ++ info->IER &= ~UART_IER_THRI; ++ serial_out(info, UART_IER, info->IER); ++ status0 = serial_inp(info, UART_IIR); ++ ++ if (intr_done) ++ *intr_done = 0; ++#endif + } else { + info->IER &= ~UART_IER_THRI; + serial_out(info, UART_IER, info->IER); +@@ -1008,7 +1184,11 @@ + if( info->io_type == SERIAL_IO_MEM ){ + count = info->xmit_fifo_size / 2; + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + count = info->xmit_fifo_size ; + } + } else count = info->xmit_fifo_size; +@@ -1039,7 +1219,6 @@ + } else { + do { + serial_out(info, UART_TX, info->xmit.buf[info->xmit.tail]); +- + info->xmit.tail = (info->xmit.tail + 1) & (SERIAL_XMIT_SIZE-1); + info->state->icount.tx++; + if (info->xmit.head == info->xmit.tail) +@@ -1064,6 +1243,10 @@ + // while (!(serial_inp(info, UART_LSR) & UART_LSR_TEMT)) + // ; + ++#if defined(CONFIG_BLUETOOTH_SL) ++ } else if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ ++#endif + } else { + info->IER &= ~UART_IER_THRI; + serial_out(info, UART_IER, info->IER); +@@ -1091,7 +1274,11 @@ + + status = serial_in(info, UART_MSR); + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + // printk("check_modem_status: do nothing\n"); + return; + } +@@ -1325,12 +1512,21 @@ + goto IRDA_INTR_DONE; + } + +- + do { + status = serial_inp(info, UART_LSR); + #ifdef SERIAL_DEBUG_INTR + printk("status = %x...", status); + #endif ++#if 1 // ++ if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ if (status & UART_LSR_OE) { ++ printk("ERROR: Bluetooth Overrun!\n"); ++ } ++ if (status & (UART_LSR_PE|UART_LSR_FE|0x80) ) { ++ printk("ERROR: Bluetooth Error!\n"); ++ } ++ } ++#endif + if (status & UART_LSR_DR) + receive_chars(info, &status, regs); + +@@ -2230,6 +2426,35 @@ + + return; + } ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ cval = UART_LCR_WLEN8; ++#if 1 // for BCSP unit ++ if (cflag & PARENB) { ++ cval |= UART_LCR_PARITY; ++ printk("set even parity enable\n"); ++ } ++ if (!(cflag & PARODD)) { ++ cval |= UART_LCR_EPAR; ++ } ++#endif ++ fcr = UART_FCR_ENABLE_FIFO | UART_FCR_CLEAR_RCVR |UART_FCR_CLEAR_XMIT | UART_FCR_TRIGGER_8; ++ ++ save_flags(flags); cli(); ++ quot = 0x0008; // 115.2kbps ++ ++ serial_outp(info, UART_LCR, cval | UART_LCR_DLAB); /* set DLAB */ ++ serial_outp(info, UART_DLL, quot & 0xff); /* LS of divisor */ ++ serial_outp(info, UART_DLM, quot >> 8); /* MS of divisor */ ++ serial_outp(info, UART_LCR, cval); /* reset DLAB */ ++ info->LCR = cval; /* Save LCR */ ++ serial_outp(info, UART_FCR, fcr); /* set fcr */ ++ ++ restore_flags(flags); ++ ++ return; ++ } ++#endif + + /* Set up FIFO's */ + if (uart_config[info->state->type].flags & UART_USE_FIFO) { +@@ -2448,7 +2673,11 @@ + + #if defined(CONFIG_ARCH_SHARP_SL) + if(info->io_type == SERIAL_IO_MEM){ ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_st_uart(info->iomem_base) || xpa2X0_is_bt_uart(info->iomem_base)) { ++#else + if (xpa2X0_is_st_uart(info->iomem_base)) { ++#endif + + info->IER |= UART_IER_THRI; + serial_out(info, UART_IER, info->IER); +@@ -3508,9 +3737,10 @@ + + + //close IR ++#ifdef CONFIG_PM + #if defined(CONFIG_ARCH_SHARP_SL)&& (CONFIG_IRDA) + if (xpa2X0_is_st_uart(info->iomem_base)) { +- ICMR &= ~(1 << 20); //btuart ++ ICMR &= ~(1 << 20); //stuart + xpa210_discovery_irda_power_off(); + xpa210_discovery_irda_enable(info, 0); + irda_open = 0; irda_info = 0; +@@ -3519,6 +3749,13 @@ + #endif + } + #endif ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (xpa2X0_is_bt_uart(info->iomem_base)) { ++ pxa_bluetooth_enable(info, 0); ++ bluetooth_open = 0; bluetooth_info = 0; ++ } ++#endif // end CONFIG_BLUETOOTH_SL ++#endif /* CONFIG_PM */ + + shutdown(info); + if (tty->driver.flush_buffer) +@@ -3540,12 +3777,14 @@ + wake_up_interruptible(&info->close_wait); + MOD_DEC_USE_COUNT; + +-#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++#ifdef CONFIG_PM + xpa210_discovery_serial_power_off(); + if (xpa2X0_is_ff_uart(info->iomem_base)) { + CKEN &= ~CKEN6_FFUART; + change_power_mode(LOCK_FCS_FFUART, 0); + } ++#endif /* CONFIG_PM */ + #endif + + } +@@ -3906,12 +4145,14 @@ + #endif + } + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++#ifdef CONFIG_PM + xpa210_discovery_serial_power_on(); + if (xpa2X0_is_ff_uart(info->iomem_base)) { +- CKEN |= CKEN6_FFUART; + if ( !change_power_mode(LOCK_FCS_FFUART, 1) ) return -EAGAIN; ++ CKEN |= CKEN6_FFUART; + } ++#endif /* CONFIG_PM */ + #endif + + /* +@@ -3964,7 +4205,7 @@ + info->IER = 0x01; + if ( xpa210_discovery_irda_enable(info, 1) ) return -EAGAIN; + xpa210_discovery_irda_power_on(); +- ICMR |= (1 << 20); //btuart ++ ICMR |= (1 << 20); //stuart + irda_open = 1; + irda_info = info; + #if defined(CONFIG_SABINAL_DISCOVERY) +@@ -3973,6 +4214,15 @@ + } + #endif + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if (pxa_is_bluetooth_line(line)) { ++ int ret; ++ if ( (ret = pxa_bluetooth_enable(info, 1))!=0 ) return ret; ++ bluetooth_open = 1; ++ bluetooth_info = info; ++ } ++#endif // end CONFIG_BLUETOOTH_SL ++ + #ifdef SERIAL_DEBUG_OPEN + printk("\nrs_open ttys%d successful...", info->line); + #endif +@@ -6161,24 +6411,29 @@ + + void cotulla_serial_suspend(void) { + +-#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + xpa210_discovery_serial_power_off(); + #endif + + #ifdef CONFIG_IRDA + if ( irda_open == 1 ) { +- ICMR &= ~(1 << 20); //btuart ++ ICMR &= ~(1 << 20); //stuart + xpa210_discovery_irda_power_off(); + xpa210_discovery_irda_enable(irda_info, 0); + + } + #endif + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if ( bluetooth_open ) { ++ pxa_bluetooth_enable(bluetooth_info, 0); ++ } ++#endif // end CONFIG_BLUETOOTH_SL + } + + void cotulla_serial_resume(void) { + +-#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + xpa210_discovery_serial_power_on(); + #endif + +@@ -6192,7 +6447,7 @@ + #else + #if defined(CONFIG_SABINAL_DISCOVERY) + BTUART_MCR |= UART_MCR_OUT2; +-#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + FFUART_MCR |= UART_MCR_OUT2; + #endif + STUART_MCR |= UART_MCR_OUT2; +@@ -6202,10 +6457,16 @@ + change_speed(irda_info, 0); + if ( xpa210_discovery_irda_enable(irda_info, 1) ) return; + xpa210_discovery_irda_power_on(); +- ICMR |= (1 << 20); //btuart ++ ICMR |= (1 << 20); //stuart + } + #endif + ++#if defined(CONFIG_BLUETOOTH_SL) ++ if ( bluetooth_open == 1 ) { ++ change_speed(bluetooth_info, 0); ++ if ( pxa_bluetooth_enable(bluetooth_info, 1) ) return; ++ } ++#endif // end CONFIG_BLUETOOTH_SL + #endif + + } +@@ -6226,7 +6487,7 @@ + + return 0; + } +-#endif ++#endif /* CONFIG_PM */ + + /* + * The serial driver boot-time initialization code! +@@ -6289,7 +6550,7 @@ + serial_driver.subtype = SERIAL_TYPE_NORMAL; + serial_driver.init_termios = tty_std_termios; + serial_driver.init_termios.c_cflag = +- B9600 | CS8 | CREAD | HUPCL | CLOCAL; ++ B9600 | CS8 | CREAD | HUPCL | CLOCAL; + serial_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; + serial_driver.refcount = &serial_refcount; + serial_driver.table = serial_table; +@@ -6368,6 +6629,9 @@ + if (state->flags & ASYNC_BOOT_AUTOCONF) + autoconfig(state); + } ++#if defined(CONFIG_BLUETOOTH_SL) ++ pxa_check_bluetooth_unit(); ++#endif + for (i = 0, state = rs_table; i < NR_PORTS; i++,state++) { + if (state->type == PORT_UNKNOWN) + continue; +@@ -6384,6 +6648,16 @@ + state->iomem_base, state->irq, + uart_config[state->type].name); + printk(", using IRDA\n"); ++#if defined(CONFIG_BLUETOOTH_SL) ++ } else if (xpa2X0_is_bt_uart(state->iomem_base)) { ++ printk(KERN_INFO"ttyS%02d%s at 0x%px (irq = %d) is a %s", ++ state->line + SERIAL_DEV_OFFSET, ++ (state->flags & ASYNC_FOURPORT) ? " FourPort" : "", ++ state->iomem_base, state->irq, ++ uart_config[state->type].name); ++ if (has_bluetooth==1) printk(", using Bluetooth\n"); ++ else printk("\n"); ++#endif // end CONFIG_BLUETOOTH_SL + } else { + printk(KERN_INFO"ttyS%02d%s at 0x%px (irq = %d) is a %s\n", + state->line + SERIAL_DEV_OFFSET, +@@ -6418,7 +6692,7 @@ + probe_serial_pnp(); + #endif + +-#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if (defined(CONFIG_SABINAL_DISCOVERY) && (CONFIG_DISCOVERY_EVT2)) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + xpa210_discovery_serial_power_off(); + #endif + +@@ -6435,9 +6709,23 @@ + v2 |= 0x00008000; + GPDR1 = v2; + +-#if !defined(CONFIG_SABINAL_DISCOVERY) ++#if !defined(CONFIG_SABINAL_DISCOVERY) && !defined(CONFIG_ARCH_PXA_TOSA) + GPDR(GPIO_IR_ON) |= GPIO_bit(GPIO_IR_ON); + #endif ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ SCP_REG_GPCR |= SCP_IR_POWERDWN; ++ set_GPIO_mode(GPIO47_STTXD|GPIO_OUT); ++ GPCR(GPIO47_STTXD) = GPIO_bit(GPIO47_STTXD); ++ set_GPIO_mode(GPIO46_STRXD_MD); ++ ++#endif ++ ++#if defined(CONFIG_BLUETOOTH_SL) ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ SCP_REG_GPCR |= SCP_BT_RESET; ++ SCP_REG_GPCR |= SCP_BT_PWR_EN; ++#endif ++#endif // end CONFIG_BLUETOOTH_SL + #endif + + #ifdef CONFIG_PM +diff -Nur linux_c860_org/drivers/char/sharp_buzzer.c linux/drivers/char/sharp_buzzer.c +--- linux_c860_org/drivers/char/sharp_buzzer.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/char/sharp_buzzer.c 2004-06-10 21:09:10.000000000 +0900 +@@ -18,6 +18,7 @@ + * ChangeLog: + * 04-16-2001 Lineo Japan, Inc. ... + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/config.h> +@@ -52,7 +53,7 @@ + # define SHARP_BUZZER_MAJOR 227 /* number of bare sharp_buzzer driver */ + #endif + +-#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) ++#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_TOSA) + #define USE_IMELODY_FORMAT + #endif + +@@ -122,6 +123,22 @@ + #define resume_buzzer_arch() poodle_resume_buzzer() + #endif + ++#if defined (CONFIG_ARCH_PXA_TOSA) ++extern int tosa_play_sound_by_id(int soundid,int volume); ++extern int tosa_play_sound_by_hz(unsigned int hz,unsigned int msecs,int volume); ++extern int tosa_buzzer_dev_init(void); ++extern int tosa_buzzer_supported(int which); /* return -EINVAL if unspoorted , otherwise return >= 0 value */ ++extern int tosa_suspend_buzzer(void); ++extern int tosa_resume_buzzer(void); ++#define play_sound_by_id(id,vol) tosa_play_sound_by_id((id),(vol)) ++#define stop_sound() tosa_stop_sound() ++#define stop_sound_by_id(id) tosa_stop_sound() ++#define play_sound_by_hz(hz,msecs,vol) tosa_play_sound_by_hz((hz),(msecs),(vol)) ++#define buzzer_dev_init() tosa_buzzer_dev_init() ++#define buzzer_supported_arch(w) tosa_buzzer_supported((w)) ++#define suspend_buzzer_arch() tosa_suspend_buzzer() ++#define resume_buzzer_arch() tosa_resume_buzzer() ++#endif /* CONFIG_ARCH_PXA_TOSA */ + + /* + * logical level drivers +@@ -498,7 +515,7 @@ + if( minor != SHARP_BUZZER_MINOR ) return -ENODEV; + if( ! device_initialized ){ + int i; +-#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) ++#if !defined(CONFIG_SA1100_COLLIE) && !defined(CONFIG_ARCH_PXA_POODLE) && !defined(CONFIG_ARCH_PXA_CORGI) && !defined(CONFIG_ARCH_PXA_TOSA) + buzzer_dev_init(); + #endif + for(i=0;i<=SHARP_BUZ_WHICH_MAX;i++){ +@@ -750,7 +767,7 @@ + #endif + + +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + buzzer_dev_init(); + #endif + +diff -Nur linux_c860_org/drivers/char/sharp_kbdctl.c linux/drivers/char/sharp_kbdctl.c +--- linux_c860_org/drivers/char/sharp_kbdctl.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/char/sharp_kbdctl.c 2004-06-10 21:09:10.000000000 +0900 +@@ -18,6 +18,7 @@ + * Change Log + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 1-Nov-2003 Sharp Corporation for Tosa + */ + + #include <linux/config.h> +@@ -67,9 +68,10 @@ + extern int restore_all_holdkey_info(void); + extern int customize_del_holdkey_info(int hardcode); + extern int customize_restore_holdkey_info(int hardcode); +- +- +- ++#if defined(CONFIG_ARCH_PXA_TOSA) ++extern int set_port_key_setting( int num, int val ); ++extern int get_port_key_setting( int num ); ++#endif + + /* + * operations.... +@@ -157,7 +159,11 @@ + break; + case SHARP_EXTMODIF_NUMLOCK: + sharppda_kbd_extmodif_togglestatus(c); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ c = 32; f = 3; // numlock keycode ++#else + c = SLKEY_NUMLOCK; f = 3; ++#endif + break; + default: + return -EINVAL; +@@ -195,6 +201,18 @@ + error = sharppda_kbd_extmodif_togglestatus(arg); + if( error ) return error; + } ++ case SHARP_KBDCTL_SETMODIFSTAT: ++ { ++ int error; ++ int val; ++ sharp_kbdctl_modifstat* puser = (sharp_kbdctl_modifstat*)arg; ++ if( ! puser ) return -EINVAL; ++ val = sharppda_kbd_extmodif_showstatus(puser->which); ++ if (puser->stat!=val) { ++ error = sharppda_kbd_extmodif_togglestatus(puser->which); ++ if( error ) return error; ++ } ++ } + break; + case SHARP_KBDCTL_SETHOLDTH: + { +@@ -311,6 +329,20 @@ + if( error ) return error; + } + break; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ case SHARP_KBDCTL_SETSWKEY: ++ { ++ sharp_kbdctl_swkey* puser = (sharp_kbdctl_swkey*)arg; ++ if( ! puser ) return -EINVAL; ++ return set_port_key_setting(puser->key,puser->mode); ++ } ++ break; ++ case SHARP_KBDCTL_GETSWKEY: ++ { ++ return get_port_key_setting(arg); ++ } ++ break; ++#endif + default: + return -EINVAL; + } +diff -Nur linux_c860_org/drivers/char/sharp_led.c linux/drivers/char/sharp_led.c +--- linux_c860_org/drivers/char/sharp_led.c 2002-12-18 19:28:00.000000000 +0900 ++++ linux/drivers/char/sharp_led.c 2004-06-10 21:09:10.000000000 +0900 +@@ -19,6 +19,7 @@ + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 + * 27-AUG-2002 Edward Chen, Steve Lin for Discovery + * 12-Dec-2002 Lineo Japan, Inc. ++ * 1-Nov-2003 Sharp Corporation for Tosa + * + */ + #include <linux/config.h> +@@ -72,7 +73,7 @@ + #define suspend_led_arch() collie_suspend_led() + #define resume_led_arch() collie_resume_led() + #define standby_led_arch() (0) +-#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + extern int sharpsl_led_supported(int which); /* return -EINVAL if unspoorted , otherwise return >= 0 value */ + extern int sharpsl_turn_led_status(int which,int status); /* set LED status to directed value. */ + extern int sharpsl_init_led(void); +@@ -209,33 +210,33 @@ + { + switch (req) { + case PM_STANDBY: +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + set_led_status(SHARP_LED_PDA,LED_PDA_SUSPENDED); + standby_led_arch(); + #endif + break; + + case PM_BLANK: +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + set_led_status(SHARP_LED_PDA,LED_PDA_SUSPENDED); + #endif + break; + + case PM_UNBLANK: +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + set_led_status(SHARP_LED_PDA,LED_PDA_RUNNING); + #endif + break; + + case PM_SUSPEND: +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + set_led_status(SHARP_LED_PDA,LED_PDA_OFF); + suspend_led_arch(); + #endif + break; + + case PM_RESUME: +-#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_SA1100_COLLIE) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + set_led_status(SHARP_LED_PDA,LED_PDA_RUNNING); + resume_led_arch(); + #endif +diff -Nur linux_c860_org/drivers/char/sharpsl_led.c linux/drivers/char/sharpsl_led.c +--- linux_c860_org/drivers/char/sharpsl_led.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/char/sharpsl_led.c 2004-06-10 21:09:10.000000000 +0900 +@@ -18,6 +18,7 @@ + * ChangeLog: + * based on collie_led.c Aug. 26 2002 LINEO + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 1-Nov-2003 Sharp Corporation for Tosa + * + */ + +@@ -47,6 +48,9 @@ + #if defined(CONFIG_ARCH_PXA_CORGI) + #include <asm/arch/corgi.h> + #endif ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm/arch/tosa.h> ++#endif + #include <asm/arch/hardware.h> + + #include <linux/timer.h> +@@ -69,7 +73,8 @@ + { + set_led_status(SHARP_LED_CHARGER,LED_CHARGER_ERROR); + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) ++static int led_suspended=0; + void sharpsl_charge_wait_ms(void) + { + unsigned long time = OSCR; +@@ -88,6 +93,18 @@ + } + } + ++#if defined (CONFIG_ARCH_PXA_TOSA) ++void sharpsl_charge_err_off(void) ++{ ++ while(1) { ++ set_scoop_jc_gpio(SCP_LED_ORANGE); ++ sharpsl_charge_wait( 250 ); ++ reset_scoop_jc_gpio(SCP_LED_ORANGE); ++ sharpsl_charge_wait( 250 ); ++ if ((GPLR(GPIO_AC_IN) & GPIO_bit(GPIO_AC_IN))!=0) break; ++ } ++} ++#else // for Corgi + void sharpsl_charge_err_off(void) + { + while(1) { +@@ -99,6 +116,7 @@ + } + } + #endif ++#endif + + #if defined(CONFIG_ARCH_PXA_POODLE) + #define LED_ONOFF_MASK (LCM_LPT_TOFL|LCM_LPT_TOFH) +@@ -109,7 +127,7 @@ + #define LED_BLNK(REG,X,Y) ((REG)=((REG)&~LED_BLNK_MASK)|LED_BLNK_VAL(X,Y)) + #endif + +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + struct timer_list orange_led_blink_timer; + struct st_orange_blink { + int blink_switch; +@@ -120,16 +138,76 @@ + #define BLINK_SLOW 2 + #define ORANGE_LED_SW 1 + #define GREEN_LED_SW 2 ++#if defined (CONFIG_ARCH_PXA_TOSA) ++#define BLUE_LED_SW 3 ++#define WLAN_LED_SW 4 ++#define LED_NUM 4 ++ ++static int get_ledport( int sw ) ++{ ++ int port=-1; ++ switch(sw) { ++ case ORANGE_LED_SW: ++ port = SCP_LED_ORANGE; ++ break; ++ case GREEN_LED_SW: ++ port = SCP_LED_GREEN; ++ break; ++ case BLUE_LED_SW: ++ port = SCP_LED_BLUE; ++ break; ++ case WLAN_LED_SW: ++ port = SCP_LED_WLAN; ++ break; ++ } ++ return port; ++} ++ ++static void set_led( int sw, int on ) ++{ ++ int port=get_ledport(sw); ++ if (port==-1) { ++ printk(__FUNCTION__ ": unknown LED %d\n",sw); ++ return; ++ } ++ if (on) set_scoop_jc_gpio(port); ++ else reset_scoop_jc_gpio(port); ++ // printk("setled(%d,%d)\n",sw,on); ++} ++ ++static int get_led( int sw ) ++{ ++ int port=get_ledport(sw); ++ if (port==-1) { ++ printk(__FUNCTION__ ": unknown LED %d\n",sw); ++ return; ++ } ++ return (SCP_JC_REG_GPWR&port)?1:0; ++} ++ ++#define LED_OFF(n) set_led(n,0) ++#define LED_ON(n) set_led(n,1) ++#define LED_STATUS(n) get_led(n) ++static int led_resume_buffer=0; ++#endif + + static void blink_orange_led(unsigned long data) + { + struct st_orange_blink *orange = (struct st_orange_blink *)data; + + if (orange->blink_switch == 0) { ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ LED_ON(ORANGE_LED_SW); ++#else + GPSR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE); ++#endif + orange->blink_switch = 1; + } else { ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ LED_OFF(ORANGE_LED_SW); ++#else + GPCR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE); ++#endif + orange->blink_switch = 0; + } + +@@ -165,9 +243,11 @@ + del_timer(&orange_led_blink_timer); + } + ++#if ! defined(CONFIG_ARCH_PXA_TOSA) + #define LED_OFF(n) ( (n == ORANGE_LED_SW) ? (GPCR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE)) : (reset_scoop_gpio(SCP_LED_GREEN)) ) + + #define LED_ON(n) ( (n == ORANGE_LED_SW) ? (GPSR(GPIO_LED_ORANGE) = GPIO_bit(GPIO_LED_ORANGE)) : (set_scoop_gpio(SCP_LED_GREEN)) ) ++#endif + + #define LED_BLNK(n) orange_led_start_blink(n) + #endif /* CONFIG_ARCH_PXA_CORGI */ +@@ -178,7 +258,7 @@ + { + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_OFF(LCM_LPT0); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_OFF(ORANGE_LED_SW); + orange_led_stop_blink(); + #endif +@@ -188,7 +268,7 @@ + { + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_ON(LCM_LPT0); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_ON(ORANGE_LED_SW); + #endif + } +@@ -198,7 +278,7 @@ + led0_off(); + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_BLNK(LCM_LPT0,2,2); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_BLNK(BLINK_FAST); + #endif + } +@@ -208,7 +288,7 @@ + led0_off(); + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_BLNK(LCM_LPT0,7,7); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_BLNK(BLINK_SLOW); + #endif + } +@@ -219,7 +299,7 @@ + { + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_OFF(LCM_LPT1); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_OFF(GREEN_LED_SW); + #endif + } +@@ -228,7 +308,7 @@ + { + #if defined(CONFIG_ARCH_PXA_POODLE) + LED_ON(LCM_LPT1); +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + LED_ON(GREEN_LED_SW); + #endif + } +@@ -376,7 +456,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: (HZ/10 + HZ/50), +@@ -397,7 +477,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: ((4*HZ)/5 + (2*HZ)/25), +@@ -418,7 +498,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: (HZ/10 + HZ/50), +@@ -439,7 +519,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: HZ/4, +@@ -460,7 +540,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: HZ/2, +@@ -481,7 +561,7 @@ + expires: -1, + next: -1 + } +-#elif defined(CONFIG_ARCH_PXA_CORGI) ++#elif defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + { + ledstate: SHARPSLLED_ON , + expires: ((4*HZ)/5 + (2*HZ)/25), +@@ -610,6 +690,98 @@ + led0_off(); + } + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++typedef struct { ++ int status; ++ int blink_switch; ++ long blink_interval; ++ struct timer_list timer; ++} LED_BLINK; ++static LED_BLINK st_led_status[LED_NUM+1]; ++static int led_status_initialized=0; ++ ++static void led_on(int led) ++{ ++ del_timer(&st_led_status[led].timer); ++ st_led_status[led].status=1; ++ LED_ON(led); ++} ++static void led_off(int led) ++{ ++ del_timer(&st_led_status[led].timer); ++ st_led_status[led].status=0; ++ LED_OFF(led); ++} ++ ++static void led_blink_func(unsigned long data) ++{ ++ int led = data; ++ if (st_led_status[led].blink_switch==0 && led_suspended==0 ) { ++ LED_ON(led); ++ st_led_status[led].blink_switch=1; ++ } else { ++ LED_OFF(led); ++ st_led_status[led].blink_switch=0; ++ } ++ init_timer(&st_led_status[led].timer); ++ st_led_status[led].timer.function = led_blink_func; ++ st_led_status[led].timer.expires = jiffies + st_led_status[led].blink_interval; ++ st_led_status[led].timer.data = led; ++ add_timer(&st_led_status[led].timer); ++} ++ ++static void led_start_blink(int led, int interval) ++{ ++ del_timer(&st_led_status[led].timer); ++ switch (interval) { ++ case BLINK_SLOW: ++ st_led_status[led].blink_interval = (4*HZ)/5 + (2*HZ)/25; ++ st_led_status[led].status = 2; ++ break; ++ case BLINK_FAST: ++ st_led_status[led].blink_interval = HZ / 4; ++ st_led_status[led].status = 3; ++ break; ++ default : ++ return; ++ } ++ ++ st_led_status[led].blink_switch=0; ++ led_blink_func(led); ++} ++ ++static void sharpsl_led_process_ex(int led_sw) ++{ ++ int *leds = sharpslled_internal_logical; ++ int status=-1; ++ switch(led_sw) { ++ case BLUE_LED_SW: ++ status = leds[SHARP_LED_BLUETOOTH]; ++ break; ++ case WLAN_LED_SW: ++ status = leds[SHARP_LED_WLAN]; ++ break; ++ } ++ if ( status == -1 || status == st_led_status[led_sw].status ) return; ++ if (led_suspended) status=0; // force off ++ switch(status) { ++ case 0: // off ++ led_off(led_sw); ++ return; ++ case 1: // on ++ led_on(led_sw); ++ return; ++ case 2: // blink ++ led_start_blink(led_sw,BLINK_SLOW); ++ return; ++ case 3: // blink fast ++ led_start_blink(led_sw,BLINK_FAST); ++ return; ++ } ++ led_off(led_sw); ++} ++#endif ++ + static sharpled_pattern_item* decide_physical_led(void) + { + int *leds = sharpslled_internal_logical; +@@ -632,7 +804,7 @@ + sharpslled_internal_logical[15])); + + /******* 1st: controlled *******/ +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + if( (leds[SHARP_LED_COLLIE_1] > LED_COLLIE_1_ON) && + (leds[SHARP_LED_PDA] == LED_PDA_OFF) ) + return NULL; +@@ -662,10 +834,10 @@ + sharpsl_ledpat_softflash : NULL; + } + +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + /* A3-1:R:SHARP_LED_CHARGER=LED_CHARGER_ERROR */ + +-#if defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + /* A3-non-spec:G:turn off */ + if( leds[SHARP_LED_PDA] == LED_PDA_OFF ) + return NULL; +@@ -777,6 +949,14 @@ + if( which < 0 || which > SHARP_LED_WHICH_MAX ) return -EINVAL; + sharpslled_internal_logical[which] = status; + sharpsl_led0_process(); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ { ++ int i; ++ for (i=3; i<=LED_NUM; i++) { ++ sharpsl_led_process_ex(i); ++ } ++ } ++#endif + if( curpat ) sharpled_pattern_end(&sharpsl_led1_player); + if( ( pat = decide_physical_led() ) != NULL ){ + sharpled_pattern_start(&sharpsl_led1_player,pat); +@@ -787,13 +967,44 @@ + + int sharpsl_init_led(void) + { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if (!led_status_initialized) { ++ memset(&st_led_status,0,sizeof(st_led_status)); ++ led_status_initialized=1; ++ } ++#endif + return 0; + } + int sharpsl_suspend_led(void) + { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ led_suspended=1; ++ { ++ int i; ++ led_resume_buffer = 0; ++ for (i=1; i<=LED_NUM; i++) { ++ if (LED_STATUS(i)) { ++ led_resume_buffer |= 0x1<<i; ++ LED_OFF(i); ++ } ++ } ++ } ++#endif + return 0; + } + int sharpsl_resume_led(void) + { ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ led_suspended=0; ++ { ++ int i; ++ for (i=1; i<=LED_NUM; i++) { ++ if (led_resume_buffer & (0x1<<i)) { ++ LED_ON(i); ++ } ++ } ++ led_resume_buffer = 0; ++ } ++#endif + return 0; + } +diff -Nur linux_c860_org/drivers/char/tosa_keyb.c linux/drivers/char/tosa_keyb.c +--- linux_c860_org/drivers/char/tosa_keyb.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_keyb.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,234 @@ ++/* ++ * linux/drivers/char/tosa_keyb.c ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * drivers/char/corgi_keyb.c ++ * drivers/char/collie_keyb.c ++ * drivers/char/iris_keyb.c ++ * drivers/char/kbd_linkup.c - Keyboard Driver for Linkup-7200 ++ * Copyright (C) Roger Gammans 1998 ++ * Written for Linkup 7200 by Xuejun Tao, ISDcorp ++ * Refer to kbd_7110.c (Cirrus Logic 7110 Keyboard driver) ++ * ++ * ChangeLong: ++ * 04-25-2001 Lineo Japan, Inc. ++ * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ * 12-Dec-2002 Sharp Corporation ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ */ ++#include <linux/config.h> ++#include <linux/init.h> ++#include <linux/poll.h> ++#include <linux/wait.h> ++#include <asm/arch/keyboard.h> ++#include <asm/uaccess.h> ++#include <linux/tqueue.h> ++#include <linux/kbd_ll.h> ++#include <linux/delay.h> ++#include <asm/arch/pxa-regs.h> ++ ++#ifdef USE_KBD_IRQ // could be defined in asm/arch/keyboard.h ++#include <asm/irq.h> // for linkup keyboard interrupt ++#endif ++ ++#include <asm/arch/irqs.h> ++ ++#ifndef TOSA_KBD_MAJOR ++# define TOSA_KBD_MAJOR 61 ++#endif ++ ++#ifdef CONFIG_PM ++#include <linux/pm.h> ++static struct pm_dev *corgi_kbd_pm_dev; ++#endif ++ ++/* ++ * common logical driver definition ++ */ ++extern void sharppda_kbd_press(int keycode); ++extern void sharppda_kbd_release(int keycode); ++extern void sharppda_scan_logdriver_init(void); ++extern void sharppda_scan_key_gpio(void* dummy); ++#define tosa_kbd_tick sharppda_scan_key_gpio ++ ++/* ++ * physical driver depending on TOSA target. ++ */ ++void tosa_kbd_discharge_all(void) ++{ ++ // STROBE All HiZ ++ GPCR1 = GPIO_HIGH_STROBE_BIT; ++ GPDR1 &= ~GPIO_HIGH_STROBE_BIT; ++ GPCR2 = GPIO_LOW_STROBE_BIT; ++ GPDR2 &= ~GPIO_LOW_STROBE_BIT; ++} ++ ++void tosa_kbd_charge_all(void) ++{ ++} ++ ++void tosa_kbd_activate_all(void) ++{ ++ // STROBE ALL -> High ++ GPSR1 = GPIO_HIGH_STROBE_BIT; ++ GPDR1 |= GPIO_HIGH_STROBE_BIT; ++ GPSR2 = GPIO_LOW_STROBE_BIT; ++ GPDR2 |= GPIO_LOW_STROBE_BIT; ++ ++ udelay(KB_DISCHARGE_DELAY); ++ ++ // STATE CLEAR ++ GEDR2 |= GPIO_ALL_SENSE_BIT; ++} ++ ++void tosa_kbd_activate_col(int col) ++{ ++ if (col<=5) { ++ // STROBE col -> High, not col -> HiZ ++ GPSR1 = GPIO_STROBE_BIT(col); ++ GPDR1 = (GPDR1 & ~GPIO_HIGH_STROBE_BIT) | GPIO_STROBE_BIT(col); ++ } else { ++ // STROBE col -> High, not col -> HiZ ++ GPSR2 = GPIO_STROBE_BIT(col); ++ GPDR2 = (GPDR2 & ~GPIO_LOW_STROBE_BIT) | GPIO_STROBE_BIT(col); ++ } ++} ++ ++void tosa_kbd_reset_col(int col) ++{ ++ if (col<=5) { ++ // STROBE col -> Low ++ GPCR1 = GPIO_STROBE_BIT(col); ++ // STROBE col -> out, not col -> HiZ ++ GPDR1 = (GPDR1 & ~GPIO_HIGH_STROBE_BIT) | GPIO_STROBE_BIT(col); ++ } else { ++ // STROBE col -> Low ++ GPCR2 = GPIO_STROBE_BIT(col); ++ // STROBE col -> out, not col -> HiZ ++ GPDR2 = (GPDR2 & ~GPIO_LOW_STROBE_BIT) | GPIO_STROBE_BIT(col); ++ ++ } ++} ++ ++ ++#ifdef USE_KBD_IRQ ++ ++static void tosa_kbd_irq(int irq,void *dev_id,struct pt_regs *regs) ++{ ++#ifdef CONFIG_APM ++ extern int autoPowerCancel; ++ extern int autoLightCancel; ++#endif ++ tosa_kbd_tick(NULL); ++ ++#if CONFIG_APM // auto power/light cancel ++ autoPowerCancel = 0; ++ autoLightCancel = 0; ++#endif ++ ++} ++#endif ++ ++ ++#ifdef CONFIG_PM ++extern void sharppda_scan_logdriver_suspend(void); ++extern void sharppda_scan_logdriver_resume(void); ++ ++extern int tosa_initial_keypress; ++ ++static int tosa_kbd_pm_callback(struct pm_dev *pm_dev, ++ pm_request_t req, void *data) ++{ ++ int i; ++ ++ switch (req) { ++ case PM_SUSPEND: ++ for (i = 0; i < KEY_SENSE_NUM; i++) { ++ disable_irq(IRQ_GPIO_KEY_SENSE(i)); ++ } ++ disable_irq(IRQ_GPIO_ON_KEY); ++ disable_irq(IRQ_GPIO_RECORD_BTN); ++ disable_irq(IRQ_GPIO_SYNC); ++ sharppda_scan_logdriver_suspend(); ++ break; ++ case PM_RESUME: ++ // STROBE ALL -> High ++ GPSR1 = GPIO_HIGH_STROBE_BIT; ++ GPSR2 = GPIO_LOW_STROBE_BIT; ++ GPDR1 |= GPIO_HIGH_STROBE_BIT; ++ GPDR2 |= GPIO_LOW_STROBE_BIT; ++ for (i = 0; i < KEY_SENSE_NUM; i++) { ++ enable_irq(IRQ_GPIO_KEY_SENSE(i)); ++ } ++ enable_irq(IRQ_GPIO_ON_KEY); ++ enable_irq(IRQ_GPIO_RECORD_BTN); ++ enable_irq(IRQ_GPIO_SYNC); ++ sharppda_scan_logdriver_resume(); ++ tosa_initial_keypress = -1; ++ break; ++ } ++ return 0; ++} ++#endif ++ ++void tosa_kbd_hw_init(void) ++{ ++ int i; ++ ++ sharppda_scan_logdriver_init(); ++ ++ // STROBE ALL -> High ++ // SENSE ALL -> In ++ GPSR1 = GPIO_HIGH_STROBE_BIT; ++ GPSR2 = GPIO_LOW_STROBE_BIT; ++ GPDR2 &= ~GPIO_ALL_SENSE_BIT; ++ GPDR1 |= GPIO_HIGH_STROBE_BIT; ++ GPDR2 |= GPIO_LOW_STROBE_BIT; ++ GEDR2 |= GPIO_ALL_SENSE_BIT; ++ GAFR1_U &= ~GAFR_HIGH_STROBE_BIT; ++ GAFR2_L &= ~(GAFR_LOW_STROBE_BIT | GAFR_ALL_SENSE_BIT); ++ ++ /* SENSE:RisingEdge */ ++ for (i = 0; i < KEY_SENSE_NUM; i++) { ++ set_GPIO_IRQ_edge(GPIO_KEY_SENSE(i), GPIO_RISING_EDGE); ++ if (request_irq(IRQ_GPIO_KEY_SENSE(i), tosa_kbd_irq, ++ SA_INTERRUPT, "keyboard", NULL)) { ++ printk("Could not allocate KEYBD IRQ%d!\n", i); ++ } ++ } ++ // Power&Rec Button ++ set_GPIO_IRQ_edge(GPIO_ON_KEY, GPIO_FALLING_EDGE); ++ set_GPIO_IRQ_edge(GPIO_RECORD_BTN, GPIO_FALLING_EDGE); ++ set_GPIO_IRQ_edge(GPIO_SYNC, GPIO_FALLING_EDGE); ++ if (request_irq(IRQ_GPIO_ON_KEY, tosa_kbd_irq, SA_INTERRUPT, "On key", NULL) || ++ request_irq(IRQ_GPIO_RECORD_BTN, tosa_kbd_irq, SA_INTERRUPT, "Record key", NULL) || ++ request_irq(IRQ_GPIO_SYNC, tosa_kbd_irq, SA_INTERRUPT, "Sync key", NULL)) { ++ printk("Could not allocate KEYBD IRQ%d!\n", i); ++ } ++ ++ ++#ifdef CONFIG_PM ++ corgi_kbd_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_kbd_pm_callback); ++#endif ++ ++ printk("keyboard initilaized.\n"); ++} ++ ++int tosa_kbd_translate(unsigned char scancode, unsigned char *keycode_p) ++{ ++ ++ /* ++ * We do this strangley to be more independent of ++ * our headers.. ++ */ ++ ++ *keycode_p = scancode & ~(KBDOWN | KBUP); ++ ++ return 1; ++} ++ +diff -Nur linux_c860_org/drivers/char/tosa_keymap.c linux/drivers/char/tosa_keymap.c +--- linux_c860_org/drivers/char/tosa_keymap.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_keymap.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,466 @@ ++ ++/* Do not edit this file! It was automatically generated by */ ++/* loadkeys --mktable defkeymap.map > defkeymap.c */ ++ ++#include <linux/types.h> ++#include <linux/keyboard.h> ++#include <linux/kd.h> ++ ++u_short plain_map[] = { ++ 0xf200, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67, ++ 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f, ++ 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77, ++ 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008, ++ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, ++ 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf05b, 0xf040, ++ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, ++ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf301, ++ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, ++ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, ++ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf03b, ++ 0xf03a, 0xf05d, 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf200, 0xf700, ++ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++}; ++ ++u_short shift_map[] = { ++ 0xf200, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47, ++ 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, ++ 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57, ++ 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf702, 0xf008, ++ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, ++ 0xf028, 0xf029, 0xf07e, 0xf03d, 0xf07e, 0xf07c, 0xf07b, 0xf060, ++ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf03b, ++ 0xf03a, 0xf009, 0xf104, 0xf105, 0xf106, 0xf03f, 0xf022, 0xf301, ++ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, ++ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, ++ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf02b, ++ 0xf02a, 0xf07d, 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf200, 0xf700, ++ 0xf114, 0xf117, 0xf20b, 0xf20a, 0xf701, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++}; ++ ++u_short ctrl_map[] = { ++ 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, ++ 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, ++ 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, ++ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, ++ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200, ++ 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301, ++ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, ++ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, ++ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf000, 0xf310, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, ++ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++}; ++ ++u_short shift_ctrl_map[] = { ++ 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, ++ 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, ++ 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, ++ 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, ++ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200, ++ 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301, ++ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, ++ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, ++ 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, ++ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++}; ++ ++u_short alt_map[] = { ++ 0xf200, 0xf021, 0xf02d, 0xf863, 0xf023, 0xf033, 0xf024, 0xf025, ++ 0xf05f, 0xf038, 0xf026, 0xf02a, 0xf028, 0xf03d, 0xf02b, 0xf039, ++ 0xf030, 0xf031, 0xf034, 0xf040, 0xf035, 0xf037, 0xf876, 0xf032, ++ 0xf878, 0xf036, 0xf87a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf07f, ++ 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf07d, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf029, ++ 0xf03c, 0xf207, 0xf104, 0xf105, 0xf106, 0xf200, 0xf07e, 0xf301, ++ 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, ++ 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, ++ 0xf702, 0xf703, 0xf01b, 0xf000, 0xf020, 0xf310, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, ++ 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, ++ 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++}; ++ ++ushort *key_maps[MAX_NR_KEYMAPS] = { ++ plain_map, shift_map, 0, 0, ++ ctrl_map, shift_ctrl_map, 0, 0, ++ alt_map, 0 ++}; ++ ++unsigned int keymap_count = 5; ++ ++ ++/* ++ * Philosophy: most people do not define more strings, but they who do ++ * often want quite a lot of string space. So, we statically allocate ++ * the default and allocate dynamically in chunks of 512 bytes. ++ */ ++ ++char func_buf[] = { ++ '\033', '[', '[', 'A', 0, ++ '\033', '[', '[', 'B', 0, ++ '\033', '[', '[', 'C', 0, ++ '\033', '[', '[', 'D', 0, ++ '\033', '[', '[', 'E', 0, ++ '\033', '[', '1', '7', '~', 0, ++ '\033', '[', '1', '8', '~', 0, ++ '\033', '[', '1', '9', '~', 0, ++ '\033', '[', '2', '0', '~', 0, ++ '\033', '[', '2', '1', '~', 0, ++ '\033', '[', '2', '3', '~', 0, ++ '\033', '[', '2', '4', '~', 0, ++ '\033', '[', '2', '5', '~', 0, ++ '\033', '[', '2', '6', '~', 0, ++ '\033', '[', '2', '8', '~', 0, ++ '\033', '[', '2', '9', '~', 0, ++ '\033', '[', '3', '1', '~', 0, ++ '\033', '[', '3', '2', '~', 0, ++ '\033', '[', '3', '3', '~', 0, ++ '\033', '[', '3', '4', '~', 0, ++ '\033', '[', '1', '~', 0, ++ '\033', '[', '2', '~', 0, ++ '\033', '[', '3', '~', 0, ++ '\033', '[', '4', '~', 0, ++ '\033', '[', '5', '~', 0, ++ '\033', '[', '6', '~', 0, ++ '\033', '[', 'M', 0, ++ '\033', '[', 'P', 0, ++}; ++ ++ ++char *funcbufptr = func_buf; ++int funcbufsize = sizeof(func_buf); ++int funcbufleft = 0; /* space left */ ++ ++char *func_table[MAX_NR_FUNC] = { ++ func_buf + 0, ++ func_buf + 5, ++ func_buf + 10, ++ func_buf + 15, ++ func_buf + 20, ++ func_buf + 25, ++ func_buf + 31, ++ func_buf + 37, ++ func_buf + 43, ++ func_buf + 49, ++ func_buf + 55, ++ func_buf + 61, ++ func_buf + 67, ++ func_buf + 73, ++ func_buf + 79, ++ func_buf + 85, ++ func_buf + 91, ++ func_buf + 97, ++ func_buf + 103, ++ func_buf + 109, ++ func_buf + 115, ++ func_buf + 120, ++ func_buf + 125, ++ func_buf + 130, ++ func_buf + 135, ++ func_buf + 140, ++ func_buf + 145, ++ 0, ++ 0, ++ func_buf + 149, ++ 0, ++}; ++ ++struct kbdiacr accent_table[MAX_DIACR] = { ++ {'`', 'A', '\300'}, {'`', 'a', '\340'}, ++ {'\'', 'A', '\301'}, {'\'', 'a', '\341'}, ++ {'^', 'A', '\302'}, {'^', 'a', '\342'}, ++ {'~', 'A', '\303'}, {'~', 'a', '\343'}, ++ {'"', 'A', '\304'}, {'"', 'a', '\344'}, ++ {'O', 'A', '\305'}, {'o', 'a', '\345'}, ++ {'0', 'A', '\305'}, {'0', 'a', '\345'}, ++ {'A', 'A', '\305'}, {'a', 'a', '\345'}, ++ {'A', 'E', '\306'}, {'a', 'e', '\346'}, ++ {',', 'C', '\307'}, {',', 'c', '\347'}, ++ {'`', 'E', '\310'}, {'`', 'e', '\350'}, ++ {'\'', 'E', '\311'}, {'\'', 'e', '\351'}, ++ {'^', 'E', '\312'}, {'^', 'e', '\352'}, ++ {'"', 'E', '\313'}, {'"', 'e', '\353'}, ++ {'`', 'I', '\314'}, {'`', 'i', '\354'}, ++ {'\'', 'I', '\315'}, {'\'', 'i', '\355'}, ++ {'^', 'I', '\316'}, {'^', 'i', '\356'}, ++ {'"', 'I', '\317'}, {'"', 'i', '\357'}, ++ {'-', 'D', '\320'}, {'-', 'd', '\360'}, ++ {'~', 'N', '\321'}, {'~', 'n', '\361'}, ++ {'`', 'O', '\322'}, {'`', 'o', '\362'}, ++ {'\'', 'O', '\323'}, {'\'', 'o', '\363'}, ++ {'^', 'O', '\324'}, {'^', 'o', '\364'}, ++ {'~', 'O', '\325'}, {'~', 'o', '\365'}, ++ {'"', 'O', '\326'}, {'"', 'o', '\366'}, ++ {'/', 'O', '\330'}, {'/', 'o', '\370'}, ++ {'`', 'U', '\331'}, {'`', 'u', '\371'}, ++ {'\'', 'U', '\332'}, {'\'', 'u', '\372'}, ++ {'^', 'U', '\333'}, {'^', 'u', '\373'}, ++ {'"', 'U', '\334'}, {'"', 'u', '\374'}, ++ {'\'', 'Y', '\335'}, {'\'', 'y', '\375'}, ++ {'T', 'H', '\336'}, {'t', 'h', '\376'}, ++ {'s', 's', '\337'}, {'"', 'y', '\377'}, ++ {'s', 'z', '\337'}, {'i', 'j', '\377'}, ++}; ++ ++unsigned int accent_table_size = 68; +diff -Nur linux_c860_org/drivers/char/tosa_keymap.map linux/drivers/char/tosa_keymap.map +--- linux_c860_org/drivers/char/tosa_keymap.map 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_keymap.map 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,277 @@ ++# ======================================================= ++# Iris-1 Default Kernel Keymap for Console Driver ++# ======================================================= ++# ++# Default kernel keymap. This uses 7 modifier combinations. ++# ++# 0 for no modifier ++# 1 for [SHIFT] ++# 4 for [CTRL] , to symbol input for debug ++# 5 for [CTRL] [SHIFT] , to symbol input for debug ++# 8 for [ALT] ++# ++keymaps 0,1,4,5,8 ++# ++# loadkeys --mktable iris_keymap.map ++# ++# !!!!!! CAUTION !!!!!! ++# This Keymap Defines Conversion to Console-Key from Soft-Keycode. ++# Soft-Keycode is created from Hard-Keycode , using iris_rawkey_conv.c ++# ++# ++keycode 1 = a ++ alt keycode 1 = exclam ++keycode 2 = b ++ alt keycode 2 = minus ++keycode 3 = c ++keycode 4 = d ++ alt keycode 4 = numbersign ++keycode 5 = e ++ alt keycode 5 = three ++keycode 6 = f ++ alt keycode 6 = dollar ++keycode 7 = g ++ alt keycode 7 = percent ++keycode 8 = h ++ alt keycode 8 = underscore ++keycode 9 = i ++ alt keycode 9 = eight ++keycode 10 = j ++ alt keycode 10 = ampersand ++keycode 11 = k ++ alt keycode 11 = asterisk ++keycode 12 = l ++ alt keycode 12 = parenleft ++keycode 13 = m ++ alt keycode 13 = equal ++keycode 14 = n ++ alt keycode 14 = plus ++keycode 15 = o ++ alt keycode 15 = nine ++keycode 16 = p ++ alt keycode 16 = zero ++keycode 17 = q ++ alt keycode 17 = one ++keycode 18 = r ++ alt keycode 18 = four ++keycode 19 = s ++ alt keycode 19 = at ++keycode 20 = t ++ alt keycode 20 = five ++keycode 21 = u ++ alt keycode 21 = seven ++keycode 22 = v ++keycode 23 = w ++ alt keycode 23 = two ++keycode 24 = x ++keycode 25 = y ++ alt keycode 25 = six ++keycode 26 = z ++keycode 27 = Shift ++keycode 28 = Return ++keycode 29 = F2 ++keycode 30 = Alt Control ++keycode 31 = BackSpace ++ alt keycode 31 = Delete ++keycode 32 = Num_Lock ++keycode 33 = ++# (Cancel:34) F9 -> Escape ++keycode 34 = Escape ++keycode 35 = Left ++keycode 36 = Up ++keycode 37 = Down ++keycode 38 = Right ++# (OK:39) F4 -> Return ++keycode 39 = Return ++ alt keycode 39 = braceright ++keycode 40 = ++keycode 41 = one exclam ++keycode 42 = two quotedbl ++keycode 43 = three numbersign ++keycode 44 = four dollar ++keycode 45 = five percent ++keycode 46 = six ampersand ++keycode 47 = seven apostrophe ++keycode 48 = eight parenleft ++keycode 49 = nine parenright ++keycode 50 = zero asciitilde ++keycode 51 = minus equal ++keycode 52 = asciicircum asciitilde ++keycode 53 = backslash bar ++keycode 54 = bracketleft braceleft ++keycode 55 = at grave ++keycode 56 = Control ++keycode 57 = Alt ++keycode 58 = Control ++keycode 59 = plus ++keycode 60 = Shift_Lock ++keycode 61 = at ++keycode 62 = question ++keycode 63 = comma semicolon ++ alt keycode 63 = parenright ++keycode 64 = period colon ++ alt keycode 64 = less ++keycode 65 = Tab ++ alt keycode 65 = Caps_Lock ++keycode 66 = F5 ++keycode 67 = F6 ++keycode 68 = F7 ++keycode 69 = slash question ++keycode 70 = apostrophe quotedbl ++ alt keycode 70 = asciitilde ++keycode 71 = KP_1 ++keycode 72 = KP_2 ++keycode 73 = KP_3 ++keycode 74 = KP_4 ++keycode 75 = KP_5 ++keycode 76 = KP_6 ++keycode 77 = KP_7 ++keycode 78 = KP_8 ++keycode 79 = KP_9 ++keycode 80 = KP_0 ++keycode 81 = Delete ++keycode 82 = KP_Divide ++keycode 83 = KP_Multiply ++keycode 84 = ++keycode 85 = KP_Subtract ++keycode 86 = KP_Add ++keycode 87 = KP_Enter ++# (Activity:88) -> Ctrl ++keycode 88 = Control ++# (Contacts:89) -> Alt ++keycode 89 = Alt ++keycode 90 = Escape ++# (select:91) F11 -> space ++keycode 91 = space ++ alt keycode 91 = nul ++keycode 92 = space ++ control keycode 92 = nul ++keycode 93 = KP_Period ++keycode 94 = ++keycode 95 = semicolon plus ++keycode 96 = colon asterisk ++keycode 97 = bracketright braceright ++keycode 98 = comma less ++keycode 99 = period greater ++keycode 100 = slash question ++keycode 101 = underscore underscore ++keycode 102 = ++keycode 103 = Shift ++keycode 104 = Find ++keycode 105 = Select ++keycode 106 = Prior ++ shift keycode 106 = Scroll_Backward ++keycode 107 = Next ++ shift keycode 107 = Scroll_Forward ++keycode 108 = AltGr ++keycode 109 = ++keycode 110 = ++keycode 111 = ++keycode 112 = ++keycode 113 = ++keycode 114 = ++keycode 115 = ++keycode 116 = ++keycode 117 = Control ++keycode 118 = ++keycode 119 = ++keycode 120 = Control ++keycode 121 = Alt ++ ++ ++string F1 = "\033[[A" ++string F2 = "\033[[B" ++string F3 = "\033[[C" ++string F4 = "\033[[D" ++string F5 = "\033[[E" ++string F6 = "\033[17~" ++string F7 = "\033[18~" ++string F8 = "\033[19~" ++string F9 = "\033[20~" ++string F10 = "\033[21~" ++string F11 = "\033[23~" ++string F12 = "\033[24~" ++string F13 = "\033[25~" ++string F14 = "\033[26~" ++string F15 = "\033[28~" ++string F16 = "\033[29~" ++string F17 = "\033[31~" ++string F18 = "\033[32~" ++string F19 = "\033[33~" ++string F20 = "\033[34~" ++string Find = "\033[1~" ++string Insert = "\033[2~" ++string Remove = "\033[3~" ++string Select = "\033[4~" ++string Prior = "\033[5~" ++string Next = "\033[6~" ++string Macro = "\033[M" ++string Pause = "\033[P" ++compose '`' 'A' to 'Ŕ' ++compose '`' 'a' to 'ŕ' ++compose '\'' 'A' to 'Á' ++compose '\'' 'a' to 'á' ++compose '^' 'A' to 'Â' ++compose '^' 'a' to 'â' ++compose '~' 'A' to 'Ă' ++compose '~' 'a' to 'ă' ++compose '"' 'A' to 'Ä' ++compose '"' 'a' to 'ä' ++compose 'O' 'A' to 'Ĺ' ++compose 'o' 'a' to 'ĺ' ++compose '0' 'A' to 'Ĺ' ++compose '0' 'a' to 'ĺ' ++compose 'A' 'A' to 'Ĺ' ++compose 'a' 'a' to 'ĺ' ++compose 'A' 'E' to 'Ć' ++compose 'a' 'e' to 'ć' ++compose ',' 'C' to 'Ç' ++compose ',' 'c' to 'ç' ++compose '`' 'E' to 'Č' ++compose '`' 'e' to 'č' ++compose '\'' 'E' to 'É' ++compose '\'' 'e' to 'é' ++compose '^' 'E' to 'Ę' ++compose '^' 'e' to 'ę' ++compose '"' 'E' to 'Ë' ++compose '"' 'e' to 'ë' ++compose '`' 'I' to 'Ě' ++compose '`' 'i' to 'ě' ++compose '\'' 'I' to 'Í' ++compose '\'' 'i' to 'í' ++compose '^' 'I' to 'Î' ++compose '^' 'i' to 'î' ++compose '"' 'I' to 'Ď' ++compose '"' 'i' to 'ď' ++compose '-' 'D' to 'Đ' ++compose '-' 'd' to 'đ' ++compose '~' 'N' to 'Ń' ++compose '~' 'n' to 'ń' ++compose '`' 'O' to 'Ň' ++compose '`' 'o' to 'ň' ++compose '\'' 'O' to 'Ó' ++compose '\'' 'o' to 'ó' ++compose '^' 'O' to 'Ô' ++compose '^' 'o' to 'ô' ++compose '~' 'O' to 'Ő' ++compose '~' 'o' to 'ő' ++compose '"' 'O' to 'Ö' ++compose '"' 'o' to 'ö' ++compose '/' 'O' to 'Ř' ++compose '/' 'o' to 'ř' ++compose '`' 'U' to 'Ů' ++compose '`' 'u' to 'ů' ++compose '\'' 'U' to 'Ú' ++compose '\'' 'u' to 'ú' ++compose '^' 'U' to 'Ű' ++compose '^' 'u' to 'ű' ++compose '"' 'U' to 'Ü' ++compose '"' 'u' to 'ü' ++compose '\'' 'Y' to 'Ý' ++compose '\'' 'y' to 'ý' ++compose 'T' 'H' to 'Ţ' ++compose 't' 'h' to 'ţ' ++compose 's' 's' to 'ß' ++compose '"' 'y' to '˙' ++compose 's' 'z' to 'ß' ++compose 'i' 'j' to '˙' +diff -Nur linux_c860_org/drivers/char/tosa_logkey.c linux/drivers/char/tosa_logkey.c +--- linux_c860_org/drivers/char/tosa_logkey.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_logkey.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,1617 @@ ++/* ++ * linux/drivers/char/tosa_logkey.c ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/drivers/char/corgi_logkey.c ++ * ++ * Based on: ++ * linux/drivers/char/poodle_logkey.c ++ * linux/drivers/char/collie_logkey.c ++ * linux/drivers/char/sharp_logkey.c ++ * ++ * Logical GPIO Keyboard driver includeing ++ * Hard-Key to Soft-Key Mapper for SHARP PDA ++ * ++ * Copyright (C) 2001 SHARP ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * ChangeLog: ++ * 04-16-2001 Lineo Japan, Inc. ++ * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ * 12-Dec-2002 Sharp Corporation ++ */ ++#include <linux/config.h> ++#include <linux/init.h> ++#include <linux/poll.h> ++#include <linux/wait.h> ++#include <asm/arch/keyboard_tosa.h> ++#include <asm/uaccess.h> ++#include <linux/tqueue.h> ++#include <linux/kbd_ll.h> ++#include <linux/slab.h> ++//#include <linux/spinlock.h> ++#include <linux/delay.h> ++ ++#define DEBUGPRINT(s) /* printk s */ ++#define CUS_DPRINTK(x, args...) /* printk(__FUNCTION__ ": " x,##args) */ ++ ++#ifdef LOGICAL_WAKEUP_SRC ++#include <asm/arch/sharpsl_wakeup.h> ++#endif ++#define KEYMASK_ON (0x1<<0) ++#define KEYMASK_REC (0x1<<1) ++#define KEYMASK_SYNC (0x1<<2) ++#define KEYMASK_ADDRESS (0x1<<3) ++#define KEYMASK_CALENDAR (0x1<<4) ++#define KEYMASK_MENU (0x1<<5) ++#define KEYMASK_MAIL (0x1<<6) ++ ++#ifndef USE_KBD_IRQ ++# warning "this is not tested." ++#endif ++ ++#ifdef USE_KBD_IRQ // could be defined in asm/arch/keyboard.h ++# include <asm/irq.h> /* for linkup keyboard interrupt */ ++#endif ++ ++/* ++ * physical driver definition ++ */ ++# define WAIT_CHATTERING_DELAY udelay(100) ++extern void tosa_kbd_discharge_all(void); ++extern void tosa_kbd_charge_all(void); ++extern void tosa_kbd_activate_col(int col); ++extern void tosa_kbd_reset_col(int col); ++extern void tosa_kbd_activate_all(void); ++# define DISCHARGE_ALL tosa_kbd_discharge_all() ++# define CHARGE_ALL tosa_kbd_charge_all() ++# define WAIT_DISCHARGE_DELAY udelay(KB_DISCHARGE_DELAY) ++# define ACTIVATE_COL(c) tosa_kbd_activate_col((c)) ++# define RESET_COL(c) tosa_kbd_reset_col((c)) ++# define WAIT_ACTIVATE_DELAY udelay(KB_ACTIVATE_DELAY) ++# define GET_ROWS_STATUS(c) ((GPLR2 & GPIO_ALL_SENSE_BIT) >> GPIO_ALL_SENSE_RSHIFT) ++# define DRIVE_ALL_COLS tosa_kbd_activate_all() ++# define GET_REAL_COL_FROM_COL(c) (c) ++# define RAW_MAP "tosa_rawmap.h" ++# define RAW_MAP_ROLLOVER "tosa_rawmap_rollover.h" ++ ++ ++static int isBrb = 0; ++static int checkBrb(void) ++{ ++ int rowd; ++ ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ++ rowd = GET_ROWS_STATUS(1); ++ if (rowd!=0) return 1; ++ else return 0; ++} ++ ++ ++#if ! defined(KB_COLS) || ! defined(KB_ROWS) ++#error "KB_COLS or KB_ROWS not defined" ++#endif ++ ++/* ++ * keyboard scancode mapper. ++ */ ++#include <asm/sharp_keycode.h> ++ ++#define CHECK_ROLLOVER 1 ++ ++#define CHECK_CHUTTER_BOUNCE 1 ++ ++/* ++ sharppda_kbdstate.in - state ++ 0 - not pressed ++ PRESSING1 - pressing (check chutter) ++ : - pressing (check chutter) ++ CHECK_CHUTTER - pressing (check chutter) ++ JUST_PRESSED - just pressed (throw key down) ++ PRESSED - pressed ++ RELEASING1 - releasing (check bounce) ++ : - releasing (check bounce) ++ PRESSED + CHECK_BOUNCE - releasing (check bounce) ++ JUST_RELEASED - just released (throw key up) ++*/ ++#define CHECK_CHUTTER (2) /* * 10ms */ ++#define CHECK_BOUNCE (4) /* * 10ms */ ++#define NOTPRESSED (0) ++#define PRESSING1 (1) ++#define JUST_PRESSED (CHECK_CHUTTER+1) ++#define PRESSED (CHECK_CHUTTER+2) ++#define RELEASING1 (CHECK_CHUTTER+3) ++#define JUST_RELEASED (CHECK_CHUTTER+CHECK_BOUNCE+3) ++#define ROLLOVERERROR (CHECK_CHUTTER+CHECK_BOUNCE+4) ++#define IS_PRESSING(a) (((a) >= PRESSING1) && ((a) <= CHECK_CHUTTER)) ++#define IS_RELEASING(a) (((a) >= RELEASING1) && ((a) <= PRESSED + CHECK_BOUNCE)) ++#define CHUTTER_BOUNCE_LOG 0 ++ ++#include RAW_MAP ++#if CHECK_ROLLOVER ++#include RAW_MAP_ROLLOVER ++#endif ++ ++/* ++ * This is the mapper for Hard-Key to Soft-Key conversion ++ */ ++ ++int sharp_cur_keycode[(NR_KEYCODES+1)]; ++int sharp_cur_status; ++int tosa_initial_keypress = -1; ++ ++kbd_keyinfo sharppda_kbdstate[(NR_KEYCODES+1)]; /* this map is expoted... */ ++ ++static int keysdown = 0; ++static struct tq_struct kbdhw_task; ++ ++/* ++ * for panel-touch sound ++ */ ++extern void sharpbuz_make_keytouch_sound(void); ++extern void sharpkbdctl_stat_changed(void); ++ ++/* ++ * Keyboard mapping routine. ++ */ ++ ++int keypress_map(int hardkey) ++{ ++ int softkey; ++ unsigned char* pmodmap; ++ int modif_ref = DOWN_NOP; ++ int next_status = sharp_cur_status; ++ ++ /* ======== get soft keycode ========= */ ++ pmodmap = state_to_keymap[sharp_cur_status]; ++ softkey = pmodmap[hardkey]; ++ sharp_cur_keycode[hardkey] = softkey; ++ ++ /* ======== check automaton-map ======== */ ++ modif_ref = down_modifs_ref[hardkey]; ++ if( modif_ref != DOWN_NOP && modif_ref < DOWN_TABLES_SIZE ){ ++ /* ======== need to check state machine ========= */ ++ unsigned char* statemap; ++ statemap = down_tables[modif_ref]; ++ next_status = statemap[sharp_cur_status]; ++ } ++ ++ if( sharp_cur_status != next_status ){ ++ sharp_cur_status = next_status; ++ sharpkbdctl_stat_changed(); ++ }else{ ++ sharp_cur_status = next_status; ++ } ++ return softkey; ++} ++ ++int keyrelease_map(int hardkey) ++{ ++ int softkey; ++ int modif_ref = UP_NOP; ++ int next_status = sharp_cur_status; ++ ++ /* ======== get soft keycode ========= */ ++ softkey = sharp_cur_keycode[hardkey]; ++ sharp_cur_keycode[hardkey] = KEY_IGN; ++ ++ /* ======== check automaton-map ======== */ ++ modif_ref = up_modifs_ref[hardkey]; ++ if( modif_ref != UP_NOP && modif_ref < UP_TABLES_SIZE ){ ++ /* ======== need to check state machine ========= */ ++ unsigned char* statemap; ++ statemap = up_tables[modif_ref]; ++ next_status = statemap[sharp_cur_status]; ++ } ++ ++ if( sharp_cur_status != next_status ){ ++ sharp_cur_status = next_status; ++ sharpkbdctl_stat_changed(); ++ }else{ ++ sharp_cur_status = next_status; ++ } ++ return softkey; ++} ++ ++/* ++ * Keyboard Repeat , including key-mapping ++ */ ++#include <linux/kd.h> ++ ++int (*mach_kbdrate) (struct kbd_repeat *); ++ ++ ++#define DEFAULT_KEYB_REP_DELAY (HZ*2) ++#define DEFAULT_KEYB_REP_RATE (HZ) ++ ++static void sharppda_kbd_rep( unsigned long ignore ); ++static unsigned char rep_scancode = 0; ++static unsigned int key_repeat_delay = DEFAULT_KEYB_REP_DELAY; ++static unsigned int key_repeat_rate = DEFAULT_KEYB_REP_RATE; ++ ++static struct timer_list sharppda_kbd_rep_timer = { function: sharppda_kbd_rep }; ++ ++static void sharppda_kbd_rep( unsigned long ignore ) ++{ ++ unsigned long flags; ++ /* Disable keyboard for the time we call handle_scancode(), else a race ++ * in the keyboard tty queue may happen */ ++ //DEBUGPRINT(("?")); ++ save_flags(flags); cli(); ++ del_timer( &sharppda_kbd_rep_timer ); ++ /* A keyboard int may have come in before we disabled the irq, so ++ * double-check whether rep_scancode is still != 0 */ ++ if (rep_scancode) { ++ init_timer(&sharppda_kbd_rep_timer); ++ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_rate; ++ add_timer( &sharppda_kbd_rep_timer ); ++ DEBUGPRINT(("kbdrep_down %d (%x)\n",rep_scancode,rep_scancode)); ++ } ++ restore_flags(flags); ++ //DEBUGPRINT(("!")); ++} ++ ++static int sharppda_kbd_kbdrate( struct kbd_repeat *k ) ++{ ++ DEBUGPRINT(("sharppda_kbd_kbdrate\n")); ++ if (k->delay > 0) { ++ /* convert from msec to jiffies */ ++ key_repeat_delay = (k->delay * HZ + 500) / 1000; ++ if (key_repeat_delay < 1) ++ key_repeat_delay = 1; ++ } ++ if (k->rate > 0) { ++ key_repeat_rate = (k->rate * HZ + 500) / 1000; ++ if (key_repeat_rate < 1) ++ key_repeat_rate = 1; ++ } ++ k->delay = key_repeat_delay * 1000 / HZ; ++ k->rate = key_repeat_rate * 1000 / HZ; ++ return( 0 ); ++} ++ ++/* ++ * Keyboard Press/Release function , including key-mapping , for HOLD-modified Key ++ */ ++ ++static unsigned long key_hold_delay = 120 * HZ / 100; ++ ++static unsigned char holdkey_pending = 0; ++static int holdkey_pendinghardkey = 0; ++static int holdkey_pendingmappedkey = 0; ++static void sharppda_kbd_hold( unsigned long ignore ); ++static struct timer_list sharppda_kbd_hold_timer = { function: sharppda_kbd_hold }; ++ ++static shappda_holdkey_info **custom_holdkey_info = NULL; ++ ++#if CHECK_ROLLOVER ++// rollover_state ++// 0 .. not detected roll over error in previous key scan ++// 1 .. detected roll over error in previous key scan ++static int rollover_state = 0; ++ ++static unsigned char rep_hardkey = 0; ++#endif ++ ++static void sharppda_kbd_hold( unsigned long ignore ) ++{ ++ int hold_keycode; ++ unsigned long flags; ++ shappda_holdkey_info *hold_infop = NULL; ++ save_flags(flags); cli(); ++ del_timer(&sharppda_kbd_hold_timer); ++ DEBUGPRINT(("sharppda_kbd_hold\n")); ++ CUS_DPRINTK("enter\n"); ++ if( holdkey_pending && holdkey_info ){ ++ CUS_DPRINTK("pending exists\n"); ++ if( holdkey_pendinghardkey ){ ++ CUS_DPRINTK("holdkey_pendinghardkey\n"); ++ hold_infop = holdkey_info[holdkey_pendinghardkey]; ++ if( custom_holdkey_info ){ /* use Customozed HoldKey */ ++ CUS_DPRINTK("customized holdkey\n"); ++ hold_infop = custom_holdkey_info[holdkey_pendinghardkey]; ++ } ++ if( ! hold_infop ){ ++ DEBUGPRINT(("NO VALID INFO found for %x\n",holdkey_pendinghardkey)); ++ }else if( hold_infop->type == HOLDKEYTYPE_CHAR ){ ++ DEBUGPRINT(("HOLD eventtype is HOLDKEYTYPE_CHAR for %x\n",holdkey_pendinghardkey)); ++ hold_keycode = hold_infop->character; ++ DEBUGPRINT(("Pending Key Exists for Hard-Key %x.\n",holdkey_pendinghardkey)); ++ DEBUGPRINT(("Current Keycode is %x , %x\n", ++ holdkey_pendingmappedkey,sharp_cur_keycode[holdkey_pendinghardkey])); ++ DEBUGPRINT(("Changing to HOLD-KEY %x\n",hold_keycode)); ++ sharp_cur_keycode[holdkey_pendinghardkey] = hold_keycode; ++ DEBUGPRINT(("kbdhold %d (%x)\n",KBSCANCDE(hold_keycode,KBDOWN),KBSCANCDE(hold_keycode,KBDOWN))); ++ handle_scancode(KBSCANCDE(hold_keycode,KBDOWN), 1); ++ del_timer(&sharppda_kbd_rep_timer); ++ init_timer(&sharppda_kbd_rep_timer); ++ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_delay; ++/* 2001.09.05 Nami. delete hold-key repeat */ ++/* delete hold-key repeat on Iris , too. */ ++ rep_scancode = KBSCANCDE(hold_keycode,KBDOWN); ++#if CHECK_ROLLOVER ++ rep_hardkey = holdkey_pendinghardkey; ++#endif ++ }else if( hold_infop->type == HOLDKEYTYPE_FUNC ){ ++ DEBUGPRINT(("HOLD eventtype is HOLDKEYTYPE_FUNC for %x\n",holdkey_pendinghardkey)); ++ if( hold_infop->func ){ ++ DEBUGPRINT(("Executing FUNC\n")); ++ (*(hold_infop->func))(); ++ } ++ }else{ ++ DEBUGPRINT(("NO VALID TYPE found for %x\n",holdkey_pendinghardkey)); ++ } ++ } ++ } ++ holdkey_pending = 0; ++ holdkey_pendinghardkey = 0; ++ holdkey_pendingmappedkey = 0; ++ DEBUGPRINT(("Pending Key Released.\n")); ++ restore_flags(flags); ++} ++ ++ ++ ++/* ++ * Keyboard Press/Release function , including key-mapping ++ */ ++ ++void sharppda_kbd_press(int keycode) ++{ ++ unsigned long flags; ++ unsigned char newpress = 0; ++ int keycode_mapped = keycode; ++ ++// printk("kbd_press=%d\n",keycode); ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++#if CHECK_CHUTTER_BOUNCE ++ if (IS_RELEASING(sharppda_kbdstate[keycode].in)) { ++ // detected bounce ? ++ sharppda_kbdstate[keycode].in = PRESSED; ++#if CHUTTER_BOUNCE_LOG ++ printk("BOUNCE? keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++ else if (IS_PRESSING(sharppda_kbdstate[keycode].in) || ++ (sharppda_kbdstate[keycode].in == NOTPRESSED)) { ++ // pressing ++ sharppda_kbdstate[keycode].in++; ++#if CHUTTER_BOUNCE_LOG ++ printk("PRESSING keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++ if (sharppda_kbdstate[keycode].in == JUST_PRESSED) { ++ keysdown++; ++ newpress = 1; ++ sharppda_kbdstate[keycode].in = PRESSED; ++#if CHUTTER_BOUNCE_LOG ++ printk("JUST_PRESSED keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++#else ++ if (!sharppda_kbdstate[keycode].in) { ++ keysdown++; ++ newpress = 1; ++#if CHECK_ROLLOVER ++ sharppda_kbdstate[keycode].in=1; ++#endif ++ } ++#endif ++ ++ /* ++ * We approximate a retriggable monostable ++ * action. ++ */ ++ ++#if !CHECK_ROLLOVER ++ sharppda_kbdstate[keycode].in=1; ++#endif ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ ++ /* We only need to ensure keysdown consistent */ ++ ++ /* Map Keycode */ ++ if( newpress ){ ++ keycode_mapped = keypress_map(keycode); ++ } ++ ++ /* put into upper layer */ ++ if (newpress){ ++ shappda_holdkey_info **use_holdkey_info; ++ use_holdkey_info = holdkey_info; ++ if( custom_holdkey_info ){ ++ CUS_DPRINTK("customized holdkey\n"); ++ use_holdkey_info = custom_holdkey_info; ++ } ++ if( use_holdkey_info && use_holdkey_info[keycode] ){ ++ CUS_DPRINTK("keycode found\n"); ++ if( ! holdkey_pending ){ ++ DEBUGPRINT(("HOLD keyinfo found for %x. mapped=%x\n",keycode,keycode_mapped)); ++ holdkey_pendinghardkey = keycode; ++ holdkey_pendingmappedkey = keycode_mapped; ++ holdkey_pending = 1; ++ del_timer(&sharppda_kbd_hold_timer); ++ init_timer(&sharppda_kbd_hold_timer); ++#ifdef HOLDKEY_INFO_HAS_TIMEOUT ++ if( use_holdkey_info[keycode]->timeout ) ++ { ++ unsigned long diff = use_holdkey_info[keycode]->timeout * HZ / 1000; ++ CUS_DPRINTK("has timeout %d\n",use_holdkey_info[keycode]->timeout); ++ sharppda_kbd_hold_timer.expires = jiffies + diff; ++ } ++ else{ /* set default value */ ++ CUS_DPRINTK("default timeout\n"); ++ sharppda_kbd_hold_timer.expires = jiffies + key_hold_delay; ++ } ++#else ++ sharppda_kbd_hold_timer.expires = jiffies + key_hold_delay; ++#endif ++ add_timer( &sharppda_kbd_hold_timer ); ++ DEBUGPRINT(("holding...\n")); ++ return; ++ }else{ ++ DEBUGPRINT(("HOLD keyinfo found for %d but already pending...\n",keycode)); ++ } ++ } ++ DEBUGPRINT(("kbdpress %d (%x)\n",KBSCANCDE(keycode_mapped,KBDOWN),KBSCANCDE(keycode_mapped,KBDOWN))); ++ handle_scancode(KBSCANCDE(keycode_mapped,KBDOWN), 1); ++ // printk("handle_scankey=%x\n",KBSCANCDE(keycode_mapped,KBDOWN)); ++ del_timer(&sharppda_kbd_rep_timer); ++ init_timer(&sharppda_kbd_rep_timer); ++ sharppda_kbd_rep_timer.expires = jiffies + key_repeat_delay; ++ add_timer( &sharppda_kbd_rep_timer ); ++ rep_scancode = KBSCANCDE(keycode_mapped,KBDOWN); ++#if CHECK_ROLLOVER ++ rep_hardkey = keycode; ++#endif ++ } ++} ++ ++#if CHECK_ROLLOVER ++void sharppda_kbd_press_rollover(int keycode) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++#if CHECK_CHUTTER_BOUNCE ++ if (sharppda_kbdstate[keycode].in == NOTPRESSED) { ++ keysdown++; ++ sharppda_kbdstate[keycode].in=ROLLOVERERROR; ++#if CHUTTER_BOUNCE_LOG ++ printk("ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++#else ++ if (!sharppda_kbdstate[keycode].in) { ++ keysdown++; ++ sharppda_kbdstate[keycode].in=2; ++ } ++#endif ++ // key is down but not handle_scancode() ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++} ++ ++void sharppda_kbd_press_force_rollover(int keycode) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++#if CHECK_CHUTTER_BOUNCE ++ if ((sharppda_kbdstate[keycode].in != PRESSED) && ++ (sharppda_kbdstate[keycode].in != ROLLOVERERROR)) { ++ keysdown++; ++ } ++ sharppda_kbdstate[keycode].in=ROLLOVERERROR; ++#if CHUTTER_BOUNCE_LOG ++ printk("force ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++#else ++ if (!sharppda_kbdstate[keycode].in) { ++ keysdown++; ++ } ++ sharppda_kbdstate[keycode].in=2; ++#endif ++ // key is down but not handle_scancode() ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++} ++#endif ++ ++void sharppda_kbd_release(int keycode) ++{ ++ unsigned long flags; ++ unsigned char newrelease = 0; ++ int keycode_mapped = keycode; ++ ++//printk("kbd_release=%d\n",keycode); ++ spin_lock_irqsave(&kbd_spinlock,flags); ++#if CHECK_CHUTTER_BOUNCE ++ if (IS_PRESSING(sharppda_kbdstate[keycode].in)) { ++ // detected chutter ? ++ sharppda_kbdstate[keycode].in = NOTPRESSED; ++#if CHUTTER_BOUNCE_LOG ++ printk("CHUTTER? keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++ else if (IS_RELEASING(sharppda_kbdstate[keycode].in) || ++ (sharppda_kbdstate[keycode].in == PRESSED)) { ++ // releasing ++ sharppda_kbdstate[keycode].in++; ++#if CHUTTER_BOUNCE_LOG ++ printk("RELEASING keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++ else if (sharppda_kbdstate[keycode].in == ROLLOVERERROR) { ++ keysdown--; ++ sharppda_kbdstate[keycode].in = NOTPRESSED; ++#if CHUTTER_BOUNCE_LOG ++ printk("was ROLLOVERERROR keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++ if (sharppda_kbdstate[keycode].in == JUST_RELEASED) { ++ keysdown--; ++ newrelease = 1; ++ sharppda_kbdstate[keycode].in = NOTPRESSED; ++#if CHUTTER_BOUNCE_LOG ++ printk("JUST_RELEASED keycode %d state %d\n", keycode, sharppda_kbdstate[keycode].in); ++#endif ++ } ++#else ++ if (sharppda_kbdstate[keycode].in) { ++ keysdown--; ++#if CHECK_ROLLOVER ++ if (sharppda_kbdstate[keycode].in==1) { ++#endif ++ newrelease = 1; ++#if CHECK_ROLLOVER ++ } ++#endif ++ } ++#endif ++ ++#if !CHECK_CHUTTER_BOUNCE ++ sharppda_kbdstate[keycode].in=0; ++#endif ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ ++ /* We only need to ensure keysdown consistent */ ++ ++ ++ /* Map Keycode */ ++ if( newrelease ){ ++ keycode_mapped = keyrelease_map(keycode); ++ } ++ ++ if (newrelease){ ++ if( holdkey_pending ){ ++ DEBUGPRINT(("HOLD pending.\n")); ++ if( holdkey_pendinghardkey == keycode ){ ++ DEBUGPRINT(("HOLDed key is same as pending-key. %x\n",keycode)); ++ DEBUGPRINT(("Current MappedKey is %x.\n",holdkey_pendingmappedkey)); ++ DEBUGPRINT(("kbdrel hold %d (%x)\n",KBSCANCDE(holdkey_pendingmappedkey,KBDOWN),KBSCANCDE(holdkey_pendingmappedkey,KBDOWN))); ++ handle_scancode(KBSCANCDE(holdkey_pendingmappedkey,KBDOWN), 1); ++ del_timer(&sharppda_kbd_hold_timer); ++ holdkey_pending = 0; ++ holdkey_pendinghardkey = 0; ++ holdkey_pendingmappedkey = 0; ++ DEBUGPRINT(("HOLDed key is released.\n")); ++ } ++ } ++ DEBUGPRINT(("kbdrel nom %d (%x)\n",KBSCANCDE(keycode_mapped,KBUP),KBSCANCDE(keycode_mapped,KBUP))); ++ handle_scancode(KBSCANCDE(keycode_mapped,KBUP), 0); ++ // printk("handle_scankey=%x\n",KBSCANCDE(keycode_mapped,KBUP)); ++ if( rep_scancode == KBSCANCDE(keycode_mapped,KBDOWN) ){ ++ rep_scancode = 0; ++#if CHECK_ROLLOVER ++ rep_hardkey = 0; ++#endif ++ //DEBUGPRINT(("%%")); ++ del_timer( &sharppda_kbd_rep_timer ); ++ } ++ } ++ ++} ++ ++/* ++ * Keyboard Scan routine , using GPIO ++ */ ++ ++ ++#if CHECK_ROLLOVER ++#define MAX_KEY_PRESS (6) ++#endif ++ ++static void port_key_delay_proc( unsigned long port_key ); ++#define PORT_KEY_NUM 3 ++#define IDPORT_ON 0 ++#define IDPORT_REC 1 ++#define IDPORT_SYNC 2 ++static int port_key_setting[PORT_KEY_NUM] = { 30, 90, 5 }; // -1:disable, 0~: x10ms wait for detect ++static int port_key_delay_state[PORT_KEY_NUM] = {NOTPRESSED,NOTPRESSED,NOTPRESSED}; ++static struct timer_list port_key_delay_timer = { function: port_key_delay_proc }; ++static int port_key_pending = 0; ++ ++static void reset_port_key_delay(void) ++{ ++ int i; ++ del_timer(&port_key_delay_timer); ++ for (i=0; i<PORT_KEY_NUM; i++) port_key_delay_state[i]=NOTPRESSED; ++ port_key_pending = 0; ++} ++ ++// num = 0:On key, 1:Rec key, 2:Sync key ++// val = -1:disable, 0~: x10ms wait for detect ++int set_port_key_setting( int num, int val ) ++{ ++ if (num<0 || num>=PORT_KEY_NUM) return -1; ++ port_key_setting[num] = val; ++ port_key_delay_state[num] = NOTPRESSED; ++ port_key_pending = 0; ++ return 0; ++} ++int get_port_key_setting( int num ) ++{ ++ if (num<0 || num>=PORT_KEY_NUM) return -1; ++ return port_key_setting[num]; ++} ++ ++static int read_port_key_status_raw(void) ++{ ++ int val=0; ++ // Power ++ if ((GPLR0 & GPIO_bit(GPIO_ON_KEY))==0) val |= KEYMASK_ON; ++ // Record ++ if ((GPLR0 & GPIO_bit(GPIO_RECORD_BTN))==0) val |= KEYMASK_REC; ++ // Sync ++ if ((GPLR0 & GPIO_bit(GPIO_SYNC))==0) val |= KEYMASK_SYNC; ++ return val; ++} ++ ++static void port_key_delay_proc( unsigned long port_key ) ++{ ++ int val=read_port_key_status_raw(); ++ ++ switch( port_key ) { ++ case IDPORT_ON: ++ if (port_key_delay_state[IDPORT_ON]!=PRESSING1 || (val&KEYMASK_ON) ) { ++ port_key_delay_state[IDPORT_ON] = PRESSED; ++ } else { ++ port_key_delay_state[IDPORT_ON] = NOTPRESSED; ++ } ++ break; ++ case IDPORT_REC: ++ if (port_key_delay_state[IDPORT_REC]!=PRESSING1 || (val&KEYMASK_REC) ) { ++ port_key_delay_state[IDPORT_REC] = PRESSED; ++ } else { ++ port_key_delay_state[IDPORT_REC] = NOTPRESSED; ++ } ++ break; ++ case IDPORT_SYNC: ++ if (port_key_delay_state[IDPORT_SYNC]!=PRESSING1 || (val&KEYMASK_SYNC) ) { ++ port_key_delay_state[IDPORT_SYNC] = PRESSED; ++ } else { ++ port_key_delay_state[IDPORT_SYNC] = NOTPRESSED; ++ } ++ break; ++ } ++ port_key_pending = 0; ++} ++ ++static int read_port_key_status(void) ++{ ++ int ret=0,val=read_port_key_status_raw(); ++ ++ // Power ++ if (val & KEYMASK_ON) { // press ++ if (port_key_setting[IDPORT_ON]==0) { // normal key ++ ret |= KEYMASK_ON; ++ } else if (port_key_setting[IDPORT_ON]>0) { // delay key ++ if (port_key_delay_state[IDPORT_ON]==PRESSED) { // already detected ++ ret |= KEYMASK_ON; ++ } else if (port_key_delay_state[IDPORT_ON]==NOTPRESSED) { // start timer ++ reset_port_key_delay(); ++ port_key_delay_state[IDPORT_ON]=PRESSING1; ++ init_timer(&port_key_delay_timer); ++ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_ON]; ++ port_key_delay_timer.data = IDPORT_ON; ++ add_timer(&port_key_delay_timer); ++ port_key_pending = 1; ++ return ret; // ignore following key ++ } ++ } ++ } else { // release ++ if (port_key_delay_state[IDPORT_ON]!=NOTPRESSED && port_key_setting[IDPORT_ON]>0) { ++ del_timer(&port_key_delay_timer); ++ port_key_pending = 0; ++ port_key_delay_state[IDPORT_ON]=NOTPRESSED; ++ } ++ } ++ ++ ++ // Record ++ if (val & KEYMASK_REC) { // press ++ if (port_key_setting[IDPORT_REC]==0) { // normal key ++ ret |= KEYMASK_REC; ++ } else if (port_key_setting[IDPORT_REC]>0) { // delay key ++ if (port_key_delay_state[IDPORT_REC]==PRESSED) { // already detected ++ ret |= KEYMASK_REC; ++ } else if (port_key_delay_state[IDPORT_REC]==NOTPRESSED) { // start timer ++ reset_port_key_delay(); ++ port_key_delay_state[IDPORT_REC]=PRESSING1; ++ init_timer(&port_key_delay_timer); ++ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_REC]; ++ port_key_delay_timer.data = IDPORT_REC; ++ add_timer(&port_key_delay_timer); ++ port_key_pending = 1; ++ return ret; // ignore following key ++ } ++ } ++ } else { // release ++ if (port_key_delay_state[IDPORT_REC]!=NOTPRESSED && port_key_setting[IDPORT_REC]>0) { ++ del_timer(&port_key_delay_timer); ++ port_key_pending = 0; ++ port_key_delay_state[IDPORT_REC]=NOTPRESSED; ++ } ++ } ++ ++ // Sync ++ if (val & KEYMASK_SYNC) { // press ++ if (port_key_setting[IDPORT_SYNC]==0) { // normal key ++ ret |= KEYMASK_SYNC; ++ } else if (port_key_setting[IDPORT_SYNC]>0) { // delay key ++ if (port_key_delay_state[IDPORT_SYNC]==PRESSED) { // already detected ++ ret |= KEYMASK_SYNC; ++ } else if (port_key_delay_state[IDPORT_SYNC]==NOTPRESSED) { // start timer ++ reset_port_key_delay(); ++ port_key_delay_state[IDPORT_SYNC]=PRESSING1; ++ init_timer(&port_key_delay_timer); ++ port_key_delay_timer.expires = jiffies + port_key_setting[IDPORT_SYNC]; ++ port_key_delay_timer.data = IDPORT_SYNC; ++ add_timer(&port_key_delay_timer); ++ port_key_pending = 1; ++ return ret; // ignore following key ++ } ++ } ++ } else { // release ++ if (port_key_delay_state[IDPORT_SYNC]!=NOTPRESSED && port_key_setting[IDPORT_SYNC]>0) { ++ del_timer(&port_key_delay_timer); ++ port_key_pending = 0; ++ port_key_delay_state[IDPORT_SYNC]=NOTPRESSED; ++ } ++ } ++ ++ return ret; ++} ++ ++void sharppda_scan_key_gpio(void* dummy) ++{ ++ int col,row; ++ int rowd; ++ unsigned long flags; ++ int real_col; ++ int count = 0; ++#if CHECK_ROLLOVER ++ int pressed_key[MAX_KEY_PRESS + 1]; ++ int i, rollover_count = 0, rollover_error = 0; ++ unsigned long rollover_flag = 0; ++#endif ++#if CHECK_CHUTTER ++ int loop; ++#endif ++ ++ WAIT_CHATTERING_DELAY; ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ ++ CHARGE_ALL; ++ ++ for(col=0;col<KB_COLS+1;col++){ ++ real_col = GET_REAL_COL_FROM_COL(col); ++ /* ++ * Discharge the output driver capacitatance ++ * in the keyboard matrix. (Yes it is significant..) ++ */ ++ if (real_col<KB_COLS) { // matrix key ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ACTIVATE_COL(real_col); ++ ++ WAIT_ACTIVATE_DELAY; ++ rowd = GET_ROWS_STATUS(real_col); ++ ++#if 1 // for BRB ++ if (isBrb) { ++ rowd &= 0x0000000f; ++ } ++#endif ++ } else { // GPIO port key ++ rowd = read_port_key_status(); ++ } ++ for( row = 0 ; row < KB_ROWS ; row++ ){ ++ ++ if( rowd & KB_ROWMASK(row) ){ ++#if CHECK_ROLLOVER ++ if ((rawkeytable_table_NormalLower[KEYCODE(row, col)] != KEY_IGN)) { ++ pressed_key[count] = KEYCODE(row, col); ++ rollover_flag |= rollover_flag_table[KEYCODE(row, col)]; ++ if (count < MAX_KEY_PRESS) { ++ count++; ++ } ++ else { ++ sharppda_kbd_press_rollover(KEYCODE(row,col)); ++ } ++ } ++#else ++ sharppda_kbd_press(KEYCODE(row,col)); ++ count++; ++#endif ++ } ++ else{ ++ if( sharppda_kbdstate[KEYCODE(row, col)].in ){ ++ sharppda_kbd_release(KEYCODE(row,col)); ++ } ++ } ++ } ++ if (real_col<KB_COLS) { ++ RESET_COL(real_col); ++ } ++ } /* end of for */ ++ ++#if CHECK_ROLLOVER ++ if (count >= MAX_KEY_PRESS) { ++ rollover_error = 1; ++ } ++ else { ++ rollover_count = count; ++ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_LSHIFT)) { ++ rollover_count--; ++ } ++ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_RSHIFT)) { ++ rollover_count--; ++ } ++ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_FUNCTION)) { ++ rollover_count--; ++ } ++ if ((rollover_count > 3) || ++ ((rollover_count == 3) && ++ (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) || ++ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) && ++ (!ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) || ++ !ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_HORIZONTAL) || ++ !ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_ENTQUESPC)))) { ++ rollover_error = 1; ++ } ++ } ++ // printk("count=%d,rollover_count=%d,rollover_error=%d\n",count,rollover_count,rollover_error); ++ if (rollover_error == 0) { ++#if 0 ++ if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_VERTICAL) && ++ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_HORIZONTAL) && ++ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_ENTQUESPC)) { ++ printk("keyboard : vertical and horizontal and [Enter, ?, Space] pressed\n"); ++ } ++#endif ++ for (i = 0; i < count; i++) { ++ sharppda_kbd_press(pressed_key[i]); ++ } ++ rollover_state = 0; ++ } ++ else { ++ if (rollover_state == 0) { ++#if 0 ++ printk("keyboard : roll over error!\n"); ++ if (count >= MAX_KEY_PRESS) { ++ printk("keyboard : %d key pressed\n", count); ++ } ++ else if (rollover_count > 3) { ++ printk("keyboard : %d rollover key pressed\n", rollover_count); ++ } ++ else if (ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_TAB) && ++ ROLLOVER_CHECK_FLAG(rollover_flag, ROLLOVER_DIRECT_ON)) { ++ printk("keyboard : TAB and direct ON key pressed\n"); ++ } ++#endif ++ // stop repeat ++ if (rep_hardkey) { ++#if CHECK_CHUTTER_BOUNCE ++ for (loop = 0; loop <= CHECK_BOUNCE; loop++) { ++ sharppda_kbd_release(rep_hardkey); ++ } ++#else ++ sharppda_kbd_release(rep_hardkey); ++#endif ++ sharppda_kbd_press_rollover(rep_hardkey); ++ } ++ } ++ for (i = 0; i < count; i++) { ++ sharppda_kbd_press_rollover(pressed_key[i]); ++ } ++ rollover_state = 1; ++ } ++#endif ++ ++#ifdef USE_KBD_IRQ ++ /* ++ * drive all for next interrupts ++ */ ++ DRIVE_ALL_COLS; ++#endif ++ ++ // press OK key to erase flash ++ if (tosa_initial_keypress<0) { ++#if CHECK_CHUTTER_BOUNCE ++ if ((sharppda_kbdstate[0x38].in==PRESSED) || ++ IS_PRESSING(sharppda_kbdstate[0x38].in)) { ++#else ++#if CHECK_ROLLOVER ++ if (sharppda_kbdstate[0x38].in==1) { ++#else ++ if (sharppda_kbdstate[0x38].in) { ++#endif ++#endif ++ tosa_initial_keypress = 1; ++ } else { ++ tosa_initial_keypress = 0; ++ } ++ } ++ ++ ++ /* ++ * Re-queue ourselves ++ */ ++#if CHECK_CHUTTER_BOUNCE ++ for (loop = 0; loop < NR_KEYS; loop++) { ++ if (port_key_pending) { ++ queue_task(&kbdhw_task,&tq_timer); ++ break; ++ } ++ if (sharppda_kbdstate[loop].in != NOTPRESSED) { ++ queue_task(&kbdhw_task,&tq_timer); ++ break; ++ } ++ } ++#else ++#ifdef USE_KBD_IRQ ++ if ( count > 0 ) ++#endif ++ queue_task(&kbdhw_task,&tq_timer); ++#endif ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++} ++ ++/* ++ * Logical Keyboard Driver initialization ++ */ ++ ++void sharppda_scan_logdriver_init(void) ++{ ++ int ni; ++ kbdhw_task.routine = sharppda_scan_key_gpio; ++ kbdhw_task.sync = 0; ++ mach_kbdrate = sharppda_kbd_kbdrate; ++#ifndef USE_KBD_IRQ ++ queue_task(&kbdhw_task,&tq_timer); ++#endif ++ for (ni=0;ni<NR_KEYCODES;ni++){ ++ sharppda_kbdstate[ni].in=0; ++ } ++ isBrb = checkBrb(); ++ init_timer(&port_key_delay_timer); ++} ++ ++void sharppda_scan_logdriver_suspend(void) ++{ ++ del_timer( &sharppda_kbd_rep_timer ); ++ del_timer( &sharppda_kbd_hold_timer ); ++ rep_scancode = 0; ++#if CHECK_ROLLOVER ++ rep_hardkey = 0; ++#endif ++ holdkey_pending = 0; ++ holdkey_pendinghardkey = 0; ++ holdkey_pendingmappedkey = 0; ++} ++ ++void sharppda_scan_logdriver_resume(void) ++{ ++ queue_task(&kbdhw_task,&tq_timer); ++} ++ ++ ++ ++/* ++ * External Modifier Status Functions ++ */ ++ ++int sharppda_kbd_extmodif_showstatus(int which) ++{ ++#ifdef EXTMODIF_SHOWSTAT_KEYMAX ++ unsigned char* pmodmap; ++ if( which >= EXTMODIF_SHOWSTAT_KEYMAX ) return -EINVAL; ++ if( ! extmodif_status_tables ) return -EINVAL; ++ if( ! ( pmodmap = extmodif_status_tables[which] ) ) return -EINVAL; ++ return(pmodmap[sharp_cur_status]); ++#else /* ! EXTMODIF_SHOWSTAT_KEYMAX */ ++ return -EINVAL; /* not supported on this arch. */ ++#endif /* ! EXTMODIF_SHOWSTAT_KEYMAX */ ++} ++ ++int sharppda_kbd_extmodif_togglestatus(int which) ++{ ++#ifdef EXTMODIF_MOVESTAT_KEYMAX ++ unsigned char* pmodmap; ++ if( which >= EXTMODIF_MOVESTAT_KEYMAX ) return -EINVAL; ++ if( ! extmodif_move_tables ) return -EINVAL; ++ if( ! ( pmodmap = extmodif_move_tables[which] ) ) return -EINVAL; ++ DEBUGPRINT(("moving from %d to %d\n",sharp_cur_status,pmodmap[sharp_cur_status])); ++ if( sharp_cur_status != pmodmap[sharp_cur_status] ){ ++ sharp_cur_status = pmodmap[sharp_cur_status]; ++ sharpkbdctl_stat_changed(); ++ }else{ ++ sharp_cur_status = pmodmap[sharp_cur_status]; ++ } ++ return 0; ++#else /* ! EXTMODIF_MOVESTAT_KEYMAX */ ++ return -EINVAL; /* not supported on this arch. */ ++#endif /* ! EXTMODIF_MOVESTAT_KEYMAX */ ++} ++ ++unsigned long sharppda_kbd_extmodif_packstatus(void) ++{ ++#ifdef EXTMODIF_SHOWSTAT_KEYMAX ++ unsigned long val = 0; ++ return val; ++#else /* ! EXTMODIF_SHOWSTAT_KEYMAX */ ++ return 0; ++#endif /* ! EXTMODIF_SHOWSTAT_KEYMAX */ ++} ++ ++/* ++ * SL-Keycode Search Functions ++ */ ++ ++static int find_hardcode_from_slcode(int stateno,unsigned char sl_char) ++{ ++ int i; ++ unsigned char* pmodmap; ++ if( stateno < 0 || stateno >= STATE_NUMS_TOTAL ) return -EINVAL; ++ pmodmap = state_to_keymap[stateno]; ++ for(i=0;i<(NR_KEYCODES+1);i++){ ++ if( pmodmap[i] == sl_char ) return i; ++ } ++ return -EINVAL; ++} ++ ++ ++/* ++ * HoldKey Customizing Functions ++ */ ++ ++static void delete_custom_holdkey_info(void) ++{ ++ CUS_DPRINTK("\n"); ++ if( custom_holdkey_info ){ ++ int i; ++ for(i=0;i<(NR_KEYCODES+1);i++){ ++ if( custom_holdkey_info[i] ){ ++ kfree(custom_holdkey_info[i]); ++ custom_holdkey_info[i] = NULL; ++ } ++ } ++ kfree(custom_holdkey_info); ++ custom_holdkey_info = NULL; ++ } ++} ++ ++static int duplicate_holdkey_info(void) ++{ ++ int i; ++ CUS_DPRINTK("\n"); ++ if( ! custom_holdkey_info ){ ++ custom_holdkey_info = (shappda_holdkey_info**)kmalloc(sizeof(shappda_holdkey_info*)*(NR_KEYCODES+1),GFP_KERNEL); ++ if( ! custom_holdkey_info ) goto FAIL_SAFE; ++ memset(custom_holdkey_info,0,sizeof(shappda_holdkey_info*)*(NR_KEYCODES+1)); ++ } ++ for(i=0;i<(NR_KEYCODES+1);i++){ ++ if( holdkey_info[i] ){ ++ if( ! custom_holdkey_info[i] ){ ++ custom_holdkey_info[i] = (shappda_holdkey_info*)kmalloc(sizeof(shappda_holdkey_info),GFP_KERNEL); ++ if( ! custom_holdkey_info[i] ) goto FAIL_SAFE; ++ } ++ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info)); ++ }else{ ++ if( custom_holdkey_info[i] ){ ++ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info)); ++ kfree(custom_holdkey_info[i]); ++ custom_holdkey_info[i] = NULL; ++ } ++ } ++ } ++ return 0; ++FAIL_SAFE: ++ delete_custom_holdkey_info(); ++ return -ENOMEM; ++} ++ ++static int add_custom_holdkey_info(int i) ++{ ++ int error; ++ CUS_DPRINTK(" %d(%x)\n",i,i); ++ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL; ++ if( ! custom_holdkey_info ){ ++ if( ( error = duplicate_holdkey_info() ) ) return error; ++ } ++ if( ! custom_holdkey_info[i] ){ ++ custom_holdkey_info[i] = (shappda_holdkey_info*)kmalloc(sizeof(shappda_holdkey_info),GFP_KERNEL); ++ if( ! custom_holdkey_info[i] ) goto FAIL_SAFE; ++ if( holdkey_info[i] ) ++ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info)); ++ else ++ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info)); ++ } ++ return 0; ++FAIL_SAFE: ++ return -ENOMEM; ++} ++ ++static int del_custom_holdkey_info(int i) ++{ ++ int error; ++ CUS_DPRINTK(" %d(%x)\n",i,i); ++ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL; ++ if( ! custom_holdkey_info ){ ++ if( ( error = duplicate_holdkey_info() ) ) return error; ++ } ++ if( custom_holdkey_info[i] ){ ++ memset(custom_holdkey_info[i],0,sizeof(shappda_holdkey_info)); ++ kfree(custom_holdkey_info[i]); ++ custom_holdkey_info[i] = NULL; ++ } ++ return 0; ++FAIL_SAFE: ++ return -ENOMEM; ++} ++ ++static int restore_one_holdkey_info(int i) ++{ ++ int error; ++ CUS_DPRINTK(" %d(%x)\n",i,i); ++ if( i < 0 || i >= (NR_KEYCODES+1) ) return -EINVAL; ++ if( ! custom_holdkey_info ) return 0; ++ if( holdkey_info[i] ){ ++ if( ( error = add_custom_holdkey_info(i) ) ) return error; ++ memcpy(custom_holdkey_info[i],holdkey_info[i],sizeof(shappda_holdkey_info)); ++ }else{ ++ if( ( error = del_custom_holdkey_info(i) ) ) return error; ++ } ++ return 0; ++} ++ ++int restore_all_holdkey_info(void) ++{ ++ CUS_DPRINTK("\n"); ++ if( ! custom_holdkey_info ) return 0; ++ delete_custom_holdkey_info(); ++ return 0; ++} ++ ++int customize_holdkey_char_info(int hardcode,int sl_char) ++{ ++ int error; ++ CUS_DPRINTK(" %d(%x) %d(%x)\n",hardcode,hardcode,sl_char,sl_char); ++ if( ! custom_holdkey_info ){ ++ if( ( error = duplicate_holdkey_info() ) ) return error; ++ } ++ if( ( error = add_custom_holdkey_info(hardcode) ) ) return error; ++ custom_holdkey_info[hardcode]->type = HOLDKEYTYPE_CHAR; ++ custom_holdkey_info[hardcode]->character = sl_char; ++ return 0; ++} ++ ++int customize_holdkey_char_info_by_slkey(unsigned char slcode,int sl_char) ++{ ++ int hardcode; ++ CUS_DPRINTK(" %d(%x) %d(%x)\n",slcode,slcode,sl_char,sl_char); ++ hardcode = find_hardcode_from_slcode(0,slcode); ++ if( hardcode < 0 ) return -EINVAL; ++ return customize_holdkey_char_info(hardcode,sl_char); ++} ++ ++int customize_del_holdkey_info(int hardcode) ++{ ++ CUS_DPRINTK(" %d(%x)\n",hardcode,hardcode); ++ return del_custom_holdkey_info(hardcode); ++} ++ ++int customize_del_holdkey_info_by_slkey(int slcode) ++{ ++ int hardcode; ++ CUS_DPRINTK(" %d(%x)\n",slcode,slcode); ++ hardcode = find_hardcode_from_slcode(0,slcode); ++ if( hardcode < 0 ) return -EINVAL; ++ return del_custom_holdkey_info(hardcode); ++} ++ ++int customize_restore_holdkey_info(int hardcode) ++{ ++ CUS_DPRINTK(" %d(%x)\n",hardcode,hardcode); ++ return restore_one_holdkey_info(hardcode); ++} ++ ++int customize_restore_holdkey_info_by_slkey(int slcode) ++{ ++ int hardcode; ++ CUS_DPRINTK(" %d(%x)\n",slcode,slcode); ++ hardcode = find_hardcode_from_slcode(0,slcode); ++ if( hardcode < 0 ) return -EINVAL; ++ return restore_one_holdkey_info(hardcode); ++} ++ ++ ++int sharppda_kbd_set_hold_threshold(int msecs) ++{ ++ if( holdkey_info ){ ++ key_hold_delay = (unsigned long)msecs * HZ / 1000; ++#ifdef HOLDKEY_INFO_HAS_TIMEOUT ++ if( ! custom_holdkey_info ) duplicate_holdkey_info(); ++ if( custom_holdkey_info ){ ++ int i; ++ for(i=0;i<=NR_KEYCODES;i++){ ++ if( custom_holdkey_info[i] ){ ++ custom_holdkey_info[i]->timeout = msecs; ++ } ++ } ++ }else{ ++ int i; ++ for(i=0;i<=NR_KEYCODES;i++){ ++ if( holdkey_info[i] ){ ++ holdkey_info[i]->timeout = msecs; ++ } ++ } ++ } ++#endif ++ return 0; ++ }else{ ++ return -EINVAL; /* not supported on this architecture */ ++ } ++} ++ ++int sharppda_kbd_set_hold_threshold_group(int group,int msecs) ++{ ++#ifdef HOLDKEY_INFO_HAS_TIMEOUT ++ if( ! custom_holdkey_info ) duplicate_holdkey_info(); ++ if( custom_holdkey_info ){ ++ int i; ++ for(i=0;i<=NR_KEYCODES;i++){ ++ if( custom_holdkey_info[i] && custom_holdkey_info[i]->setgroup == group ){ ++ custom_holdkey_info[i]->timeout = msecs; ++ } ++ } ++ return 0; ++ }else if( holdkey_info ){ ++ int i; ++ for(i=0;i<=NR_KEYCODES;i++){ ++ if( holdkey_info[i] && holdkey_info[i]->setgroup == group ){ ++ holdkey_info[i]->timeout = msecs; ++ } ++ } ++ return 0; ++ }else{ ++ return -EINVAL; /* not supported on this architecture */ ++ } ++#endif ++ return -EINVAL; /* not supported on this architecture */ ++} ++ ++#if 0 ++static int sharppda_kbd_keyscan(void) ++{ ++ unsigned long flags; ++ int row, col, rowd, press_row, press_col, real_col; ++ ++ WAIT_CHATTERING_DELAY; ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ ++ press_col = -1; ++ press_row = -1; ++ CHARGE_ALL; ++ for (col = 0; col < KB_COLS; col++) { ++ real_col = (GET_REAL_COL_FROM_COL(col)); ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ACTIVATE_COL(real_col); ++ ++ WAIT_ACTIVATE_DELAY; ++ rowd = GET_ROWS_STATUS(real_col); ++ for (row = 0; row < KB_ROWS; row++) { ++ if (rowd & KB_ROWMASK(row)) { ++ if (press_row >= 0) { ++ press_row = -1; ++ col = KB_COLS; ++ break; ++ } ++ press_row = row; ++ press_col = col; ++ } ++ } ++ RESET_COL(real_col); ++ } ++ ++ if (press_col != 0) ++ press_row = -1; ++ ++#ifdef USE_KBD_IRQ ++ DRIVE_ALL_COLS; ++#endif ++ ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ ++ return press_row; ++} ++ ++static int sharppda_kbd_keycheck(int row, int col) ++{ ++ unsigned long flags; ++ int press, real_col; ++ ++ WAIT_CHATTERING_DELAY; ++ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ ++ CHARGE_ALL; ++ real_col = (GET_REAL_COL_FROM_COL(col)); ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ACTIVATE_COL(real_col); ++ ++ WAIT_ACTIVATE_DELAY; ++ if (GET_ROWS_STATUS(real_col) & KB_ROWMASK(row)) ++ press = 1; ++ else ++ press = 0; ++ RESET_COL(real_col); ++ ++#ifdef USE_KBD_IRQ ++ DRIVE_ALL_COLS; ++#endif ++ ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ ++ return press; ++} ++ ++#define KEYBOARD_WAKEUP_WAIT 300 ++ ++static void sharppda_kbd_holdkeycheck(int row, int col) ++{ ++ int count; ++ ++ for (count = 0; count < KEYBOARD_WAKEUP_WAIT; count++) { ++ if (!sharppda_kbd_keycheck(row, col)) ++ break; ++ mdelay(1); ++ } ++ if (row != 7) /* Power key */ ++ sharppda_kbd_press(KEYCODE(row, col)); ++ if (count >= KEYBOARD_WAKEUP_WAIT) { ++ sharppda_kbd_press(KEYCODE(row, col)); ++ sharppda_kbd_hold(0); ++ } ++} ++#endif ++ ++static void sharppda_kbd_press_repeat( int code ) ++{ ++ int i; ++ for (i=0; i<JUST_PRESSED; i++) sharppda_kbd_press(code); ++} ++static void sharppda_kbd_release_repeat( int code ) ++{ ++ int i; ++ for (i=0; i<JUST_RELEASED-PRESSED; i++) sharppda_kbd_release(code); ++} ++ ++int sharppda_kbd_is_wakeup(void) ++{ ++ unsigned long flags; ++ int count = 0, err = 0; ++ int cur_portkey,last_portkey=0; ++ int cur_matrixkey,last_matrixkey=0; ++ const int strobe_num = 4; ++ const int success_count = 10; ++ ++ while( !(count>success_count || err>50) ) { ++ // read GPIO(On,Rec,Sync) key ++ cur_portkey = read_port_key_status_raw(); ++ ++ // read Strobe4(Address,Calendar,Menu,Mail) key ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ACTIVATE_COL(strobe_num); ++ WAIT_ACTIVATE_DELAY; ++ cur_matrixkey = GET_ROWS_STATUS(strobe_num); ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ // compare with last state ++ if (cur_portkey != last_portkey || ++ cur_matrixkey != last_matrixkey) { ++ count = 0; ++ err++; ++ last_portkey = cur_portkey; ++ last_matrixkey = cur_matrixkey; ++ } else { ++ count++; ++ } ++ mdelay(10); ++ } ++ if (count>success_count) { ++ printk("key interrupt on (%04x,%04x)\n",last_portkey,last_matrixkey); ++ if (last_portkey & KEYMASK_ON) { // On ... only status change ++ sharppda_kbdstate[KEYCODE(0, KB_COLS)].in = PRESSED; ++ port_key_delay_state[IDPORT_ON]=PRESSED; ++ } ++ if (last_portkey & KEYMASK_REC) { // Rec ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_REC) { ++ if (port_key_setting[IDPORT_REC]>=0) { ++ sharppda_kbd_press_repeat(KEYCODE(1, KB_COLS)); ++ sharppda_kbd_release_repeat(KEYCODE(1, KB_COLS)); ++ } ++ } else last_portkey &= ~KEYMASK_REC; ++ } ++ if (last_portkey & KEYMASK_SYNC) { // Sync ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_SYNC) { ++ if (port_key_setting[IDPORT_SYNC]>=0) { ++ sharppda_kbd_press_repeat(KEYCODE(2, KB_COLS)); ++ sharppda_kbd_release_repeat(KEYCODE(2, KB_COLS)); ++ } ++ } else last_portkey &= ~KEYMASK_SYNC; ++ } ++ if (last_matrixkey & KEYMASK_ADDRESS) { // Address ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_ADDRESSBOOK) { ++ sharppda_kbd_press_repeat(KEYCODE(3, strobe_num)); ++ sharppda_kbd_release_repeat(KEYCODE(3, strobe_num)); ++ } else last_matrixkey &= ~KEYMASK_ADDRESS; ++ } ++ if (last_matrixkey & KEYMASK_CALENDAR) { // Calendar ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_CALENDAR) { ++ sharppda_kbd_press_repeat(KEYCODE(4, strobe_num)); ++ sharppda_kbd_release_repeat(KEYCODE(4, strobe_num)); ++ } else last_matrixkey &= ~KEYMASK_CALENDAR; ++ } ++ if (last_matrixkey & KEYMASK_MENU) { // Menu ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_MENU) { ++ sharppda_kbd_press_repeat(KEYCODE(5, strobe_num)); ++ sharppda_kbd_release_repeat(KEYCODE(5, strobe_num)); ++ } else last_matrixkey &= ~KEYMASK_MENU; ++ } ++ if (last_matrixkey & KEYMASK_MAIL) { // Mail (Holdkey event) ++ if (logical_wakeup_src_mask&IDPM_WAKEUP_MAIL) { ++ sharppda_kbd_press_repeat(KEYCODE(6, strobe_num)); ++ sharppda_kbd_hold(0); ++ } else last_matrixkey &= ~KEYMASK_MAIL; ++ } ++ return (last_portkey || last_matrixkey)?1:0; ++ } ++ return 0; ++} ++ ++#define MAX_RESET_KEY_COMBINATION 3 ++ ++#define RESET_KEY_NONE (0) ++#define RESET_KEY_FUNC (KEYCODE(5, 10)) ++#define RESET_KEY_HOME (KEYCODE(4, 5)) ++#define RESET_KEY_A (KEYCODE(2, 0)) ++#define RESET_KEY_B (KEYCODE(4, 2)) ++#define RESET_KEY_C (KEYCODE(3, 2)) ++#define RESET_KEY_D (KEYCODE(2, 2)) ++#define RESET_KEY_K (KEYCODE(0, 5)) ++#define RESET_KEY_M (KEYCODE(5, 3)) ++#define RESET_KEY_P (KEYCODE(0, 7)) ++#define RESET_KEY_Q (KEYCODE(1, 0)) ++#define RESET_KEY_R (KEYCODE(4, 1)) ++#define RESET_KEY_T (KEYCODE(1, 2)) ++#define RESET_KEY_Z (KEYCODE(3, 0)) ++ ++static int reset_key_combination[][MAX_RESET_KEY_COMBINATION] = { ++ {RESET_KEY_FUNC, RESET_KEY_HOME, RESET_KEY_NONE}, /* Fn + Home */ ++ {RESET_KEY_P, RESET_KEY_D, RESET_KEY_NONE}, /* P + D */ ++ {RESET_KEY_M, RESET_KEY_D, RESET_KEY_NONE}, /* M + D */ ++ {RESET_KEY_R, RESET_KEY_D, RESET_KEY_NONE}, /* R + D */ ++ {RESET_KEY_FUNC, RESET_KEY_P, RESET_KEY_D}, /* Fn + P + D */ ++ {RESET_KEY_FUNC, RESET_KEY_M, RESET_KEY_D}, /* Fn + M + D */ ++ {RESET_KEY_Q, RESET_KEY_T, RESET_KEY_NONE}, /* Q + T */ ++ {RESET_KEY_C, RESET_KEY_D, RESET_KEY_NONE}, /* C + D */ ++ {RESET_KEY_Z, RESET_KEY_D, RESET_KEY_NONE}, /* Z + D */ ++ {RESET_KEY_K, RESET_KEY_D, RESET_KEY_NONE}, /* K + D */ ++ {RESET_KEY_A, RESET_KEY_B, RESET_KEY_NONE}, /* A + B */ ++ {RESET_KEY_B, RESET_KEY_D, RESET_KEY_NONE}, /* B + D */ ++ {RESET_KEY_A, RESET_KEY_D, RESET_KEY_NONE}, /* A + D */ ++ {RESET_KEY_NONE, RESET_KEY_NONE, RESET_KEY_NONE} /* End Mark */ ++}; ++ ++static int sharppda_kbd_resetcheck_one(void) ++{ ++ unsigned long flags; ++ int row, col, rowd, real_col, i, j, k, press_num = 0, pressed, set_num; ++ int press_key[MAX_RESET_KEY_COMBINATION] = {0, 0, 0}; ++ ++ WAIT_CHATTERING_DELAY; ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ CHARGE_ALL; ++ for (col = 0; col < KB_COLS; col++) { ++ real_col = (GET_REAL_COL_FROM_COL(col)); ++ DISCHARGE_ALL; ++ WAIT_DISCHARGE_DELAY; ++ ACTIVATE_COL(real_col); ++ WAIT_ACTIVATE_DELAY; ++ rowd = GET_ROWS_STATUS(real_col); ++ for (row = 0; row < KB_ROWS; row++) { ++ if (rowd & KB_ROWMASK(row)) { ++ if (press_num >= MAX_RESET_KEY_COMBINATION) { ++ return 0; /* too many keys are pressed */ ++ } ++ press_key[press_num++] = KEYCODE(row, col); ++ } ++ } ++ RESET_COL(real_col); ++ } ++ ++#ifdef USE_KBD_IRQ ++ DRIVE_ALL_COLS; ++#endif ++ ++ spin_unlock_irqrestore(&kbd_spinlock,flags); ++ ++ for (i = 0; reset_key_combination[i][0] != 0; i++) { ++ set_num = 0; ++ for (j = 0; j < MAX_RESET_KEY_COMBINATION; j++) { ++ if (reset_key_combination[i][j] == RESET_KEY_NONE) continue; ++ set_num++; ++ pressed = 0; ++ for (k = 0; k < press_num; k++) { ++ if (press_key[k] == reset_key_combination[i][j]) { ++ pressed = 1; ++ break; ++ } ++ } ++ if (!pressed) break; ++ } ++ if ((j == MAX_RESET_KEY_COMBINATION) && (set_num == press_num)) { ++ return i + 1; ++ } ++ } ++ ++ return 0; ++} ++ ++int sharppda_kbd_resetcheck(void) ++{ ++ int state, i; ++ ++ state = sharppda_kbd_resetcheck_one(); ++#if CHECK_CHUTTER_BOUNCE ++ if (!state) return 0; ++ for (i = 0; i < CHECK_CHUTTER; i++) { ++ mdelay(5); ++ if (sharppda_kbd_resetcheck_one() != state) return 0; ++ } ++#endif ++ return state; ++} ++/* ++ * end of source ++ */ +diff -Nur linux_c860_org/drivers/char/tosa_rawmap.h linux/drivers/char/tosa_rawmap.h +--- linux_c860_org/drivers/char/tosa_rawmap.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_rawmap.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,340 @@ ++#ifndef __KEYTABLE_H_INCLUDED__ ++#define __KEYTABLE_H_INCLUDED__ ++ ++ ++#ifndef NR_KEYS ++#define NR_KEYS 128 ++#endif /* ! NR_KEYS */ ++ ++ ++#ifndef NR_KEYCODES ++#define NR_KEYCODES 128 ++#endif /* ! NR_KEYCODES */ ++ ++ ++#define MODIF_2ND 0x01 ++#define MODIF_CAPS 0x02 ++#define MODIF_NUM 0x03 ++ ++#ifndef KEY_IGN ++#define KEY_IGN 0 ++#endif /* ! KEY_IGN */ ++ ++ ++static unsigned char rawkeytable_table_NormalLower[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = { ++KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++ ++ ++ ++#define STATE_S0 0 ++#define STATE_S1 1 ++#define STATE_S2 2 ++#define STATE_S3 3 ++#define STATE_S4 4 ++#define STATE_S5 5 ++#define STATE_S6 6 ++#define STATE_S7 7 ++#define STATE_S8 8 ++#define STATE_S9 9 ++#define STATE_S10 10 ++#define STATE_S11 11 ++#define STATE_S12 12 ++#define STATE_S13 13 ++#define STATE_S14 14 ++#define STATE_S15 15 ++#define STATE_S16 16 ++#define STATE_S17 17 ++#define STATE_S18 18 ++#define STATE_S19 19 ++#define STATE_S20 20 ++#define STATE_S21 21 ++#define STATE_S22 22 ++#define STATE_S23 23 ++#define STATE_S24 24 ++#define STATE_S25 25 ++#define STATE_S26 26 ++#define STATE_S27 27 ++#define STATE_S28 28 ++#define STATE_S29 29 ++#define STATE_S30 30 ++#define STATE_S31 31 ++#define STATE_S32 32 ++#define STATE_S33 33 ++#define STATE_S34 34 ++#define STATE_S35 35 ++#define STATE_S36 36 ++#define STATE_S37 37 ++#define STATE_S38 38 ++#define STATE_S39 39 ++#define STATE_S40 40 ++#define STATE_S41 41 ++#define STATE_S42 42 ++#define STATE_S43 43 ++#define STATE_S44 44 ++#define STATE_S45 45 ++#define STATE_S46 46 ++#define STATE_S47 47 ++#define STATE_S48 48 ++#define STATE_S49 49 ++#define STATE_S50 50 ++#define STATE_S51 51 ++#define STATE_S52 52 ++#define STATE_S53 53 ++#define STATE_S54 54 ++#define STATE_S55 55 ++#define STATE_S56 56 ++#define STATE_S57 57 ++#define STATE_S58 58 ++#define STATE_S59 59 ++#define STATE_S60 60 ++#define STATE_S61 61 ++#define STATE_S62 62 ++#define STATE_S63 63 ++#define STATE_S64 64 ++#define STATE_S65 65 ++#define STATE_S66 66 ++#define STATE_S67 67 ++#define STATE_S68 68 ++#define STATE_S69 69 ++#define STATE_S70 70 ++#define STATE_S71 71 ++#define STATE_S72 72 ++#define STATE_S73 73 ++#define STATE_S74 74 ++#define STATE_S75 75 ++#define STATE_S76 76 ++#define STATE_S77 77 ++#define STATE_S78 78 ++#define STATE_S79 79 ++ ++ ++#define STATE_NUMS_TOTAL 80 ++ ++ ++#ifdef RAWKEY_MAP_DEBUG ++static char *state_names[STATE_NUMS_TOTAL] = { ++ "S0", ++ "S1", ++ "S2", ++ "S3", ++ "S4", ++ "S5", ++ "S6", ++ "S7", ++ "S8", ++ "S9", ++ "S10", ++ "S11", ++ "S12", ++ "S13", ++ "S14", ++ "S15", ++ "S16", ++ "S17", ++ "S18", ++ "S19", ++ "S20", ++ "S21", ++ "S22", ++ "S23", ++ "S24", ++ "S25", ++ "S26", ++ "S27", ++ "S28", ++ "S29", ++ "S30", ++ "S31", ++ "S32", ++ "S33", ++ "S34", ++ "S35", ++ "S36", ++ "S37", ++ "S38", ++ "S39", ++ "S40", ++ "S41", ++ "S42", ++ "S43", ++ "S44", ++ "S45", ++ "S46", ++ "S47", ++ "S48", ++ "S49", ++ "S50", ++ "S51", ++ "S52", ++ "S53", ++ "S54", ++ "S55", ++ "S56", ++ "S57", ++ "S58", ++ "S59", ++ "S60", ++ "S61", ++ "S62", ++ "S63", ++ "S64", ++ "S65", ++ "S66", ++ "S67", ++ "S68", ++ "S69", ++ "S70", ++ "S71", ++ "S72", ++ "S73", ++ "S74", ++ "S75", ++ "S76", ++ "S77", ++ "S78", ++ "S79" ++}; ++#endif /* RAWKEY_MAP_DEBUG */ ++ ++ ++static unsigned char state_table_LSHIFT_up[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S0,STATE_S2,STATE_S2,STATE_S4,STATE_S4,STATE_S6,STATE_S6,STATE_S8,STATE_S8,STATE_S10,STATE_S10,STATE_S12,STATE_S12,STATE_S14,STATE_S14,STATE_S16,STATE_S16,STATE_S18,STATE_S18,STATE_S20,STATE_S20,STATE_S22,STATE_S22,STATE_S24,STATE_S24,STATE_S26,STATE_S26,STATE_S28,STATE_S28,STATE_S30,STATE_S30,STATE_S32,STATE_S32,STATE_S34,STATE_S34,STATE_S36,STATE_S36,STATE_S38,STATE_S38,STATE_S40,STATE_S40,STATE_S42,STATE_S42,STATE_S44,STATE_S44,STATE_S46,STATE_S46,STATE_S48,STATE_S48,STATE_S50,STATE_S50,STATE_S52,STATE_S52,STATE_S54,STATE_S54,STATE_S56,STATE_S56,STATE_S58,STATE_S58,STATE_S60,STATE_S60,STATE_S62,STATE_S62,STATE_S64,STATE_S64,STATE_S66,STATE_S66,STATE_S68,STATE_S68,STATE_S70,STATE_S70,STATE_S72,STATE_S72,STATE_S74,STATE_S74,STATE_S76,STATE_S76,STATE_S78,STATE_S78}; ++ ++static unsigned char state_table_RSHIFT_up[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39}; ++ ++static unsigned char state_table_2nd_up[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S1,STATE_S6,STATE_S7,STATE_S0,STATE_S1,STATE_S6,STATE_S7,STATE_S0,STATE_S1,STATE_S10,STATE_S11,STATE_S16,STATE_S17,STATE_S10,STATE_S11,STATE_S16,STATE_S17,STATE_S10,STATE_S11,STATE_S20,STATE_S21,STATE_S26,STATE_S27,STATE_S20,STATE_S21,STATE_S26,STATE_S27,STATE_S20,STATE_S21,STATE_S30,STATE_S31,STATE_S36,STATE_S37,STATE_S30,STATE_S31,STATE_S36,STATE_S37,STATE_S30,STATE_S31,STATE_S40,STATE_S41,STATE_S46,STATE_S47,STATE_S40,STATE_S41,STATE_S46,STATE_S47,STATE_S40,STATE_S41,STATE_S50,STATE_S51,STATE_S56,STATE_S57,STATE_S50,STATE_S51,STATE_S56,STATE_S57,STATE_S50,STATE_S51,STATE_S60,STATE_S61,STATE_S66,STATE_S67,STATE_S60,STATE_S61,STATE_S66,STATE_S67,STATE_S60,STATE_S61,STATE_S70,STATE_S71,STATE_S76,STATE_S77,STATE_S70,STATE_S71,STATE_S76,STATE_S77,STATE_S70,STATE_S71}; ++ ++ ++ ++#define UP_TABLES_SIZE 3 ++ ++ ++static unsigned char *up_tables[UP_TABLES_SIZE] = { ++ state_table_LSHIFT_up,state_table_RSHIFT_up,state_table_2nd_up ++}; ++ ++ ++#define SEE_LSHIFT_UP 0 ++#define SEE_RSHIFT_UP 1 ++#define SEE_2nd_UP 2 ++#define UP_NOP -1 ++ ++ ++static char up_modifs_ref[(NR_KEYCODES+1)] = { ++UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_LSHIFT_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_RSHIFT_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,SEE_2nd_UP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP,UP_NOP}; ++ ++ ++static unsigned char state_table_LSHIFT_down[STATE_NUMS_TOTAL] = { ++STATE_S1,STATE_S1,STATE_S3,STATE_S3,STATE_S5,STATE_S5,STATE_S7,STATE_S7,STATE_S9,STATE_S9,STATE_S11,STATE_S11,STATE_S13,STATE_S13,STATE_S15,STATE_S15,STATE_S17,STATE_S17,STATE_S19,STATE_S19,STATE_S21,STATE_S21,STATE_S23,STATE_S23,STATE_S25,STATE_S25,STATE_S27,STATE_S27,STATE_S29,STATE_S29,STATE_S31,STATE_S31,STATE_S33,STATE_S33,STATE_S35,STATE_S35,STATE_S37,STATE_S37,STATE_S39,STATE_S39,STATE_S41,STATE_S41,STATE_S43,STATE_S43,STATE_S45,STATE_S45,STATE_S47,STATE_S47,STATE_S49,STATE_S49,STATE_S51,STATE_S51,STATE_S53,STATE_S53,STATE_S55,STATE_S55,STATE_S57,STATE_S57,STATE_S59,STATE_S59,STATE_S61,STATE_S61,STATE_S63,STATE_S63,STATE_S65,STATE_S65,STATE_S67,STATE_S67,STATE_S69,STATE_S69,STATE_S71,STATE_S71,STATE_S73,STATE_S73,STATE_S75,STATE_S75,STATE_S77,STATE_S77,STATE_S79,STATE_S79}; ++ ++static unsigned char state_table_RSHIFT_down[STATE_NUMS_TOTAL] = { ++STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79}; ++ ++static unsigned char state_table_2nd_down[STATE_NUMS_TOTAL] = { ++STATE_S2,STATE_S3,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S8,STATE_S9,STATE_S8,STATE_S9,STATE_S12,STATE_S13,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S18,STATE_S19,STATE_S18,STATE_S19,STATE_S22,STATE_S23,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S28,STATE_S29,STATE_S28,STATE_S29,STATE_S32,STATE_S33,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S38,STATE_S39,STATE_S38,STATE_S39,STATE_S42,STATE_S43,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S48,STATE_S49,STATE_S48,STATE_S49,STATE_S52,STATE_S53,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S58,STATE_S59,STATE_S58,STATE_S59,STATE_S62,STATE_S63,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S68,STATE_S69,STATE_S68,STATE_S69,STATE_S72,STATE_S73,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S78,STATE_S79,STATE_S78,STATE_S79}; ++ ++static unsigned char state_table_caps_down[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S1,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S20,STATE_S21,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S40,STATE_S41,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S60,STATE_S61,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65}; ++ ++static unsigned char state_table_num_down[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S1,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S10,STATE_S11,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S20,STATE_S21,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S30,STATE_S31,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S40,STATE_S41,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S50,STATE_S51,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S60,STATE_S61,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S70,STATE_S71,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55}; ++ ++static unsigned char state_table_ANY_OTHER_down[STATE_NUMS_TOTAL] = { ++STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S4,STATE_S5,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S14,STATE_S15,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S24,STATE_S25,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S34,STATE_S35,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S44,STATE_S45,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S54,STATE_S55,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S64,STATE_S65,STATE_S70,STATE_S71,STATE_S74,STATE_S75,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S74,STATE_S75}; ++ ++ ++ ++#define DOWN_TABLES_SIZE 6 ++ ++ ++static unsigned char *down_tables[DOWN_TABLES_SIZE] = { ++ state_table_LSHIFT_down,state_table_RSHIFT_down,state_table_2nd_down,state_table_caps_down,state_table_num_down,state_table_ANY_OTHER_down ++}; ++ ++ ++#define SEE_LSHIFT_DOWN 0 ++#define SEE_RSHIFT_DOWN 1 ++#define SEE_2nd_DOWN 2 ++#define SEE_caps_DOWN 3 ++#define SEE_num_DOWN 4 ++#define SEE_ANY_OTHER_DOWN 5 ++#define DOWN_NOP -1 ++ ++ ++static char down_modifs_ref[(NR_KEYCODES+1)] = { ++DOWN_NOP,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_LSHIFT_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_RSHIFT_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_2nd_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_caps_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_num_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN,SEE_ANY_OTHER_DOWN}; ++ ++ ++static unsigned char extmodif_map_2nd[STATE_NUMS_TOTAL] = {0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1}; ++static unsigned char extmodif_map_CAPS[STATE_NUMS_TOTAL] = {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1}; ++static unsigned char extmodif_map_NUM[STATE_NUMS_TOTAL] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; ++ ++#define EXTMODIF_SHOWSTAT_KEYMAX 4 ++ ++static unsigned char *extmodif_status_tables[EXTMODIF_SHOWSTAT_KEYMAX] = { ++NULL,extmodif_map_2nd,extmodif_map_CAPS,extmodif_map_NUM}; ++ ++ ++static unsigned char extmove_map_2nd[STATE_NUMS_TOTAL] = {STATE_S6,STATE_S7,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S0,STATE_S1,STATE_S8,STATE_S9,STATE_S16,STATE_S17,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S10,STATE_S11,STATE_S18,STATE_S19,STATE_S26,STATE_S27,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S20,STATE_S21,STATE_S28,STATE_S29,STATE_S36,STATE_S37,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S30,STATE_S31,STATE_S38,STATE_S39,STATE_S46,STATE_S47,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S40,STATE_S41,STATE_S48,STATE_S49,STATE_S56,STATE_S57,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S50,STATE_S51,STATE_S58,STATE_S59,STATE_S66,STATE_S67,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S60,STATE_S61,STATE_S68,STATE_S69,STATE_S76,STATE_S77,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S70,STATE_S71,STATE_S78,STATE_S79}; ++static unsigned char extmove_map_CAPS[STATE_NUMS_TOTAL] = {STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69}; ++static unsigned char extmove_map_NUM[STATE_NUMS_TOTAL] = {STATE_S20,STATE_S21,STATE_S22,STATE_S23,STATE_S24,STATE_S25,STATE_S26,STATE_S27,STATE_S28,STATE_S29,STATE_S30,STATE_S31,STATE_S32,STATE_S33,STATE_S34,STATE_S35,STATE_S36,STATE_S37,STATE_S38,STATE_S39,STATE_S0,STATE_S1,STATE_S2,STATE_S3,STATE_S4,STATE_S5,STATE_S6,STATE_S7,STATE_S8,STATE_S9,STATE_S10,STATE_S11,STATE_S12,STATE_S13,STATE_S14,STATE_S15,STATE_S16,STATE_S17,STATE_S18,STATE_S19,STATE_S60,STATE_S61,STATE_S62,STATE_S63,STATE_S64,STATE_S65,STATE_S66,STATE_S67,STATE_S68,STATE_S69,STATE_S70,STATE_S71,STATE_S72,STATE_S73,STATE_S74,STATE_S75,STATE_S76,STATE_S77,STATE_S78,STATE_S79,STATE_S40,STATE_S41,STATE_S42,STATE_S43,STATE_S44,STATE_S45,STATE_S46,STATE_S47,STATE_S48,STATE_S49,STATE_S50,STATE_S51,STATE_S52,STATE_S53,STATE_S54,STATE_S55,STATE_S56,STATE_S57,STATE_S58,STATE_S59}; ++ ++#define EXTMODIF_MOVESTAT_KEYMAX 4 ++ ++static unsigned char *extmodif_move_tables[EXTMODIF_MOVESTAT_KEYMAX] = { ++NULL,extmove_map_2nd,extmove_map_CAPS,extmove_map_NUM}; ++ ++ ++ ++typedef struct shappda_holdkey_info { ++ int type; ++ int character; ++ void (*func)(void); ++} shappda_holdkey_info; ++ ++#define HOLDKEYTYPE_CHAR 1 ++#define HOLDKEYTYPE_FUNC 2 ++ ++static shappda_holdkey_info shappda_holdkey_UserDef = { ++ type: HOLDKEYTYPE_CHAR, ++ character: SLKEY_EXCLAM, ++ func: NULL ++}; ++static shappda_holdkey_info shappda_holdkey_Mail = { ++ type: HOLDKEYTYPE_CHAR, ++ character: SLKEY_MAIL2, ++ func: NULL ++}; ++ ++static shappda_holdkey_info *holdkey_info[(NR_KEYCODES+1)] = { ++NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&shappda_holdkey_UserDef,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&shappda_holdkey_Mail,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}; ++ ++ ++static unsigned char *state_to_keymap[STATE_NUMS_TOTAL] = { ++rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper}; ++ ++ ++#endif /* ! __KEYTABLE_H_INCLUDED__ */ +diff -Nur linux_c860_org/drivers/char/tosa_rawmap_rollover.h linux/drivers/char/tosa_rawmap_rollover.h +--- linux_c860_org/drivers/char/tosa_rawmap_rollover.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_rawmap_rollover.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,27 @@ ++#ifndef __TOSA_RAWMAP_ROLLOVER_H__ ++#define __TOSA_RAWMAP_ROLLOVER_H__ ++ ++#define ROLLOVER_NO_FLAG 0x00 ++#define ROLLOVER_TAB 0x01 ++#define ROLLOVER_DIRECT_ON 0x02 ++#define ROLLOVER_HORIZONTAL 0x04 ++#define ROLLOVER_VERTICAL 0x08 ++#define ROLLOVER_ENTQUESPC 0x10 ++#define ROLLOVER_LSHIFT 0x20 ++#define ROLLOVER_RSHIFT 0x40 ++#define ROLLOVER_FUNCTION 0x80 ++ ++#define ROLLOVER_CHECK_FLAG(a, b) (((a) & (b)) != 0) ++ ++static unsigned int rollover_flag_table[(NR_KEYCODES+1)] = { ++ ROLLOVER_NO_FLAG, ++ /*0*/ ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*1*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*2*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_ENTQUESPC/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*3*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_LSHIFT/**/, ROLLOVER_RSHIFT, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*4*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_RSHIFT/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*5*/ROLLOVER_TAB/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_VERTICAL/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_FUNCTION/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*6*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_ENTQUESPC/**/, ROLLOVER_DIRECT_ON/**/, ROLLOVER_NO_FLAG, ROLLOVER_HORIZONTAL/**/, ROLLOVER_VERTICAL/**/, ROLLOVER_HORIZONTAL/**/, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ++ /*7*/ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG, ROLLOVER_NO_FLAG ++}; ++#endif // end __TOSA_RAWMAP_ROLLOVER_H__ +diff -Nur linux_c860_org/drivers/char/tosa_ts.c linux/drivers/char/tosa_ts.c +--- linux_c860_org/drivers/char/tosa_ts.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/char/tosa_ts.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,807 @@ ++/* ++ * drivers/char/tosa_ts.c ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * cotulla_ts.c ++ * ++ */ ++ ++/***************************************************************************/ ++ ++#include <linux/config.h> ++#include <linux/init.h> ++#include <linux/poll.h> ++#include <linux/delay.h> ++#include <linux/ioctl.h> ++#include <linux/ac97_codec.h> ++#include <linux/sched.h> ++#include <linux/tqueue.h> ++#include <linux/module.h> ++#include <linux/proc_fs.h> ++ ++#include <asm/segment.h> ++#include <asm/uaccess.h> ++#include <asm/arch/hardware.h> ++#include <asm/arch/irqs.h> ++#include <asm/arch/tosa_wm9712.h> ++#include <asm/sharp_apm.h> ++ ++#define TS_MAJOR 11 ++#define ADD_TS_TIMER (HZ / 120) ++/* AC97 Touch Screen channel */ ++#define ADCH_TPX 0x01 ++#define ADCH_TPY 0x02 ++/* AC97 Touch Screen bits */ ++#define TSR1_POLL (1<<15) ++#define TSR1_COO (1<<11) ++#define TSR1_CTC (1<<10) ++#define TSR1_SLEN (1<< 3) ++#define TSR2_RPR (1<<13) ++#define TSR2_45W (1<<12) ++#define TSR2_PDEN (1<<11) ++#define TSR2_WAIT (1<< 9) ++#define TSR2_PIL (1<< 8) ++#define CODEC_PENDOWN (1<< 3) ++ ++#define TS_REG1_POLL 0x8000 ++#define TS_REG1_DEFVAL 0x0000 ++#define TS_REG2_DEFVAL 0xe030 ++ ++#define DBG_LEVEL 0 ++ ++#define DBG_L1 1 ++#define DBG_L2 2 ++#define DBG_L3 3 ++ ++#define DEBUG(level, x, args...) \ ++ if( level <= DBG_LEVEL ) printk("%s: " x, __FUNCTION__ , ## args) ++ ++#define DEV_NAME "ts" ++ ++int ts_type = 0; ++ ++static DECLARE_WAIT_QUEUE_HEAD(ts_proc); ++ ++static DECLARE_WAIT_QUEUE_HEAD(pd_mloop); ++ ++static struct timer_list tp_main_timer; ++static unsigned char tp_timer_on = 0; ++static unsigned char ac97_on = 0; ++static unsigned char penup_irq = 1; ++ ++int ac97_ad_input(int, unsigned short *); ++static void ts_interrupt(int, void*, struct pt_regs*); ++ ++#define BUFSIZE 128 ++ ++typedef struct { ++ unsigned short xd; ++ unsigned short yd; ++ unsigned char pressure; ++} ts_pos_t; ++ ++typedef struct { ++ short pressure; ++ short x; ++ short y; ++ short millisecs; ++} TS_EVENT; ++ ++static DECLARE_WAIT_QUEUE_HEAD(queue); ++struct fasync_struct *fasync; ++static TS_EVENT tbuf[BUFSIZE], tc; ++static int raw_max_x, raw_max_y; ++static int res_x, res_y; ++static int raw_min_x, raw_min_y; ++static int cal_ok, x_rev, y_rev, xyswap; ++static int head = 0, tail = 0; ++ ++#ifdef CONFIG_PM ++static int tp_suspend = 0; ++#endif /* CONFIG_PM */ ++ ++#define REMOVE_TP_NOISE_BY_SW ++/* #define REMOVE_TP_NOISE_BY_HW */ ++ ++#if 1 // 2003/9/4 Noise reduction ++#define TOUCH_PANEL_AVERAGE 5 ++#define DEFAULT_TP_WAIT_VGA 25 ++#define DEFAULT_TP_WAIT_QVGA 44 ++#define SIMPLE_AVERAGE ++ ++#define CCNT(a) asm("mrc p14, 0, %0, C1, C0, 0" : "=r"(a)) ++#define CCNT_ON() {int pmnc = 1;asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(pmnc));} ++#define CCNT_OFF() {int pmnc = 0;asm("mcr p14, 0, %0, C0, C0, 0" : : "r"(pmnc));} ++static unsigned long g_TpWaitVga = DEFAULT_TP_WAIT_VGA; ++static unsigned long g_TpWaitQvga = DEFAULT_TP_WAIT_QVGA; ++static unsigned short XBuf[TOUCH_PANEL_AVERAGE]; ++static unsigned short YBuf[TOUCH_PANEL_AVERAGE]; ++static int TpBufIdx = -1; ++extern int tc6393fb_isblank; // no H-Sync while blanking ++ ++#define PROC_DIRNAME "ts" ++ ++struct proc_dir_entry *proc_ts = NULL; ++typedef struct tosa_ts_entry { ++ unsigned long* addr; ++ unsigned long def_value; ++ char* name; ++ char* description; ++ unsigned short low_ino; ++} tosa_ts_entry_t; ++static tosa_ts_entry_t tosa_ts_params[] = { ++/* { addr, def_value, name, description }*/ ++ { &g_TpWaitVga, DEFAULT_TP_WAIT_VGA, "wait_vga","pen wait for VGA Screen" }, ++ { &g_TpWaitQvga, DEFAULT_TP_WAIT_QVGA, "wait_qvga","pen wait for QVGA Screen"} ++}; ++#define NUM_OF_TOSA_TS_ENTRY (sizeof(tosa_ts_params)/sizeof(tosa_ts_entry_t)) ++ ++static ssize_t tosa_ts_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ char outputbuf[15]; ++ int count; ++ int i; ++ tosa_ts_entry_t *current_param = NULL; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) { ++ if (tosa_ts_params[i].low_ino==i_ino) { ++ current_param = &tosa_ts_params[i]; ++ break; ++ } ++ } ++ if (current_param==NULL) { ++ return -EINVAL; ++ } ++ count = sprintf(outputbuf, "%d\n", ++ *((volatile unsigned long *) current_param->addr)); ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t tosa_ts_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int i_ino = (file->f_dentry->d_inode)->i_ino; ++ tosa_ts_entry_t *current_param = NULL; ++ int i; ++ unsigned long param; ++ char *endp; ++ ++ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) { ++ if(tosa_ts_params[i].low_ino==i_ino) { ++ current_param = &tosa_ts_params[i]; ++ break; ++ } ++ } ++ if (current_param==NULL) { ++ return -EINVAL; ++ } ++ ++ param = simple_strtoul(buf,&endp,0); ++ if (param == -1) { ++ *current_param->addr = current_param->def_value; ++ } else { ++ *current_param->addr = param; ++ } ++ return nbytes+endp-buf; ++} ++ ++static struct file_operations proc_params_operations = { ++ read: tosa_ts_read_params, ++ write: tosa_ts_write_params, ++}; ++ ++static int init_procinfo(void) ++{ ++ int i; ++ struct proc_dir_entry *entry; ++ ++ proc_ts = proc_mkdir("driver/ts", NULL); ++ if (proc_ts == NULL) { ++ printk(KERN_ERR "ts: can't create /proc/driver/ts\n"); ++ return -ENOMEM; ++ } ++ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) { ++ entry = create_proc_entry(tosa_ts_params[i].name, ++ S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, ++ proc_ts); ++ if (entry) { ++ tosa_ts_params[i].low_ino = entry->low_ino; ++ entry->proc_fops = &proc_params_operations; ++ } else { ++ int j; ++ for (j=0; j<i; j++) { ++ remove_proc_entry(tosa_ts_params[i].name, ++ proc_ts); ++ } ++ remove_proc_entry("driver/ts", &proc_root); ++ proc_ts = 0; ++ return -ENOMEM; ++ } ++ } ++ ++ return 0; ++} ++ ++static void cleanup_procinfo(void) ++{ ++ int i; ++ for (i=0; i<NUM_OF_TOSA_TS_ENTRY; i++) { ++ remove_proc_entry(tosa_ts_params[i].name, proc_ts); ++ } ++ remove_proc_entry("driver/ts", NULL); ++ proc_ts = 0; ++} ++#endif ++ ++static int read_xydata(ts_pos_t *tp) ++{ ++#if defined(REMOVE_TP_NOISE_BY_SW) || defined(REMOVE_TP_NOISE_BY_HW) ++ unsigned short dx, dy; ++ unsigned long tx, ty; ++ int i, ret = 0, penstate = 0; ++ ++ if (TpBufIdx<0) { ++ for (i=0; i<TOUCH_PANEL_AVERAGE; i++) { ++ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret; ++ XBuf[i] = dx & 0x0fff; ++ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret; ++ YBuf[i] = dy & 0x0fff; ++ } ++ TpBufIdx = 0; ++ } else { ++ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret; ++ XBuf[TpBufIdx] = dx & 0x0fff; ++ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret; ++ YBuf[TpBufIdx] = dy & 0x0fff; ++ if (++TpBufIdx>=TOUCH_PANEL_AVERAGE) TpBufIdx = 0; ++ } ++ ++ /* If pen Up or Down */ ++ penstate = (dy & 0x8000)?1:0; ++ ++#if TOUCH_PANEL_AVERAGE<3 ++#define SIMPLE_AVERAGE ++#endif ++ { ++#ifndef SIMPLE_AVERAGE ++ unsigned short max_dx=0,max_dy=0; ++ unsigned short min_dx=0x0fff,min_dy=0x0fff; ++#endif ++ ++ for(i = 0, ty = 0, tx = 0; i < (TOUCH_PANEL_AVERAGE); i++) { ++ dx = XBuf[i]; ++ dy = YBuf[i]; ++#ifndef SIMPLE_AVERAGE ++ if(dx > max_dx) max_dx = dx; ++ if(dx < min_dx) min_dx = dx; ++ if(dy > max_dy) max_dy = dy; ++ if(dy < min_dy) min_dy = dy; ++#endif ++ tx += dx; ++ ty += dy; ++ } ++#ifndef SIMPLE_AVERAGE ++ tp->xd = (tx - max_dx - min_dx)/ (TOUCH_PANEL_AVERAGE-2); ++ tp->yd = (ty - max_dy - min_dy)/ (TOUCH_PANEL_AVERAGE-2); ++#else ++ tp->xd = tx/ TOUCH_PANEL_AVERAGE; ++ tp->yd = ty/ TOUCH_PANEL_AVERAGE; ++#endif ++ } ++#else ++ unsigned short dx, dy, tx, ty; ++ int i, ret = 0; ++ ++ for(i = 0, ty = 0, tx = 0; i < TOUCH_PANEL_AVERAGE; i++) { ++ /* X */ ++ if( (ret = ac97_ad_input(ADCH_TPX, &dx)) < 0 ) return ret; ++ /* Y */ ++ if( (ret = ac97_ad_input(ADCH_TPY, &dy)) < 0 ) return ret; ++ ++ tx += (dx & 0x0fff); ++ ty += (dy & 0x0fff); ++ } ++ ++ /* If pen Up or Down */ ++ penstate = (dy & 0x8000)?1:0; ++ ++ tp->xd = tx / TOUCH_PANEL_AVERAGE; ++ tp->yd = ty / TOUCH_PANEL_AVERAGE; ++#endif ++ return penstate; ++} ++ ++static void print_par(void) ++{ ++ printk(" Kernel ==> cal_ok = %d\n",cal_ok); ++ printk(" Kernel ==> raw_max_x = %d\n",raw_max_x); ++ printk(" Kernel ==> raw_max_y = %d\n",raw_max_y); ++ printk(" Kernel ==> res_x = %d\n",res_x); ++ printk(" Kernel ==> res_y = %d\n",res_y); ++ printk(" Kernel ==> raw_min_x = %d\n",raw_min_x); ++ printk(" Kernel ==> raw_min_y = %d\n",raw_min_y); ++ printk(" Kernel ==> xyswap = %d\n",xyswap); ++ printk(" Kernel ==> x_rev = %d\n",x_rev); ++ printk(" Kernel ==> y_rev = %d\n",y_rev); ++} ++ ++void ts_clear(void) ++{ ++ int i; ++ ++ for (i = 0; i < BUFSIZE; i++) { ++ tbuf[i].pressure = 0; ++ tbuf[i].x = 0; ++ tbuf[i].y = 0; ++ tbuf[i].millisecs = 0; ++ } ++ head = tail = 0; ++} ++ ++static TS_EVENT get_data(void) ++{ ++ int last = tail; ++ if (++tail == BUFSIZE) { tail = 0; } ++ return tbuf[last]; ++} ++ ++static void new_data(void) ++{ ++ tc.millisecs = jiffies; ++ tbuf[head++] = tc; ++ if( head >= BUFSIZE ) ++ head = 0; ++ if( head == tail && ++tail >= BUFSIZE ) ++ tail = 0; ++ if( fasync ) ++ kill_fasync(&fasync, SIGIO, POLL_IN); ++ wake_up_interruptible(&queue); ++} ++ ++static void ts_timer(unsigned long irq); ++ ++static void ts_timer_clear(void) ++{ ++ if ( tp_timer_on ) ++ del_timer(&tp_main_timer); ++ tp_timer_on = 0; ++} ++ ++static void ts_timer_set(void) ++{ ++ ts_timer_clear(); ++ init_timer(&tp_main_timer); ++ tp_main_timer.data = IRQ_GPIO_TP_INT; ++ tp_main_timer.function = ts_timer; ++ tp_main_timer.expires = jiffies + ADD_TS_TIMER; ++ add_timer(&tp_main_timer); ++ tp_timer_on = 1; ++} ++ ++static void ts_timer(unsigned long irq) ++{ ++ wake_up(&ts_proc); ++} ++ ++static int ts_pendown(void *unuse) ++{ ++ int penstate; ++ ts_pos_t pos_dt; ++ ++ while ( 1 ) { ++ interruptible_sleep_on(&pd_mloop); ++ ++#ifdef CONFIG_PM ++ lock_FCS(POWER_MODE_TOUCH, 1); // not enter FCS mode. ++#endif /* CONFIG_PM */ ++ wm9712_power_mode_ts(WM9712_PWR_TP_CONV); ++ while ( 1 ) { ++#ifdef CONFIG_PM ++ if ( !tp_suspend ) ++#endif /* CONFIG_PM */ ++ { ++ if ( (penstate = read_xydata(&pos_dt)) >= 0 ) { ++ if ( !penstate ) //penup ++ penup_irq = 1; ++ tc.x = pos_dt.xd; ++ tc.y = pos_dt.yd; ++ tc.pressure = 1; ++ new_data(); ++ DEBUG(DBG_L3, "pen position (%d,%d,%d)\n", ++ (int)tc.y, (int)tc.x, tc.pressure); ++ } ++ /* wait */ ++ if ( !penup_irq ) { ++ ts_timer_set(); ++ interruptible_sleep_on(&ts_proc); ++ } ++ if ( penup_irq ){ ++ ts_timer_clear(); ++ /* setting interrupt edge */ ++ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE); ++ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect ++#ifdef CONFIG_PM ++ lock_FCS(POWER_MODE_TOUCH, 0); // not enter FCS mode. ++#endif /* CONFIG_PM */ ++ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT); ++ TpBufIdx = -1; ++ if ( tc.pressure ){ ++ tc.pressure = 0; ++ new_data(); ++ } ++ break; ++ } ++ } ++#ifdef CONFIG_PM ++ else { ++ DEBUG(DBG_L1, "suspend...\n"); ++#ifdef CONFIG_PM ++ lock_FCS(POWER_MODE_TOUCH, 0); // enter FCS mode. ++#endif /* CONFIG_PM */ ++ break; ++ } ++#endif ++ } ++ } ++ ++} ++ ++static void ts_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ if( (GPLR(GPIO_TP_INT) & GPIO_bit(GPIO_TP_INT)) == GPIO_bit(GPIO_TP_INT) ) { ++ /* pen down irq */ ++ penup_irq = 0; ++ ++ /* setting interrupt edge */ ++ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_FALLING_EDGE); ++ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect ++ wake_up(&pd_mloop); ++ } else { ++ /* setting interrupt edge */ ++ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE); ++ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); //Clear detect ++ /* pen up irq */ ++ penup_irq = 1; ++ wake_up(&ts_proc); ++ } ++ return; ++} ++ ++static int ts_open(struct inode *, struct file *); ++static int ts_release(struct inode *, struct file *); ++static int ts_fasync(int fd, struct file *filp, int on); ++static ssize_t ts_read(struct file *, char *, size_t, loff_t *); ++static unsigned int ts_poll(struct file *, poll_table *); ++static int ts_ioctl(struct inode *, struct file *, unsigned int, unsigned long); ++struct file_operations ts_fops = { ++ open: ts_open, ++ release: ts_release, ++ fasync: ts_fasync, ++ read: ts_read, ++ poll: ts_poll, ++ ioctl: ts_ioctl, ++}; ++ ++static void ts_exit(void) ++{ ++ ts_timer_clear(); ++ ts_clear(); ++ free_irq(IRQ_GPIO_TP_INT, NULL); ++ wm9712_power_mode_ts(WM9712_PWR_OFF); ++ ++ pxa_ac97_put(&ac97_on); ++} ++ ++#ifdef MODULE ++static void __exit ac97_ts_cleanup(void) ++{ ++ ts_exit(); ++ unregister_chrdev(TS_MAJOR, "ts"); ++} ++module_exit(ac97_ts_cleanup); ++#endif /* MODULE */ ++ ++extern int tc6393fb_lcdMode; ++ ++int ac97_ad_input(int ch, unsigned short *dat) ++{ ++ unsigned short val = 0; ++ unsigned short adsel = (ch << 12) & 0x7000; ++ unsigned long timeo; ++ volatile unsigned long t1=0,t2=0; ++ volatile int isVga=(tc6393fb_lcdMode==1)?1:0; ++ volatile unsigned long tpwait=200; ++ ++ ++ if (ch >= 4){ ++ /* Conversion start */ ++ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL)); ++ ++ for(timeo = 0x10000; timeo > 0; timeo--) { ++ val = ac97_read(AC97_TS_REG1); ++ //udelay(100); ++ if( val & TS_REG1_POLL ) continue; ++ val = ac97_read(AC97_TS_READBACK); ++ if( (val & 0x7000) == adsel ) break; ++ } ++ if( !timeo ) return -EBUSY; ++ ++ // *dat = val & 0xfff; ++ *dat = val; ++ return 0; ++ } ++ ++ ++#if defined(REMOVE_TP_NOISE_BY_SW) || defined(REMOVE_TP_NOISE_BY_HW) ++ ++#ifndef REMOVE_TP_NOISE_BY_HW ++ tpwait *= (isVga)?g_TpWaitVga:g_TpWaitQvga; ++ CCNT_ON(); ++ if (!tc6393fb_isblank) { ++ /* Sync */ ++ while((GPLR(GPIO_VGA_LINE) & GPIO_bit(GPIO_VGA_LINE)) == 0) ++ ; ++ while((GPLR(GPIO_VGA_LINE) & GPIO_bit(GPIO_VGA_LINE)) != 0) ++ ; ++ } ++ if (tpwait>0) { ++ CCNT(t1); ++ CCNT(t2); ++ while((t2-t1)<tpwait) { ++ CCNT(t2); ++ } ++ } ++#endif ++ ++ /* Conversion start */ ++ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL)); ++ ++#ifndef REMOVE_TP_NOISE_BY_HW ++ CCNT_OFF(); ++#endif ++ ++ /* Busy wait */ ++ for(timeo = 0x10000; timeo > 0; timeo--) { ++ val = ac97_read(AC97_TS_REG1); ++ if((val & TS_REG1_POLL) == 0) break; ++ } ++ if( !timeo ) return -EBUSY; ++ ++ /* Read AD */ ++ val = ac97_read(AC97_TS_READBACK); ++ ++ if( (val & 0x8000) == 0) return -EBUSY; ++ ++ if( (val & 0x7000) == adsel ) { ++ *dat = val; ++ return 0; ++ } ++ return -EBUSY; ++#else ++ /* Conversion start */ ++ ac97_write(AC97_TS_REG1, (adsel | TS_REG1_DEFVAL|TS_REG1_POLL)); ++ ++ for(timeo = 0x10000; timeo > 0; timeo--) { ++ val = ac97_read(AC97_TS_REG1); ++ //udelay(100); ++ if( val & TS_REG1_POLL ) continue; ++ val = ac97_read(AC97_TS_READBACK); ++ if( (val & 0x7000) == adsel ) break; ++ } ++ if( !timeo ) return -EBUSY; ++ ++ *dat = val; ++ return 0; ++#endif ++} ++ ++static int ts_init(void) ++{ ++ pxa_ac97_get(&codec, &ac97_on); ++ ++ wm9712_power_mode_ts(WM9712_PWR_TP_WAIT); ++ /* Touch Screen Initialize */ ++#ifdef REMOVE_TP_NOISE_BY_HW ++ ac97_write(AC97_TS_REG2, 0xe0f0); ++#else ++ ac97_write(AC97_TS_REG2, TS_REG2_DEFVAL); ++#endif ++ ac97_write(AC97_TS_REG1, TS_REG1_DEFVAL); ++ ac97_bit_set(AC97_ADITFUNC1, (1<<1)); ++ ++ /* GPIO3/PENDOWN wakeup */ ++ ac97_bit_set(AC97_GPIO_WAKE_UP, CODEC_PENDOWN); ++ ++ ts_clear(); ++ ++ /* Init queue */ ++ //X kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ ++ /* Interrupt setting */ ++ set_GPIO_mode(GPIO32_SDATA_IN1_AC97_MD); ++ set_GPIO_IRQ_edge(GPIO_TP_INT, GPIO_RISING_EDGE); ++ GEDR(GPIO_TP_INT) = GPIO_bit(GPIO_TP_INT); ++ if( request_irq(IRQ_GPIO_TP_INT, ts_interrupt, SA_INTERRUPT, "ts", NULL) ) { ++ DEBUG(DBG_L1, "IRQ error %d\n", IRQ_GPIO_TP_INT); ++ return -EBUSY; ++ } ++ ++ // printk(KERN_INFO "Tosa Touch Screen driver initialized\n"); ++ ++ return 0; ++} ++ ++static int __init ac97_ts_init(void) ++{ ++ ac97_on = 0; ++ ++ raw_max_x = 1024; ++ raw_max_y = 1024; ++ raw_min_x = 0; ++ raw_min_y = 0; ++ res_x = 480; ++ res_y = 640; ++ cal_ok = 0; ++ x_rev = 0; ++ y_rev = 0; ++ xyswap = 0; ++ ++ ts_clear(); ++ ++ if( register_chrdev(TS_MAJOR,DEV_NAME, &ts_fops) ) { ++ printk("unable to get major %d for touch screen\n", TS_MAJOR); ++ ts_exit(); ++ } ++ ++ init_procinfo(); ++ ++ kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ ++ return 0; ++} ++ ++module_init(ac97_ts_init); ++ ++/* ++ * Driver functions ++ */ ++static int ts_open(struct inode *inode, struct file *file) ++{ ++ if( ts_init() < 0 ) { ++ ts_exit(); ++ return -EINVAL; ++ } ++ ++ MOD_INC_USE_COUNT; ++ return 0; ++} ++ ++ ++static int ts_release(struct inode *inode, struct file *file) ++{ ++ ts_exit(); ++ ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static int ts_fasync(int fd, struct file *filp, int on) ++{ ++ int retval; ++ ++ retval = fasync_helper(fd, filp, on, &fasync); ++ if( retval < 0 ) return retval; ++ return 0; ++} ++ ++static ssize_t ts_read(struct file *file, char *buffer, ++ size_t count, loff_t *ppos) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ TS_EVENT t, r; ++ int i; ++ ++ if( head == tail ) { ++ if( file->f_flags & O_NONBLOCK ) ++ return -EAGAIN; ++ add_wait_queue(&queue, &wait); ++ current->state = TASK_INTERRUPTIBLE; ++ while( (head == tail)&& !signal_pending(current) ) { ++ schedule(); ++ current->state = TASK_INTERRUPTIBLE; ++ } ++ current->state = TASK_RUNNING; ++ remove_wait_queue(&queue, &wait); ++ } ++ ++ for(i = count ; i >= sizeof(TS_EVENT); ++ i -= sizeof(TS_EVENT), buffer += sizeof(TS_EVENT)) { ++ if( head == tail ) break; ++ t = get_data(); ++ if( xyswap ) { ++ short tmp = t.x; ++ t.x = t.y; ++ t.y = tmp; ++ } ++ if( cal_ok ) { ++ r.x = (x_rev) ? ++ ((raw_max_x - t.x) * res_x) / (raw_max_x - raw_min_x) : ++ ((t.x - raw_min_x) * res_x) / (raw_max_x - raw_min_x); ++ r.y = (y_rev) ? ++ ((raw_max_y - t.y) * res_y) / (raw_max_y - raw_min_y) : ++ ((t.y - raw_min_y) * res_y) / (raw_max_y - raw_min_y); ++ } else { ++ r.x = t.x; ++ r.y = t.y; ++ } ++ ++ r.pressure = t.pressure; ++ r.millisecs = t.millisecs; ++ DEBUG(DBG_L2, "ts_read(x, y, p) = (%d, %d, %d)\n", ++ (unsigned int)r.x, (unsigned int)r.y, (unsigned int)r.pressure); ++ ++ copy_to_user(buffer,&r,sizeof(TS_EVENT)); ++ } ++ return count - i; ++} ++ ++static unsigned int ts_poll(struct file *filp, poll_table *wait) ++{ ++ poll_wait(filp, &queue, wait); ++ if( head != tail ) ++ return POLLIN | POLLRDNORM; ++ return 0; ++} ++ ++static int ts_ioctl(struct inode *inode, struct file *file, ++ unsigned int cmd, unsigned long arg) ++{ ++ switch(cmd) { ++ case 3: raw_max_x = arg; break; ++ case 4: raw_max_y = arg; break; ++ case 5: res_x = arg; break; ++ case 6: res_y = arg; break; ++ case 10: raw_min_x = arg; break; ++ case 11: raw_min_y = arg; break; ++ case 12: xyswap = arg; //New attribute for portrait modes ++ case 13: cal_ok = arg; //0 = Enable calibration ; 1 = Calibration OK ++ case 14: ts_clear(); break; //Clear all buffer data ++ case 15: x_rev = arg; break; //X axis reversed setting ++ case 16: y_rev = arg; break; //Y axis reversed setting ++ case 17: print_par(); break; ++ default: return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++void tosa_ts_suspend(void) ++{ ++ DEBUG(DBG_L1, "in\n"); ++ tp_suspend = 1; ++ ts_exit(); ++ DEBUG(DBG_L1, "out\n"); ++} ++ ++void tosa_ts_resume(void) ++{ ++ DEBUG(DBG_L1, "in\n"); ++ tp_suspend = 0; ++ ts_init(); ++ DEBUG(DBG_L1, "out\n"); ++} ++#endif /* CONFIG_PM */ +diff -Nur linux_c860_org/drivers/char/tty_io.c linux/drivers/char/tty_io.c +--- linux_c860_org/drivers/char/tty_io.c 2002-08-29 12:25:52.000000000 +0900 ++++ linux/drivers/char/tty_io.c 2004-06-10 21:09:10.000000000 +0900 +@@ -730,6 +730,7 @@ + ret = -ERESTARTSYS; + if (signal_pending(current)) + break; ++ debug_lock_break(551); + if (current->need_resched) + schedule(); + } +diff -Nur linux_c860_org/drivers/ide/ide-cs.c linux/drivers/ide/ide-cs.c +--- linux_c860_org/drivers/ide/ide-cs.c 2002-08-29 12:26:32.000000000 +0900 ++++ linux/drivers/ide/ide-cs.c 2004-06-10 21:09:10.000000000 +0900 +@@ -32,6 +32,7 @@ + Change Log + 12-Nov-2001 Lineo Japan, Inc. + 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ 26-Feb-2004 Lineo Solutions, Inc. 2 slot support + + ======================================================================*/ + +@@ -72,7 +73,7 @@ + #endif + + #ifdef CONFIG_ARCH_SHARP_SL +-extern int ide_resume_handling; ++extern int ide_resume_handling[]; + #endif + + /*====================================================================*/ +@@ -468,11 +469,11 @@ + mod_timer(&link->release, jiffies + HZ/20); + break; + case CS_EVENT_CARD_INSERTION: +-#ifdef CONFIG_ARCH_SHARP_SL +- ide_resume_handling = 0; +-#endif + link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; + ide_config(link); ++#ifdef CONFIG_ARCH_SHARP_SL ++ ide_resume_handling[sharpsl_pcmcia_irq_to_sock(link->irq.AssignedIRQ)] = 0; ++#endif + break; + case CS_EVENT_PM_SUSPEND: + link->state |= DEV_SUSPEND; +diff -Nur linux_c860_org/drivers/ide/ide-disk.c linux/drivers/ide/ide-disk.c +--- linux_c860_org/drivers/ide/ide-disk.c 2002-08-29 12:26:32.000000000 +0900 ++++ linux/drivers/ide/ide-disk.c 2004-06-10 21:09:10.000000000 +0900 +@@ -31,6 +31,7 @@ + * Change Log + * 12-Nov-2001 Lineo Japan, Inc. + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support + */ + + #define IDEDISK_VERSION "1.10" +@@ -372,7 +373,8 @@ + static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, unsigned long block) + { + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +- if (!is_pcmcia_card_present(0)) { ++ ide_hwif_t *hwif = HWIF(drive); ++ if (!is_pcmcia_card_present(hwif->irq)) { + ide_end_request(0, HWGROUP(drive)); + return ide_stopped; + } +diff -Nur linux_c860_org/drivers/ide/ide-proc.c linux/drivers/ide/ide-proc.c +--- linux_c860_org/drivers/ide/ide-proc.c 2002-08-29 12:26:32.000000000 +0900 ++++ linux/drivers/ide/ide-proc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -57,6 +57,7 @@ + * Change Log + * 12-Nov-2001 Lineo Japan, Inc. + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support + * + */ + +@@ -456,8 +457,8 @@ + } + + #ifdef CONFIG_ARCH_SHARP_SL +-static ide_drive_t *drive_save = NULL; +-static u8 ide_info_buf[SECTOR_WORDS * 4 + 4]; ++static ide_drive_t *drive_save[2] = { NULL, NULL }; ++static u8 ide_info_buf[2][SECTOR_WORDS * 4 + 4]; + #endif + + static int proc_ide_read_identify +@@ -470,8 +471,8 @@ + unsigned short *val = ((unsigned short *)page) + 2; + char *out = ((char *)val) + (SECTOR_WORDS * 4); + #ifdef CONFIG_ARCH_SHARP_SL +- drive_save = drive; +- memcpy(ide_info_buf, page, SECTOR_WORDS * 4); ++ drive_save[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)] = drive; ++ memcpy(ide_info_buf[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)], page, SECTOR_WORDS * 4); + #endif + page = out; + do { +@@ -487,13 +488,15 @@ + + #ifdef CONFIG_ARCH_SHARP_SL + +-int proc_ide_verify_identify() ++int proc_ide_verify_identify(int sock) + { + u8 buf[SECTOR_WORDS * 4 + 4]; ++ int ret; + +- if (drive_save == NULL || proc_ide_get_identify(drive_save, buf)) ++ if (drive_save[sock] == NULL || proc_ide_get_identify(drive_save[sock], buf)) + return 0; +- return memcmp(ide_info_buf, buf, SECTOR_WORDS * 4); ++ ret = memcmp(ide_info_buf[sock], buf, SECTOR_WORDS * 4); ++ return ret; + } + + #endif +@@ -777,7 +780,8 @@ + drive->proc = NULL; + } + #ifdef CONFIG_ARCH_SHARP_SL +- drive_save = NULL; ++ for (d = 0; d < 2; d++) ++ drive_save[d] = NULL; + #endif + } + +diff -Nur linux_c860_org/drivers/ide/ide.c linux/drivers/ide/ide.c +--- linux_c860_org/drivers/ide/ide.c 2002-08-29 12:26:33.000000000 +0900 ++++ linux/drivers/ide/ide.c 2004-06-10 21:09:10.000000000 +0900 +@@ -122,6 +122,7 @@ + * Change Log + * 12-Nov-2001 Lineo Japan, Inc. + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 ++ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support + * + */ + +@@ -201,7 +202,7 @@ + ide_hwif_t ide_hwifs[MAX_HWIFS]; /* master data repository */ + + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +-extern int ide_resume_handling; ++extern int ide_resume_handling[]; + #endif + + #if (DISK_RECOVERY_TIME > 0) +@@ -548,7 +549,7 @@ + { + byte stat = 0; + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +- if (ide_resume_handling == 2) ++ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(HWIF(drive)->irq)] == 2) + return 0; + #endif + if (drive->waiting_for_dma) +@@ -712,11 +713,11 @@ + byte tmp; + + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +- if (!is_pcmcia_card_present(0)) { ++ if (!is_pcmcia_card_present(hwif->irq)) { + hwgroup->poll_timeout = 0; /* done polling */ + return ide_stopped; + } +- if (ide_resume_handling == 2) { ++ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] == 2) { + hwgroup->poll_timeout = 0; /* done polling */ + return ide_stopped; + } +@@ -1244,9 +1245,9 @@ + ide_hwif_t *hwif = HWIF(drive); + + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +- if (!is_pcmcia_card_present(0)) ++ if (!is_pcmcia_card_present(hwif->irq)) + goto kill_rq; +- if (ide_resume_handling == 2) ++ if (ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] == 2) + goto kill_rq; + #endif + +@@ -1625,7 +1626,7 @@ + if (hwgroup->poll_timeout != 0) { + startstop = handler(drive); + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_PCMCIA) +- } else if (!ide_resume_handling && ++ } else if (!ide_resume_handling[sharpsl_pcmcia_irq_to_sock(hwif->irq)] && + drive_is_ready(drive)) { + #else + } else if (drive_is_ready(drive)) { +diff -Nur linux_c860_org/drivers/ieee1394/csr.c linux/drivers/ieee1394/csr.c +--- linux_c860_org/drivers/ieee1394/csr.c 2002-08-26 14:39:22.000000000 +0900 ++++ linux/drivers/ieee1394/csr.c 2004-06-10 21:09:10.000000000 +0900 +@@ -10,6 +10,7 @@ + */ + + #include <linux/string.h> ++#include <linux/sched.h> + + #include "ieee1394_types.h" + #include "hosts.h" +diff -Nur linux_c860_org/drivers/input/keybdev.c linux/drivers/input/keybdev.c +--- linux_c860_org/drivers/input/keybdev.c 2002-08-26 14:39:30.000000000 +0900 ++++ linux/drivers/input/keybdev.c 2004-06-10 21:09:10.000000000 +0900 +@@ -26,6 +26,9 @@ + * Should you need to contact me, the author, you can do so either by + * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail: + * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic ++ * ++ * ChangeLog: ++ * 29-Aug-2003 SHARP Supported USB keybord for Tosa + */ + + #include <linux/config.h> +@@ -107,6 +110,15 @@ + } + #endif /* CONFIG_MAC_ADBKEYCODES || CONFIG_ADB_KEYBOARD */ + ++#ifdef CONFIG_ARCH_SHARP_SL ++ if (keycode > 255 || !keycode) ++ return -1; ++ ++ handle_scancode(keycode & 0x7f, down); ++ ++ return 0; ++#endif // end CONFIG_ARCH_SHARP_SL ++ + if (keycode > 255 || !x86_keycodes[keycode]) + return -1; + +diff -Nur linux_c860_org/drivers/macintosh/rtc.c linux/drivers/macintosh/rtc.c +--- linux_c860_org/drivers/macintosh/rtc.c 2002-08-26 14:39:13.000000000 +0900 ++++ linux/drivers/macintosh/rtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -64,6 +64,7 @@ + case RTC_RD_TIME: + if (ppc_md.get_rtc_time) + { ++ memset(&rtc_tm, 0, sizeof(struct rtc_time)); + get_rtc_time(&rtc_tm); + + if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time))) +diff -Nur linux_c860_org/drivers/mtd/maps/sharpsl-flash.c linux/drivers/mtd/maps/sharpsl-flash.c +--- linux_c860_org/drivers/mtd/maps/sharpsl-flash.c 2002-08-26 15:19:16.000000000 +0900 ++++ linux/drivers/mtd/maps/sharpsl-flash.c 2004-06-10 21:09:10.000000000 +0900 +@@ -23,6 +23,7 @@ + * GNU General Public License for more details. + * + * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + +@@ -34,7 +35,6 @@ + #include <linux/mtd/map.h> + #include <linux/mtd/partitions.h> + +- + #define WINDOW_ADDR 0x00000000 + #define WINDOW_SIZE 0x01000000 + #define BUS_WIDTH 2 +@@ -122,6 +122,14 @@ + } + }; + ++static struct mtd_partition tosa_partitions[1] = { ++ { ++ name: "Filesystem", ++ size: 0x006A0000, ++ offset: 0x00160000 ++ } ++}; ++ + #define NB_OF(x) (sizeof(x)/sizeof(x[0])) + + +@@ -133,7 +141,6 @@ + + printk(KERN_NOTICE "Sharp SL series flash device: %x at %x\n", WINDOW_SIZE, WINDOW_ADDR); + sharpsl_map.map_priv_1 = (unsigned long)ioremap(WINDOW_ADDR, WINDOW_SIZE); +- + if (!sharpsl_map.map_priv_1) { + printk("Failed to ioremap\n"); + return -EIO; +@@ -155,7 +162,10 @@ + #elif CONFIG_ARCH_PXA_CORGI + parts = corgi_partitions; + nb_parts = NB_OF(corgi_partitions); +-#endif ++#elif CONFIG_ARCH_PXA_TOSA ++ parts = tosa_partitions; ++ nb_parts = NB_OF(tosa_partitions); ++#endif /* CONFIG_ARCH_PXA_TOSA */ + + printk(KERN_NOTICE "Using %s partision definition\n", part_type); + add_mtd_partitions(mymtd, parts, nb_parts); +diff -Nur linux_c860_org/drivers/mtd/nand/Config.in linux/drivers/mtd/nand/Config.in +--- linux_c860_org/drivers/mtd/nand/Config.in 2003-01-14 16:51:07.000000000 +0900 ++++ linux/drivers/mtd/nand/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -29,10 +29,21 @@ + fi + + if [ "$CONFIG_ARCH_PXA_POODLE" = "y" ]; then +- dep_tristate ' NAND Flash device on Sharp poodle' CONFIG_MTD_NAND_SHARP_SL $CONFIG_MTD_NAND ++ dep_tristate ' NAND Flash device on Sharp poodle' CONFIG_MTD_NAND_SHARP_SL_POODLE $CONFIG_MTD_NAND + fi + if [ "$CONFIG_ARCH_PXA_CORGI" = "y" ]; then +- dep_tristate ' NAND Flash device on Sharp corgi' CONFIG_MTD_NAND_SHARP_SL $CONFIG_MTD_NAND ++ dep_tristate ' NAND Flash device on Sharp corgi' CONFIG_MTD_NAND_SHARP_SL_CORGI $CONFIG_MTD_NAND ++fi ++ ++if [ "$CONFIG_MTD_NAND_SHARP_SL_POODLE" = "y" -o "$CONFIG_MTD_NAND_SHARP_SL_CORGI" = "y" ]; then ++ define_tristate CONFIG_MTD_NAND_SHARP_SL y ++else ++ if [ "$CONFIG_MTD_NAND_SHARP_SL_POODLE" = "m" -o "$CONFIG_MTD_NAND_SHARP_SL_CORGI" = "m" ]; then ++ define_tristate CONFIG_MTD_NAND_SHARP_SL m ++ fi ++fi ++if [ "$CONFIG_ARCH_PXA_TOSA" = "y" ]; then ++ dep_tristate ' NAND Flash device on Sharp tosa' CONFIG_MTD_NAND_SHARP_SL_TC6393 $CONFIG_MTD_NAND + fi + + endmenu +diff -Nur linux_c860_org/drivers/mtd/nand/Makefile linux/drivers/mtd/nand/Makefile +--- linux_c860_org/drivers/mtd/nand/Makefile 2002-10-09 10:29:15.000000000 +0900 ++++ linux/drivers/mtd/nand/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -17,6 +17,7 @@ + obj-$(CONFIG_MTD_NAND_AUTCPU12) += autcpu12.o + obj-$(CONFIG_MTD_NAND_EDB7312) += edb7312.o + obj-$(CONFIG_MTD_NAND_SHARP_SL) += sharp_sl.o ++obj-$(CONFIG_MTD_NAND_SHARP_SL_TC6393) += sharp_sl_tc6393.o + obj-$(CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS) += sharp_sl_logical.o + + include $(TOPDIR)/Rules.make +diff -Nur linux_c860_org/drivers/mtd/nand/nand.c linux/drivers/mtd/nand/nand.c +--- linux_c860_org/drivers/mtd/nand/nand.c 2003-06-18 16:12:26.000000000 +0900 ++++ linux/drivers/mtd/nand/nand.c 2004-06-10 21:09:10.000000000 +0900 +@@ -102,7 +102,7 @@ + * + * 09-04-2002 tglx: fixed write_verify (John Hall (john.hall@optionexist.co.uk)) + * +- * $Id: nand.c,v 1.31 2002/09/04 11:19:33 gleixner Exp $ ++ * $Id: nand.c,v 1.1.1.1 2003/06/27 03:04:33 yasui Exp $ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as +@@ -121,7 +121,7 @@ + * add erase-by-force mode + * 18-Sep-2002 Lineo Japan, Inc. add dev_ready() call after read + * 17-Sep-2002 Lineo Japan, Inc. add code for post-badblock +- * 14-Mar-2003 Sharp wait for ready in read_oob() ++ * 09-Sep-2003 SHARP support TC6393XB controller for Tosa + */ + + #include <linux/delay.h> +@@ -371,6 +371,10 @@ + int eccmode = oobsel ? this->eccmode : NAND_ECC_NONE; + int *oob_config = oobconfigs[oobsel]; + int ecc_ret = 0; ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ unsigned short data_w; ++ u_char data_b; ++#endif + + START_MEASUREMENT(nand_write_page); + COUNTER_INC(nand_write_nr_pages); +@@ -428,10 +432,17 @@ + /* No ecc and software ecc 3/256, write all */ + case NAND_ECC_NONE: + case NAND_ECC_SOFT: ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ for (i = 0; i < mtd->oobblock; i+=2) { ++ writew ( (this->data_poi[i+1] << 8) | this->data_poi[i] , this->IO_ADDR_W); ++ } ++ break; ++#else + for (i = 0; i < mtd->oobblock; i++) + writeb ( this->data_poi[i] , this->IO_ADDR_W); + break; +- ++#endif ++ + /* Hardware ecc 3 byte / 256 data, write first half, get ecc, then second, if 512 byte pagesize */ + case NAND_ECC_HW3_256: + this->enable_hwecc (NAND_ECC_WRITE); /* enable hardware ecc logic for write */ +@@ -465,8 +476,14 @@ + /* Hardware ecc 6 byte / 512 byte data, write full page */ + case NAND_ECC_HW6_512: + this->enable_hwecc (NAND_ECC_WRITE); /* enable hardware ecc logic */ ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ for (i = 0; i < mtd->oobblock; i+=2) { ++ writew ( (this->data_poi[i+1] << 8) | this->data_poi[i] , this->IO_ADDR_W); ++ } ++#else + for (i = 0; i < mtd->oobblock; i++) + writeb ( this->data_poi[i] , this->IO_ADDR_W); ++#endif + ecc_ret = this->calculate_ecc (NULL, &(ecc_code[0])); + for (i = 0; i < 6; i++) + oob_data[oob_config[i]] = ecc_code[i]; +@@ -484,8 +501,15 @@ + } + + /* Write out OOB data */ ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ ++ for (i = 0; i < mtd->oobsize; i+=2) { ++ writew ( (oob_data[i+1] << 8) | oob_data[i] , this->IO_ADDR_W); ++ } ++#else + for (i = 0; i < mtd->oobsize; i++) + writeb ( oob_data[i] , this->IO_ADDR_W); ++#endif + + /* Send command to actually program the data */ + this->cmdfunc (mtd, NAND_CMD_PAGEPROG, -1, -1); +@@ -526,23 +550,55 @@ + } + /* Loop through and verify the data */ + for (i = col; i < last; i++) { ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ if((i-col) & 1){ ++ data_b = data_w >> 8; ++ }else{ ++ data_w = readw (this->IO_ADDR_W); ++ data_b = data_w & 0xff; ++ ++ } ++ if (this->data_poi[i] != data_b) { ++ printk (KERN_WARNING "%s: Failed write verify, %d at page 0x%08x, col=%d last=%d\n", __func__, i, page, col, last); ++ ACCUMULATE_ELAPSED_TIME(nand_write_verify); ++ ACCUMULATE_ELAPSED_TIME(nand_write_page); ++ return -EIO; ++ } ++#else + if (this->data_poi[i] != readb (this->IO_ADDR_R)) { + printk (KERN_WARNING "%s: Failed write verify, %d at page 0x%08x, col=%d last=%d\n", __func__, i, page, col, last); + ACCUMULATE_ELAPSED_TIME(nand_write_verify); + ACCUMULATE_ELAPSED_TIME(nand_write_page); + return -EIO; + } ++#endif + } + + /* check, if we have a fs-supplied oob-buffer */ + if (oob_buf) { + for (i = 0; i < mtd->oobsize; i++) { ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ if(i & 1){ ++ data_b = data_w >> 8; ++ }else{ ++ data_w = readw (this->IO_ADDR_W); ++ data_b = data_w & 0xff; ++ ++ } ++ if (oob_data[i] != data_b) { ++ printk (KERN_WARNING "%s: Failed write verify, oob %d of page 0x%08x\n", __func__, i, page); ++ ACCUMULATE_ELAPSED_TIME(nand_write_verify); ++ ACCUMULATE_ELAPSED_TIME(nand_write_page); ++ return -EIO; ++ } ++#else + if (oob_data[i] != readb (this->IO_ADDR_R)) { + printk (KERN_WARNING "%s: Failed write verify, oob %d of page 0x%08x\n", __func__, i, page); + ACCUMULATE_ELAPSED_TIME(nand_write_verify); + ACCUMULATE_ELAPSED_TIME(nand_write_page); + return -EIO; + } ++#endif + } + } else { + if (eccmode != NAND_ECC_NONE && !col && last == mtd->oobblock) { +@@ -555,8 +611,19 @@ + case NAND_ECC_HW6_512: ecc_bytes = 6; break; + } + ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ for (i = 0; i < mtd->oobsize; i++) { ++ if(i & 1){ ++ oob_data[i] = data_w >> 8; ++ }else{ ++ data_w = readw (this->IO_ADDR_R); ++ oob_data[i] = data_w; ++ } ++ } ++#else + for (i = 0; i < mtd->oobsize; i++) + oob_data[i] = readb (this->IO_ADDR_R); ++#endif + + for (i = 0; i < ecc_bytes; i++) { + if (oob_data[oob_config[i]] != ecc_code[i]) { +@@ -826,7 +893,17 @@ + * oob data, let the device transfer the data ! + */ + for (i = 0; i < tmp_len; i++) { ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ unsigned short data; ++ if(i & 1){ ++ buf[i] = data >> 8; ++ }else{ ++ data = readw (this->IO_ADDR_R); ++ buf[i] = data; ++ } ++#else + buf[i] = readb (this->IO_ADDR_R); ++#endif + if ((col++ & (mtd->oobsize - 1)) == (mtd->oobsize - 1)) + udelay (this->chip_delay); + } +@@ -972,6 +1049,10 @@ + { + int i, column, page, status, ret = 0; + struct nand_chip *this = mtd->priv; ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ unsigned short tmp_buf[32]; // mtd->oobsize ++ u_char *p_tmp_buf; ++#endif + + DEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n", (unsigned int) to, (int) len); + +@@ -1010,6 +1091,17 @@ + + /* Write out desired data */ + this->cmdfunc (mtd, NAND_CMD_SEQIN, mtd->oobblock, page); ++ ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ memset(tmp_buf,0xff,mtd->oobsize); ++ p_tmp_buf = (u_char *)tmp_buf; ++ ++ for (i = 0; i < len; i++) ++ p_tmp_buf[i+column] = buf[i]; ++ ++ for (i = 0; i < mtd->oobsize; i++) ++ writew (tmp_buf[i], this->IO_ADDR_W); ++#else + /* prepad 0xff for partial programming */ + for (i = 0; i < column; i++) + writeb (0xff, this->IO_ADDR_W); +@@ -1019,7 +1111,7 @@ + /* postpad 0xff for partial programming */ + for (i = len + column; i < mtd->oobsize; i++) + writeb (0xff, this->IO_ADDR_W); +- ++#endif + /* Send command to program the OOB data */ + this->cmdfunc (mtd, NAND_CMD_PAGEPROG, -1, -1); + +@@ -1040,11 +1132,29 @@ + + /* Loop through and verify the data */ + for (i = 0; i < len; i++) { ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ unsigned short data; ++ if(i & 1){ ++ if (buf[i] != (data >> 8)){ ++ DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page); ++ ret = -EIO; ++ goto out; ++ } ++ }else{ ++ data = readw (this->IO_ADDR_R); ++ if (buf[i] != (data & 0xff)){ ++ DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page); ++ ret = -EIO; ++ goto out; ++ } ++ } ++#else + if (buf[i] != readb (this->IO_ADDR_R)) { + DEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: " "Failed write verify, page 0x%08x\n", page); + ret = -EIO; + goto out; + } ++#endif + } + #endif + +@@ -1256,6 +1366,7 @@ + /* Check the WP bit */ + this->cmdfunc (mtd, NAND_CMD_STATUS, -1, -1); + if (!(readb (this->IO_ADDR_R) & 0x80)) { ++ + DEBUG (MTD_DEBUG_LEVEL0, "nand_erase: Device is write protected!!!\n"); + instr->state = MTD_ERASE_FAILED; + goto erase_exit; +@@ -1437,8 +1548,14 @@ + this->cmdfunc (mtd, NAND_CMD_READID, 0x00, -1); + + /* Read manufacturer and device IDs */ ++#ifdef CONFIG_MTD_NAND_SHARP_SL_TC6393 ++ nand_maf_id = readw (this->IO_ADDR_R); ++ nand_dev_id = nand_maf_id >> 8; ++ nand_maf_id = nand_maf_id & 0xff; ++#else + nand_maf_id = readb (this->IO_ADDR_R); + nand_dev_id = readb (this->IO_ADDR_R); ++#endif + + /* Print and store flash device information */ + for (i = 0; nand_flash_ids[i].name != NULL; i++) { +@@ -1473,7 +1590,9 @@ + this->eccsize = 256; /* set default eccsize */ + + switch (this->eccmode) { +- ++#ifdef CONFIG_ARCH_SHARP_SL ++ case NAND_ECC_HW6_512: ++#endif + case NAND_ECC_HW3_512: + if (mtd->oobblock == 256) { + printk (KERN_WARNING "512 byte HW ECC not possible on 256 Byte pagesize, fallback to SW ECC \n"); +diff -Nur linux_c860_org/drivers/mtd/nand/sharp_sl_tc6393.c linux/drivers/mtd/nand/sharp_sl_tc6393.c +--- linux_c860_org/drivers/mtd/nand/sharp_sl_tc6393.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/mtd/nand/sharp_sl_tc6393.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,1236 @@ ++/* ++ * drivers/mtd/nand/sharp_sl_tc6393.c ++ * ++ * Copyright (C) 2004 SHARP ++ * ++ * $Id: sharp_sl_tc6393.c,v 1.4 2004/03/04 06:34:39 yasui Exp $ ++ * ++ * Based on: ++ * ++ * drivers/mtd/nand/sharp_sl.c ++ * ++ * Copyright (C) 2002 Lineo Japan, Inc. ++ * ++ * drivers/mtd/nand/spia.c ++ * ++ * Copyright (C) 2000 Steven J. Hill (sjhill@cotw.com) ++ * ++ * ++ * 10-29-2001 TG change to support hardwarespecific access ++ * to controllines (due to change in nand.c) ++ * page_cache added ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ * Overview: ++ * This is a device driver for the NAND flash device found on the ++ * SPIA board which utilizes the Toshiba TC58V64AFT part. This is ++ * a 64Mibit (8MiB x 8 bits) NAND flash device. ++ * ++ * ChangLog: ++ * 09-Sep-2003 SHARP support the Toshiba TC6393XB NAND flash controller. ++ */ ++ ++#include <linux/slab.h> ++#include <linux/module.h> ++#include <linux/delay.h> ++#include <linux/mtd/mtd.h> ++#include <linux/mtd/nand.h> ++#include <linux/mtd/nand_ecc.h> ++#include <linux/mtd/partitions.h> ++#include <asm/io.h> ++#include <asm/hardware.h> ++#ifdef CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS ++#include <asm-arm/sharp_nand_logical.h> ++#endif ++ ++#undef DEBUG_PROC ++#ifdef DEBUG_PROC ++#include <linux/proc_fs.h> ++#endif ++#include "measure.h" ++#include <asm/sharp_tc6393.h> ++ ++#define MAX_ECC_RETRY 3 ++#define MAX_WRITE_RETRIES 32 ++#define MAX_COPIES 100 ++ ++#ifdef CONFIG_ARCH_SHARP_SL ++#define FAILURECOUNTER_POS NAND_POSTBADBLOCK_POS ++#else ++#define FAILURECOUNTER_POS NAND_BADBLOCK_POS ++#endif ++ ++#define HWECC_MODE_DISABLE 0 ++#define HWECC_MODE_READ 1 ++#define HWECC_MODE_WRITE 2 ++static int hwecc_mode = HWECC_MODE_DISABLE; ++ ++static TC6393XB_SysConfig *sysconfig = TC6393XB_SYSCONFIG_BASE; ++static TC6393XB_NandConfig *nandconfig = TC6393XB_NANDCONFIG_BASE; ++static TC6393XB_NandCtrl *nandctrl = TC6393XB_NANDCTRL_BASE; ++ ++/* ++ * NAND low-level MTD interface functions ++ */ ++static int tc6393_nand_read (struct mtd_info *mtd, loff_t from, size_t len, size_t * retlen, u_char * buf); ++static int tc6393_nand_read_ecc (struct mtd_info *mtd, loff_t from, size_t len, ++ size_t * retlen, u_char * buf, u_char * eccbuf, int oobsel); ++static int tc6393_nand_write (struct mtd_info *mtd, loff_t to, size_t len, size_t * retlen, const u_char * buf); ++static int tc6393_nand_write_ecc (struct mtd_info *mtd, loff_t to, size_t len, ++ size_t * retlen, const u_char * buf, u_char * eccbuf, int oobsel); ++static int tc6393_nand_write_oob (struct mtd_info *mtd, loff_t to, size_t len, size_t * retlen, const u_char *buf); ++static int tc6393_nand_writev (struct mtd_info *mtd, const struct iovec *vecs, ++ unsigned long count, loff_t to, size_t * retlen); ++static int tc6393_nand_writev_ecc (struct mtd_info *mtd, const struct iovec *vecs, ++ unsigned long count, loff_t to, size_t * retlen, u_char *eccbuf, int oobsel); ++/* ++ * MTD structure for Poodle ++ */ ++static struct mtd_info *sharp_sl_mtd = NULL; ++ ++/* ++ * original nand_* functions pointer ++ */ ++static int (*orig_read_ecc)(struct mtd_info*, loff_t, size_t, size_t*, u_char*, u_char*, int); ++static int (*orig_write_ecc)(struct mtd_info*, loff_t, size_t, size_t*, const u_char*, u_char*, int); ++static int (*orig_writev_ecc)(struct mtd_info*, const struct iovec*, unsigned long, loff_t, size_t*, u_char*, int); ++static int (*orig_write_oob)(struct mtd_info*, loff_t, size_t, size_t*, const u_char*); ++ ++ ++/* ++ * out of band configuration for different filesystems ++ */ ++static int oobconfigs[][6] = { ++ { 0,0,0,0,0,0}, ++ ++ { NAND_JFFS2_OOB_ECCPOS0, NAND_JFFS2_OOB_ECCPOS1, NAND_JFFS2_OOB_ECCPOS2, ++ NAND_JFFS2_OOB_ECCPOS3, NAND_JFFS2_OOB_ECCPOS4, NAND_JFFS2_OOB_ECCPOS5 }, ++ ++ { NAND_YAFFS_OOB_ECCPOS0, NAND_YAFFS_OOB_ECCPOS1, NAND_YAFFS_OOB_ECCPOS2, ++ NAND_YAFFS_OOB_ECCPOS3, NAND_YAFFS_OOB_ECCPOS4, NAND_YAFFS_OOB_ECCPOS5 } ++}; ++ ++/* ++ * Macros for low-level register control ++ */ ++#define nand_select() this->hwcontrol(NAND_CTL_SETNCE); ++ ++#define nand_deselect() this->hwcontrol(NAND_CTL_CLRNCE); ++ ++ ++/* ++ * Define partitions for flash device ++ */ ++#define DEFAULT_NUM_PARTITIONS 3 ++static struct mtd_info** sharp_sl_nand_part_mtdp; ++static int nr_partitions; ++static struct mtd_partition sharp_sl_nand_default_partition_info[] = { ++ { ++ .name = "NAND flash partition 0", ++ .offset = 0, ++ .size = 7 * 1024 * 1024, ++ }, ++ { ++ .name = "NAND flash partition 1", ++ .offset = 7 * 1024 * 1024, ++ .size = 30 * 1024 * 1024, ++ }, ++ { ++ .name = "NAND flash partition 2", ++ .offset = 37 * 1024 * 1024, ++ .size = (64 - 37) * 1024 * 1024, ++ }, ++}; ++static struct mtd_partition* sharp_sl_nand_partition_info; ++ ++ ++/* ++ * hardware specific access to control-lines ++ */ ++static void ++tc6393_nand_hwcontrol(int cmd) ++{ ++ switch (cmd) { ++ case NAND_CTL_SETCLE: ++ nandctrl->smode |= SMODE_CLE; ++ break; ++ case NAND_CTL_CLRCLE: ++ nandctrl->smode &= ~SMODE_CLE; ++ break; ++ case NAND_CTL_SETALE: ++ nandctrl->smode |= SMODE_ALE; ++ break; ++ case NAND_CTL_CLRALE: ++ nandctrl->smode &= ~SMODE_ALE; ++ break; ++ case NAND_CTL_SETNCE: ++ nandctrl->smode = SMODE_SELECT; ++ break; ++ case NAND_CTL_CLRNCE: ++ nandctrl->smode = SMODE_DESELECT; ++ default: ++ break; ++ } ++} ++ ++ ++/* ++ * ++ */ ++static int ++tc6393_nand_command_1(struct mtd_info* mtd, ++ unsigned command, ++ int column, ++ int page_addr) ++{ ++ register struct nand_chip *this = mtd->priv; ++ register unsigned long NAND_IO_ADDR = this->IO_ADDR_W; ++ int i; ++ ++#ifdef CONFIG_ARCH_SHARP_SL ++ if (command != NAND_CMD_RESET && ++ command != NAND_CMD_STATUS) { ++ for (i = 0; i < NAND_BUSY_TIMEOUT; i++) ++ if (this->dev_ready()) ++ break; ++ if (i == NAND_BUSY_TIMEOUT) ++ return -EIO; ++ } ++#endif ++ this->hwcontrol (NAND_CTL_SETCLE); ++ ++ /* ++ * Write out the command to the device. ++ */ ++ if (command != NAND_CMD_SEQIN) ++ writeb (command, NAND_IO_ADDR); ++ else { ++ if (mtd->oobblock == 256 && column >= 256) { ++ column -= 256; ++ writeb (NAND_CMD_READOOB, NAND_IO_ADDR); ++ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR); ++ } else if (mtd->oobblock == 512 && column >= 256) { ++ if (column < 512) { ++ column -= 256; ++ writeb (NAND_CMD_READ1, NAND_IO_ADDR); ++ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR); ++ } else { ++ column -= 512; ++ writeb (NAND_CMD_READOOB, NAND_IO_ADDR); ++ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR); ++ } ++ } else { ++ writeb (NAND_CMD_READ0, NAND_IO_ADDR); ++ writeb (NAND_CMD_SEQIN, NAND_IO_ADDR); ++ } ++ } ++ ++ /* Set ALE and clear CLE to start address cycle */ ++ this->hwcontrol (NAND_CTL_CLRCLE); ++ ++ if (column != -1 || page_addr != -1) { ++ this->hwcontrol (NAND_CTL_SETALE); ++ ++ /* Serially input address */ ++ if (column != -1) ++ writeb (column, NAND_IO_ADDR); ++ if (page_addr != -1) { ++ writeb ((unsigned char) (page_addr & 0xff), NAND_IO_ADDR); ++ writeb ((unsigned char) ((page_addr >> 8) & 0xff), NAND_IO_ADDR); ++ /* One more address cycle for higher density devices */ ++ if (mtd->size & 0x0c000000) ++ writeb ((unsigned char) ((page_addr >> 16) & 0x0f), NAND_IO_ADDR); ++ } ++ /* Latch in address */ ++ this->hwcontrol (NAND_CTL_CLRALE); ++ } ++ ++ /* ++ * program and erase have their own busy handlers ++ * status and sequential in needs no delay ++ */ ++ switch (command) { ++ case NAND_CMD_PAGEPROG: /* wait in this->waitfunc() */ ++ case NAND_CMD_ERASE1: ++ case NAND_CMD_ERASE2: /* wait in this->waitfunc() */ ++ case NAND_CMD_SEQIN: ++/* case NAND_CMD_STATUS: */ ++ return 0; ++ ++ case NAND_CMD_RESET: ++ break; ++ } ++ ++ /* wait until command is processed */ ++ for (i = 0; i < NAND_BUSY_TIMEOUT; i++) ++ if (this->dev_ready()) ++ return 0; ++ return -EIO; ++} ++ ++ ++/* ++ * ++ */ ++static int ++tc6393_nand_command(struct mtd_info* mtd, ++ unsigned command, ++ int column, ++ int page_addr) ++{ ++ if (command == NAND_CMD_SEQIN) ++ /* ignore Ready/Busy error */ ++ tc6393_nand_command_1(mtd, NAND_CMD_READ0, column, page_addr); ++ return tc6393_nand_command_1(mtd, command, column, page_addr); ++} ++ ++ ++/* ++ * Get chip for selected access ++ * (copy from nand.c) ++ */ ++static inline void ++nand_get_chip(struct nand_chip *this, ++ struct mtd_info *mtd, ++ int new_state) ++{ ++ ++ DECLARE_WAITQUEUE (wait, current); ++ ++ /* ++ * Grab the lock and see if the device is available ++ * For erasing, we keep the spinlock until the ++ * erase command is written. ++ */ ++ retry: ++ spin_lock_bh (&this->chip_lock); ++ ++ if (this->state == FL_READY) { ++ this->state = new_state; ++ if (new_state != FL_ERASING) ++ spin_unlock_bh (&this->chip_lock); ++ return; ++ } ++ ++#if 0 ++ if (this->state == FL_ERASING) { ++ if (new_state != FL_ERASING) { ++ this->state = new_state; ++ spin_unlock_bh (&this->chip_lock); ++ nand_select (); /* select in any case */ ++ this->cmdfunc(mtd, NAND_CMD_RESET, -1, -1); ++ return; ++ } ++ } ++#endif ++ ++ set_current_state (TASK_UNINTERRUPTIBLE); ++ add_wait_queue (&this->wq, &wait); ++ spin_unlock_bh (&this->chip_lock); ++ schedule (); ++ remove_wait_queue (&this->wq, &wait); ++ goto retry; ++} ++ ++ ++static inline void ++tc6393_nand_read_page(struct mtd_info* mtd, ++ struct nand_chip* this, ++ u_char* data_poi, ++ u_char* oob_data, ++ u_char* ecc_calc, ++ int ecc, ++ int end) ++{ ++ int j = 0; ++ ++ START_MEASUREMENT(nand_read_page); ++ ++ this->enable_hwecc (NAND_ECC_READ); ++ ++ while (j < ecc){ ++ unsigned short data = readw (this->IO_ADDR_R); ++ data_poi[j++] = data; ++ data_poi[j++] = data >> 8; ++ } ++ ++ this->calculate_ecc (&data_poi[0], &ecc_calc[0]); /* read from hardware */ ++ ++ for (j = 0; j < mtd->oobsize; j+=2) { ++ unsigned short data = readw (this->IO_ADDR_R); ++ oob_data[j] = data; ++ oob_data[j+1] = data >> 8; ++ } ++ ACCUMULATE_ELAPSED_TIME(nand_read_page); ++ COUNTER_INC(nand_read_nr_pages); ++} ++ ++ ++/* ++ * this function is registered only if eccmode == NAND_ECC_HW6_512 && ++ * oobblock == 512 ++ */ ++static int ++tc6393_nand_read_ecc(struct mtd_info* mtd, ++ loff_t from, ++ size_t len, ++ size_t* retlen, ++ u_char* buf, ++ u_char* oob_buf, ++ int oobsel) ++{ ++ int col, page, end, ecc; ++ int read, ecc_failed, ret; ++ struct nand_chip *this; ++ u_char *oob_data; ++ int *oob_config; ++ u_char* data_poi = 0; ++ ++ if (oob_buf || ! oobsel) ++ return orig_read_ecc(mtd, from, len, retlen, buf, oob_buf, oobsel); ++ ++ DEBUG (MTD_DEBUG_LEVEL3, "%s: from = 0x%08x, len = %i\n", ++ __func__, (unsigned int) from, (int) len); ++ ++ /* Do not allow reads past end of device */ ++ if ((from + len) > mtd->size) { ++ DEBUG (MTD_DEBUG_LEVEL0, "%s: Attempt read beyond end of device\n", __func__); ++ *retlen = 0; ++ return -EINVAL; ++ } ++ ++ /* Grab the lock and see if the device is available */ ++ this = mtd->priv; ++ nand_get_chip (this, mtd ,FL_READING); ++ ++ /* Select the NAND device */ ++ nand_select (); ++ ++ oob_config = oobconfigs[oobsel]; ++ page = from >> this->page_shift; ++ col = from & (mtd->oobblock - 1); ++ end = mtd->oobblock; ++ ecc = mtd->eccsize; ++ oob_data = &this->data_buf[end]; ++ read = 0; ++ ecc_failed = 0; ++ ret = 0; ++ ++ /* Send the read command */ ++ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) { ++ printk(KERN_WARNING "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n", ++ __func__, page); ++ ret = -EIO; ++ goto nand_read_ecc_exit; ++ } ++ ++ /* Loop until all data read */ ++ while (read < len) { ++ int j; ++ int ecc_status; ++ int ecc_retry_counter = 0; ++ u_char ecc_calc[6]; ++ u_char ecc_code[6]; ++ ++ /* ++ * If the read is not page aligned, we have to read into data buffer ++ * due to ecc, else we read into return buffer direct ++ */ ++ if (!col && (len - read) >= end) ++ data_poi = &buf[read]; ++ else ++ data_poi = this->data_buf; ++ ++#ifdef CONFIG_MTD_NAND_PAGE_CACHE ++ if (page == this->cache_page) { ++ memcpy(data_poi, this->data_cache, end); ++ ++ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page + 1)) { ++ printk(KERN_WARNING "%s: Failed in NAND_CMD_READ0 command," ++ " page 0x%08x\n", __func__, page); ++ ret = -EIO; ++ goto nand_read_ecc_exit; ++ } ++ ++ goto loop_next; ++ } ++#endif ++ ++ ecc_retry: ++ tc6393_nand_read_page(mtd, this, data_poi, oob_data, ecc_calc, ecc, end); ++ ++ /* Pick the ECC bytes out of the oob data */ ++ for (j = 0; j < 6; j++) ++ ecc_code[j] = oob_data[oob_config[j]]; ++ ++ /* If we have consequent page reads, apply delay or wait for ready/busy pin */ ++ for (j = 0; j < NAND_BUSY_TIMEOUT; j++) ++ if (this->dev_ready()) ++ break; ++ if (j == NAND_BUSY_TIMEOUT) { ++ ret = -EIO; ++ goto nand_read_ecc_exit; ++ } ++ ++ /* correct data, if neccecary */ ++ ecc_status = this->correct_data (&data_poi[0], &ecc_code[0], &ecc_calc[0]); ++ if (ecc_status == -1) { ++ if (ecc_retry_counter++ < MAX_ECC_RETRY) { ++ this->cmdfunc (mtd, NAND_CMD_RESET, -1, -1); ++ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) { ++ printk(KERN_WARNING ++ "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n", ++ __func__, page); ++ ret = -EIO; ++ goto nand_read_ecc_exit; ++ } ++ goto ecc_retry; ++ } ++ else { ++ printk (KERN_WARNING "%s: Failed ECC read, page 0x%08x\n", ++ __func__, page); ++ ecc_failed++; ++ } ++ } ++ ++ ecc_status = this->correct_data (&data_poi[256], &ecc_code[3], &ecc_calc[3]); ++ if (ecc_status == -1) { ++ if (ecc_retry_counter++ < MAX_ECC_RETRY) { ++ this->cmdfunc (mtd, NAND_CMD_RESET, -1, -1); ++ if (this->cmdfunc (mtd, NAND_CMD_READ0, 0x00, page)) { ++ printk(KERN_WARNING ++ "%s: Failed in NAND_CMD_READ0 command, page 0x%08x\n", ++ __func__, page); ++ ret = -EIO; ++ goto nand_read_ecc_exit; ++ } ++ goto ecc_retry; ++ } ++ else { ++ printk (KERN_WARNING "%s: Failed ECC read, page 0x%08x\n", ++ __func__, page); ++ ecc_failed++; ++ } ++ } ++ ++#ifdef CONFIG_MTD_NAND_PAGE_CACHE ++ loop_next: ++#endif ++ if (col || (len - read) < end) { ++ for (j = col; j < end && read < len; j++) ++ buf[read++] = data_poi[j]; ++ } else ++ read += mtd->oobblock; ++ /* For subsequent reads align to page boundary. */ ++ col = 0; ++ /* Increment page address */ ++ page++; ++ } ++ ++ nand_read_ecc_exit: ++ ret = (ret == 0) ? (ecc_failed ? -EIO : 0) : ret; ++ if (ret == -EIO) ++ this->cmdfunc(mtd, NAND_CMD_RESET, -1, -1); ++#ifdef CONFIG_MTD_NAND_PAGE_CACHE ++ else if (page - 1 != this->cache_page && data_poi) { ++ memcpy(this->data_cache, data_poi, end); ++ this->cache_page = page - 1; ++ } ++#endif ++ ++ /* De-select the NAND device */ ++ nand_deselect (); ++ ++ /* Wake up anyone waiting on the device */ ++ spin_lock_bh (&this->chip_lock); ++ this->state = FL_READY; ++ wake_up (&this->wq); ++ spin_unlock_bh (&this->chip_lock); ++ ++ /* ++ * Return success, if no ECC failures, else -EIO ++ * fs driver will take care of that, because ++ * retlen == desired len and result == -EIO ++ */ ++ *retlen = read; ++ return ret; ++} ++ ++ ++static int ++tc6393_nand_read(struct mtd_info* mtd, ++ loff_t from, ++ size_t len, ++ size_t* retlen, ++ u_char* buf) ++{ ++ return tc6393_nand_read_ecc(mtd, from, len, retlen, buf, NULL, NAND_JFFS2_OOB); ++} ++ ++ ++/* same as sharp_sl.c */ ++static inline int jffs2_hamming_distance(unsigned int a, unsigned int b) ++{ ++#ifdef __ARM_ARCH_5TE__ ++ unsigned int n; ++ a ^= b; ++ asm ( ++ "clz %0, %1\n" ++ : "=r" (n) ++ : "r" (a) ++ ); ++ return (a << (n + 1)) == 0; ++#else ++ unsigned int n; ++ a ^= b; ++ for (n = 0; n < 8; n++) ++ if (! (a & ~(1 << n))) ++ return 1; ++ return 0; ++#endif ++} ++ ++/* same as sharp_sl.c */ ++static inline void ++jffs2_correct_badblock_val(u_char* oob) ++{ ++#ifdef CONFIG_MTD_NAND_POST_BADBLOCK ++ if (jffs2_hamming_distance(oob[NAND_POSTBADBLOCK_POS], 0xff)) ++ oob[NAND_POSTBADBLOCK_POS] = 0xff; ++#endif ++ if (jffs2_hamming_distance(oob[NAND_BADBLOCK_POS], 0xff)) ++ oob[NAND_BADBLOCK_POS] = 0xff; ++} ++ ++/* same as sharp_sl.c */ ++static inline void ++jffs2_correct_failedblock_val(u_char* oob) ++{ ++ if (jffs2_hamming_distance(oob[FAILURECOUNTER_POS], 0xff)) ++ oob[FAILURECOUNTER_POS] = 0xff; ++} ++ ++/* same as sharp_sl.c */ ++static inline void ++jffs2_correct_cleanmarker(u_char* oob, ++ u_char* correct_data, ++ int len) ++{ ++ int i; ++ for (i = 0; i < len; i++) ++ if (jffs2_hamming_distance(oob[i], correct_data[i])) ++ oob[i] = correct_data[i]; ++} ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_prepare_rewrite(struct mtd_info* mtd, ++ loff_t to, ++ int oobsel) ++{ ++ int i; ++ loff_t block_addr = to & ~(mtd->erasesize - 1); ++ size_t len = to & (mtd->erasesize - 1); ++ int nr_oobpages = 2; // JFFS2 only (JFFS2 uses only 2 oobpages) ++ int fsdata_pos = (mtd->oobblock == 256) ++ ? NAND_JFFS2_OOB8_FSDAPOS : NAND_JFFS2_OOB16_FSDAPOS; ++ int fsdata_len = (mtd->oobblock == 256) ++ ? NAND_JFFS2_OOB8_FSDALEN : NAND_JFFS2_OOB16_FSDALEN; ++ u_char* block_buf; ++ u_char* oob_buf; ++ int ret; ++ int retlen; ++ struct erase_info instr; ++ ++ block_buf = kmalloc(len, GFP_KERNEL); ++ if (! block_buf) { ++ printk("Unable to allocate NAND block buffer (%u)\n", len); ++ return -EIO; ++ } ++ oob_buf = kmalloc(mtd->oobsize * nr_oobpages, GFP_KERNEL); ++ if (! oob_buf) { ++ printk("Unable to allocate NAND oob buffer\n"); ++ kfree(block_buf); ++ return -EIO; ++ } ++ ++ ret = mtd->read_ecc(mtd, block_addr, len, &retlen, block_buf, NULL, NAND_JFFS2_OOB); ++ if (ret || retlen != len) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: read_ecc failed (%d)\n", __func__, ret); ++ kfree(block_buf); ++ kfree(oob_buf); ++ return ret ? ret : -EIO; ++ } ++ ++ ret = mtd->read_oob(mtd, block_addr, mtd->oobsize * nr_oobpages, &retlen, oob_buf); ++ if (ret || retlen != mtd->oobsize * nr_oobpages) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: read_oob failed (%d)\n", __func__, ret); ++ kfree(block_buf); ++ kfree(oob_buf); ++ return ret ? ret : -EIO; ++ } ++#if 1 /* FIXME */ ++ { ++ struct { ++ /* All start like this */ ++ uint16_t magic; ++ uint16_t nodetype; ++ uint32_t totlen; /* So we can skip over nodes we don't grok */ ++ } __attribute__((packed)) n = { ++ .magic = 0x1985, ++ .nodetype = 0x2003, ++ .totlen = 8, ++ }; ++ u_char* p; ++ ++ p = (u_char*)&n; ++ ++ jffs2_correct_badblock_val(oob_buf); ++ jffs2_correct_failedblock_val(&oob_buf[mtd->oobsize]); ++ jffs2_correct_cleanmarker(&oob_buf[fsdata_pos], p, fsdata_len); ++ } ++#endif ++ ++ for (i = 0; i < MAX_COPIES; i++) { ++ int j; ++ ++ memset(&instr, 0, sizeof instr); ++ instr.mtd = mtd; ++ instr.addr = block_addr; ++ instr.len = mtd->erasesize; ++ ret = mtd->erase(mtd, &instr); ++ if (ret) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: erase failed (%d)\n", __func__, ret); ++ continue; ++ } ++ ++ ret = orig_write_ecc(mtd, block_addr, len, &retlen, block_buf, NULL, ++ NAND_JFFS2_OOB); ++ if (ret || retlen != len) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_ecc failed (%d)\n", __func__, ret); ++ continue; ++ } ++ ++ for (j = 0; j < nr_oobpages; j++) { ++ loff_t addr = block_addr + mtd->oobblock * j; ++ ++#ifdef CONFIG_MTD_NAND_POST_BADBLOCK ++ ret = orig_write_oob(mtd, addr + NAND_POSTBADBLOCK_POS, 1, &retlen, ++ oob_buf + mtd->oobsize * j + NAND_POSTBADBLOCK_POS); ++ if (ret || retlen != 1) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob post_badblock(%d) failed (%d)\n", ++ __func__, j, ret); ++ break; ++ } ++#endif ++ ++ ret = orig_write_oob(mtd, addr + NAND_BADBLOCK_POS, 1, &retlen, ++ oob_buf + mtd->oobsize * j + NAND_BADBLOCK_POS); ++ if (ret || retlen != 1) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob badblock(%d) failed (%d)\n", ++ __func__, j, ret); ++ break; ++ } ++ ++ ret = orig_write_oob(mtd, addr + fsdata_pos, fsdata_len, &retlen, ++ oob_buf + mtd->oobsize * j + fsdata_pos); ++ if (ret || retlen != fsdata_len) { ++ DEBUG(MTD_DEBUG_LEVEL0, "%s: write_oob fsdata(%d) failed (%d)\n", ++ __func__, j, ret); ++ break; ++ } ++ } ++ if (j < nr_oobpages) ++ continue; ++ ++ break; ++ } ++ ++ kfree(block_buf); ++ kfree(oob_buf); ++ DEBUG(MTD_DEBUG_LEVEL0, ++ "%s: %d\n", __func__, (i < MAX_COPIES) ? 0 : (ret ? ret : -EIO)); ++ return (i < MAX_COPIES) ? 0 : (ret ? ret : -EIO); ++} ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_write_ecc(struct mtd_info* mtd, ++ loff_t to, ++ size_t len, ++ size_t* retlen, ++ const u_char* buf, ++ u_char* eccbuf, ++ int oobsel) ++{ ++ int i; ++ int ret; ++ ++ for (i = 0; i < MAX_WRITE_RETRIES; i++) { ++ ret = orig_write_ecc(mtd, to, len, retlen, buf, eccbuf, oobsel); ++ if (ret != -EIO){ ++ return ret; ++ } ++ ++ ret = tc6393_nand_prepare_rewrite(mtd, to, oobsel); ++ if (ret) ++ return ret; ++ } ++ return -EIO; ++} ++ ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_write(struct mtd_info* mtd, ++ loff_t to, ++ size_t len, ++ size_t* retlen, ++ const u_char* buf) ++{ ++ return tc6393_nand_write_ecc(mtd, to, len, retlen, buf, NULL, NAND_JFFS2_OOB); ++} ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_writev_ecc(struct mtd_info* mtd, ++ const struct iovec* vecs, ++ unsigned long count, ++ loff_t to, ++ size_t* retlen, ++ u_char* eccbuf, ++ int oobsel) ++{ ++ int i; ++ int ret; ++ ++ for (i = 0; i < MAX_WRITE_RETRIES; i++) { ++ ret = orig_writev_ecc(mtd, vecs, count, to, retlen, eccbuf, oobsel); ++ if (ret != -EIO) ++ return ret; ++ ++ ret = tc6393_nand_prepare_rewrite(mtd, to, oobsel); ++ if (ret) ++ return ret; ++ } ++ return -EIO; ++} ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_writev(struct mtd_info* mtd, ++ const struct iovec* vecs, ++ unsigned long count, ++ loff_t to, ++ size_t* retlen) ++{ ++ return tc6393_nand_writev_ecc(mtd, vecs, count, to, retlen, NULL, NAND_JFFS2_OOB); ++} ++ ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_write_oob(struct mtd_info* mtd, ++ loff_t to, ++ size_t len, ++ size_t* retlen, ++ const u_char* buf) ++{ ++ int i; ++ int ret; ++ ++ for (i = 0; i < MAX_WRITE_RETRIES; i++) { ++ ret = orig_write_oob(mtd, to, len, retlen, buf); ++ if (ret != -EIO) ++ return ret; ++ ++ ret = tc6393_nand_prepare_rewrite(mtd, to & ~(mtd->erasesize - 1), // JFFS2 only (JFFS2 calls write_oob only after erasing) ++ NAND_JFFS2_OOB); ++ if (ret) ++ return ret; ++ } ++ return -EIO; ++} ++ ++ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_flash_busy(void) ++{ ++ return (nandctrl->sustus & SUSTUS_BUSY) == SUSTUS_BUSY; ++} ++ ++ ++/* ++ * ++ */ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_dev_ready(void) ++{ ++ int i; ++ for (i = 0; i < 5; i++) ++ tc6393_nand_flash_busy(); ++ return ! tc6393_nand_flash_busy(); ++} ++ ++ ++/* ++ * ++ */ ++/* same as sharp_sl.c */ ++static int ++tc6393_nand_suspend(struct mtd_info* mtd) ++{ ++ int i; ++ printk("%s", __func__); ++ for (i = 0; i < nr_partitions; i++) { ++ invalidate_device(MKDEV(MTD_BLOCK_MAJOR, sharp_sl_nand_part_mtdp[i]->index), 1); ++ } ++ mtd->sync(mtd); ++ ++ printk("\n"); ++ return 0; ++} ++ ++/* ++ * ++ */ ++/* same as sharp_sl.c */ ++static void ++tc6393_nand_resume(struct mtd_info* mtd) ++{ ++ printk("%s\n", __func__); ++ tc6393_nand_hw_init(); ++} ++ ++ ++#ifdef CONFIG_MTD_NAND_ECC ++/* ++ * ++ */ ++static void ++tc6393_nand_enable_hwecc(int mode) ++{ ++ volatile unsigned char dummy_read; ++ ++ if(mode == NAND_ECC_WRITE){ ++ /* Hard_ECC Reset_Mode(Read) */ ++ nandctrl->smode = SMODE_HWECC_WRITE_RESET_ECC; ++ /* Read dummy data (1byte) */ ++ dummy_read = nandctrl->sdata.data8.sdata0; ++ /* Hard_ECC CALC_Mode(Read) */ ++ nandctrl->smode = SMODE_HWECC_WRITE_ECCCALC; ++ ++ hwecc_mode = HWECC_MODE_WRITE; ++ return; ++ }else{ ++ /* Hard_ECC Reset_Mode(Write) */ ++ nandctrl->smode = SMODE_HWECC_READ_RESET_ECC; ++ /* Read dummy data (1byte) */ ++ dummy_read = nandctrl->sdata.data8.sdata0; ++ /* Hard_ECC CALC_Mode(Read) */ ++ nandctrl->smode = SMODE_HWECC_READ_ECCCALC; ++ ++ hwecc_mode = HWECC_MODE_READ; ++ return; ++ } ++} ++ ++ ++/* ++ * ++ */ ++static int ++tc6393_nand_calculate_ecc(const u_char* dat, ++ u_char* ecc_code) ++{ ++ unsigned short ecc1,ecc2,ecc3; ++ ++ if(hwecc_mode == HWECC_MODE_READ){ ++ nandctrl->smode = SMODE_HWECC_READ_CALC_RESULT; ++ }else if(hwecc_mode == HWECC_MODE_WRITE){ ++ nandctrl->smode = SMODE_HWECC_WRITE_CALC_RESULT; ++ }else{ ++ printk("Unable to calcutate NAND ecc."); ++ return -EIO; ++ } ++ ++ ecc1 = nandctrl->sdata.data16.sdata0_1; ++ ecc2 = nandctrl->sdata.data16.sdata0_1; ++ ecc3 = nandctrl->sdata.data16.sdata0_1; ++ ++ ecc_code[0] = ecc1 >> 8; // 000-255 LP15-8 ++ ecc_code[1] = ecc1 >> 0; // 000-255 LP7-0 ++ ecc_code[2] = ecc2 >> 0; // 000-255 CP5-0,11b ++ ecc_code[3] = ecc3 >> 0; // 256-511 LP15-8 ++ ecc_code[4] = ecc2 >> 8; // 256-511 LP7-0 ++ ecc_code[5] = ecc3 >> 8; // 256-511 CP5-0,11b ++ ++ if(hwecc_mode == HWECC_MODE_READ){ ++ nandctrl->smode = SMODE_READ_DATAREAD; ++ }else{ ++ nandctrl->smode = SMODE_WRITE_DATAWRITE; ++ } ++ ++ hwecc_mode = HWECC_MODE_DISABLE; ++ return 0; ++} ++#endif ++ ++ ++static void tc6393_nand_hw_init(void) ++{ ++ /* (89h) SMD Buffer ON By TC6393XB SystemConfig */ ++ sysconfig->gpibfc1 = 0xff; ++ ++ /* (4Ch) CLKRUN Enable 1st */ ++ nandconfig->spcrunc = 0x81; ++ ++ /* (10h)BaseAddress 0x1000 */ ++ nandconfig->spba.spba2 = TC6393XB_NANDCTRL_OFFSET; ++ ++ /* (04h)Command Register I/O */ ++ nandconfig->spcmd = 0x02; ++ ++ /* (62h) Power Supply Control */ ++ /* HardPowerOFF - SuspendOFF - PowerSupplyWait_4MS */ ++ nandconfig->ssmpwc = 0x02; ++ ++ /* (63h) Detect Control */ ++ nandconfig->ssmdtc = 0x02; ++ ++ /* Interrupt status register clear */ ++ nandctrl->sintst = 0x0f; ++ ++ /* After power supply, Media are reset */ ++ nandctrl->smode = SMODE_POWER_ON; ++ nandctrl->smode = SMODE_READ_COMMAND; ++ nandctrl->sdata.data8.sdata0 = NAND_CMD_RESET; ++ ++ /* Stanby Mode */ ++ nandctrl->smode = SMODE_STANDBY; ++ ++ mdelay(100); ++ ++ return; ++} ++ ++/* same as sharp_sl.c */ ++#ifdef DEBUG_PROC ++DEFINE_MEASUREMENT_VAR(nand_read_page); ++DEFINE_COUNTER_VAR(nand_read_nr_pages); ++DEFINE_MEASUREMENT_VAR(nand_write_page); ++DEFINE_MEASUREMENT_VAR(nand_write_verify); ++DEFINE_COUNTER_VAR(nand_write_nr_pages); ++static int ++sharp_sl_nand_read_proc(char* buf, ++ char** start, ++ off_t offset, ++ int count, ++ int* eof, ++ void* data) ++{ ++ int len = 0; ++ PRINT_ELAPSED_TIME(nand_read_page, buf, len); ++ len += sprintf(buf + len, "nand_read_nr_pages %d\n", nand_read_nr_pages); ++ PRINT_ELAPSED_TIME(nand_write_page, buf, len); ++ PRINT_ELAPSED_TIME(nand_write_verify, buf, len); ++ len += sprintf(buf + len, "nand_write_nr_pages %d\n", nand_write_nr_pages); ++ *eof = 1; ++ return len; ++} ++ ++ ++static int sharp_sl_nand_write_proc(struct file* file, ++ const char* buffer, ++ unsigned long count, ++ void* data) ++{ ++ CLEAR_TIME_VER(nand_read_page); ++ CLEAR_TIME_VER(nand_write_page); ++ CLEAR_TIME_VER(nand_write_verify); ++ nand_read_nr_pages = 0; ++ nand_write_nr_pages = 0; ++ return count; ++} ++#endif ++ ++ ++/* ++ * Main initialization routine ++ */ ++int __init ++tc6393_nand_init (void) ++{ ++ extern int parse_cmdline_partitions(struct mtd_info *, struct mtd_partition **, ++ const char *); ++ struct nand_chip *this; ++ int i; ++ ++ //printk("**** %s:\n",__func__); ++ ++ /* Allocate memory for MTD device structure and private data */ ++ sharp_sl_mtd = kmalloc (sizeof(struct mtd_info) + sizeof (struct nand_chip), ++ GFP_KERNEL); ++ if (!sharp_sl_mtd) { ++ printk ("Unable to allocate Poodle NAND MTD device structure.\n"); ++ return -ENOMEM; ++ } ++ ++ /* Initialize NAND flash controller on TC6393XB */ ++ tc6393_nand_hw_init(); ++ ++ /* Get pointer to private data */ ++ this = (struct nand_chip *) (&sharp_sl_mtd[1]); ++ ++ /* Initialize structures */ ++ memset((char *) sharp_sl_mtd, 0, sizeof(struct mtd_info)); ++ memset((char *) this, 0, sizeof(struct nand_chip)); ++ ++ /* Link the private data with the MTD structure */ ++ sharp_sl_mtd->priv = this; ++ ++ /* ++ * PXA initialize ++ */ ++ ++ /* Set address of NAND IO lines */ ++ this->IO_ADDR_R = (unsigned long)&nandctrl->sdata.data8.sdata0; ++ this->IO_ADDR_W = (unsigned long)&nandctrl->sdata.data8.sdata0; ++ ++ /* Set address of hardware control function */ ++ this->hwcontrol = tc6393_nand_hwcontrol; ++ this->dev_ready = tc6393_nand_dev_ready; ++ this->cmdfunc = tc6393_nand_command; ++ ++ /* 15 us command delay time */ ++ this->chip_delay = 15; ++ ++ /* set eccmode using hardware ECC */ ++#ifdef CONFIG_MTD_NAND_ECC ++ this->eccmode = NAND_ECC_HW6_512; ++ this->enable_hwecc = tc6393_nand_enable_hwecc; ++ this->calculate_ecc = tc6393_nand_calculate_ecc; ++ this->correct_data = nand_correct_data; ++#endif ++ ++ /* Scan to find existence of the device */ ++ if (nand_scan (sharp_sl_mtd)) { ++ kfree (sharp_sl_mtd); ++ return -ENXIO; ++ } ++ ++#if 1 ++ sharp_sl_mtd->eccsize = this->eccsize; ++#endif ++ ++ if (this->eccmode == NAND_ECC_HW6_512 && sharp_sl_mtd->oobblock == 512) { ++ orig_read_ecc = sharp_sl_mtd->read_ecc; ++ sharp_sl_mtd->read = tc6393_nand_read; ++ sharp_sl_mtd->read_ecc = tc6393_nand_read_ecc; ++ ++ orig_write_ecc = sharp_sl_mtd->write_ecc; ++ sharp_sl_mtd->write = tc6393_nand_write; ++ sharp_sl_mtd->write_ecc = tc6393_nand_write_ecc; ++ ++ orig_writev_ecc = sharp_sl_mtd->writev_ecc; ++ sharp_sl_mtd->writev = tc6393_nand_writev; ++ sharp_sl_mtd->writev_ecc = tc6393_nand_writev_ecc; ++ ++ orig_write_oob = sharp_sl_mtd->write_oob; ++ sharp_sl_mtd->write_oob = tc6393_nand_write_oob; ++ } ++ sharp_sl_mtd->suspend = tc6393_nand_suspend; ++ sharp_sl_mtd->resume = tc6393_nand_resume; ++#ifdef CONFIG_MTD_NAND_LOGICAL_ADDRESS_ACCESS ++ sharp_sl_mtd->cleanup_laddr = sharp_sl_nand_cleanup_laddr; ++ sharp_sl_mtd->read_laddr = sharp_sl_nand_read_laddr; ++ sharp_sl_mtd->write_laddr = sharp_sl_nand_write_laddr; ++#endif ++ ++ /* Allocate memory for internal data buffer */ ++ this->data_buf = kmalloc (sizeof(u_char) * (sharp_sl_mtd->oobblock + sharp_sl_mtd->oobsize), GFP_KERNEL); ++ if (!this->data_buf) { ++ printk ("Unable to allocate NAND data buffer for Poodle.\n"); ++ kfree (sharp_sl_mtd); ++ return -ENOMEM; ++ } ++ ++ /* Allocate memory for internal data buffer */ ++ this->data_cache = kmalloc (sizeof(u_char) * (sharp_sl_mtd->oobblock + sharp_sl_mtd->oobsize), GFP_KERNEL); ++ if (!this->data_cache) { ++ printk ("Unable to allocate NAND data cache for Poodle.\n"); ++ kfree (this->data_buf); ++ kfree (sharp_sl_mtd); ++ return -ENOMEM; ++ } ++ ++ /* Register the partitions */ ++ nr_partitions = parse_cmdline_partitions(sharp_sl_mtd, ++ &sharp_sl_nand_partition_info, ++ "sharpsl-nand"); ++ if (nr_partitions <= 0) { ++ nr_partitions = DEFAULT_NUM_PARTITIONS; ++ sharp_sl_nand_partition_info = sharp_sl_nand_default_partition_info; ++ } ++ sharp_sl_nand_part_mtdp = kmalloc(sizeof (struct mtd_info*) * nr_partitions, ++ GFP_KERNEL); ++ if (! sharp_sl_nand_part_mtdp) { ++ printk("Unable to allocate memory for sharp_sl_nand_part_mtdp\n"); ++ kfree(this->data_buf); ++ kfree(this->data_cache); ++ kfree(sharp_sl_mtd); ++ return -ENOMEM; ++ } ++ for (i = 0; i < nr_partitions; i++) ++ sharp_sl_nand_partition_info[i].mtdp = &sharp_sl_nand_part_mtdp[i]; ++ add_mtd_partitions(sharp_sl_mtd, sharp_sl_nand_partition_info, nr_partitions); ++ ++ for (i = 0; i < nr_partitions; i++) ++ add_mtd_device(sharp_sl_nand_part_mtdp[i]); ++ ++#ifdef DEBUG_PROC ++ struct proc_dir_entry* res = create_proc_read_entry("mtd-debug", 0, NULL, sharp_sl_nand_read_proc, NULL); ++ res->write_proc = sharp_sl_nand_write_proc; ++#endif ++ ++ /* Return happy */ ++ return 0; ++} ++module_init(tc6393_nand_init); ++ ++/* ++ * Clean up routine ++ */ ++#ifdef MODULE ++static void __exit sharp_sl_nand_cleanup (void) ++{ ++ struct nand_chip *this = (struct nand_chip *) &sharp_sl_mtd[1]; ++ ++ /* Unregister the device */ ++ del_mtd_partitions (sharp_sl_mtd); ++ int i; ++ for (i = 0; i < NUM_PARTITIONS) ++ del_mtd_device (sharp_sl_nand_part_mtdp[i]); ++ ++ /* Free internal data buffer */ ++ kfree (this->data_buf); ++ kfree (this->data_cache); ++ kfree (this->page_cache); ++ ++ /* Free the MTD device structure */ ++ kfree (sharp_sl_nand_part_mtdp); ++ if (sharp_sl_nand_partition_info != sharp_sl_nand_default_partition_info) ++ kfree (sharp_sl_nand_partition_info); ++ kfree (sharp_sl_mtd); ++} ++module_exit(sharp_sl_nand_cleanup); ++#endif ++ ++MODULE_LICENSE("GPL"); ++MODULE_AUTHOR("SHARP, Inc."); ++MODULE_DESCRIPTION("Board-specific glue layer for NAND flash on Tosa"); +diff -Nur linux_c860_org/drivers/net/Config.in linux/drivers/net/Config.in +--- linux_c860_org/drivers/net/Config.in 2002-08-26 15:00:07.000000000 +0900 ++++ linux/drivers/net/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -280,6 +280,7 @@ + dep_tristate ' PPP support for sync tty ports' CONFIG_PPP_SYNC_TTY $CONFIG_PPP + dep_tristate ' PPP Deflate compression' CONFIG_PPP_DEFLATE $CONFIG_PPP + dep_tristate ' PPP BSD-Compress compression' CONFIG_PPP_BSDCOMP $CONFIG_PPP ++ dep_tristate ' Microsoft PPP encryption (MPPE)' CONFIG_PPP_MPPE $CONFIG_PPP + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then + dep_tristate ' PPP over Ethernet (EXPERIMENTAL)' CONFIG_PPPOE $CONFIG_PPP + fi +diff -Nur linux_c860_org/drivers/net/Makefile linux/drivers/net/Makefile +--- linux_c860_org/drivers/net/Makefile 2002-08-26 14:43:55.000000000 +0900 ++++ linux/drivers/net/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -137,6 +137,14 @@ + obj-$(CONFIG_PPP_BSDCOMP) += bsd_comp.o + obj-$(CONFIG_PPPOE) += pppox.o pppoe.o + ++ifeq ($(CONFIG_PPP_MPPE),y) ++ obj-y += ppp_mppe.o ++else ++ ifeq ($(CONFIG_PPP_MPPE),m) ++ obj-m += ppp_mppe.o ++ endif ++endif ++ + obj-$(CONFIG_SLIP) += slip.o + ifeq ($(CONFIG_SLIP_COMPRESSED),y) + obj-$(CONFIG_SLIP) += slhc.o +diff -Nur linux_c860_org/drivers/net/md32_common.h linux/drivers/net/md32_common.h +--- linux_c860_org/drivers/net/md32_common.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/md32_common.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,607 @@ ++/* crypto/md32_common.h */ ++/* ==================================================================== ++ * Copyright (c) 1999 The OpenSSL Project. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. 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. ++ * ++ * 3. All advertising materials mentioning features or use of this ++ * software must display the following acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" ++ * ++ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. For written permission, please contact ++ * licensing@OpenSSL.org. ++ * ++ * 5. Products derived from this software may not be called "OpenSSL" ++ * nor may "OpenSSL" appear in their names without prior written ++ * permission of the OpenSSL Project. ++ * ++ * 6. Redistributions of any form whatsoever must retain the following ++ * acknowledgment: ++ * "This product includes software developed by the OpenSSL Project ++ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY ++ * EXPRESSED 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 OpenSSL PROJECT OR ++ * ITS 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. ++ * ==================================================================== ++ * ++ * This product includes cryptographic software written by Eric Young ++ * (eay@cryptsoft.com). This product includes software written by Tim ++ * Hudson (tjh@cryptsoft.com). ++ * ++ */ ++ ++/* ++ * This is a generic 32 bit "collector" for message digest algorithms. ++ * Whenever needed it collects input character stream into chunks of ++ * 32 bit values and invokes a block function that performs actual hash ++ * calculations. ++ * ++ * Porting guide. ++ * ++ * Obligatory macros: ++ * ++ * DATA_ORDER_IS_BIG_ENDIAN or DATA_ORDER_IS_LITTLE_ENDIAN ++ * this macro defines byte order of input stream. ++ * HASH_CBLOCK ++ * size of a unit chunk HASH_BLOCK operates on. ++ * HASH_LONG ++ * has to be at lest 32 bit wide, if it's wider, then ++ * HASH_LONG_LOG2 *has to* be defined along ++ * HASH_CTX ++ * context structure that at least contains following ++ * members: ++ * typedef struct { ++ * ... ++ * HASH_LONG Nl,Nh; ++ * HASH_LONG data[HASH_LBLOCK]; ++ * int num; ++ * ... ++ * } HASH_CTX; ++ * HASH_UPDATE ++ * name of "Update" function, implemented here. ++ * HASH_TRANSFORM ++ * name of "Transform" function, implemented here. ++ * HASH_FINAL ++ * name of "Final" function, implemented here. ++ * HASH_BLOCK_HOST_ORDER ++ * name of "block" function treating *aligned* input message ++ * in host byte order, implemented externally. ++ * HASH_BLOCK_DATA_ORDER ++ * name of "block" function treating *unaligned* input message ++ * in original (data) byte order, implemented externally (it ++ * actually is optional if data and host are of the same ++ * "endianess"). ++ * HASH_MAKE_STRING ++ * macro convering context variables to an ASCII hash string. ++ * ++ * Optional macros: ++ * ++ * B_ENDIAN or L_ENDIAN ++ * defines host byte-order. ++ * HASH_LONG_LOG2 ++ * defaults to 2 if not states otherwise. ++ * HASH_LBLOCK ++ * assumed to be HASH_CBLOCK/4 if not stated otherwise. ++ * HASH_BLOCK_DATA_ORDER_ALIGNED ++ * alternative "block" function capable of treating ++ * aligned input message in original (data) order, ++ * implemented externally. ++ * ++ * MD5 example: ++ * ++ * #define DATA_ORDER_IS_LITTLE_ENDIAN ++ * ++ * #define HASH_LONG MD5_LONG ++ * #define HASH_LONG_LOG2 MD5_LONG_LOG2 ++ * #define HASH_CTX MD5_CTX ++ * #define HASH_CBLOCK MD5_CBLOCK ++ * #define HASH_LBLOCK MD5_LBLOCK ++ * #define HASH_UPDATE MD5_Update ++ * #define HASH_TRANSFORM MD5_Transform ++ * #define HASH_FINAL MD5_Final ++ * #define HASH_BLOCK_HOST_ORDER md5_block_host_order ++ * #define HASH_BLOCK_DATA_ORDER md5_block_data_order ++ * ++ * <appro@fy.chalmers.se> ++ */ ++ ++#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) ++#error "DATA_ORDER must be defined!" ++#endif ++ ++#ifndef HASH_CBLOCK ++#error "HASH_CBLOCK must be defined!" ++#endif ++#ifndef HASH_LONG ++#error "HASH_LONG must be defined!" ++#endif ++#ifndef HASH_CTX ++#error "HASH_CTX must be defined!" ++#endif ++ ++#ifndef HASH_UPDATE ++#error "HASH_UPDATE must be defined!" ++#endif ++#ifndef HASH_TRANSFORM ++#error "HASH_TRANSFORM must be defined!" ++#endif ++#ifndef HASH_FINAL ++#error "HASH_FINAL must be defined!" ++#endif ++ ++#ifndef HASH_BLOCK_HOST_ORDER ++#error "HASH_BLOCK_HOST_ORDER must be defined!" ++#endif ++ ++#if 0 ++/* ++ * Moved below as it's required only if HASH_BLOCK_DATA_ORDER_ALIGNED ++ * isn't defined. ++ */ ++#ifndef HASH_BLOCK_DATA_ORDER ++#error "HASH_BLOCK_DATA_ORDER must be defined!" ++#endif ++#endif ++ ++#ifndef HASH_LBLOCK ++#define HASH_LBLOCK (HASH_CBLOCK/4) ++#endif ++ ++#ifndef HASH_LONG_LOG2 ++#define HASH_LONG_LOG2 2 ++#endif ++ ++/* ++ * Engage compiler specific rotate intrinsic function if available. ++ */ ++#undef ROTATE ++#ifndef PEDANTIC ++# if defined(_MSC_VER) ++# define ROTATE(a,n) _lrotl(a,n) ++# elif defined(__MWERKS__) ++# if defined(__POWERPC__) ++# define ROTATE(a,n) __rlwinm(a,n,0,31) ++# elif defined(__MC68K__) ++ /* Motorola specific tweak. <appro@fy.chalmers.se> */ ++# define ROTATE(a,n) ( n<24 ? __rol(a,n) : __ror(a,32-n) ) ++# else ++# define ROTATE(a,n) __rol(a,n) ++# endif ++# elif defined(__GNUC__) && __GNUC__>=2 && !defined(NO_ASM) && !defined(NO_INLINE_ASM) ++ /* ++ * Some GNU C inline assembler templates. Note that these are ++ * rotates by *constant* number of bits! But that's exactly ++ * what we need here... ++ * ++ * <appro@fy.chalmers.se> ++ */ ++# if defined(__i386) ++# define ROTATE(a,n) ({ register unsigned int ret; \ ++ asm ( \ ++ "roll %1,%0" \ ++ : "=r"(ret) \ ++ : "I"(n), "0"(a) \ ++ : "cc"); \ ++ ret; \ ++ }) ++# elif defined(__powerpc) || defined(__ppc) ++# define ROTATE(a,n) ({ register unsigned int ret; \ ++ asm ( \ ++ "rlwinm %0,%1,%2,0,31" \ ++ : "=r"(ret) \ ++ : "r"(a), "I"(n)); \ ++ ret; \ ++ }) ++# endif ++# endif ++ ++/* ++ * Engage compiler specific "fetch in reverse byte order" ++ * intrinsic function if available. ++ */ ++# if defined(__GNUC__) && __GNUC__>=2 && !defined(NO_ASM) && !defined(NO_INLINE_ASM) ++ /* some GNU C inline assembler templates by <appro@fy.chalmers.se> */ ++# if defined(__i386) && !defined(I386_ONLY) ++# define BE_FETCH32(a) ({ register unsigned int l=(a);\ ++ asm ( \ ++ "bswapl %0" \ ++ : "=r"(l) : "0"(l)); \ ++ l; \ ++ }) ++# elif defined(__powerpc) ++# define LE_FETCH32(a) ({ register unsigned int l; \ ++ asm ( \ ++ "lwbrx %0,0,%1" \ ++ : "=r"(l) \ ++ : "r"(a)); \ ++ l; \ ++ }) ++ ++# elif defined(__sparc) && defined(ULTRASPARC) ++# define LE_FETCH32(a) ({ register unsigned int l; \ ++ asm ( \ ++ "lda [%1]#ASI_PRIMARY_LITTLE,%0"\ ++ : "=r"(l) \ ++ : "r"(a)); \ ++ l; \ ++ }) ++# endif ++# endif ++#endif /* PEDANTIC */ ++ ++#if HASH_LONG_LOG2==2 /* Engage only if sizeof(HASH_LONG)== 4 */ ++/* A nice byte order reversal from Wei Dai <weidai@eskimo.com> */ ++#ifdef ROTATE ++/* 5 instructions with rotate instruction, else 9 */ ++#define REVERSE_FETCH32(a,l) ( \ ++ l=*(const HASH_LONG *)(a), \ ++ ((ROTATE(l,8)&0x00FF00FF)|(ROTATE((l&0x00FF00FF),24))) \ ++ ) ++#else ++/* 6 instructions with rotate instruction, else 8 */ ++#define REVERSE_FETCH32(a,l) ( \ ++ l=*(const HASH_LONG *)(a), \ ++ l=(((l>>8)&0x00FF00FF)|((l&0x00FF00FF)<<8)), \ ++ ROTATE(l,16) \ ++ ) ++/* ++ * Originally the middle line started with l=(((l&0xFF00FF00)>>8)|... ++ * It's rewritten as above for two reasons: ++ * - RISCs aren't good at long constants and have to explicitely ++ * compose 'em with several (well, usually 2) instructions in a ++ * register before performing the actual operation and (as you ++ * already realized:-) having same constant should inspire the ++ * compiler to permanently allocate the only register for it; ++ * - most modern CPUs have two ALUs, but usually only one has ++ * circuitry for shifts:-( this minor tweak inspires compiler ++ * to schedule shift instructions in a better way... ++ * ++ * <appro@fy.chalmers.se> ++ */ ++#endif ++#endif ++ ++#ifndef ROTATE ++#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) ++#endif ++ ++/* ++ * Make some obvious choices. E.g., HASH_BLOCK_DATA_ORDER_ALIGNED ++ * and HASH_BLOCK_HOST_ORDER ought to be the same if input data ++ * and host are of the same "endianess". It's possible to mask ++ * this with blank #define HASH_BLOCK_DATA_ORDER though... ++ * ++ * <appro@fy.chalmers.se> ++ */ ++#if defined(B_ENDIAN) ++# if defined(DATA_ORDER_IS_BIG_ENDIAN) ++# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2 ++# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER ++# endif ++# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) ++# ifndef HOST_FETCH32 ++# ifdef LE_FETCH32 ++# define HOST_FETCH32(p,l) LE_FETCH32(p) ++# elif defined(REVERSE_FETCH32) ++# define HOST_FETCH32(p,l) REVERSE_FETCH32(p,l) ++# endif ++# endif ++# endif ++#elif defined(L_ENDIAN) ++# if defined(DATA_ORDER_IS_LITTLE_ENDIAN) ++# if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) && HASH_LONG_LOG2==2 ++# define HASH_BLOCK_DATA_ORDER_ALIGNED HASH_BLOCK_HOST_ORDER ++# endif ++# elif defined(DATA_ORDER_IS_BIG_ENDIAN) ++# ifndef HOST_FETCH32 ++# ifdef BE_FETCH32 ++# define HOST_FETCH32(p,l) BE_FETCH32(p) ++# elif defined(REVERSE_FETCH32) ++# define HOST_FETCH32(p,l) REVERSE_FETCH32(p,l) ++# endif ++# endif ++# endif ++#endif ++ ++#if !defined(HASH_BLOCK_DATA_ORDER_ALIGNED) ++#ifndef HASH_BLOCK_DATA_ORDER ++#error "HASH_BLOCK_DATA_ORDER must be defined!" ++#endif ++#endif ++ ++#if defined(DATA_ORDER_IS_BIG_ENDIAN) ++ ++#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ ++ l|=(((unsigned long)(*((c)++)))<<16), \ ++ l|=(((unsigned long)(*((c)++)))<< 8), \ ++ l|=(((unsigned long)(*((c)++))) ), \ ++ l) ++#define HOST_p_c2l(c,l,n) { \ ++ switch (n) { \ ++ case 0: l =((unsigned long)(*((c)++)))<<24; \ ++ case 1: l|=((unsigned long)(*((c)++)))<<16; \ ++ case 2: l|=((unsigned long)(*((c)++)))<< 8; \ ++ case 3: l|=((unsigned long)(*((c)++))); \ ++ } } ++#define HOST_p_c2l_p(c,l,sc,len) { \ ++ switch (sc) { \ ++ case 0: l =((unsigned long)(*((c)++)))<<24; \ ++ if (--len == 0) break; \ ++ case 1: l|=((unsigned long)(*((c)++)))<<16; \ ++ if (--len == 0) break; \ ++ case 2: l|=((unsigned long)(*((c)++)))<< 8; \ ++ } } ++/* NOTE the pointer is not incremented at the end of this */ ++#define HOST_c2l_p(c,l,n) { \ ++ l=0; (c)+=n; \ ++ switch (n) { \ ++ case 3: l =((unsigned long)(*(--(c))))<< 8; \ ++ case 2: l|=((unsigned long)(*(--(c))))<<16; \ ++ case 1: l|=((unsigned long)(*(--(c))))<<24; \ ++ } } ++#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ ++ *((c)++)=(unsigned char)(((l) )&0xff), \ ++ l) ++ ++#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) ++ ++#define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ ++ l|=(((unsigned long)(*((c)++)))<< 8), \ ++ l|=(((unsigned long)(*((c)++)))<<16), \ ++ l|=(((unsigned long)(*((c)++)))<<24), \ ++ l) ++#define HOST_p_c2l(c,l,n) { \ ++ switch (n) { \ ++ case 0: l =((unsigned long)(*((c)++))); \ ++ case 1: l|=((unsigned long)(*((c)++)))<< 8; \ ++ case 2: l|=((unsigned long)(*((c)++)))<<16; \ ++ case 3: l|=((unsigned long)(*((c)++)))<<24; \ ++ } } ++#define HOST_p_c2l_p(c,l,sc,len) { \ ++ switch (sc) { \ ++ case 0: l =((unsigned long)(*((c)++))); \ ++ if (--len == 0) break; \ ++ case 1: l|=((unsigned long)(*((c)++)))<< 8; \ ++ if (--len == 0) break; \ ++ case 2: l|=((unsigned long)(*((c)++)))<<16; \ ++ } } ++/* NOTE the pointer is not incremented at the end of this */ ++#define HOST_c2l_p(c,l,n) { \ ++ l=0; (c)+=n; \ ++ switch (n) { \ ++ case 3: l =((unsigned long)(*(--(c))))<<16; \ ++ case 2: l|=((unsigned long)(*(--(c))))<< 8; \ ++ case 1: l|=((unsigned long)(*(--(c)))); \ ++ } } ++#define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ ++ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ ++ *((c)++)=(unsigned char)(((l)>>24)&0xff), \ ++ l) ++ ++#endif ++ ++/* ++ * Time for some action:-) ++ */ ++ ++void HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len) ++ { ++ const unsigned char *data=data_; ++ register HASH_LONG * p; ++ register unsigned long l; ++ int sw,sc,ew,ec; ++ ++ if (len==0) return; ++ ++ l=(c->Nl+(len<<3))&0xffffffffL; ++ /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to ++ * Wei Dai <weidai@eskimo.com> for pointing it out. */ ++ if (l < c->Nl) /* overflow */ ++ c->Nh++; ++ c->Nh+=(len>>29); ++ c->Nl=l; ++ ++ if (c->num != 0) ++ { ++ p=c->data; ++ sw=c->num>>2; ++ sc=c->num&0x03; ++ ++ if ((c->num+len) >= HASH_CBLOCK) ++ { ++ l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l; ++ for (; sw<HASH_LBLOCK; sw++) ++ { ++ HOST_c2l(data,l); p[sw]=l; ++ } ++ HASH_BLOCK_HOST_ORDER (c,p,1); ++ len-=(HASH_CBLOCK-c->num); ++ c->num=0; ++ /* drop through and do the rest */ ++ } ++ else ++ { ++ c->num+=len; ++ if ((sc+len) < 4) /* ugly, add char's to a word */ ++ { ++ l=p[sw]; HOST_p_c2l_p(data,l,sc,len); p[sw]=l; ++ } ++ else ++ { ++ ew=(c->num>>2); ++ ec=(c->num&0x03); ++ l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l; ++ for (; sw < ew; sw++) ++ { ++ HOST_c2l(data,l); p[sw]=l; ++ } ++ if (ec) ++ { ++ HOST_c2l_p(data,l,ec); p[sw]=l; ++ } ++ } ++ return; ++ } ++ } ++ ++ sw=len/HASH_CBLOCK; ++ if (sw > 0) ++ { ++#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED) ++ /* ++ * Note that HASH_BLOCK_DATA_ORDER_ALIGNED gets defined ++ * only if sizeof(HASH_LONG)==4. ++ */ ++ if ((((unsigned long)data)%4) == 0) ++ { ++ /* data is properly aligned so that we can cast it: */ ++ HASH_BLOCK_DATA_ORDER_ALIGNED (c,(HASH_LONG *)data,sw); ++ sw*=HASH_CBLOCK; ++ data+=sw; ++ len-=sw; ++ } ++ else ++#if !defined(HASH_BLOCK_DATA_ORDER) ++ while (sw--) ++ { ++ memcpy (p=c->data,data,HASH_CBLOCK); ++ HASH_BLOCK_DATA_ORDER_ALIGNED(c,p,1); ++ data+=HASH_CBLOCK; ++ len-=HASH_CBLOCK; ++ } ++#endif ++#endif ++#if defined(HASH_BLOCK_DATA_ORDER) ++ { ++ HASH_BLOCK_DATA_ORDER(c,data,sw); ++ sw*=HASH_CBLOCK; ++ data+=sw; ++ len-=sw; ++ } ++#endif ++ } ++ ++ if (len!=0) ++ { ++ p = c->data; ++ c->num = len; ++ ew=len>>2; /* words to copy */ ++ ec=len&0x03; ++ for (; ew; ew--,p++) ++ { ++ HOST_c2l(data,l); *p=l; ++ } ++ HOST_c2l_p(data,l,ec); ++ *p=l; ++ } ++ } ++ ++ ++void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data) ++ { ++#if defined(HASH_BLOCK_DATA_ORDER_ALIGNED) ++ if ((((unsigned long)data)%4) == 0) ++ /* data is properly aligned so that we can cast it: */ ++ HASH_BLOCK_DATA_ORDER_ALIGNED (c,(HASH_LONG *)data,1); ++ else ++#if !defined(HASH_BLOCK_DATA_ORDER) ++ { ++ memcpy (c->data,data,HASH_CBLOCK); ++ HASH_BLOCK_DATA_ORDER_ALIGNED (c,c->data,1); ++ } ++#endif ++#endif ++#if defined(HASH_BLOCK_DATA_ORDER) ++ HASH_BLOCK_DATA_ORDER (c,data,1); ++#endif ++ } ++ ++ ++void HASH_FINAL (unsigned char *md, HASH_CTX *c) ++ { ++ register HASH_LONG *p; ++ register unsigned long l; ++ register int i,j; ++ static const unsigned char end[4]={0x80,0x00,0x00,0x00}; ++ const unsigned char *cp=end; ++ ++ /* c->num should definitly have room for at least one more byte. */ ++ p=c->data; ++ i=c->num>>2; ++ j=c->num&0x03; ++ ++#if 0 ++ /* purify often complains about the following line as an ++ * Uninitialized Memory Read. While this can be true, the ++ * following p_c2l macro will reset l when that case is true. ++ * This is because j&0x03 contains the number of 'valid' bytes ++ * already in p[i]. If and only if j&0x03 == 0, the UMR will ++ * occur but this is also the only time p_c2l will do ++ * l= *(cp++) instead of l|= *(cp++) ++ * Many thanks to Alex Tang <altitude@cic.net> for pickup this ++ * 'potential bug' */ ++#ifdef PURIFY ++ if (j==0) p[i]=0; /* Yeah, but that's not the way to fix it:-) */ ++#endif ++ l=p[i]; ++#else ++ l = (j==0) ? 0 : p[i]; ++#endif ++ HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */ ++ ++ if (i>(HASH_LBLOCK-2)) /* save room for Nl and Nh */ ++ { ++ if (i<HASH_LBLOCK) p[i]=0; ++ HASH_BLOCK_HOST_ORDER (c,p,1); ++ i=0; ++ } ++ for (; i<(HASH_LBLOCK-2); i++) ++ p[i]=0; ++ ++#if defined(DATA_ORDER_IS_BIG_ENDIAN) ++ p[HASH_LBLOCK-2]=c->Nh; ++ p[HASH_LBLOCK-1]=c->Nl; ++#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) ++ p[HASH_LBLOCK-2]=c->Nl; ++ p[HASH_LBLOCK-1]=c->Nh; ++#endif ++ HASH_BLOCK_HOST_ORDER (c,p,1); ++ ++#ifndef HASH_MAKE_STRING ++#error "HASH_MAKE_STRING must be defined!" ++#else ++ HASH_MAKE_STRING(c,md); ++#endif ++ ++ c->num=0; ++ /* clear stuff, HASH_BLOCK may be leaving some stuff on the stack ++ * but I'm not worried :-) ++ memset((void *)c,0,sizeof(HASH_CTX)); ++ */ ++ } +diff -Nur linux_c860_org/drivers/net/mppe.h linux/drivers/net/mppe.h +--- linux_c860_org/drivers/net/mppe.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/mppe.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,46 @@ ++#ifndef MPPE_H ++#define MPPE_H ++ ++typedef struct mppe_state { ++ int us_unit; /* Interface unit number */ ++ u_char us_id; /* Current id */ ++ u_char us_allowed; ++ int us_type; ++ char *us_number; /* Telefone Number */ ++} mppe_state; ++ ++ ++extern struct protent mppe_protent; ++ ++#define MPPE_CONFOPTION 18 ++#define MPPC 0x01 ++#define MPPE_40BIT 0x20 ++#define MPPE_128BIT 0x40 ++ ++#define PPP_MPPE 0x00FD ++#define PPP_MPPC PPP_MPPE ++ ++#define MPPE_BIT_A 0x80 ++#define MPPE_BIT_B 0x40 ++#define MPPE_BIT_C 0x20 ++#define MPPE_BIT_D 0x10 ++#define MPPE_BIT_FLUSHED MPPE_BIT_A ++#define MPPE_BIT_ENCRYPTED MPPE_BIT_D ++#define MPPE_CCOUNT 0x0FFF ++ ++#define MPPC_BIT_RESET MPPE_BIT_A ++#define MPPC_BIT_FLUSH MPPE_BIT_B ++#define MPPC_BIT_COMP MPPC_BIT_C ++ ++#define MPPE_40_SALT0 0xD1 ++#define MPPE_40_SALT1 0x26 ++#define MPPE_40_SALT2 0x9E ++ ++#define MPPE_MINLEN 4 ++ ++#define MPPE_REQ 1 ++#define MPPE_RESP 2 ++#define MPPE_ACK 3 ++ ++#endif ++/*==FILEVERSION 970728==*/ +diff -Nur linux_c860_org/drivers/net/ppp_generic.c linux/drivers/net/ppp_generic.c +--- linux_c860_org/drivers/net/ppp_generic.c 2002-08-29 12:25:24.000000000 +0900 ++++ linux/drivers/net/ppp_generic.c 2004-06-10 21:09:10.000000000 +0900 +@@ -1014,7 +1014,10 @@ + /* try to do packet compression */ + if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0 + && proto != PPP_LCP && proto != PPP_CCP) { +- new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len, ++ int comp_overhead = (ppp->xcomp->compress_proto == CI_MPPE) ? ++ 4 : 0; ++ new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len ++ + comp_overhead, + GFP_ATOMIC); + if (new_skb == 0) { + printk(KERN_ERR "PPP: no memory (comp pkt)\n"); +@@ -1027,7 +1030,8 @@ + /* compressor still expects A/C bytes in hdr */ + len = ppp->xcomp->compress(ppp->xc_state, skb->data - 2, + new_skb->data, skb->len + 2, +- ppp->dev->mtu + PPP_HDRLEN); ++ ppp->dev->mtu + PPP_HDRLEN + ++ comp_overhead); + if (len > 0 && (ppp->flags & SC_CCP_UP)) { + kfree_skb(skb); + skb = new_skb; +diff -Nur linux_c860_org/drivers/net/ppp_mppe.c linux/drivers/net/ppp_mppe.c +--- linux_c860_org/drivers/net/ppp_mppe.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/ppp_mppe.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,669 @@ ++/* ++ * ==FILEVERSION 9906180== ++ * ++ * ppp_mppe.c - MPPE "compressor/decompressor" module. ++ * ++ * Copyright (c) 1994 ŹŞˇrpŹ«ˇd MagosŹ«ˇnyi <mag@bunuel.tii.matav.hu> ++ * All rights reserved. ++ * Copyright (c) 1999 Tim Hockin, Cobalt Networks Inc. <thockin@cobaltnet.com> ++ * ++ * Permission to use, copy, modify, and distribute this software and its ++ * documentation is hereby granted, provided that the above copyright ++ * notice appears in all copies. This software is provided without any ++ * warranty, express or implied. The Australian National University ++ * makes no representations about the suitability of this software for ++ * any purpose. ++ * ++ * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY ++ * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ++ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF ++ * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY ++ * OF SUCH DAMAGE. ++ * ++ * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, ++ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ++ * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO ++ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, ++ * OR MODIFICATIONS. ++ * ++ * From: deflate.c,v 1.1 1996/01/18 03:17:48 paulus Exp ++ */ ++ ++#include <linux/module.h> ++#include <linux/version.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/types.h> ++#include <linux/fcntl.h> ++#include <linux/interrupt.h> ++#include <linux/ptrace.h> ++#include <linux/ioport.h> ++#include <linux/in.h> ++#include <linux/malloc.h> ++ ++#undef VERSION ++/* a nice define to generate linux version numbers */ ++#define VERSION(major,minor,patch) (((((major)<<8)+(minor))<<8)+(patch)) ++ ++#if LINUX_VERSION_CODE >= VERSION(2,1,4) ++#include <linux/vmalloc.h> ++#endif ++#include <linux/errno.h> ++#include <linux/sched.h> /* to get the struct task_struct */ ++#include <linux/string.h> /* used in new tty drivers */ ++#include <linux/signal.h> /* used in new tty drivers */ ++ ++#include <asm/system.h> ++ ++#include <linux/netdevice.h> ++#include <linux/skbuff.h> ++#include <linux/inet.h> ++#include <linux/ioctl.h> ++ ++#include <linux/ppp_defs.h> ++#include <linux/ppp-comp.h> ++#include "rc4_enc.c" ++#include "rc4_skey.c" ++#include "sha1dgst.c" ++#include "mppe.h" ++ ++/* ++ * State for a mppe "(de)compressor". ++ */ ++struct ppp_mppe_state { ++ unsigned int ccount; /*coherency count */ ++ RC4_KEY RC4_send_key; /* chap-ms-v2 dictates 2 keys */ ++ RC4_KEY RC4_recv_key; ++ unsigned char session_send_key[16]; ++ unsigned char session_recv_key[16]; ++ unsigned char master_send_key[16]; ++ unsigned char master_recv_key[16]; ++ int keylen; ++ int stateless; ++ int decomp_error; ++ unsigned int bits; ++ int unit; ++ int debug; ++ int mru; ++ struct compstat stats; ++}; ++ ++#define MPPE_CCOUNT_FROM_PACKET(ibuf) ((((ibuf)[4] & 0x0f) << 8) + (ibuf)[5]) ++#define MPPE_BITS(ibuf) ((ibuf)[4] & 0xf0 ) ++#define MPPE_CTRLHI(state) ((((state)->ccount & 0xf00)>>8)|((state)->bits)) ++#define MPPE_CTRLLO(state) ((state)->ccount & 0xff) ++ ++#define MPPE_OVHD 4 ++ ++/* Procedures from the MPPE draft */ ++ ++/* ++ * Pads used in key derivation ++ */ ++static unsigned char SHAPad1[40] = ++ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; ++static unsigned char SHAPad2[40] = ++ {0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, ++ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, ++ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, ++ 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2}; ++ ++/* ++ * SHAInit(), SHAUpdate() and SHAFinal() functions are an ++ * implementation of Secure Hash Algorithm (SHA-1) [7]. These are ++ * available in public domain or can be licensed from ++ * RSA Data Security, Inc. ++ * ++ * 1) H is 8 bytes long for 40 bit session keys. ++ * 2) H is 16 bytes long for 128 bit session keys. ++ * 3) H' is same as H when this routine is called for the first time ++ * for the session. ++ * 4) The generated key is returned in H'. This is the "current" key. ++ */ ++static void ++GetNewKeyFromSHA(StartKey, SessionKey, SessionKeyLength, InterimKey) ++ unsigned char *StartKey; ++ unsigned char *SessionKey; ++ unsigned long SessionKeyLength; ++ unsigned char *InterimKey; ++{ ++ SHA_CTX Context; ++ unsigned char Digest[SHA_DIGEST_LENGTH]; ++ ++ SHA1_Init(&Context); ++ SHA1_Update(&Context, StartKey, SessionKeyLength); ++ SHA1_Update(&Context, SHAPad1, 40); ++ SHA1_Update(&Context, SessionKey, SessionKeyLength); ++ SHA1_Update(&Context, SHAPad2, 40); ++ SHA1_Final(Digest,&Context); ++ memcpy(InterimKey, Digest, SessionKeyLength); ++} ++ ++static void ++mppe_synchronize_key(struct ppp_mppe_state *state) ++{ ++ /* get new keys and flag our state as such */ ++ RC4_set_key(&(state->RC4_send_key),state->keylen,state->session_send_key); ++ RC4_set_key(&(state->RC4_recv_key),state->keylen,state->session_recv_key); ++ ++ state->bits=MPPE_BIT_FLUSHED|MPPE_BIT_ENCRYPTED; ++} ++ ++ ++static void ++mppe_initialize_key(struct ppp_mppe_state *state) ++{ ++ /* generate new session keys */ ++ GetNewKeyFromSHA(state->master_send_key, state->master_send_key, ++ state->keylen, state->session_send_key); ++ GetNewKeyFromSHA(state->master_recv_key, state->master_recv_key, ++ state->keylen, state->session_recv_key); ++ ++ if(state->keylen == 8) { ++ /* cripple them from 64bit->40bit */ ++ state->session_send_key[0]=state->session_recv_key[0] = MPPE_40_SALT0; ++ state->session_send_key[1]=state->session_recv_key[1] = MPPE_40_SALT1; ++ state->session_send_key[2]=state->session_recv_key[2] = MPPE_40_SALT2; ++ } ++ ++ mppe_synchronize_key(state); ++} ++ ++ ++static void ++mppe_change_key(struct ppp_mppe_state *state) ++{ ++ unsigned char InterimSendKey[16]; ++ unsigned char InterimRecvKey[16]; ++ ++ /* get temp keys */ ++ GetNewKeyFromSHA(state->master_send_key, state->session_send_key, ++ state->keylen, InterimSendKey); ++ GetNewKeyFromSHA(state->master_recv_key, state->session_recv_key, ++ state->keylen, InterimRecvKey); ++ ++ /* build RC4 keys from the temp keys */ ++ RC4_set_key(&(state->RC4_send_key), state->keylen, InterimSendKey); ++ RC4_set_key(&(state->RC4_recv_key), state->keylen, InterimRecvKey); ++ ++ /* make new session keys */ ++ RC4(&(state->RC4_send_key), state->keylen, InterimSendKey, ++ state->session_send_key); ++ RC4(&(state->RC4_recv_key), state->keylen, InterimRecvKey, ++ state->session_recv_key); ++ ++ if(state->keylen == 8) ++ { ++ /* cripple them from 64->40 bits*/ ++ state->session_send_key[0]=state->session_recv_key[0] = MPPE_40_SALT0; ++ state->session_send_key[1]=state->session_recv_key[1] = MPPE_40_SALT1; ++ state->session_send_key[2]=state->session_recv_key[2] = MPPE_40_SALT2; ++ } ++ ++ /* make the final rc4 keys */ ++ RC4_set_key(&(state->RC4_send_key), state->keylen, state->session_send_key); ++ RC4_set_key(&(state->RC4_recv_key), state->keylen, state->session_recv_key); ++ ++ state->bits |= MPPE_BIT_FLUSHED; ++} ++ ++ ++#ifdef DEBUG ++/* Utility procedures to print a buffer in hex/ascii */ ++static void ++ppp_print_hex (register __u8 *out, const __u8 *in, int count) ++{ ++ register __u8 next_ch; ++ static char hex[] = "0123456789ABCDEF"; ++ ++ while (count-- > 0) { ++ next_ch = *in++; ++ *out++ = hex[(next_ch >> 4) & 0x0F]; ++ *out++ = hex[next_ch & 0x0F]; ++ ++out; ++ } ++} ++ ++ ++static void ++ppp_print_char (register __u8 *out, const __u8 *in, int count) ++{ ++ register __u8 next_ch; ++ ++ while (count-- > 0) { ++ next_ch = *in++; ++ ++ if (next_ch < 0x20 || next_ch > 0x7e) ++ *out++ = '.'; ++ else { ++ *out++ = next_ch; ++ if (next_ch == '%') /* printk/syslogd has a bug !! */ ++ *out++ = '%'; ++ } ++ } ++ *out = '\0'; ++} ++ ++ ++static void ++ppp_print_buffer (const __u8 *name, const __u8 *buf, int count) ++{ ++ __u8 line[44]; ++ ++ if (name != (__u8 *) NULL) ++ printk (KERN_DEBUG "ppp: %s, count = %d\n", name, count); ++ ++ while (count > 8) { ++ memset (line, 32, 44); ++ ppp_print_hex (line, buf, 8); ++ ppp_print_char (&line[8 * 3], buf, 8); ++ printk (KERN_DEBUG "%s\n", line); ++ count -= 8; ++ buf += 8; ++ } ++ ++ if (count > 0) { ++ memset (line, 32, 44); ++ ppp_print_hex (line, buf, count); ++ ppp_print_char (&line[8 * 3], buf, count); ++ printk (KERN_DEBUG "%s\n", line); ++ } ++} ++#endif ++ ++/* our 'compressor' proper */ ++static void *mppe_comp_alloc __P((unsigned char *, int)); ++static void mppe_comp_free __P((void *)); ++static int mppe_comp_init __P((void *, unsigned char *, ++ int, int, int, int)); ++static int mppe_decomp_init __P((void *, unsigned char *, ++ int, int, int, int, int)); ++static int mppe_compress __P((void *, unsigned char *, ++ unsigned char *, int, int)); ++static void mppe_incomp __P((void *, unsigned char *, int)); ++static int mppe_decompress __P((void *, unsigned char *, ++ int, unsigned char *, int)); ++static void mppe_comp_reset __P((void *)); ++static void mppe_comp_stats __P((void *, struct compstat *)); ++ ++ ++/* cleanup the compressor */ ++static void ++mppe_comp_free(void *arg) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg; ++ ++ if (state) { ++ kfree(state); ++ MOD_DEC_USE_COUNT; ++ } ++} ++ ++ ++/* allocate space for a compressor. */ ++static void * ++mppe_comp_alloc(unsigned char *options, int opt_len) ++{ ++ struct ppp_mppe_state *state; ++ ++ if (((2*8)+3 != opt_len && (2*16)+3 != opt_len) /* 2 keys + 3 */ ++ || options[0] != CI_MPPE || options[1] != CILEN_MPPE) { ++ printk(KERN_DEBUG "compress rejected: opt_len=%u,o[0]=%x,o[1]=%x\n", ++ opt_len,options[0],options[1]); ++ return NULL; ++ } ++ ++ state = (struct ppp_mppe_state *)kmalloc(sizeof(*state), GFP_KERNEL); ++ if (state == NULL) ++ return NULL; ++ ++ MOD_INC_USE_COUNT; ++ ++ memset (state, 0, sizeof (struct ppp_mppe_state)); ++ ++ /* write the data in options to the right places */ ++ memcpy(&state->stateless,options+2,1); ++ ++ state->keylen = (opt_len-3)/2; ++ memcpy(state->master_send_key,options+3,state->keylen); ++ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen); ++ ++ mppe_initialize_key(state); ++ ++ return (void *) state; ++} ++ ++ ++static int ++mppe_comp_init(void *arg, unsigned char *options, int opt_len, int unit, ++ int hdrlen, int debug) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ ++ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE) { ++ printk(KERN_DEBUG "compress rejected: opt_len=%u,o[0]=%x,o[1]=%x\n", ++ opt_len,options[0],options[1]); ++ return 0; ++ } ++ ++ state->ccount = 0; ++ state->unit = unit; ++ state->debug = debug; ++ ++ /* 19 is the min (2*keylen) + 3 */ ++ if(opt_len >= 19) { ++ memcpy(&state->stateless,options+2,1); ++ ++ state->keylen = (opt_len-3)/2; ++ memcpy(state->master_send_key,options+3,state->keylen); ++ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen); ++ ++ mppe_initialize_key(state); ++ } ++ ++ return 1; ++} ++ ++ ++static int ++mppe_decomp_init(void *arg, unsigned char *options, int opt_len, int unit, ++ int hdrlen, int mru, int debug) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ ++ if (options[0] != CI_MPPE || options[1] != CILEN_MPPE) { ++ printk(KERN_DEBUG"options are bad: %x %x\n",options[0],options[1]); ++ return 0; ++ } ++ ++ state->ccount = 0; ++ state->unit = unit; ++ state->debug = debug; ++ state->mru = mru; ++ ++ /* 19 is the min (2*keylen)+3 */ ++ if(opt_len >= 19) { ++ memcpy(&state->stateless,options+2,1); ++ ++ state->keylen = (opt_len-3)/2; ++ memcpy(state->master_send_key,options+3,state->keylen); ++ memcpy(state->master_recv_key,options+3+state->keylen,state->keylen); ++ ++ mppe_initialize_key(state); ++ } ++ ++ return 1; ++} ++ ++ ++static void ++mppe_comp_reset(void *arg) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ ++ printk(KERN_DEBUG "mppe_comp_reset\n"); ++ ++ (state->stats).in_count = 0; ++ (state->stats).bytes_out = 0; ++ (state->stats).ratio = 0; ++ ++ mppe_synchronize_key(state); ++} ++ ++ ++static void ++mppe_update_count(struct ppp_mppe_state *state) ++{ ++ if(!state->stateless) ++ { ++ if ( 0xff == (state->ccount&0xff)){ ++ /* time to change keys */ ++ if ( 0xfff == (state->ccount&0xfff)){ ++ state->ccount = 0; ++ } else { ++ (state->ccount)++; ++ } ++ mppe_change_key(state); ++ } else { ++ state->ccount++; ++ } ++ } else { ++ if ( 0xFFF == (state->ccount & 0xFFF)) { ++ state->ccount = 0; ++ } else { ++ (state->ccount)++; ++ } ++ mppe_change_key(state); ++ } ++} ++ ++ ++/* the big nasty */ ++int ++mppe_compress(void *arg, unsigned char *rptr, unsigned char *obuf, ++ int isize, int osize) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *) arg; ++ int proto, olen; ++ unsigned char *wptr; ++ ++#ifdef DEBUG ++ ppp_print_buffer("mppe_encrypt",rptr,isize); ++#endif ++ ++ if(osize < isize+MPPE_OVHD) { ++ printk(KERN_DEBUG "Not enough space to encrypt packet: %d<%d+%d!\n", ++ isize, osize, MPPE_OVHD); ++ return 0; ++ } ++ ++ /* Check that the protocol is in the range we handle. */ ++ proto = PPP_PROTOCOL(rptr); ++ if (proto < 0x0021 || proto > 0x00FA ) ++ return 0; ++ ++ wptr = obuf; ++ ++ /* Copy over the PPP header and store the 2-byte sequence number. */ ++ wptr[0] = PPP_ADDRESS(rptr); ++ wptr[1] = PPP_CONTROL(rptr); ++ wptr[2] = PPP_MPPE >>8; ++ wptr[3] = PPP_MPPE; ++ wptr += PPP_HDRLEN; ++ wptr[0] = MPPE_CTRLHI(state); ++ wptr[1] = MPPE_CTRLLO(state); ++ wptr += 2; ++ ++ state->bits=MPPE_BIT_ENCRYPTED; ++ mppe_update_count(state); ++ ++ /* read from rptr, write to wptr adjust for PPP_HDRLEN */ ++ RC4(&(state->RC4_send_key),isize-2,rptr+2,wptr); ++ olen=isize+MPPE_OVHD; ++ ++ (state->stats).comp_bytes += isize; ++ (state->stats).comp_packets++; ++ ++#ifdef DEBUG ++ ppp_print_buffer("mppe_encrypt out",obuf,olen); ++#endif ++ ++ return olen; ++} ++ ++ ++static void ++mppe_comp_stats(void *arg, struct compstat *stats) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ ++ /* since we don't REALLY compress at all, this should be OK */ ++ (state->stats).in_count = (state->stats).unc_bytes; ++ (state->stats).bytes_out = (state->stats).comp_bytes; ++ ++ /* this _SHOULD_ always be 1 */ ++ (state->stats).ratio = 1.0; ++// printk(" in count : %d , out bytes %d \n;",(state->stats).in_count,(state->stats).bytes_out); ++ ++ *stats = state->stats; ++ ++} ++ ++ ++/* the other big nasty */ ++int ++mppe_decompress(void *arg, unsigned char *ibuf, int isize, ++ unsigned char *obuf, int osize) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ int seq; ++ ++ if (isize <= PPP_HDRLEN + MPPE_OVHD) { ++ if (state->debug) { ++ printk(KERN_DEBUG "mppe_decompress%d: short packet (len=%d)\n", ++ state->unit, isize); ++ } ++ ++ return DECOMP_ERROR; ++ } ++ ++ /* Check the sequence number. */ ++ seq = MPPE_CCOUNT_FROM_PACKET(ibuf); ++ ++ if(!state->stateless && (MPPE_BITS(ibuf) & MPPE_BIT_FLUSHED)) { ++ state->decomp_error = 0; ++ state->ccount = seq; ++ } ++ ++ if(state->decomp_error) { ++ return DECOMP_ERROR; ++ } ++ ++ if (seq != state->ccount) { ++ if (state->debug) { ++ printk(KERN_DEBUG "mppe_decompress%d: bad seq # %d, expected %d\n", ++ state->unit, seq, state->ccount); ++ } ++ ++ while(state->ccount != seq) { ++ mppe_update_count(state); ++ } ++ ++ /* ++ * Packets with bad sequence numbers can still be decrypted ++ * successfully when stateless compression is in use. ++ */ ++ if (!state->stateless) { ++ mppe_update_count(state); ++ ++ return DECOMP_ERROR; ++ } ++ } ++ ++ /* ++ * Fill in the first part of the PPP header. The protocol field ++ * comes from the decompressed data. ++ */ ++ obuf[0] = PPP_ADDRESS(ibuf); ++ obuf[1] = PPP_CONTROL(ibuf); ++ obuf += 2; ++ ++ if(!(MPPE_BITS(ibuf) & MPPE_BIT_ENCRYPTED)) { ++ printk(KERN_DEBUG"ERROR: not an encrypted packet"); ++ mppe_synchronize_key(state); ++ return DECOMP_ERROR; ++ } else { ++ if(!state->stateless && (MPPE_BITS(ibuf) & MPPE_BIT_FLUSHED)) ++ mppe_synchronize_key(state); ++ mppe_update_count(state); ++ ++ /* decrypt - adjust for PPP_HDRLEN + MPPE_OVHD - mru should be OK */ ++ RC4(&(state->RC4_recv_key),isize-6,ibuf+6,obuf); ++ ++ (state->stats).unc_bytes += (isize-MPPE_OVHD); ++ (state->stats).unc_packets ++; ++ ++ return isize-MPPE_OVHD; ++ } ++} ++ ++ ++/* Incompressible data has arrived - add it to the history. */ ++static void ++mppe_incomp(void *arg, unsigned char *ibuf, int icnt) ++{ ++ struct ppp_mppe_state *state = (struct ppp_mppe_state *)arg; ++ ++ (state->stats).inc_bytes += icnt; ++ (state->stats).inc_packets++; ++} ++ ++/* ++ * Help for Alpha users who have problems with undefined symbols on ++ * module load ++ */ ++#ifdef ALPHA ++#include "../../arch/s390/kernel/floatlib.c" ++#endif ++ ++ ++/************************************************************* ++ * Module interface table ++ *************************************************************/ ++ ++/* These are in ppp.c */ ++extern int ppp_register_compressor (struct compressor *cp); ++extern void ppp_unregister_compressor (struct compressor *cp); ++ ++/* ++ * Procedures exported to if_ppp.c. ++ */ ++struct compressor ppp_mppe = { ++ CI_MPPE, /* compress_proto */ ++ mppe_comp_alloc, /* comp_alloc */ ++ mppe_comp_free, /* comp_free */ ++ mppe_comp_init, /* comp_init */ ++ mppe_comp_reset, /* comp_reset */ ++ mppe_compress, /* compress */ ++ mppe_comp_stats, /* comp_stat */ ++ mppe_comp_alloc, /* decomp_alloc */ ++ mppe_comp_free, /* decomp_free */ ++ mppe_decomp_init, /* decomp_init */ ++ mppe_comp_reset, /* decomp_reset */ ++ mppe_decompress, /* decompress */ ++ mppe_incomp, /* incomp */ ++ mppe_comp_stats, /* decomp_stat */ ++}; ++ ++ ++#ifdef MODULE ++/************************************************************* ++ * Module support routines ++ *************************************************************/ ++ ++int ++init_module(void) ++{ ++ int answer = ppp_register_compressor(&ppp_mppe); ++ if (answer == 0) { ++ printk(KERN_INFO "PPP MPPE compression module registered\n"); ++ } ++ return answer; ++} ++ ++ ++void ++cleanup_module(void) ++{ ++ if (MOD_IN_USE) { ++ printk (KERN_INFO "MPPE module busy, remove delayed\n"); ++ } else { ++ ppp_unregister_compressor (&ppp_mppe); ++ printk(KERN_INFO "PPP MPPE compression module unregistered\n"); ++ } ++} ++#endif /* MODULE */ +diff -Nur linux_c860_org/drivers/net/rc4_enc.c linux/drivers/net/rc4_enc.c +--- linux_c860_org/drivers/net/rc4_enc.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/rc4_enc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,315 @@ ++/* crypto/rc4/rc4_enc.c */ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#include <openssl/rc4.h> ++#include "rc4_locl.h" ++ ++/* RC4 as implemented from a posting from ++ * Newsgroups: sci.crypt ++ * From: sterndark@netcom.com (David Sterndark) ++ * Subject: RC4 Algorithm revealed. ++ * Message-ID: <sternCvKL4B.Hyy@netcom.com> ++ * Date: Wed, 14 Sep 1994 06:35:31 GMT ++ */ ++ ++void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, ++ unsigned char *outdata) ++ { ++ register RC4_INT *d; ++ register RC4_INT x,y,tx,ty; ++ int i; ++ ++ x=key->x; ++ y=key->y; ++ d=key->data; ++ ++#if defined(RC4_CHUNK) ++ /* ++ * The original reason for implementing this(*) was the fact that ++ * pre-21164a Alpha CPUs don't have byte load/store instructions ++ * and e.g. a byte store has to be done with 64-bit load, shift, ++ * and, or and finally 64-bit store. Peaking data and operating ++ * at natural word size made it possible to reduce amount of ++ * instructions as well as to perform early read-ahead without ++ * suffering from RAW (read-after-write) hazard. This resulted ++ * in ~40%(**) performance improvement on 21064 box with gcc. ++ * But it's not only Alpha users who win here:-) Thanks to the ++ * early-n-wide read-ahead this implementation also exhibits ++ * >40% speed-up on SPARC and 20-30% on 64-bit MIPS (depending ++ * on sizeof(RC4_INT)). ++ * ++ * (*) "this" means code which recognizes the case when input ++ * and output pointers appear to be aligned at natural CPU ++ * word boundary ++ * (**) i.e. according to 'apps/openssl speed rc4' benchmark, ++ * crypto/rc4/rc4speed.c exhibits almost 70% speed-up... ++ * ++ * Cavets. ++ * ++ * - RC4_CHUNK="unsigned long long" should be a #1 choice for ++ * UltraSPARC. Unfortunately gcc generates very slow code ++ * (2.5-3 times slower than one generated by Sun's WorkShop ++ * C) and therefore gcc (at least 2.95 and earlier) should ++ * always be told that RC4_CHUNK="unsigned long". ++ * ++ * <appro@fy.chalmers.se> ++ */ ++ ++# define RC4_STEP ( \ ++ x=(x+1) &0xff, \ ++ tx=d[x], \ ++ y=(tx+y)&0xff, \ ++ ty=d[y], \ ++ d[y]=tx, \ ++ d[x]=ty, \ ++ (RC4_CHUNK)d[(tx+ty)&0xff]\ ++ ) ++ ++ if ( ( ((unsigned long)indata & (sizeof(RC4_CHUNK)-1)) | ++ ((unsigned long)outdata & (sizeof(RC4_CHUNK)-1)) ) == 0 ) ++ { ++ RC4_CHUNK ichunk,otp; ++ const union { long one; char little; } is_endian = {1}; ++ ++ /* ++ * I reckon we can afford to implement both endian ++ * cases and to decide which way to take at run-time ++ * because the machine code appears to be very compact ++ * and redundant 1-2KB is perfectly tolerable (i.e. ++ * in case the compiler fails to eliminate it:-). By ++ * suggestion from Terrel Larson <terr@terralogic.net> ++ * who also stands for the is_endian union:-) ++ * ++ * Special notes. ++ * ++ * - is_endian is declared automatic as doing otherwise ++ * (declaring static) prevents gcc from eliminating ++ * the redundant code; ++ * - compilers (those I've tried) don't seem to have ++ * problems eliminating either the operators guarded ++ * by "if (sizeof(RC4_CHUNK)==8)" or the condition ++ * expressions themselves so I've got 'em to replace ++ * corresponding #ifdefs from the previous version; ++ * - I chose to let the redundant switch cases when ++ * sizeof(RC4_CHUNK)!=8 be (were also #ifdefed ++ * before); ++ * - in case you wonder "&(sizeof(RC4_CHUNK)*8-1)" in ++ * [LB]ESHFT guards against "shift is out of range" ++ * warnings when sizeof(RC4_CHUNK)!=8 ++ * ++ * <appro@fy.chalmers.se> ++ */ ++ if (!is_endian.little) ++ { /* BIG-ENDIAN CASE */ ++# define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1)) ++ for (;len&-sizeof(RC4_CHUNK);len-=sizeof(RC4_CHUNK)) ++ { ++ ichunk = *(RC4_CHUNK *)indata; ++ otp = RC4_STEP<<BESHFT(0); ++ otp |= RC4_STEP<<BESHFT(1); ++ otp |= RC4_STEP<<BESHFT(2); ++ otp |= RC4_STEP<<BESHFT(3); ++ if (sizeof(RC4_CHUNK)==8) ++ { ++ otp |= RC4_STEP<<BESHFT(4); ++ otp |= RC4_STEP<<BESHFT(5); ++ otp |= RC4_STEP<<BESHFT(6); ++ otp |= RC4_STEP<<BESHFT(7); ++ } ++ *(RC4_CHUNK *)outdata = otp^ichunk; ++ indata += sizeof(RC4_CHUNK); ++ outdata += sizeof(RC4_CHUNK); ++ } ++ if (len) ++ { ++ RC4_CHUNK mask=(RC4_CHUNK)-1, ochunk; ++ ++ ichunk = *(RC4_CHUNK *)indata; ++ ochunk = *(RC4_CHUNK *)outdata; ++ otp = 0; ++ i = BESHFT(0); ++ mask <<= (sizeof(RC4_CHUNK)-len)<<3; ++ switch (len&(sizeof(RC4_CHUNK)-1)) ++ { ++ case 7: otp = RC4_STEP<<i, i-=8; ++ case 6: otp |= RC4_STEP<<i, i-=8; ++ case 5: otp |= RC4_STEP<<i, i-=8; ++ case 4: otp |= RC4_STEP<<i, i-=8; ++ case 3: otp |= RC4_STEP<<i, i-=8; ++ case 2: otp |= RC4_STEP<<i, i-=8; ++ case 1: otp |= RC4_STEP<<i, i-=8; ++ case 0: ; /* ++ * it's never the case, ++ * but it has to be here ++ * for ultrix? ++ */ ++ } ++ ochunk &= ~mask; ++ ochunk |= (otp^ichunk) & mask; ++ *(RC4_CHUNK *)outdata = ochunk; ++ } ++ key->x=x; ++ key->y=y; ++ return; ++ } ++ else ++ { /* LITTLE-ENDIAN CASE */ ++# define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1)) ++ for (;len&-sizeof(RC4_CHUNK);len-=sizeof(RC4_CHUNK)) ++ { ++ ichunk = *(RC4_CHUNK *)indata; ++ otp = RC4_STEP; ++ otp |= RC4_STEP<<8; ++ otp |= RC4_STEP<<16; ++ otp |= RC4_STEP<<24; ++ if (sizeof(RC4_CHUNK)==8) ++ { ++ otp |= RC4_STEP<<LESHFT(4); ++ otp |= RC4_STEP<<LESHFT(5); ++ otp |= RC4_STEP<<LESHFT(6); ++ otp |= RC4_STEP<<LESHFT(7); ++ } ++ *(RC4_CHUNK *)outdata = otp^ichunk; ++ indata += sizeof(RC4_CHUNK); ++ outdata += sizeof(RC4_CHUNK); ++ } ++ if (len) ++ { ++ RC4_CHUNK mask=(RC4_CHUNK)-1, ochunk; ++ ++ ichunk = *(RC4_CHUNK *)indata; ++ ochunk = *(RC4_CHUNK *)outdata; ++ otp = 0; ++ i = 0; ++ mask >>= (sizeof(RC4_CHUNK)-len)<<3; ++ switch (len&(sizeof(RC4_CHUNK)-1)) ++ { ++ case 7: otp = RC4_STEP, i+=8; ++ case 6: otp |= RC4_STEP<<i, i+=8; ++ case 5: otp |= RC4_STEP<<i, i+=8; ++ case 4: otp |= RC4_STEP<<i, i+=8; ++ case 3: otp |= RC4_STEP<<i, i+=8; ++ case 2: otp |= RC4_STEP<<i, i+=8; ++ case 1: otp |= RC4_STEP<<i, i+=8; ++ case 0: ; /* ++ * it's never the case, ++ * but it has to be here ++ * for ultrix? ++ */ ++ } ++ ochunk &= ~mask; ++ ochunk |= (otp^ichunk) & mask; ++ *(RC4_CHUNK *)outdata = ochunk; ++ } ++ key->x=x; ++ key->y=y; ++ return; ++ } ++ } ++#endif ++#define LOOP(in,out) \ ++ x=((x+1)&0xff); \ ++ tx=d[x]; \ ++ y=(tx+y)&0xff; \ ++ d[x]=ty=d[y]; \ ++ d[y]=tx; \ ++ (out) = d[(tx+ty)&0xff]^ (in); ++ ++#ifndef RC4_INDEX ++#define RC4_LOOP(a,b,i) LOOP(*((a)++),*((b)++)) ++#else ++#define RC4_LOOP(a,b,i) LOOP(a[i],b[i]) ++#endif ++ ++ i=(int)(len>>3L); ++ if (i) ++ { ++ for (;;) ++ { ++ RC4_LOOP(indata,outdata,0); ++ RC4_LOOP(indata,outdata,1); ++ RC4_LOOP(indata,outdata,2); ++ RC4_LOOP(indata,outdata,3); ++ RC4_LOOP(indata,outdata,4); ++ RC4_LOOP(indata,outdata,5); ++ RC4_LOOP(indata,outdata,6); ++ RC4_LOOP(indata,outdata,7); ++#ifdef RC4_INDEX ++ indata+=8; ++ outdata+=8; ++#endif ++ if (--i == 0) break; ++ } ++ } ++ i=(int)len&0x07; ++ if (i) ++ { ++ for (;;) ++ { ++ RC4_LOOP(indata,outdata,0); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,1); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,2); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,3); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,4); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,5); if (--i == 0) break; ++ RC4_LOOP(indata,outdata,6); if (--i == 0) break; ++ } ++ } ++ key->x=x; ++ key->y=y; ++ } +diff -Nur linux_c860_org/drivers/net/rc4_locl.h linux/drivers/net/rc4_locl.h +--- linux_c860_org/drivers/net/rc4_locl.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/rc4_locl.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,4 @@ ++#ifndef HEADER_RC4_LOCL_H ++#define HEADER_RC4_LOCL_H ++#include <openssl/opensslconf.h> ++#endif +diff -Nur linux_c860_org/drivers/net/rc4_skey.c linux/drivers/net/rc4_skey.c +--- linux_c860_org/drivers/net/rc4_skey.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/rc4_skey.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,117 @@ ++/* crypto/rc4/rc4_skey.c */ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#include <openssl/rc4.h> ++#include "rc4_locl.h" ++#include <openssl/opensslv.h> ++ ++const char *RC4_version="RC4" OPENSSL_VERSION_PTEXT; ++ ++const char *RC4_options(void) ++ { ++#ifdef RC4_INDEX ++ if (sizeof(RC4_INT) == 1) ++ return("rc4(idx,char)"); ++ else ++ return("rc4(idx,int)"); ++#else ++ if (sizeof(RC4_INT) == 1) ++ return("rc4(ptr,char)"); ++ else ++ return("rc4(ptr,int)"); ++#endif ++ } ++ ++/* RC4 as implemented from a posting from ++ * Newsgroups: sci.crypt ++ * From: sterndark@netcom.com (David Sterndark) ++ * Subject: RC4 Algorithm revealed. ++ * Message-ID: <sternCvKL4B.Hyy@netcom.com> ++ * Date: Wed, 14 Sep 1994 06:35:31 GMT ++ */ ++ ++void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data) ++ { ++ register RC4_INT tmp; ++ register int id1,id2; ++ register RC4_INT *d; ++ unsigned int i; ++ ++ d= &(key->data[0]); ++ for (i=0; i<256; i++) ++ d[i]=i; ++ key->x = 0; ++ key->y = 0; ++ id1=id2=0; ++ ++#define SK_LOOP(n) { \ ++ tmp=d[(n)]; \ ++ id2 = (data[id1] + tmp + id2) & 0xff; \ ++ if (++id1 == len) id1=0; \ ++ d[(n)]=d[id2]; \ ++ d[id2]=tmp; } ++ ++ for (i=0; i < 256; i+=4) ++ { ++ SK_LOOP(i+0); ++ SK_LOOP(i+1); ++ SK_LOOP(i+2); ++ SK_LOOP(i+3); ++ } ++ } ++ +diff -Nur linux_c860_org/drivers/net/sha1dgst.c linux/drivers/net/sha1dgst.c +--- linux_c860_org/drivers/net/sha1dgst.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/sha1dgst.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,73 @@ ++/* crypto/sha/sha1dgst.c */ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#if !defined(NO_SHA1) && !defined(NO_SHA) ++ ++#undef SHA_0 ++#define SHA_1 ++ ++#include <openssl/opensslv.h> ++ ++const char *SHA1_version="SHA1" OPENSSL_VERSION_PTEXT; ++ ++/* The implementation is in ../md32_common.h */ ++ ++#include "sha_locl.h" ++ ++#endif ++ +diff -Nur linux_c860_org/drivers/net/sha_locl.h linux/drivers/net/sha_locl.h +--- linux_c860_org/drivers/net/sha_locl.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/net/sha_locl.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,473 @@ ++/* crypto/sha/sha_locl.h */ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#ifndef __KERNEL__ ++#include <stdlib.h> ++#include <string.h> ++#endif ++ ++#include <openssl/opensslconf.h> ++#include <openssl/sha.h> ++ ++#ifndef SHA_LONG_LOG2 ++#define SHA_LONG_LOG2 2 /* default to 32 bits */ ++#endif ++ ++#define DATA_ORDER_IS_BIG_ENDIAN ++ ++#define HASH_LONG SHA_LONG ++#define HASH_LONG_LOG2 SHA_LONG_LOG2 ++#define HASH_CTX SHA_CTX ++#define HASH_CBLOCK SHA_CBLOCK ++#define HASH_LBLOCK SHA_LBLOCK ++#define HASH_MAKE_STRING(c,s) do { \ ++ unsigned long ll; \ ++ ll=(c)->h0; HOST_l2c(ll,(s)); \ ++ ll=(c)->h1; HOST_l2c(ll,(s)); \ ++ ll=(c)->h2; HOST_l2c(ll,(s)); \ ++ ll=(c)->h3; HOST_l2c(ll,(s)); \ ++ ll=(c)->h4; HOST_l2c(ll,(s)); \ ++ } while (0) ++ ++#if defined(SHA_0) ++ ++# define HASH_UPDATE SHA_Update ++# define HASH_TRANSFORM SHA_Transform ++# define HASH_FINAL SHA_Final ++# define HASH_INIT SHA_Init ++# define HASH_BLOCK_HOST_ORDER sha_block_host_order ++# define HASH_BLOCK_DATA_ORDER sha_block_data_order ++# define Xupdate(a,ix,ia,ib,ic,id) (ix=(a)=(ia^ib^ic^id)) ++ ++ void sha_block_host_order (SHA_CTX *c, const void *p,int num); ++ void sha_block_data_order (SHA_CTX *c, const void *p,int num); ++ ++#elif defined(SHA_1) ++ ++# define HASH_UPDATE SHA1_Update ++# define HASH_TRANSFORM SHA1_Transform ++# define HASH_FINAL SHA1_Final ++# define HASH_INIT SHA1_Init ++# define HASH_BLOCK_HOST_ORDER sha1_block_host_order ++# define HASH_BLOCK_DATA_ORDER sha1_block_data_order ++# if defined(__MWERKS__) && defined(__MC68K__) ++ /* Metrowerks for Motorola fails otherwise:-( <appro@fy.chalmers.se> */ ++# define Xupdate(a,ix,ia,ib,ic,id) do { (a)=(ia^ib^ic^id); \ ++ ix=(a)=ROTATE((a),1); \ ++ } while (0) ++# else ++# define Xupdate(a,ix,ia,ib,ic,id) ( (a)=(ia^ib^ic^id), \ ++ ix=(a)=ROTATE((a),1) \ ++ ) ++# endif ++ ++# ifdef SHA1_ASM ++# if defined(__i386) || defined(_M_IX86) || defined(__INTEL__) ++# define sha1_block_host_order sha1_block_asm_host_order ++# define DONT_IMPLEMENT_BLOCK_HOST_ORDER ++# define sha1_block_data_order sha1_block_asm_data_order ++# define DONT_IMPLEMENT_BLOCK_DATA_ORDER ++# define HASH_BLOCK_DATA_ORDER_ALIGNED sha1_block_asm_data_order ++# endif ++# endif ++ void sha1_block_host_order (SHA_CTX *c, const void *p,int num); ++ void sha1_block_data_order (SHA_CTX *c, const void *p,int num); ++ ++#else ++# error "Either SHA_0 or SHA_1 must be defined." ++#endif ++ ++#include "md32_common.h" ++ ++#define INIT_DATA_h0 0x67452301UL ++#define INIT_DATA_h1 0xefcdab89UL ++#define INIT_DATA_h2 0x98badcfeUL ++#define INIT_DATA_h3 0x10325476UL ++#define INIT_DATA_h4 0xc3d2e1f0UL ++ ++void HASH_INIT (SHA_CTX *c) ++ { ++ c->h0=INIT_DATA_h0; ++ c->h1=INIT_DATA_h1; ++ c->h2=INIT_DATA_h2; ++ c->h3=INIT_DATA_h3; ++ c->h4=INIT_DATA_h4; ++ c->Nl=0; ++ c->Nh=0; ++ c->num=0; ++ } ++ ++#define K_00_19 0x5a827999UL ++#define K_20_39 0x6ed9eba1UL ++#define K_40_59 0x8f1bbcdcUL ++#define K_60_79 0xca62c1d6UL ++ ++/* As pointed out by Wei Dai <weidai@eskimo.com>, F() below can be ++ * simplified to the code in F_00_19. Wei attributes these optimisations ++ * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel. ++ * #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z))) ++ * I've just become aware of another tweak to be made, again from Wei Dai, ++ * in F_40_59, (x&a)|(y&a) -> (x|y)&a ++ */ ++#define F_00_19(b,c,d) ((((c) ^ (d)) & (b)) ^ (d)) ++#define F_20_39(b,c,d) ((b) ^ (c) ^ (d)) ++#define F_40_59(b,c,d) (((b) & (c)) | (((b)|(c)) & (d))) ++#define F_60_79(b,c,d) F_20_39(b,c,d) ++ ++#define BODY_00_15(i,a,b,c,d,e,f,xi) \ ++ (f)=xi+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#define BODY_16_19(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \ ++ Xupdate(f,xi,xa,xb,xc,xd); \ ++ (f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#define BODY_20_31(i,a,b,c,d,e,f,xi,xa,xb,xc,xd) \ ++ Xupdate(f,xi,xa,xb,xc,xd); \ ++ (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#define BODY_32_39(i,a,b,c,d,e,f,xa,xb,xc,xd) \ ++ Xupdate(f,xa,xa,xb,xc,xd); \ ++ (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#define BODY_40_59(i,a,b,c,d,e,f,xa,xb,xc,xd) \ ++ Xupdate(f,xa,xa,xb,xc,xd); \ ++ (f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#define BODY_60_79(i,a,b,c,d,e,f,xa,xb,xc,xd) \ ++ Xupdate(f,xa,xa,xb,xc,xd); \ ++ (f)=xa+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \ ++ (b)=ROTATE((b),30); ++ ++#ifdef X ++#undef X ++#endif ++#ifndef MD32_XARRAY ++ /* ++ * Originally X was an array. As it's automatic it's natural ++ * to expect RISC compiler to accomodate at least part of it in ++ * the register bank, isn't it? Unfortunately not all compilers ++ * "find" this expectation reasonable:-( On order to make such ++ * compilers generate better code I replace X[] with a bunch of ++ * X0, X1, etc. See the function body below... ++ * <appro@fy.chalmers.se> ++ */ ++# define X(i) XX##i ++#else ++ /* ++ * However! Some compilers (most notably HP C) get overwhelmed by ++ * that many local variables so that we have to have the way to ++ * fall down to the original behavior. ++ */ ++# define X(i) XX[i] ++#endif ++ ++#ifndef DONT_IMPLEMENT_BLOCK_HOST_ORDER ++void HASH_BLOCK_HOST_ORDER (SHA_CTX *c, const void *d, int num) ++ { ++ const SHA_LONG *W=d; ++ register unsigned long A,B,C,D,E,T; ++#ifndef MD32_XARRAY ++ unsigned long XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, ++ XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15; ++#else ++ SHA_LONG XX[16]; ++#endif ++ ++ A=c->h0; ++ B=c->h1; ++ C=c->h2; ++ D=c->h3; ++ E=c->h4; ++ ++ for (;;) ++ { ++ BODY_00_15( 0,A,B,C,D,E,T,W[ 0]); ++ BODY_00_15( 1,T,A,B,C,D,E,W[ 1]); ++ BODY_00_15( 2,E,T,A,B,C,D,W[ 2]); ++ BODY_00_15( 3,D,E,T,A,B,C,W[ 3]); ++ BODY_00_15( 4,C,D,E,T,A,B,W[ 4]); ++ BODY_00_15( 5,B,C,D,E,T,A,W[ 5]); ++ BODY_00_15( 6,A,B,C,D,E,T,W[ 6]); ++ BODY_00_15( 7,T,A,B,C,D,E,W[ 7]); ++ BODY_00_15( 8,E,T,A,B,C,D,W[ 8]); ++ BODY_00_15( 9,D,E,T,A,B,C,W[ 9]); ++ BODY_00_15(10,C,D,E,T,A,B,W[10]); ++ BODY_00_15(11,B,C,D,E,T,A,W[11]); ++ BODY_00_15(12,A,B,C,D,E,T,W[12]); ++ BODY_00_15(13,T,A,B,C,D,E,W[13]); ++ BODY_00_15(14,E,T,A,B,C,D,W[14]); ++ BODY_00_15(15,D,E,T,A,B,C,W[15]); ++ ++ BODY_16_19(16,C,D,E,T,A,B,X( 0),W[ 0],W[ 2],W[ 8],W[13]); ++ BODY_16_19(17,B,C,D,E,T,A,X( 1),W[ 1],W[ 3],W[ 9],W[14]); ++ BODY_16_19(18,A,B,C,D,E,T,X( 2),W[ 2],W[ 4],W[10],W[15]); ++ BODY_16_19(19,T,A,B,C,D,E,X( 3),W[ 3],W[ 5],W[11],X( 0)); ++ ++ BODY_20_31(20,E,T,A,B,C,D,X( 4),W[ 4],W[ 6],W[12],X( 1)); ++ BODY_20_31(21,D,E,T,A,B,C,X( 5),W[ 5],W[ 7],W[13],X( 2)); ++ BODY_20_31(22,C,D,E,T,A,B,X( 6),W[ 6],W[ 8],W[14],X( 3)); ++ BODY_20_31(23,B,C,D,E,T,A,X( 7),W[ 7],W[ 9],W[15],X( 4)); ++ BODY_20_31(24,A,B,C,D,E,T,X( 8),W[ 8],W[10],X( 0),X( 5)); ++ BODY_20_31(25,T,A,B,C,D,E,X( 9),W[ 9],W[11],X( 1),X( 6)); ++ BODY_20_31(26,E,T,A,B,C,D,X(10),W[10],W[12],X( 2),X( 7)); ++ BODY_20_31(27,D,E,T,A,B,C,X(11),W[11],W[13],X( 3),X( 8)); ++ BODY_20_31(28,C,D,E,T,A,B,X(12),W[12],W[14],X( 4),X( 9)); ++ BODY_20_31(29,B,C,D,E,T,A,X(13),W[13],W[15],X( 5),X(10)); ++ BODY_20_31(30,A,B,C,D,E,T,X(14),W[14],X( 0),X( 6),X(11)); ++ BODY_20_31(31,T,A,B,C,D,E,X(15),W[15],X( 1),X( 7),X(12)); ++ ++ BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13)); ++ BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14)); ++ BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15)); ++ BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0)); ++ BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1)); ++ BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2)); ++ BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3)); ++ BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4)); ++ ++ BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5)); ++ BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6)); ++ BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7)); ++ BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8)); ++ BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9)); ++ BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10)); ++ BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11)); ++ BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12)); ++ BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13)); ++ BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14)); ++ BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15)); ++ BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0)); ++ BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1)); ++ BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2)); ++ BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3)); ++ BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4)); ++ BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5)); ++ BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6)); ++ BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7)); ++ BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8)); ++ ++ BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9)); ++ BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10)); ++ BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11)); ++ BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12)); ++ BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13)); ++ BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14)); ++ BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15)); ++ BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0)); ++ BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1)); ++ BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2)); ++ BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3)); ++ BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4)); ++ BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5)); ++ BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6)); ++ BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7)); ++ BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8)); ++ BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9)); ++ BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10)); ++ BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11)); ++ BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12)); ++ ++ c->h0=(c->h0+E)&0xffffffffL; ++ c->h1=(c->h1+T)&0xffffffffL; ++ c->h2=(c->h2+A)&0xffffffffL; ++ c->h3=(c->h3+B)&0xffffffffL; ++ c->h4=(c->h4+C)&0xffffffffL; ++ ++ if (--num <= 0) break; ++ ++ A=c->h0; ++ B=c->h1; ++ C=c->h2; ++ D=c->h3; ++ E=c->h4; ++ ++ W+=SHA_LBLOCK; ++ } ++ } ++#endif ++ ++#ifndef DONT_IMPLEMENT_BLOCK_DATA_ORDER ++void HASH_BLOCK_DATA_ORDER (SHA_CTX *c, const void *p, int num) ++ { ++ const unsigned char *data=p; ++ register unsigned long A,B,C,D,E,T,l; ++#ifndef MD32_XARRAY ++ unsigned long XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, ++ XX8, XX9,XX10,XX11,XX12,XX13,XX14,XX15; ++#else ++ SHA_LONG XX[16]; ++#endif ++ ++ A=c->h0; ++ B=c->h1; ++ C=c->h2; ++ D=c->h3; ++ E=c->h4; ++ ++ for (;;) ++ { ++ ++ HOST_c2l(data,l); X( 0)=l; HOST_c2l(data,l); X( 1)=l; ++ BODY_00_15( 0,A,B,C,D,E,T,X( 0)); HOST_c2l(data,l); X( 2)=l; ++ BODY_00_15( 1,T,A,B,C,D,E,X( 1)); HOST_c2l(data,l); X( 3)=l; ++ BODY_00_15( 2,E,T,A,B,C,D,X( 2)); HOST_c2l(data,l); X( 4)=l; ++ BODY_00_15( 3,D,E,T,A,B,C,X( 3)); HOST_c2l(data,l); X( 5)=l; ++ BODY_00_15( 4,C,D,E,T,A,B,X( 4)); HOST_c2l(data,l); X( 6)=l; ++ BODY_00_15( 5,B,C,D,E,T,A,X( 5)); HOST_c2l(data,l); X( 7)=l; ++ BODY_00_15( 6,A,B,C,D,E,T,X( 6)); HOST_c2l(data,l); X( 8)=l; ++ BODY_00_15( 7,T,A,B,C,D,E,X( 7)); HOST_c2l(data,l); X( 9)=l; ++ BODY_00_15( 8,E,T,A,B,C,D,X( 8)); HOST_c2l(data,l); X(10)=l; ++ BODY_00_15( 9,D,E,T,A,B,C,X( 9)); HOST_c2l(data,l); X(11)=l; ++ BODY_00_15(10,C,D,E,T,A,B,X(10)); HOST_c2l(data,l); X(12)=l; ++ BODY_00_15(11,B,C,D,E,T,A,X(11)); HOST_c2l(data,l); X(13)=l; ++ BODY_00_15(12,A,B,C,D,E,T,X(12)); HOST_c2l(data,l); X(14)=l; ++ BODY_00_15(13,T,A,B,C,D,E,X(13)); HOST_c2l(data,l); X(15)=l; ++ BODY_00_15(14,E,T,A,B,C,D,X(14)); ++ BODY_00_15(15,D,E,T,A,B,C,X(15)); ++ ++ BODY_16_19(16,C,D,E,T,A,B,X( 0),X( 0),X( 2),X( 8),X(13)); ++ BODY_16_19(17,B,C,D,E,T,A,X( 1),X( 1),X( 3),X( 9),X(14)); ++ BODY_16_19(18,A,B,C,D,E,T,X( 2),X( 2),X( 4),X(10),X(15)); ++ BODY_16_19(19,T,A,B,C,D,E,X( 3),X( 3),X( 5),X(11),X( 0)); ++ ++ BODY_20_31(20,E,T,A,B,C,D,X( 4),X( 4),X( 6),X(12),X( 1)); ++ BODY_20_31(21,D,E,T,A,B,C,X( 5),X( 5),X( 7),X(13),X( 2)); ++ BODY_20_31(22,C,D,E,T,A,B,X( 6),X( 6),X( 8),X(14),X( 3)); ++ BODY_20_31(23,B,C,D,E,T,A,X( 7),X( 7),X( 9),X(15),X( 4)); ++ BODY_20_31(24,A,B,C,D,E,T,X( 8),X( 8),X(10),X( 0),X( 5)); ++ BODY_20_31(25,T,A,B,C,D,E,X( 9),X( 9),X(11),X( 1),X( 6)); ++ BODY_20_31(26,E,T,A,B,C,D,X(10),X(10),X(12),X( 2),X( 7)); ++ BODY_20_31(27,D,E,T,A,B,C,X(11),X(11),X(13),X( 3),X( 8)); ++ BODY_20_31(28,C,D,E,T,A,B,X(12),X(12),X(14),X( 4),X( 9)); ++ BODY_20_31(29,B,C,D,E,T,A,X(13),X(13),X(15),X( 5),X(10)); ++ BODY_20_31(30,A,B,C,D,E,T,X(14),X(14),X( 0),X( 6),X(11)); ++ BODY_20_31(31,T,A,B,C,D,E,X(15),X(15),X( 1),X( 7),X(12)); ++ ++ BODY_32_39(32,E,T,A,B,C,D,X( 0),X( 2),X( 8),X(13)); ++ BODY_32_39(33,D,E,T,A,B,C,X( 1),X( 3),X( 9),X(14)); ++ BODY_32_39(34,C,D,E,T,A,B,X( 2),X( 4),X(10),X(15)); ++ BODY_32_39(35,B,C,D,E,T,A,X( 3),X( 5),X(11),X( 0)); ++ BODY_32_39(36,A,B,C,D,E,T,X( 4),X( 6),X(12),X( 1)); ++ BODY_32_39(37,T,A,B,C,D,E,X( 5),X( 7),X(13),X( 2)); ++ BODY_32_39(38,E,T,A,B,C,D,X( 6),X( 8),X(14),X( 3)); ++ BODY_32_39(39,D,E,T,A,B,C,X( 7),X( 9),X(15),X( 4)); ++ ++ BODY_40_59(40,C,D,E,T,A,B,X( 8),X(10),X( 0),X( 5)); ++ BODY_40_59(41,B,C,D,E,T,A,X( 9),X(11),X( 1),X( 6)); ++ BODY_40_59(42,A,B,C,D,E,T,X(10),X(12),X( 2),X( 7)); ++ BODY_40_59(43,T,A,B,C,D,E,X(11),X(13),X( 3),X( 8)); ++ BODY_40_59(44,E,T,A,B,C,D,X(12),X(14),X( 4),X( 9)); ++ BODY_40_59(45,D,E,T,A,B,C,X(13),X(15),X( 5),X(10)); ++ BODY_40_59(46,C,D,E,T,A,B,X(14),X( 0),X( 6),X(11)); ++ BODY_40_59(47,B,C,D,E,T,A,X(15),X( 1),X( 7),X(12)); ++ BODY_40_59(48,A,B,C,D,E,T,X( 0),X( 2),X( 8),X(13)); ++ BODY_40_59(49,T,A,B,C,D,E,X( 1),X( 3),X( 9),X(14)); ++ BODY_40_59(50,E,T,A,B,C,D,X( 2),X( 4),X(10),X(15)); ++ BODY_40_59(51,D,E,T,A,B,C,X( 3),X( 5),X(11),X( 0)); ++ BODY_40_59(52,C,D,E,T,A,B,X( 4),X( 6),X(12),X( 1)); ++ BODY_40_59(53,B,C,D,E,T,A,X( 5),X( 7),X(13),X( 2)); ++ BODY_40_59(54,A,B,C,D,E,T,X( 6),X( 8),X(14),X( 3)); ++ BODY_40_59(55,T,A,B,C,D,E,X( 7),X( 9),X(15),X( 4)); ++ BODY_40_59(56,E,T,A,B,C,D,X( 8),X(10),X( 0),X( 5)); ++ BODY_40_59(57,D,E,T,A,B,C,X( 9),X(11),X( 1),X( 6)); ++ BODY_40_59(58,C,D,E,T,A,B,X(10),X(12),X( 2),X( 7)); ++ BODY_40_59(59,B,C,D,E,T,A,X(11),X(13),X( 3),X( 8)); ++ ++ BODY_60_79(60,A,B,C,D,E,T,X(12),X(14),X( 4),X( 9)); ++ BODY_60_79(61,T,A,B,C,D,E,X(13),X(15),X( 5),X(10)); ++ BODY_60_79(62,E,T,A,B,C,D,X(14),X( 0),X( 6),X(11)); ++ BODY_60_79(63,D,E,T,A,B,C,X(15),X( 1),X( 7),X(12)); ++ BODY_60_79(64,C,D,E,T,A,B,X( 0),X( 2),X( 8),X(13)); ++ BODY_60_79(65,B,C,D,E,T,A,X( 1),X( 3),X( 9),X(14)); ++ BODY_60_79(66,A,B,C,D,E,T,X( 2),X( 4),X(10),X(15)); ++ BODY_60_79(67,T,A,B,C,D,E,X( 3),X( 5),X(11),X( 0)); ++ BODY_60_79(68,E,T,A,B,C,D,X( 4),X( 6),X(12),X( 1)); ++ BODY_60_79(69,D,E,T,A,B,C,X( 5),X( 7),X(13),X( 2)); ++ BODY_60_79(70,C,D,E,T,A,B,X( 6),X( 8),X(14),X( 3)); ++ BODY_60_79(71,B,C,D,E,T,A,X( 7),X( 9),X(15),X( 4)); ++ BODY_60_79(72,A,B,C,D,E,T,X( 8),X(10),X( 0),X( 5)); ++ BODY_60_79(73,T,A,B,C,D,E,X( 9),X(11),X( 1),X( 6)); ++ BODY_60_79(74,E,T,A,B,C,D,X(10),X(12),X( 2),X( 7)); ++ BODY_60_79(75,D,E,T,A,B,C,X(11),X(13),X( 3),X( 8)); ++ BODY_60_79(76,C,D,E,T,A,B,X(12),X(14),X( 4),X( 9)); ++ BODY_60_79(77,B,C,D,E,T,A,X(13),X(15),X( 5),X(10)); ++ BODY_60_79(78,A,B,C,D,E,T,X(14),X( 0),X( 6),X(11)); ++ BODY_60_79(79,T,A,B,C,D,E,X(15),X( 1),X( 7),X(12)); ++ ++ c->h0=(c->h0+E)&0xffffffffL; ++ c->h1=(c->h1+T)&0xffffffffL; ++ c->h2=(c->h2+A)&0xffffffffL; ++ c->h3=(c->h3+B)&0xffffffffL; ++ c->h4=(c->h4+C)&0xffffffffL; ++ ++ if (--num <= 0) break; ++ ++ A=c->h0; ++ B=c->h1; ++ C=c->h2; ++ D=c->h3; ++ E=c->h4; ++ ++ } ++ } ++#endif +diff -Nur linux_c860_org/drivers/pcmcia/cs.c linux/drivers/pcmcia/cs.c +--- linux_c860_org/drivers/pcmcia/cs.c 2003-02-27 13:28:33.000000000 +0900 ++++ linux/drivers/pcmcia/cs.c 2004-06-10 21:09:10.000000000 +0900 +@@ -35,6 +35,8 @@ + 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 + 12-Dec-2002 Sharp Corporation for Poodle and Corgi + 07-Feb-2003 Sharp Corporation ++ 08-Jan-2004 Sharp Corporation for Tosa ++ 26-Feb-2004 Lineo Solutions, Inc. 2 slot support + + ======================================================================*/ + +@@ -73,6 +75,8 @@ + #include <asm/arch/keyboard_poodle.h> + #elif defined(CONFIG_ARCH_PXA_CORGI) + #include <asm/arch/keyboard_corgi.h> ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm/arch/keyboard_tosa.h> + #endif + #include <asm/sharp_char.h> + #include <asm/sharp_keycode.h> +@@ -124,7 +128,11 @@ + INT_MODULE_PARM(shutdown_delay, 3); /* centiseconds */ + #ifdef CONFIG_ARCH_SHARP_SL + //INT_MODULE_PARM(vcc_settle, 2); /* SL-5600@2 */ ++#if defined (CONFIG_ARCH_PXA_TOSA) ++INT_MODULE_PARM(vcc_settle, 30); /* SL-6000 */ ++#else + INT_MODULE_PARM(vcc_settle, 10); /* SL-C700+GW-CF11H@10 */ ++#endif + INT_MODULE_PARM(reset_time, 1000); + INT_MODULE_PARM(unreset_delay, 3); + INT_MODULE_PARM(unreset_check, 1); +@@ -490,6 +498,15 @@ + schedule_timeout( (n_cs * HZ + 99) / 100); + } + ++#if defined (CONFIG_ARCH_PXA_TOSA) ++static void cs_sleep2(unsigned int n_cs) ++{ ++ current->state = TASK_UNINTERRUPTIBLE; ++ schedule_timeout( (n_cs * HZ + 99) / 100); ++} ++ ++#endif ++ + static void shutdown_socket(socket_info_t *s) + { + client_t **c; +@@ -582,16 +599,45 @@ + #endif /* CONFIG_SABINAL_DISCOVERY */ + + +-#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) ++#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) || defined (CONFIG_ARCH_PXA_TOSA) + { + extern int sharpsl_main_battery; + extern int sharpsl_main_bk_flag; ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ extern int sharpsl_jacket_exist; ++ extern int sharpsl_jacket_batt_exist; ++ extern int sharpsl_jacket_battery; ++#endif + + sharpsl_kick_battery_check(0,1,1); // check battery and wait 10msec + + if ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) { + printk(KERN_ERR "cs: Main battery is critical low." + " (%d)\n", sharpsl_main_battery); ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ { ++ int do_off = 0; ++ ++ if(sharpsl_jacket_exist && sharpsl_jacket_batt_exist){ ++ if( sharpsl_jacket_battery == 0x7F || sharpsl_jacket_battery == 0x02 ){ ++ printk(KERN_ERR "cs: Jacket battery is critical low." ++ " (%d)\n", sharpsl_jacket_battery); ++ do_off = 1; ++ } ++ }else{ ++ do_off = 1; ++ } ++ if(do_off){ ++ if ( sharpsl_main_bk_flag ) { ++ handle_scancode(SLKEY_OFF|KBDOWN , 1); ++ mdelay(30); ++ handle_scancode(SLKEY_OFF|KBUP , 0); ++ } ++ ret = 0; ++ goto out; ++ } ++ } ++#else + if ( sharpsl_main_bk_flag ) { + handle_scancode(SLKEY_OFF|KBDOWN , 1); + mdelay(30); +@@ -599,6 +645,7 @@ + } + ret = 0; + goto out; ++#endif + } + } + #endif +@@ -644,17 +691,52 @@ + printk(KERN_NOTICE "cs: unsupported card type detected!\n"); + #endif + } ++ + set_socket(s, &s->socket); ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ //printk(":start %d %d\n",jiffies,vcc_settle); ++ cs_sleep2(vcc_settle); ++ //cs_sleep(vcc_settle); ++ //printk(":end %d\n",jiffies); ++#else + cs_sleep(vcc_settle); ++#endif + reset_socket(s); + +-#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) ++#if defined (CONFIG_ARCH_PXA_POODLE) || defined (CONFIG_ARCH_PXA_CORGI) || defined (CONFIG_ARCH_PXA_TOSA) + { + extern int sharpsl_main_battery; + extern int sharpsl_main_bk_flag; ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ extern int sharpsl_jacket_exist; ++ extern int sharpsl_jacket_batt_exist; ++ extern int sharpsl_jacket_battery; ++#endif + + sharpsl_kick_battery_check(0,0,1); // check battery and wait 10msec + ++#if defined (CONFIG_ARCH_PXA_TOSA) ++ if ( sharpsl_main_bk_flag && ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) ) { ++ int do_remove = 0; ++ if ( sharpsl_jacket_exist && sharpsl_jacket_batt_exist ) { ++ if( sharpsl_jacket_battery == 0x7F || sharpsl_jacket_battery == 0x02 ){ ++ do_remove = 1; ++ } ++ }else{ ++ do_remove = 1; ++ } ++ if(do_remove){ ++ s->socket.Vcc = s->socket.Vpp = 0; ++ s->state &= ~SOCKET_PRESENT; ++ set_socket(s, &s->socket); ++ cs_sleep(vcc_settle); ++ reset_socket(s); ++ send_event(s, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH); ++ ret = 0; ++ goto out; ++ } ++ } ++#else + if ( sharpsl_main_bk_flag && ( ( sharpsl_main_battery == 0x7F ) || ( sharpsl_main_battery == 0x02 ) ) ) { + s->socket.Vcc = s->socket.Vpp = 0; + s->state &= ~SOCKET_PRESENT; +@@ -665,6 +747,7 @@ + ret = 0; + goto out; + } ++#endif + } + #endif + ret = 1; +@@ -701,8 +784,8 @@ + (SOCKET_SETUP_PENDING|SOCKET_SUSPEND|SOCKET_RESET_PENDING) + + #ifdef CONFIG_ARCH_SHARP_SL +-int ide_resume_handling = 0; +-int pcmcia_resume_handling = 0; ++int ide_resume_handling[2] = { 0, 0 }; ++static int pcmcia_resume_handling = 0; + #endif + + static void unreset_socket(socket_info_t *s) +@@ -731,21 +814,21 @@ + s->state &= ~EVENT_MASK; + #ifdef CONFIG_ARCH_SHARP_SL + if (verify_cis_cache(s) != 0) { +- if (is_pcmcia_card_present(0)) +- ide_resume_handling = 2; ++ if (is_pcmcia_card_present(s->cap.pci_irq)) ++ ide_resume_handling[s->sock] = 2; + parse_events(s, SS_DETECT); + } else { + cisparse_t parse; + send_event(s, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW); + read_tuple(s->clients, CISTPL_FUNCID, &parse); + #ifdef CONFIG_IDE +- ide_resume_handling = 1; ++ ide_resume_handling[s->sock] = 1; + if (parse.funcid.func == CISTPL_FUNCID_FIXED && +- proc_ide_verify_identify() != 0) { +- ide_resume_handling = 2; ++ proc_ide_verify_identify(s->sock) != 0) { ++ ide_resume_handling[s->sock] = 2; + parse_events(s, SS_DETECT); + } else { +- ide_resume_handling = 0; ++ ide_resume_handling[s->sock] = 0; + } + #endif + /* power off serial card */ +@@ -854,7 +937,7 @@ + s->socket.flags |= SS_DEBOUNCED; + if (setup_socket(s) == 0){ + s->state &= ~SOCKET_SETUP_PENDING; +-#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) ++#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_TOSA) + /* If power-on failed in resume, then card eject. */ + if( s->state & SOCKET_SUSPEND ) + do_shutdown(s); +@@ -960,6 +1043,19 @@ + return 0; + } /* handle_pm_event */ + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++void force_cardslot_suspend( int num ) ++{ ++ int i; ++ socket_info_t *s; ++ s = socket_table [num]; ++ if (s && !s->use_bus_pm) { ++ //pcmcia_suspend_socket (socket_table [num]); ++ suspend_socket (socket_table [num]); ++ } ++} ++#endif ++ + /*====================================================================== + + Special stuff for managing IO windows, because they are scarce. +@@ -2001,6 +2097,12 @@ + if (!req) + return CS_UNSUPPORTED_MODE; + c = CONFIG(handle); ++#ifdef CONFIG_ARCH_SHARP_SL ++ if(c == NULL) { ++ printk("%s: c is NULL\n",__func__); ++ return CS_BAD_SOCKET; ++ } ++#endif + if (c->state & CONFIG_LOCKED) + return CS_CONFIGURATION_LOCKED; + if (c->state & CONFIG_IO_REQ) +@@ -2272,7 +2374,7 @@ + return CS_IN_USE; + + DEBUG(1, "cs: waking up socket %d\n", i); +-#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) ++#if defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_TOSA) + /* If power-on failed, then card eject. */ + if( setup_socket(s) == 0 ) + do_shutdown(s); +diff -Nur linux_c860_org/drivers/pcmcia/pxa/Makefile linux/drivers/pcmcia/pxa/Makefile +--- linux_c860_org/drivers/pcmcia/pxa/Makefile 2002-08-29 12:26:51.000000000 +0900 ++++ linux/drivers/pcmcia/pxa/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -16,6 +16,7 @@ + pxa_cs-objs-$(CONFIG_SABINAL_DISCOVERY) += pxa_sharpsl.o + pxa_cs-objs-$(CONFIG_ARCH_PXA_POODLE) += pxa_sharpsl.o + pxa_cs-objs-$(CONFIG_ARCH_PXA_CORGI) += pxa_sharpsl.o ++pxa_cs-objs-$(CONFIG_ARCH_PXA_TOSA) += pxa_sharpsl.o + + obj-$(CONFIG_PCMCIA_PXA) += $(pxa_cs-objs-y) + +diff -Nur linux_c860_org/drivers/pcmcia/pxa/pxa.c linux/drivers/pcmcia/pxa/pxa.c +--- linux_c860_org/drivers/pcmcia/pxa/pxa.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/pcmcia/pxa/pxa.c 2004-06-10 21:09:10.000000000 +0900 +@@ -14,6 +14,7 @@ + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. Tosa and 2 slot support + */ + + /*====================================================================== +@@ -170,7 +171,7 @@ + #endif + + #ifdef CONFIG_ARCH_SHARP_SL +- u8 first = 1; ++ static u8 first[2] = {1, 1}; + u8 force_8bit_access_check_done = 0; + #endif + +@@ -253,6 +254,8 @@ + pcmcia_low_level=&sharpsl_pcmcia_ops; + } else if( machine_is_corgi()){ + pcmcia_low_level=&sharpsl_pcmcia_ops; ++ } else if( machine_is_tosa() ) { ++ pcmcia_low_level=&sharpsl_pcmcia_ops; + } + + if (!pcmcia_low_level) { +@@ -415,17 +418,20 @@ + + #ifdef CONFIG_ARCH_SHARP_SL + printk("pxa_pcmcia_init(%d)\n",sock); +- if(!first){ ++ if(!first[sock]){ + socket_state_t state; + pxa_pcmcia_get_socket(sock, &state); + state.flags &= ~SS_OUTPUT_ENA; + state.Vcc = state.Vpp = 0; + pxa_pcmcia_set_socket(sock, &state); + } else { +- first = 0; ++ first[sock] = 0; + } + set_GPIO_mode(GPIO53_nPCE_2_MD); // reset force 8bit access. + force_8bit_access_check_done = 0; ++ ++ if (pcmcia_low_level->socket_init) ++ return pcmcia_low_level->socket_init(sock); + #endif + return 0; + } +diff -Nur linux_c860_org/drivers/pcmcia/pxa/pxa_sharpsl.c linux/drivers/pcmcia/pxa/pxa_sharpsl.c +--- linux_c860_org/drivers/pcmcia/pxa/pxa_sharpsl.c 2003-01-14 12:07:55.000000000 +0900 ++++ linux/drivers/pcmcia/pxa/pxa_sharpsl.c 2004-06-10 21:09:10.000000000 +0900 +@@ -16,6 +16,7 @@ + * + * ChangLog: + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. 2 slot support for Tosa + */ + #include <linux/config.h> + #include <linux/kernel.h> +@@ -36,7 +37,11 @@ + #include <asm/sharp_apm.h> + + #include <linux/delay.h> +- ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm/arch/keyboard_tosa.h> ++#include <asm/sharp_char.h> ++#include <asm/sharp_keycode.h> ++#endif + //#define SHARPSL_PCMCIA_DEBUG + + #ifdef CONFIG_SABINAL_DISCOVERY +@@ -73,9 +78,15 @@ + #define RESET_DONE 0x0001 + #endif + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++extern void set_jacketslot_error( int ); // tosa_battery.c ++extern int current_jacketslot_error(void); ++extern void force_cardslot_suspend(int num); // ../cs.c ++#endif ++ + void sharpsl_pcmcia_init_reset(void) + { +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + #define SCP_INIT_DATA(adr,dat) (((adr)<<16)|(dat)) + #define SCP_INIT_DATA_END ((unsigned long)-1) + static const unsigned long scp_init[] = +@@ -99,6 +110,15 @@ + keep_vs[0] = NO_KEEP_VS; + keep_rd[0] = 0; + #endif ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ for(i=0; scp_init[i] != SCP_INIT_DATA_END; i++) ++ { ++ int adr = scp_init[i] >> 16; ++ SCP_JC_REG(adr) = scp_init[i] & 0xFFFF; ++ } ++ keep_vs[1] = NO_KEEP_VS; ++ keep_rd[1] = 0; ++#endif + } + + static void sharpsl_cf_status_change(int irq, void *dev, struct pt_regs *regs){ +@@ -167,10 +187,16 @@ + /* set GPIO_CF_CD & GPIO_CF_IRQ as inputs */ + GPDR(GPIO_CF_CD) &= ~GPIO_bit(GPIO_CF_CD); + GPDR(GPIO_CF_IRQ) &= ~GPIO_bit(GPIO_CF_IRQ); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ GPDR(GPIO_JC_CF_IRQ) &= ~GPIO_bit(GPIO_JC_CF_IRQ); ++#endif + + /* Set transition detect */ + set_GPIO_IRQ_edge( GPIO_CF_CD, GPIO_FALLING_EDGE ); + set_GPIO_IRQ_edge( GPIO_CF_IRQ, GPIO_FALLING_EDGE ); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ set_GPIO_IRQ_edge( GPIO_JC_CF_IRQ, GPIO_FALLING_EDGE ); ++#endif + + /* Register interrupts */ + irq = IRQ_GPIO_CF_CD; +@@ -181,6 +207,10 @@ + /* enable interrupt */ + SCP_REG_IMR = 0x00C0; + SCP_REG_MCR = 0x0101; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ SCP_JC_REG_IMR = 0x00C0; ++ SCP_JC_REG_MCR = 0x0101; ++#endif + keep_vs[0] = keep_vs[1] = NO_KEEP_VS; + + /* There's only one slot, but it's "Slot 0": */ +@@ -240,6 +270,20 @@ + is16 = (ASIC3_GPIO_PSTS_D & CF_IOIS) ? 0 : 1; + #else + cpr = SCP_REG_CPR; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){ ++ extern int sharpsl_main_bk_flag; ++ ++ printk(KERN_ERR "%s(): CPR=%04X, Low voltage!\n", ++ __FUNCTION__, cpr); ++ if ( sharpsl_main_bk_flag ) { ++ handle_scancode(SLKEY_OFF|KBDOWN , 1); ++ mdelay(30); ++ handle_scancode(SLKEY_OFF|KBUP , 0); ++ mdelay(30); ++ } ++ } ++#endif + //SCP_REG_CDR = 0x0002; + SCP_REG_IRM = 0x00FF; + SCP_REG_ISR = 0x0000; +@@ -277,9 +321,67 @@ + state_array->state[0].vs_Xv = (csr & 0x0080)? 0:1; + + if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#if 0 ++ if (!current_cardslot_error(0)) { ++ force_cardslot_suspend(0); ++ } ++#endif ++#else + printk(KERN_ERR "%s(): CPR=%04X, Low voltage!\n", + __FUNCTION__, cpr); ++#endif + } ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ cpr = SCP_JC_REG_CPR; ++ //SCP_REG_CDR = 0x0002; ++ SCP_JC_REG_IRM = 0x00FF; ++ SCP_JC_REG_ISR = 0x0000; ++ SCP_JC_REG_IRM = 0x0000; ++ csr = SCP_JC_REG_CSR; ++ if( csr & 0x0004 ){ ++ /* card eject */ ++ SCP_JC_REG_CDR = 0x0000; ++ keep_vs[1] = NO_KEEP_VS; ++ } ++ else if( !(keep_vs[1] & NO_KEEP_VS) ){ ++ /* keep vs1,vs2 */ ++ SCP_JC_REG_CDR = 0x0000; ++ csr |= keep_vs[1]; ++ } ++ else if( cpr & 0x0003 ){ ++ /* power on */ ++ SCP_JC_REG_CDR = 0x0000; ++ keep_vs[1] = (csr & 0x00C0); ++ } ++ else{ /* card detect */ ++ SCP_JC_REG_CDR = 0x0002; ++ } ++ ++#ifdef SHARPSL_PCMCIA_DEBUG ++ printk("%s(): slot1 cpr=%04X, csr=%04X\n", __FUNCTION__, cpr, csr); ++#endif ++ ++ state_array->state[1].detect = (csr & 0x0004)? 0:1; ++ state_array->state[1].ready = (csr & 0x0002)? 1:0; ++ state_array->state[1].bvd1 = (csr & 0x0010)? 1:0; ++ state_array->state[1].bvd2 = (csr & 0x0020)? 1:0; ++ state_array->state[1].wrprot = (csr & 0x0008)? 1:0; ++ state_array->state[1].vs_3v = (csr & 0x0040)? 0:1; ++ state_array->state[1].vs_Xv = (csr & 0x0080)? 0:1; ++ ++ if( (cpr & 0x0080) && ((cpr & 0x8040) != 0x8040) ){ ++#if 0 ++ printk(KERN_ERR "%s(): slot1 CPR=%04X, Low voltage!\n", ++ __FUNCTION__, cpr); ++#else ++ if (!current_cardslot_error(1)) { ++ force_cardslot_suspend(1); ++ set_jacketslot_error(1); ++ } ++#endif ++ } ++#endif + #endif + + return 1; +@@ -296,6 +398,10 @@ + #else + info->irq=IRQ_GPIO_CF_IRQ; + #endif ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ } else if (info->sock == 1) { ++ info->irq=IRQ_GPIO_JC_CF_IRQ; ++#endif + } + + return 0; +@@ -313,8 +419,10 @@ + if (configure->sock > 1) + return -1; + ++#if !defined(CONFIG_ARCH_PXA_TOSA) + if (configure->sock != 0) + return 0; ++#endif + + #ifdef SHARPSL_PCMCIA_DEBUG + printk("%s(): sk=%d, vc=%d, vp=%d, m=%04X, oe=%d, rs=%d, io=%d\n", +@@ -419,88 +527,205 @@ + + #else + ++#if defined(CONFIG_PM) ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if (configure->sock == 1) { // for socket1(Jacket) ++ switch( configure->vcc ){ ++ case 0: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 0); break; ++ case 33: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 1); break; ++ case 50: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA2, 1); break; ++ default: ++ printk(KERN_ERR "%s(): unrecognized Vcc %u\n", ++ __FUNCTION__, configure->vcc); ++ return -1; ++ } ++ } else { ++#endif + switch( configure->vcc ){ + case 0: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 0); break; + case 33: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break; +- case 50: sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break; ++ case 50: ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if (configure->sock == 0) { ++ printk(KERN_ERR "%s(): unrecognized Vcc %u\n", ++ __FUNCTION__, configure->vcc); ++ return -1; ++ } ++#endif ++ sharpsl_batt_err = change_power_mode(LOCK_FCS_PCMCIA, 1); break; + default: + printk(KERN_ERR "%s(): unrecognized Vcc %u\n", + __FUNCTION__, configure->vcc); + return -1; + } +- ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ } ++#endif + if ( !sharpsl_batt_err ) +- return -1; ++ return -1; ++#endif + +- if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){ +- printk(KERN_ERR "%s(): CF slot cannot support Vpp %u\n", +- __FUNCTION__, configure->vpp); +- return -1; +- } ++ if (configure->sock == 0) { ++ if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){ ++ printk(KERN_ERR "%s(): CF slot cannot support Vpp %u\n", ++ __FUNCTION__, configure->vpp); ++ return -1; ++ } ++ save_flags_cli(flags); + +- save_flags_cli(flags); ++ nmcr = (mcr = SCP_REG_MCR) & ~0x0010; ++ ncpr = (cpr = SCP_REG_CPR) & ~0x0083; ++ nccr = (ccr = SCP_REG_CCR) & ~0x0080; ++ nimr = (imr = SCP_REG_IMR) & ~0x003E; ++ ++ ncpr |= (configure->vcc == 33) ? 0x0001: ++ (configure->vcc == 50) ? 0x0002: ++ 0; ++ nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0; ++ ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0; ++ nccr |= (configure->flags&SS_RESET)? 0x0080: 0; ++ nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)| ++ ((configure->masks&SS_READY) ? 0x0002: 0)| ++ ((configure->masks&SS_BATDEAD)? 0x0010: 0)| ++ ((configure->masks&SS_BATWARN)? 0x0020: 0)| ++ ((configure->masks&SS_STSCHG) ? 0x0010: 0)| ++ ((configure->masks&SS_WRPROT) ? 0x0008: 0); ++ ++ if( !(ncpr & 0x0003) ) ++ keep_rd[0] = 0; ++ else if( !(keep_rd[0] & RESET_DONE) ){ ++ if( nccr & 0x0080 ) ++ keep_rd[0] |= RESET_DONE; ++ else nccr |= 0x0080; ++ } ++ ++ if( mcr != nmcr ) ++ SCP_REG_MCR = nmcr; ++ if( cpr != ncpr ) ++ SCP_REG_CPR = ncpr; ++ if( ccr != nccr ) ++ SCP_REG_CCR = nccr; ++ if( imr != nimr ) ++ SCP_REG_IMR = nimr; ++ ++ restore_flags(flags); ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ } else if (configure->sock == 1) { ++ if( (configure->vpp!=configure->vcc) && (configure->vpp!=0) ){ ++ printk(KERN_ERR "%s(): CF slot1 cannot support Vpp %u\n", ++ __FUNCTION__, configure->vpp); ++ return -1; ++ } ++ save_flags_cli(flags); + +- nmcr = (mcr = SCP_REG_MCR) & ~0x0010; +- ncpr = (cpr = SCP_REG_CPR) & ~0x0083; +- nccr = (ccr = SCP_REG_CCR) & ~0x0080; +- nimr = (imr = SCP_REG_IMR) & ~0x003E; +- +- ncpr |= (configure->vcc == 33) ? 0x0001: +- (configure->vcc == 50) ? 0x0002: +- 0; +- nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0; +- ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0; +- nccr |= (configure->flags&SS_RESET)? 0x0080: 0; +- nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)| +- ((configure->masks&SS_READY) ? 0x0002: 0)| +- ((configure->masks&SS_BATDEAD)? 0x0010: 0)| +- ((configure->masks&SS_BATWARN)? 0x0020: 0)| +- ((configure->masks&SS_STSCHG) ? 0x0010: 0)| +- ((configure->masks&SS_WRPROT) ? 0x0008: 0); +- +- if( !(ncpr & 0x0003) ) +- keep_rd[0] = 0; +- else if( !(keep_rd[0] & RESET_DONE) ){ +- if( nccr & 0x0080 ) +- keep_rd[0] |= RESET_DONE; +- else nccr |= 0x0080; +- } +- +- if( mcr != nmcr ) +- SCP_REG_MCR = nmcr; +- if( cpr != ncpr ) +- SCP_REG_CPR = ncpr; +- if( ccr != nccr ) +- SCP_REG_CCR = nccr; +- if( imr != nimr ) +- SCP_REG_IMR = nimr; ++ nmcr = (mcr = SCP_JC_REG_MCR) & ~0x0010; ++ ncpr = (cpr = SCP_JC_REG_CPR) & ~0x0083; ++ nccr = (ccr = SCP_JC_REG_CCR) & ~0x0080; ++ nimr = (imr = SCP_JC_REG_IMR) & ~0x003E; ++ ++ ncpr |= (configure->vcc == 33) ? 0x0001: ++ (configure->vcc == 50) ? 0x0002: ++ 0; ++ nmcr |= (configure->flags&SS_IOCARD)? 0x0010: 0; ++ ncpr |= (configure->flags&SS_OUTPUT_ENA)? 0x0080: 0; ++ nccr |= (configure->flags&SS_RESET)? 0x0080: 0; ++ nimr |= ((configure->masks&SS_DETECT) ? 0x0004: 0)| ++ ((configure->masks&SS_READY) ? 0x0002: 0)| ++ ((configure->masks&SS_BATDEAD)? 0x0010: 0)| ++ ((configure->masks&SS_BATWARN)? 0x0020: 0)| ++ ((configure->masks&SS_STSCHG) ? 0x0010: 0)| ++ ((configure->masks&SS_WRPROT) ? 0x0008: 0); ++ ++ if( !(ncpr & 0x0003) ) ++ keep_rd[1] = 0; ++ else if( !(keep_rd[1] & RESET_DONE) ){ ++ if( nccr & 0x0080 ) ++ keep_rd[1] |= RESET_DONE; ++ else nccr |= 0x0080; ++ } ++ ++ if( mcr != nmcr ) ++ SCP_JC_REG_MCR = nmcr; ++ if( cpr != ncpr ) ++ SCP_JC_REG_CPR = ncpr; ++ if( ccr != nccr ) ++ SCP_JC_REG_CCR = nccr; ++ if( imr != nimr ) ++ SCP_JC_REG_IMR = nimr; + +- restore_flags(flags); ++ restore_flags(flags); ++#endif ++ } + + #endif + + return 0; + } + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++static int sharpsl_pcmcia_socket_init(int sock) ++{ ++ /* enable interrupt */ ++ switch(sock) { ++ case 0: ++ SCP_REG_IMR = 0x00C0; ++ SCP_REG_MCR = 0x0101; ++ break; ++ case 1: ++ SCP_JC_REG_IMR = 0x00C0; ++ SCP_JC_REG_MCR = 0x0101; ++ break; ++ default: ++ return -1; ++ } ++ return 0; ++} ++#endif ++ + struct pcmcia_low_level sharpsl_pcmcia_ops = { + sharpsl_pcmcia_init, + sharpsl_pcmcia_shutdown, + sharpsl_pcmcia_socket_state, + sharpsl_pcmcia_get_irq_info, +- sharpsl_pcmcia_configure_socket ++ sharpsl_pcmcia_configure_socket, ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ sharpsl_pcmcia_socket_init, ++#endif + }; + +-int is_pcmcia_card_present(int slot) ++int is_pcmcia_card_present(int irq) + { + int detect; + #ifdef CONFIG_SABINAL_DISCOVERY + detect = ((ASIC3_GPIO_PSTS_D & CF_DETECT) ? 0 : 1); ++ //printk("is_card_present: irq=%d detect=%d\n", irq, detect); ++ return detect; + #else +- int active; +- active = (SCP_REG_CPR & 0x0003)? 1:0; +- detect = (SCP_REG_CSR & 0x0004)? 0:1; ++ int active = 0; ++ if (irq == IRQ_GPIO_CF_IRQ) { ++ active = (SCP_REG_CPR & 0x0003)? 1:0; ++ detect = (SCP_REG_CSR & 0x0004)? 0:1; ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ } else if (irq == IRQ_GPIO_JC_CF_IRQ) { ++ active = (SCP_JC_REG_CPR & 0x0003)? 1:0; ++ detect = (SCP_JC_REG_CSR & 0x0004)? 0:1; + #endif +- //printk("is_card_present: detect=%d\n", detect); +- //return detect; ++ } else { ++ /* unknown IRQ : return TRUE */ ++ return 1; ++ } ++ //printk("is_card_present: irq=%d detect=%d active=%d\n", irq, detect, active); + return detect & active; ++#endif ++} ++ ++int sharpsl_pcmcia_irq_to_sock(int irq) ++{ ++#if defined(CONFIG_ARCH_PXA_TOSA) ++ if (irq == IRQ_GPIO_JC_CF_IRQ) { ++ return 1; ++ } ++#endif ++ return 0; + } ++ +diff -Nur linux_c860_org/drivers/sbus/char/rtc.c linux/drivers/sbus/char/rtc.c +--- linux_c860_org/drivers/sbus/char/rtc.c 2002-08-26 14:39:04.000000000 +0900 ++++ linux/drivers/sbus/char/rtc.c 2004-06-10 21:09:10.000000000 +0900 +@@ -89,6 +89,7 @@ + switch (cmd) + { + case RTCGET: ++ memset(&rtc_tm, 0, sizeof(struct rtc_time)); + get_rtc_time(&rtc_tm); + + if (copy_to_user((struct rtc_time*)arg, &rtc_tm, sizeof(struct rtc_time))) +diff -Nur linux_c860_org/drivers/sound/Config.in linux/drivers/sound/Config.in +--- linux_c860_org/drivers/sound/Config.in 2002-10-11 21:13:04.000000000 +0900 ++++ linux/drivers/sound/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -224,6 +224,8 @@ + dep_tristate ' Intel PXA250/210 AC97 audio' CONFIG_SOUND_PXA_AC97 $CONFIG_ARCH_PXA $CONFIG_SOUND + dep_tristate ' Poodle audio support' CONFIG_SOUND_POODLE $CONFIG_ARCH_PXA $CONFIG_SOUND + dep_tristate ' Corgi audio support' CONFIG_SOUND_CORGI $CONFIG_ARCH_PXA $CONFIG_SOUND ++ dep_tristate ' Tosa audio support' CONFIG_SOUND_TOSA $CONFIG_AC97_TOSA $CONFIG_SOUND ++ dep_tristate ' Tosa buzzer support' CONFIG_BUZZER_TOSA $CONFIG_SOUND_TOSA + fi + + dep_tristate ' TV card (bt848) mixer support' CONFIG_SOUND_TVMIXER $CONFIG_SOUND $CONFIG_I2C +diff -Nur linux_c860_org/drivers/sound/Makefile linux/drivers/sound/Makefile +--- linux_c860_org/drivers/sound/Makefile 2002-10-11 21:13:04.000000000 +0900 ++++ linux/drivers/sound/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -11,7 +11,7 @@ + msnd.o opl3.o sb_common.o sequencer_syms.o \ + sound_core.o sound_syms.o uart401.o \ + nm256_audio.o ac97.o ac97_codec.o aci.o \ +- sa1100-audio.o pxa-audio.o pxa-ac97.o ++ sa1100-audio.o pxa-audio.o pxa-ac97.o pxa-ac97_tosa.o + + # Each configuration option enables a list of files. + +@@ -88,6 +88,7 @@ + obj-$(CONFIG_SOUND_DISCOVERY) += discovery_audio.o i2sc.o + obj-$(CONFIG_SOUND_POODLE) += pxa-i2s.o poodle_i2sc.o poodle_wm8731.o + obj-$(CONFIG_SOUND_CORGI) += pxa-i2s_corgi.o poodle_i2sc.o poodle_wm8731.o ++obj-$(CONFIG_SOUND_TOSA) += pxa-ac97_tosa.o tosa_wm9712.o + + ifeq ($(CONFIG_MIDI_EMU10K1),y) + obj-$(CONFIG_SOUND_EMU10K1) += sound.o +diff -Nur linux_c860_org/drivers/sound/pxa-ac97_tosa.c linux/drivers/sound/pxa-ac97_tosa.c +--- linux_c860_org/drivers/sound/pxa-ac97_tosa.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/sound/pxa-ac97_tosa.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,2250 @@ ++/* ++ * linux/drivers/sound/pxa-ac97_tosa.c ++ * ++ * AC97 interface for the Tosa chip ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/drivers/sound/pxa-ac97.c -- AC97 interface for the Cotula chip ++ * Author: Nicolas Pitre ++ * Created: Aug 15, 2001 ++ * Copyright: MontaVista Software Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include <linux/init.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/slab.h> ++#include <linux/pci.h> ++#include <linux/completion.h> ++#include <linux/delay.h> ++#include <linux/poll.h> ++#include <linux/sound.h> ++#include <linux/soundcard.h> ++#include <linux/ac97_codec.h> ++ ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/uaccess.h> ++#include <asm/semaphore.h> ++#include <asm/dma.h> ++ ++#include "pxa-audio.h" ++ ++#include <asm/arch/tosa_wm9712.h> ++ ++//struct ac97_codec *codec; ++ ++/************************************************************ ++ * Debug ++ ************************************************************/ ++#define DBG_LEVEL 0 ++ ++#define DBG_L0 0 ++#define DBG_L1 1 ++#define DBG_L2 2 ++#define DBG_L3 3 ++ ++#ifdef DBG_LEVEL ++#define DEBUG(level, x, args...) \ ++ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args) ++#else ++#define DEBUG(level, x, args...) \ ++ if ( !level ) printk("%s: " x,__FUNCTION__ ,##args) ++#endif /* DBG_LEVEL */ ++ ++/************************************************************ ++ * Some declarations ++ ************************************************************/ ++#define SND_DEV_STATUS 6 /* /dev/sndstat for Compatible for Collie */ ++ ++#define AUDIO_NBFRAGS_DEFAULT 8 ++#define AUDIO_FRAGSIZE_DEFAULT 8192 ++ ++#define MAX_DMA_SIZE 4096 ++#define DMA_DESC_SIZE sizeof(pxa_dma_desc) ++ ++#define IOCTL_IN(arg, ret) \ ++ do { int error = get_user(ret, (int *)(arg)); \ ++ if (error) return error; \ ++ } while (0) ++#define IOCTL_OUT(arg, ret) ioctl_return((int *)(arg), ret) ++ ++#define DMA_NO_INITIALIZED 1 ++#define ALARM_NO_MALLOC 1 ++#ifdef CONFIG_BUZZER_TOSA ++#define BUZZER_FORCE_CLOSE 1 ++#else ++#undef BUZZER_FORCE_CLOSE ++#endif /* CONFIG_BUZZER_TOSA */ ++ ++/************************************************************ ++ * Power maneagement ++ ************************************************************/ ++#ifdef CONFIG_PM ++#include <linux/pm.h> ++static struct pm_dev* pxa_sound_pm_dev; ++static int tosa_pm_callback(struct pm_dev *,pm_request_t, void *); ++extern void tosa_ts_suspend(void); ++extern void tosa_ts_resume(void); ++#endif /* CONFIG_PM */ ++ ++/************************************************************ ++ * valiables ++ ************************************************************/ ++static ssize_t (*ct_func) ++ (const u_char *, size_t, u_char *, ssize_t *, ssize_t) = NULL; ++static ssize_t (*ct_read_func) ++ (const u_char *, size_t, u_char *, ssize_t *, ssize_t) = NULL; ++ ++static int tosa_intmode = 0; ++static int tosa_intmode_speed = 0; ++static int tosa_intmode_direct = 0; ++static short *int_data_org = NULL ; ++#ifdef ALARM_NO_MALLOC ++static int tosa_intmode_cur = 0; ++static int tosa_intmode_step = 0; ++#else /* ALARM_NO_MALLOC */ ++static short *int_data = NULL ; ++#endif /* ALARM_NO_MALLOC */ ++ ++#if defined(BUZZER_FORCE_CLOSE) && defined(CONFIG_BUZZER_TOSA) ++#define WAIT_BZ_RELEASE ( ( 2 * 1000 ) / 10 ) ++static int buzzer_open = 0; ++static int buzzer_close = 0; ++#endif /* BUZZER_FORCE_CLOSE */ ++ ++extern int wm9712_mono_out; // mix output data into mono ++ ++/************************************************************ ++ * Prototype ++ ************************************************************/ ++static int tosa_init(void); ++static int tosa_set_volume(int); ++static int tosa_set_stereo(int); ++static int tosa_set_format(int); ++static int tosa_set_gain(int); ++static int tosa_get_gain(void); ++static int tosa_get_volume(void); ++static int tosa_set_freq(int); ++static int mixer_ioctl ++ (struct inode *, struct file *,unsigned int, unsigned long); ++static void tosa_intmode_mix(unsigned char *,int); ++ ++/************************************************************ ++ * Machine definitions ++ ************************************************************/ ++typedef struct { ++ ssize_t (*ct_ulaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_alaw)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_s8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_u8)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_s16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_u16be)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_s16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++ ssize_t (*ct_u16le)(const u_char *, size_t, u_char *, ssize_t *, ssize_t); ++} TRANS; ++ ++typedef struct { ++ int (*init)(void); ++ void (*silence)(void); ++ int (*setFormat)(int); ++ int (*setVolume)(int); ++ int (*getVolume)(void); ++ int (*setStereo)(int); ++ int (*setBass)(int); ++ int (*setTreble)(int); ++ int (*setGain)(int); ++ int (*getGain)(void); ++ int (*setFreq)(int); ++ void (*play)(void); ++} PLATFORM; ++ ++static PLATFORM mach_tosa = { ++ tosa_init, // void init(void) ++ NULL, // void silence(void) ++ tosa_set_format, // int setFormat(int) ++ tosa_set_volume, // int setVolume(int) ++ tosa_get_volume, // int getVolume(void) ++ tosa_set_stereo, // int setStereo(int) ++ NULL, // int setBass(int) ++ NULL, // int setTreble(int) ++ tosa_set_gain, // int setGain(int) ++ tosa_get_gain, // int getGain(void) ++ tosa_set_freq, // int setFreq(int) ++ NULL, // void play(void) ++}; ++ ++/************************************************************ ++ * /dev/setting ++ ************************************************************/ ++struct sound_settings { ++ PLATFORM mach; /* platform dependent things */ ++ TRANS *trans; /* supported translations */ ++ TRANS *trans_read; /* supported translations */ ++ unsigned short mode; ++ int format; /* AFMT_* */ ++ int stereo; /* 0 = mono, 1 = stereo */ ++ int size; /* 8/16 bit*/ ++ int freq; /* freq */ ++ int volume_left; /* volume (range is 0 - 100%) */ ++ int volume_right; ++ int gain_left; /* input gain (range is 0 - 100%) */ ++ int gain_right; ++ int bass; /* tone (not support) */ ++ int treble; ++ /* device independ */ ++ // int gain_shift; /* input gain shift */ ++ // int gain; /* input gain */ ++}; ++static struct sound_settings sound; ++ ++/* /dev/sndstat */ ++struct sound_state { ++ int dev_state; ++ int busy; ++ char buf[512]; ++ int len, ptr; ++}; ++static struct sound_state tosa_sound_state; ++ ++static audio_stream_t ac97_audio_out = { ++ name: "AC97 audio out", ++ dcmd: DCMD_TXPCDR, ++ drcmr: &DRCMRTXPCDR, ++ dev_addr: __PREG(PCDR), ++}; ++ ++static audio_stream_t ac97_audio_in = { ++ name: "AC97 audio in", ++ dcmd: DCMD_RXPCDR, ++ drcmr: &DRCMRRXPCDR, ++ dev_addr: __PREG(PCDR), ++}; ++ ++static audio_state_t ac97_audio_state = { ++ output_stream: &ac97_audio_out, ++ input_stream: &ac97_audio_in, ++ sem: __MUTEX_INITIALIZER(ac97_audio_state.sem), ++}; ++ ++#if 0 ++typedef struct { ++ int shift; ++ int gain; ++} input_gain_t; ++ ++static input_gain_t input_gain[7] = { ++ { 2 , 0 }, ++ { 0 , 1 }, ++ { 1 , 1 }, ++ { 2 , 1 }, ++ { 3 , 1 }, ++ { 4 , 1 }, ++ { 5 , 1 } ++}; ++#endif ++ ++/************************************************************ ++ * data convert ++ ************************************************************/ ++/* 16 bit mu-law */ ++static short ulaw2dma16[] = { ++ -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, ++ -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, ++ -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, ++ -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316, ++ -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140, ++ -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092, ++ -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004, ++ -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980, ++ -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436, ++ -1372, -1308, -1244, -1180, -1116, -1052, -988, -924, ++ -876, -844, -812, -780, -748, -716, -684, -652, ++ -620, -588, -556, -524, -492, -460, -428, -396, ++ -372, -356, -340, -324, -308, -292, -276, -260, ++ -244, -228, -212, -196, -180, -164, -148, -132, ++ -120, -112, -104, -96, -88, -80, -72, -64, ++ -56, -48, -40, -32, -24, -16, -8, 0, ++ 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956, ++ 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764, ++ 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412, ++ 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316, ++ 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140, ++ 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092, ++ 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004, ++ 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980, ++ 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436, ++ 1372, 1308, 1244, 1180, 1116, 1052, 988, 924, ++ 876, 844, 812, 780, 748, 716, 684, 652, ++ 620, 588, 556, 524, 492, 460, 428, 396, ++ 372, 356, 340, 324, 308, 292, 276, 260, ++ 244, 228, 212, 196, 180, 164, 148, 132, ++ 120, 112, 104, 96, 88, 80, 72, 64, ++ 56, 48, 40, 32, 24, 16, 8, 0, ++}; ++ ++/* 16 bit A-law */ ++static short alaw2dma16[] = { ++ -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736, ++ -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784, ++ -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368, ++ -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392, ++ -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944, ++ -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136, ++ -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472, ++ -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568, ++ -344, -328, -376, -360, -280, -264, -312, -296, ++ -472, -456, -504, -488, -408, -392, -440, -424, ++ -88, -72, -120, -104, -24, -8, -56, -40, ++ -216, -200, -248, -232, -152, -136, -184, -168, ++ -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184, ++ -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696, ++ -688, -656, -752, -720, -560, -528, -624, -592, ++ -944, -912, -1008, -976, -816, -784, -880, -848, ++ 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736, ++ 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784, ++ 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368, ++ 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, ++ 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944, ++ 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136, ++ 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472, ++ 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568, ++ 344, 328, 376, 360, 280, 264, 312, 296, ++ 472, 456, 504, 488, 408, 392, 440, 424, ++ 88, 72, 120, 104, 24, 8, 56, 40, ++ 216, 200, 248, 232, 152, 136, 184, 168, ++ 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184, ++ 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, ++ 688, 656, 752, 720, 560, 528, 624, 592, ++ 944, 912, 1008, 976, 816, 784, 880, 848, ++}; ++ ++static ssize_t tosa_ct_law(const u_char *userPtr, size_t userCount, ++ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft) ++{ ++ short *table = sound.format == AFMT_MU_LAW ? ulaw2dma16: alaw2dma16; ++ ssize_t count, used; ++ short *p = (short *) &frame[*frameUsed]; ++ int val, stereo = sound.stereo; ++ ++ frameLeft >>= 2; ++ if (stereo) ++ userCount >>= 1; ++ used = count = min(userCount, frameLeft); ++ while (count > 0) { ++ u_char data; ++ if (get_user(data, userPtr++)) { ++ return -EFAULT; ++ } ++ val = table[data]; ++ *p++ = val; /* Left Ch. */ ++ if (stereo) { ++ if (get_user(data, userPtr++)) { ++ return -EFAULT; ++ } ++ val = table[data]; ++ } ++ *p++ = val; /* Right Ch. */ ++ count--; ++ } ++ *frameUsed += used * 4; ++ return stereo? used * 2: used; ++} ++ ++static ssize_t tosa_ct_u8(const u_char *userPtr, size_t userCount, ++ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft) ++{ ++ int ch = (sound.stereo)?2:1; ++ unsigned char *src = (unsigned char *)userPtr; ++ short *dstct = (short *)frame; ++ short tmpval; ++ int frameMax = frameLeft >> 2; ++ int userMax = userCount >> (ch-1); ++ int idx,samplingCount = min(frameMax,userMax); ++ ++ if (!wm9712_mono_out || ch==1) { ++ for (idx=0; idx<samplingCount; idx++) { ++ if (get_user(tmpval,src)) { ++ return -EFAULT; ++ } ++ *dstct++ = (tmpval-128)<<8; ++ if (ch>1) src++; ++ if (get_user(tmpval,src++)) { ++ return -EFAULT; ++ } ++ *dstct++ = (tmpval-128)<<8; ++ } ++ } else { ++ short vall,valr; ++ for (idx=0; idx<samplingCount; idx++) { ++ if (get_user(vall,src++) || get_user(valr,src++)) { ++ return -EFAULT; ++ } ++ vall = (vall-128)<<8; ++ valr = (valr-128)<<8; ++ vall = vall/2+valr/2; ++ *dstct++ = vall; ++ *dstct++ = vall; ++ } ++ } ++ ++ *frameUsed = samplingCount * 2 * 2; // dma is always stereo 16bit ++ return samplingCount * ch; ++} ++ ++static ssize_t tosa_ct_s16(const u_char *userPtr, size_t userCount, ++ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft) ++{ ++ int ch = (sound.stereo)?2:1; ++ short *src = (short *)userPtr; ++ short *dstct = (short *)frame; ++ int frameMax = frameLeft >> 2; ++ int userMax = userCount >> ch; ++ int samplingCount = min(frameMax,userMax); ++ ++ if ( ch > 1 ) { // stereo ++ if (!wm9712_mono_out) { ++ if (copy_from_user(dstct,src,samplingCount * ch * 2)) { ++ return -EFAULT; ++ } ++ } else { ++ int idx; ++ short vall,valr; ++ for (idx=0; idx<samplingCount; idx++) { ++ if (get_user(vall,src++) || get_user(valr,src++)) { ++ return -EFAULT; ++ } ++ vall = vall/2+valr/2; ++ *dstct++ = vall; ++ *dstct++ = vall; ++ } ++ } ++ } else { // mono ++ int idx; ++ for (idx=0; idx<samplingCount; idx++) { ++ if (get_user(*dstct++,src) || get_user(*dstct++,src++)) { ++ return -EFAULT; ++ } ++ } ++ } ++ ++ *frameUsed = samplingCount * 2 * 2; // dma is always stereo 16bit ++ return samplingCount * ch * 2; ++} ++ ++static TRANS trans_tosa = { ++ tosa_ct_law,tosa_ct_law,0,tosa_ct_u8,0,0,tosa_ct_s16,0 ++}; ++ ++/* data convert for recording */ ++static ssize_t tosa_ct_read_u8(const u_char *userPtr, size_t userCount, ++ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft) ++{ ++ int ch = (sound.stereo)?2:1; ++ unsigned char *usrbuf = (unsigned char *)userPtr; ++ short *dmabuf = (short *)frame; ++ short tmpval; ++ int dmaMax = frameLeft >> 2; // dma is always stereo ++ int userMax = userCount >> ch; ++ int ct,samplingCount = min(dmaMax,userMax); ++ ++ for (ct=0; ct<samplingCount; ct++) { ++ dmabuf++; // use right data ++ tmpval = *dmabuf>>8; ++ if (tmpval>127) tmpval = 127; ++ else if (tmpval<-128) tmpval = -128; ++ if (put_user((unsigned char)(tmpval+128),usrbuf++)) { // left channel ++ return -EFAULT; ++ } ++ if (ch>1) { // right channel ++ tmpval = *dmabuf>>8; ++ if (tmpval>127) tmpval = 127; ++ else if (tmpval<-128) tmpval = -128; ++ if (put_user((unsigned char)(tmpval+128),usrbuf++)) { ++ return -EFAULT; ++ } ++ } ++ dmabuf++; ++ } ++ *frameUsed = samplingCount * 2 * 2; // dma is always stereo ++ return samplingCount * ch; ++} ++ ++static ssize_t tosa_ct_read_s16(const u_char *userPtr, size_t userCount, ++ u_char frame[], ssize_t *frameUsed, ssize_t frameLeft) ++{ ++ int ch = (sound.stereo)?2:1; ++ short *usrbuf = (short *)userPtr; ++ short *dmabuf = (short *)frame; ++ int dmaMax = frameLeft >> 2; // dma is always stereo ++ int userMax = userCount >> ch; ++ int ct,samplingCount = min(dmaMax,userMax); ++ ++ for (ct=0; ct<samplingCount; ct++) { ++ dmabuf++; // use right data ++ if (put_user((*dmabuf),usrbuf++)) { // left channel ++ return -EFAULT; ++ } ++ if (ch>1) { // right channel ++ if (put_user(*dmabuf,usrbuf++)) { ++ return -EFAULT; ++ } ++ } ++ dmabuf++; ++ } ++ *frameUsed = samplingCount * 2 * 2; // dma is always stereo ++ return samplingCount * ch * 2; ++} ++ ++static TRANS trans_r_tosa = { ++ 0,0,0,tosa_ct_read_u8,0,0,tosa_ct_read_s16,0 ++}; ++ ++/************************************************************ ++ * Common stuff ++ ************************************************************/ ++static inline int ioctl_return(int *addr, int value) ++{ ++ if ( value < 0 ) return value; ++ return put_user(value, addr) ? -EFAULT: 0; ++} ++ ++static inline void tosa_ac97_write(unsigned int data) ++{ ++ while ( 1 ) { ++ if ( (GPLR(GPIO31_SYNC) & GPIO_bit(GPIO31_SYNC)) == GPIO_bit(GPIO31_SYNC) ) ++ break; ++ } ++ PCDR = data; ++} ++ ++/************************************************************ ++ * This function frees all buffers ++ ************************************************************/ ++ ++#define audio_clear_buf pxa_audio_clear_buf ++ ++void pxa_audio_clear_buf(audio_stream_t * s) ++{ ++ DECLARE_WAITQUEUE(wait, current); ++ int frag; ++ ++ if (!s->buffers) ++ return; ++ ++ /* Ensure DMA isn't running */ ++ set_current_state(TASK_UNINTERRUPTIBLE); ++ add_wait_queue(&s->stop_wq, &wait); ++ DCSR(s->dma_ch) = DCSR_STOPIRQEN; ++ schedule(); ++ remove_wait_queue(&s->stop_wq, &wait); ++ ++ /* free DMA buffers */ ++ for (frag = 0; frag < s->nbfrags; frag++) { ++ audio_buf_t *b = &s->buffers[frag]; ++ if (!b->master) ++ continue; ++ consistent_free(b->data, b->master, b->dma_desc->dsadr); ++ } ++ ++ /* free descriptor ring */ ++ if (s->buffers->dma_desc) ++ consistent_free(s->buffers->dma_desc, ++ s->nbfrags * s->descs_per_frag * DMA_DESC_SIZE, ++ s->dma_desc_phys); ++ ++ /* free buffer structure array */ ++ kfree(s->buffers); ++ s->buffers = NULL; ++} ++ ++/************************************************************ ++ * This function allocates the DMA descriptor array and buffer data space ++ * according to the current number of fragments and fragment size. ++ ************************************************************/ ++static int audio_setup_buf(audio_stream_t * s) ++{ ++ pxa_dma_desc *dma_desc; ++ dma_addr_t dma_desc_phys; ++ int nb_desc, frag, i, buf_size = 0; ++ char *dma_buf = NULL; ++ dma_addr_t dma_buf_phys = 0; ++ ++ DEBUG(DBG_L2, "Enter audio_setup buffer\n"); ++ ++ if (s->buffers) ++ return -EBUSY; ++ ++ /* Our buffer structure array */ ++ s->buffers = kmalloc(sizeof(audio_buf_t) * s->nbfrags, GFP_KERNEL); ++ if (!s->buffers) ++ goto err; ++ memzero(s->buffers, sizeof(audio_buf_t) * s->nbfrags); ++ /* ++ * Our DMA descriptor array: ++ * for Each fragment we have one checkpoint descriptor plus one ++ * descriptor per MAX_DMA_SIZE byte data blocks. ++ */ ++ nb_desc = (1 + (s->fragsize + MAX_DMA_SIZE - 1)/MAX_DMA_SIZE) * s->nbfrags; ++ dma_desc = consistent_alloc(GFP_KERNEL, ++ nb_desc * DMA_DESC_SIZE, &dma_desc_phys); ++ if (!dma_desc) ++ goto err; ++ s->descs_per_frag = nb_desc / s->nbfrags; ++ s->buffers->dma_desc = dma_desc; ++ s->dma_desc_phys = dma_desc_phys; ++ for (i = 0; i < nb_desc - 1; i++) ++ dma_desc[i].ddadr = dma_desc_phys + (i + 1) * DMA_DESC_SIZE; ++ dma_desc[i].ddadr = dma_desc_phys; ++ ++ /* Our actual DMA buffers */ ++ for (frag = 0; frag < s->nbfrags; frag++) { ++ audio_buf_t *b = &s->buffers[frag]; ++ /* ++ * Let's allocate non-cached memory for DMA buffers. ++ * We try to allocate all memory at once. ++ * If this fails (a common reason is memory fragmentation), ++ * then we'll try allocating smaller buffers. ++ */ ++ if (!buf_size) { ++ buf_size = (s->nbfrags - frag) * s->fragsize; ++ do { ++ dma_buf = consistent_alloc(GFP_KERNEL, ++ buf_size, ++ &dma_buf_phys); ++ if (!dma_buf) ++ buf_size -= s->fragsize; ++ } while (!dma_buf && buf_size); ++ if (!dma_buf) ++ goto err; ++ b->master = buf_size; ++ memzero(dma_buf, buf_size); ++ } ++ ++ /* ++ * is always zero, we'll abuse the dsadr and dtadr fields ++ * just in case this one is picked up by the hardware. ++ * while processing SOUND_DSP_GETPTR. ++ */ ++ dma_desc->dsadr = dma_buf_phys; ++ dma_desc->dtadr = dma_buf_phys; ++ dma_desc->dcmd = DCMD_ENDIRQEN; ++ if (s->output && !s->mapped) ++ dma_desc->ddadr |= DDADR_STOP; ++ b->dma_desc = dma_desc++; ++ ++ /* set up the actual data descriptors */ ++ for (i = 0; (i * MAX_DMA_SIZE) < s->fragsize; i++) { ++ dma_desc[i].dsadr = (s->output) ? ++ (dma_buf_phys + i*MAX_DMA_SIZE) : s->dev_addr; ++ dma_desc[i].dtadr = (s->output) ? ++ s->dev_addr : (dma_buf_phys + i*MAX_DMA_SIZE); ++ dma_desc[i].dcmd = s->dcmd | ++ ((s->fragsize < MAX_DMA_SIZE) ? ++ s->fragsize : MAX_DMA_SIZE); ++ ++ DEBUG(DBG_L3, "dsadr[%8x],dtadr[%8x],dcmd[%8x]\n", ++ dma_desc[i].dsadr,dma_desc[i].dtadr,dma_desc[i].dcmd); ++ ++ } ++ dma_desc += i; ++ ++ /* handle buffer pointers */ ++ b->data = dma_buf; ++ dma_buf += s->fragsize; ++ dma_buf_phys += s->fragsize; ++ buf_size -= s->fragsize; ++ } ++ ++ s->usr_frag = s->dma_frag = 0; ++ s->bytecount = 0; ++ s->fragcount = 0; ++ sema_init(&s->sem, (s->output) ? s->nbfrags : 0); ++ return 0; ++ ++err: ++ DEBUG(DBG_L0, "unable to allocate audio memory\n "); ++ audio_clear_buf(s); ++ return -ENOMEM; ++} ++ ++/************************************************************ ++ * Our DMA interrupt handler ++ ************************************************************/ ++static void audio_dma_irq(int ch, void *dev_id, struct pt_regs *regs) ++{ ++ audio_stream_t *s = dev_id; ++ u_int dcsr; ++ ++ dcsr = DCSR(ch); ++ DCSR(ch) = dcsr & ~DCSR_STOPIRQEN; ++ ++ DEBUG(DBG_L2, "dcsr(ch) = %8x(%d)\n",dcsr,ch); ++ ++ if (!s->buffers) { ++ DEBUG(DBG_L0, "DMA: wow... received IRQ for channel %d but no buffer exists\n", ch); ++ return; ++ } ++ ++ if (dcsr & DCSR_BUSERR) ++ DEBUG(DBG_L0, "DMA: bus error interrupt on channel %d\n", ch); ++ ++ if (dcsr & DCSR_ENDINTR) { ++ u_long cur_dma_desc; ++ u_int cur_dma_frag; ++ ++ /* ++ * Find out which DMA desc is current. Note that DDADR ++ * points to the next desc, not the current one. ++ */ ++ cur_dma_desc = DDADR(ch) - s->dma_desc_phys - DMA_DESC_SIZE; ++ ++ /* ++ * Let the compiler nicely optimize constant divisors into ++ * multiplications for the common cases which is much faster. ++ * Common cases: x = 1 + (1 << y) for y = [0..3] ++ */ ++ switch (s->descs_per_frag) { ++ case 2: cur_dma_frag = cur_dma_desc / (2*DMA_DESC_SIZE); break; ++ case 3: cur_dma_frag = cur_dma_desc / (3*DMA_DESC_SIZE); break; ++ case 5: cur_dma_frag = cur_dma_desc / (5*DMA_DESC_SIZE); break; ++ case 9: cur_dma_frag = cur_dma_desc / (9*DMA_DESC_SIZE); break; ++ default: cur_dma_frag = ++ cur_dma_desc / (s->descs_per_frag * DMA_DESC_SIZE); ++ } ++ ++ /* Account for possible wrap back of cur_dma_desc above */ ++ if (cur_dma_frag >= s->nbfrags) ++ cur_dma_frag = s->nbfrags - 1; ++ ++ while (s->dma_frag != cur_dma_frag) { ++ if (!s->mapped) { ++ /* ++ * This fragment is done - set the checkpoint ++ * descriptor to STOP until it is gets ++ * processed by the read or write function. ++ */ ++ s->buffers[s->dma_frag].dma_desc->ddadr |= DDADR_STOP; ++ up(&s->sem); ++ } ++ if (++s->dma_frag >= s->nbfrags) ++ s->dma_frag = 0;/* Accounting */ ++ s->bytecount += s->fragsize; ++ s->fragcount++; ++ } ++ ++ /* ... and for polling processes */ ++ wake_up(&s->frag_wq); ++ } ++ ++ if ((dcsr & DCSR_STOPIRQEN) && (dcsr & DCSR_STOPSTATE)) ++ wake_up(&s->stop_wq); ++} ++ ++/************************************************************ ++ * Validate and sets up buffer fragments, etc. ++ ************************************************************/ ++static int audio_set_fragments(audio_stream_t *s, int val) ++{ ++ if (s->mapped || DCSR(s->dma_ch) & DCSR_RUN) ++ return -EBUSY; ++ if (s->buffers) ++ audio_clear_buf(s); ++ s->nbfrags = (val >> 16) & 0x7FFF; ++ val &= 0xffff; ++ if (val < 5) ++ val = 5; ++ if (val > 15) ++ val = 15; ++ s->fragsize = 1 << val; ++ if (s->nbfrags < 2) ++ s->nbfrags = 2; ++ if (s->nbfrags * s->fragsize > 256 * 1024) ++ s->nbfrags = 256 * 1024 / s->fragsize; ++ if (audio_setup_buf(s)) ++ return -ENOMEM; ++ return val|(s->nbfrags << 16); ++} ++ ++/************************************************************ ++ * Detect HP Jack ++ ************************************************************/ ++static void tosa_hp_thread(void) ++{ ++ while(1) { ++ wm9712_checkjack_sleep(); ++ wm9712_update_jack_state(); ++ } ++} ++ ++/************************************************************ ++ * Prototype functions ++ ************************************************************/ ++static int tosa_init(void) ++{ ++ if ( wm9712_init() ) { ++ DEBUG(DBG_L0, "Fail Init\n"); ++ } ++ ++ /* Make threads */ ++ kernel_thread(tosa_hp_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++} ++ ++static int tosa_set_volume(int volume) ++{ ++ sound.volume_left = volume & 0xff; ++ if ( sound.volume_left > 100 ) sound.volume_left = 100; ++ sound.volume_right = ( (volume & 0xff00) >> 8); ++ if ( sound.volume_right > 100 ) sound.volume_right = 100; ++ ++ wm9712_set_output_volume(sound.volume_left, sound.volume_right); ++ ++ return 0; ++} ++ ++static int tosa_get_volume(void) ++{ ++ return ( sound.volume_right << 8 | sound.volume_left ); ++} ++ ++static int tosa_set_stereo(int stereo) ++{ ++ if ( stereo < 0 ) return sound.stereo; ++ stereo = !!stereo; /* should be 0 or 1 now */ ++ sound.stereo = stereo; ++ return stereo; ++} ++ ++static int tosa_set_format(int format) ++{ ++ int size; ++ ++ switch ( format ) { ++ case AFMT_QUERY: ++ return sound.format; ++ case AFMT_MU_LAW: ++ size = 8; ++ ct_func = sound.trans->ct_ulaw; ++ break; ++ case AFMT_A_LAW: ++ size = 8; ++ ct_func = sound.trans->ct_alaw; ++ break; ++#if 0 // unsupport ++ case AFMT_S8: ++ size = 8; ++ ct_func = sound.trans->ct_s8; ++ break; ++ case AFMT_S16_BE: ++ size = 16; ++ ct_func = sound.trans->ct_s16be; ++ break; ++ case AFMT_U16_BE: ++ size = 16; ++ ct_func = sound.trans->ct_u16be; ++ break; ++ case AFMT_U16_LE: ++ size = 16; ++ ct_func = sound.trans->ct_u16le; ++ break; ++#endif ++ case AFMT_U8: ++ size = 8; ++ ct_func = sound.trans->ct_u8; ++ ct_read_func = sound.trans_read->ct_u8; ++ break; ++ case AFMT_S16_LE: ++ size = 16; ++ ct_func = sound.trans->ct_s16le; ++ ct_read_func = sound.trans_read->ct_s16le; ++ break; ++ default: /* :-) */ ++ size = 16; ++ format = AFMT_S16_LE; ++ } ++ ++ sound.format = format; ++ sound.size = size; ++ return format; ++} ++ ++static int tosa_set_gain(int gain) ++{ ++ sound.gain_left = gain & 0xff; ++ if ( sound.gain_left > 100 ) sound.gain_left = 100; ++ ++ sound.gain_right = ( (gain & 0xff00) >> 8); ++ if ( sound.gain_right > 100 ) sound.gain_right = 100; ++ ++ wm9712_set_input_gain(sound.gain_left,sound.gain_right); ++ return 1; ++} ++ ++static int tosa_get_gain(void) ++{ ++ return ( sound.gain_right << 8 | sound.gain_left ); ++} ++ ++static int tosa_set_freq(int speed) ++{ ++ if ( speed < 0 ) return sound.freq; ++ sound.freq = speed; ++ if( wm9712_busy() ) { ++ SOUND_SETTINGS setting; ++ setting.mode = sound.mode; ++ setting.frequency = sound.freq; ++ wm9712_set_freq(&setting); ++ } ++ return sound.freq; ++} ++ ++/************************************************************ ++ * Audio stuff ++ ************************************************************/ ++static int audio_open(struct inode *inode, struct file *file) ++{ ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *is = state->input_stream; ++ audio_stream_t *os = state->output_stream; ++ SOUND_SETTINGS settings; ++ int ret = 0; ++ ++ down(&state->sem); ++ ret = -ENODEV; ++ /* access control */ ++ if ( (file->f_mode & FMODE_WRITE) && !os ) ++ goto out; ++ if ( (file->f_mode & FMODE_READ) && !is ) ++ goto out; ++ ret = -EBUSY; ++ ++ if ( state->wr_ref || state->rd_ref ) ++#ifdef BUZZER_FORCE_CLOSE ++ { ++ if( !buzzer_open ) { ++ goto out; ++ } else { ++ int now; ++ ++ // force close buzzer ++ DEBUG(DBG_L1, "force a buzzer stop!\n"); ++ buzzer_close = 1; ++ if ( DCSR(os->dma_ch) & DCSR_RUN ) { ++ DCSR(os->dma_ch) &= ++ (DCSR_RUN|DCSR_ENDINTR|DCSR_STARTINTR|DCSR_BUSERR); ++ } ++ now = jiffies; ++ while ( 1 ) { ++ if ( !buzzer_open ) break; ++ schedule(); ++ if ( jiffies > ( now + WAIT_BZ_RELEASE ) ) break; ++ } ++ buzzer_close = 0; ++ if( buzzer_open ) goto out; ++ } ++ } ++#else ++ goto out; ++#endif /* BUZZER_FORCE_CLOSE */ ++ /* request DMA channels */ ++ if ( file->f_mode & FMODE_WRITE) { ++ ret = pxa_request_dma(os->name, DMA_PRIO_LOW, audio_dma_irq, os); ++ if ( ret < 0 ) ++ goto out; ++ os->dma_ch = ret; ++ } ++ if ( file->f_mode & FMODE_READ ) { ++ ret = pxa_request_dma(is->name, DMA_PRIO_LOW, audio_dma_irq, is); ++ if ( ret < 0 ) { ++ if ( file->f_mode & FMODE_WRITE ) { ++ *os->drcmr = 0; ++ pxa_free_dma(os->dma_ch); ++ } ++ goto out; ++ } ++ is->dma_ch = ret; ++ } ++ file->private_data = state; ++ ++ sound.mode = 0; ++ if ( file->f_mode & FMODE_WRITE ) { ++ sound.mode |= SOUND_PLAY_MODE; ++ state->wr_ref = 1; ++ os->fragsize = AUDIO_FRAGSIZE_DEFAULT; ++ os->nbfrags = AUDIO_NBFRAGS_DEFAULT; ++ os->output = 1; ++ os->mapped = 0; ++ init_waitqueue_head(&os->frag_wq); ++ init_waitqueue_head(&os->stop_wq); ++ *os->drcmr = os->dma_ch | DRCMR_MAPVLD; ++ } ++ if ( file->f_mode & FMODE_READ ) { ++ sound.mode |= SOUND_REC_MODE; ++ state->rd_ref = 1; ++ is->fragsize = AUDIO_FRAGSIZE_DEFAULT; ++ is->nbfrags = AUDIO_NBFRAGS_DEFAULT; ++ is->output = 0; ++ is->mapped = 0; ++ init_waitqueue_head(&is->frag_wq); ++ init_waitqueue_head(&is->stop_wq); ++ *is->drcmr = is->dma_ch | DRCMR_MAPVLD; ++ } ++ ++ if ( (MINOR(inode->i_rdev) & 0x0f) == SND_DEV_AUDIO ) { ++ tosa_set_freq(8000); ++ tosa_set_stereo(0); ++ tosa_set_format(AFMT_MU_LAW); ++ } ++ ++ settings.mode = sound.mode; ++ settings.output.left = sound.volume_left; ++ settings.output.right = sound.volume_right; ++ settings.input.left = sound.gain_left; ++ settings.input.right = sound.gain_right; ++ settings.frequency = sound.freq; ++ if ( (ret = wm9712_open(&settings)) < 0 ) { ++ DEBUG(DBG_L0, "Can not open wm9712\n"); ++ goto error; ++ } ++ ret = 0; ++ ++out: ++ up(&state->sem); ++ return ret; ++ ++error: ++ up(&state->sem); ++ if ( (file->f_mode & FMODE_WRITE) && (os->dma_ch >= 0) ) { ++ *os->drcmr = 0; ++ pxa_free_dma(os->dma_ch); ++ } ++ if ( (file->f_mode & FMODE_READ) && (is->dma_ch >= 0) ) { ++ *is->drcmr = 0; ++ pxa_free_dma(is->dma_ch); ++ } ++ state->wr_ref = 0; ++ state->rd_ref = 0; ++ return ret; ++} ++ ++static int audio_write(struct file *file, const char *buffer, ++ size_t count, loff_t * ppos) ++{ ++ const char *buffer0 = buffer; ++ audio_state_t *state = (audio_state_t *)file->private_data; ++ audio_stream_t *s = state->output_stream; ++ int ret = 0; ++ ssize_t uUsed, bUsed, bLeft = 0; ++ u_char *dest; ++ ++ DEBUG(DBG_L2, "Enter audio_write\n");\ ++ ++ // wait playing int sound. ++ while ( tosa_intmode_direct ) ++ schedule(); ++ ++ if ( ppos != &file->f_pos ) ++ return -ESPIPE; ++ if ( s->mapped ) ++ return -ENXIO; ++ if ( !s->buffers && audio_setup_buf(s) ) ++ return -ENOMEM; ++ while ( count > 0 ) { ++ audio_buf_t *b = &s->buffers[s->usr_frag]; ++ DEBUG(DBG_L3, "audio_write count = %d\n",count); ++ ++ /* Grab a fragment */ ++ if ( file->f_flags & O_NONBLOCK ) { ++ ret = -EAGAIN; ++ if ( down_trylock(&s->sem) ) ++ break; ++ } else { ++ ret = -ERESTARTSYS; ++ if ( down_interruptible(&s->sem) ) ++ break; ++ } ++ ++ /* Feed the current buffer */ ++ dest = b->data + b->offset; ++ bUsed = 0; ++ bLeft = s->fragsize - b->offset; ++ ++ if ( ct_func ) { ++ uUsed = ct_func(buffer, count, dest, &bUsed, bLeft); ++ } else { ++ return -EFAULT; ++ } ++ ++ if ( tosa_intmode ) { ++ tosa_intmode_mix(dest,bUsed); ++ } ++ ++ if ( uUsed < 0 ) { ++ up(&s->sem); ++ return -EFAULT; ++ } ++ b->offset += bUsed; ++ buffer += uUsed; ++ count -= uUsed; ++ ++ if ( b->offset < s->fragsize ) { ++ up(&s->sem); ++ break; ++ } ++ /* ++ * Activate DMA on current buffer. ++ * We unlock this fragment's checkpoint descriptor and ++ * kick DMA if it is idle. Using checkpoint descriptors ++ * allows for control operations without the need for ++ * stopping the DMA channel if it is already running. ++ */ ++ b->offset = 0; ++ b->dma_desc->ddadr &= ~DDADR_STOP; ++#ifdef DMA_NO_INITIALIZED ++ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ){ ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#else ++ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) { ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#endif /* DMA_NO_INITIALIZED */ ++ ++ /* move the index to the next fragment */ ++ if ( ++s->usr_frag >= s->nbfrags ) ++ s->usr_frag = 0; ++ } ++ ++ if ( (buffer - buffer0) ) ++ ret = buffer - buffer0; ++ return ret; ++} ++ ++static int audio_read(struct file *file, char *buffer, ++ size_t count, loff_t * ppos) ++{ ++ char *buffer0 = buffer; ++ audio_state_t *state = file->private_data; ++ audio_stream_t *s = state->input_stream; ++ int ret = 0; ++ ssize_t uUsed, bUsed, bLeft = 0; ++ u_char *dest; ++ ++ if ( ppos != &file->f_pos ) ++ return -ESPIPE; ++ if ( s->mapped ) ++ return -ENXIO; ++ if ( !s->buffers && audio_setup_buf(s) ) ++ return -ENOMEM; ++ ++ while ( count > 0 ) { ++ audio_buf_t *b = &s->buffers[s->usr_frag]; ++ ++ /* prime DMA */ ++#ifdef DMA_NO_INITIALIZED ++ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ){ ++ DDADR(s->dma_ch) = s->buffers[s->dma_frag].dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#else ++ if (DCSR(s->dma_ch) & DCSR_STOPSTATE) { ++ DDADR(s->dma_ch) = s->buffers[s->dma_frag].dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#endif /* DMA_NO_INITIALIZED */ ++ ++ /* Wait for a buffer to become full */ ++ if (file->f_flags & O_NONBLOCK) { ++ ret = -EAGAIN; ++ if (down_trylock(&s->sem)) ++ break; ++ } else { ++ ret = -ERESTARTSYS; ++ if (down_interruptible(&s->sem)) ++ break; ++ } ++ ++ /* Grab data from current buffer */ ++ dest = b->data + b->offset; ++ bUsed = 0; ++ bLeft = s->fragsize - b->offset; ++ ++ if (ct_read_func) { ++ uUsed = ct_read_func(buffer, count, dest, &bUsed, bLeft); ++ } else { ++ return -EFAULT; ++ } ++ if ( uUsed < 0 ) { ++ up(&s->sem); ++ return -EFAULT; ++ } ++ b->offset += bUsed; ++ buffer += uUsed; ++ count -= uUsed; ++ ++ if (b->offset < s->fragsize) { ++ up(&s->sem); ++ break; ++ } ++ ++ /* ++ * Make this buffer available for DMA again. ++ * We unlock this fragment's checkpoint descriptor and ++ * kick DMA if it is idle. Using checkpoint descriptors ++ * allows for control operations without the need for ++ * stopping the DMA channel if it is already running. ++ */ ++ b->offset = 0; ++ b->dma_desc->ddadr &= ~DDADR_STOP; ++ ++ /* move the index to the next fragment */ ++ if (++s->usr_frag >= s->nbfrags) ++ s->usr_frag = 0; ++ } ++ ++ if ((buffer - buffer0)) ++ ret = buffer - buffer0; ++ return ret; ++} ++ ++static int audio_sync(struct file *file) ++{ ++ audio_state_t *state = file->private_data; ++ audio_stream_t *s = state->output_stream; ++ audio_buf_t *b; ++ pxa_dma_desc *final_desc; ++ u_long dcmd_save = 0; ++ DECLARE_WAITQUEUE(wait, current); ++ ++ if (!(file->f_mode & FMODE_WRITE) || !s->buffers || s->mapped) ++ return 0; ++ ++ /* ++ * Send current buffer if it contains data. Be sure to send ++ * a full sample count. ++ */ ++ final_desc = NULL; ++ b = &s->buffers[s->usr_frag]; ++ if (b->offset &= ~3) { ++ final_desc = &b->dma_desc[1 + b->offset/MAX_DMA_SIZE]; ++ b->offset &= (MAX_DMA_SIZE-1); ++ dcmd_save = final_desc->dcmd; ++ final_desc->dcmd = b->offset | s->dcmd | DCMD_ENDIRQEN; ++ final_desc->ddadr |= DDADR_STOP; ++ b->offset = 0; ++ b->dma_desc->ddadr &= ~DDADR_STOP; ++ ++#ifdef DMA_NO_INITIALIZED ++ if ((DCSR(s->dma_ch) & DCSR_STOPSTATE)||!(DCSR(s->dma_ch) & DCSR_RUN)){ ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#else ++ if (DCSR(s->dma_ch) & DCSR_STOPSTATE) { ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#endif /* DMA_NO_INITIALIZED */ ++ } ++ /* Wait for DMA to complete. */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ add_wait_queue(&s->frag_wq, &wait); ++ while ((DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current)) { ++ schedule(); ++ set_current_state(TASK_INTERRUPTIBLE); ++ } ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&s->frag_wq, &wait); ++ ++ tosa_intmode = 0; ++ ++ /* Restore the descriptor chain. */ ++ if (final_desc) { ++ final_desc->dcmd = dcmd_save; ++ final_desc->ddadr &= ~DDADR_STOP; ++ b->dma_desc->ddadr |= DDADR_STOP; ++ } ++ return 0; ++} ++ ++static unsigned int audio_poll(struct file *file, ++ struct poll_table_struct *wait) ++{ ++ audio_state_t *state = file->private_data; ++ audio_stream_t *is = state->input_stream; ++ audio_stream_t *os = state->output_stream; ++ unsigned int mask = 0; ++ ++ if (file->f_mode & FMODE_READ) { ++ /* Start audio input if not already active */ ++ if (!is->buffers && audio_setup_buf(is)) ++ return -ENOMEM; ++#ifdef DMA_NO_INITIALIZED ++ if ((DCSR(is->dma_ch) & DCSR_STOPSTATE)|| !(DCSR(is->dma_ch) & DCSR_RUN)){ ++ DDADR(is->dma_ch) = is->buffers[is->dma_frag].dma_desc->ddadr; ++ DCSR(is->dma_ch) = DCSR_RUN; ++ } ++#else ++ if (DCSR(is->dma_ch) & DCSR_STOPSTATE) { ++ DDADR(is->dma_ch) = is->buffers[is->dma_frag].dma_desc->ddadr; ++ DCSR(is->dma_ch) = DCSR_RUN; ++ } ++#endif /* DMA_NO_INITIALIZED */ ++ poll_wait(file, &is->frag_wq, wait); ++ } ++ ++ if (file->f_mode & FMODE_WRITE) { ++ if (!os->buffers && audio_setup_buf(os)) ++ return -ENOMEM; ++ poll_wait(file, &os->frag_wq, wait); ++ } ++ ++ if (file->f_mode & FMODE_READ) ++ if (( is->mapped && is->bytecount > 0) || ++ (!is->mapped && atomic_read(&is->sem.count) > 0)) ++ mask |= POLLIN | POLLRDNORM; ++ ++ if (file->f_mode & FMODE_WRITE) ++ if (( os->mapped && os->bytecount > 0) || ++ (!os->mapped && atomic_read(&os->sem.count) > 0)) ++ mask |= POLLOUT | POLLWRNORM; ++ ++ return mask; ++} ++ ++static int audio_ioctl(struct inode *inode, struct file *file, ++ unsigned int cmd, unsigned long arg) ++{ ++ audio_state_t *state = file->private_data; ++ audio_stream_t *os = state->output_stream; ++ audio_stream_t *is = state->input_stream; ++ long val, fmt; ++ int data; ++ ++ switch(cmd) { ++ case OSS_GETVERSION: ++ return put_user(SOUND_VERSION, (int *)arg); ++ case SNDCTL_DSP_GETBLKSIZE: ++ if ( file->f_mode & FMODE_WRITE ) ++ return put_user(os->fragsize, (int *)arg); ++ else ++ return put_user(is->fragsize, (int *)arg); ++ case SNDCTL_DSP_GETCAPS: ++ val = DSP_CAP_REALTIME|DSP_CAP_TRIGGER|DSP_CAP_MMAP; ++ if (is && os) ++ val |= DSP_CAP_DUPLEX; ++ return put_user(val, (int *)arg); ++ case SNDCTL_DSP_SETFRAGMENT: ++ if ( get_user(val, (long *) arg) ) ++ return -EFAULT; ++ if ( file->f_mode & FMODE_READ ) { ++ int ret = audio_set_fragments(is, val); ++ if (ret < 0) return ret; ++ if ( (ret = put_user(ret, (int *)arg)) ) ++ return ret; ++ } ++ if ( file->f_mode & FMODE_WRITE ) { ++ int ret = audio_set_fragments(os, val); ++ if (ret < 0) return ret; ++ if ( (ret = put_user(ret, (int *)arg)) ) ++ return ret; ++ } ++ return 0; ++ case SNDCTL_DSP_SYNC: ++ return audio_sync(file); ++ case SNDCTL_DSP_POST: ++ return 0; ++ case SNDCTL_DSP_GETTRIGGER: ++ val = 0; ++ if ( file->f_mode & FMODE_READ && DCSR(is->dma_ch) & DCSR_RUN ) ++ val |= PCM_ENABLE_INPUT; ++ if ( file->f_mode & FMODE_WRITE && DCSR(os->dma_ch) & DCSR_RUN ) ++ val |= PCM_ENABLE_OUTPUT; ++ return put_user(val, (int *)arg); ++ case SNDCTL_DSP_SETTRIGGER: ++ if ( get_user(val, (int *)arg) ) ++ return -EFAULT; ++ if ( file->f_mode & FMODE_READ ) { ++ if ( val & PCM_ENABLE_INPUT ) { ++ if ( !is->buffers && audio_setup_buf(is) ) ++ return -ENOMEM; ++ if ( !(DCSR(is->dma_ch) & DCSR_RUN) ) { ++ audio_buf_t *b = &is->buffers[is->dma_frag]; ++ DDADR(is->dma_ch) = b->dma_desc->ddadr; ++ DCSR(is->dma_ch) = DCSR_RUN; ++ } ++ } else { ++ DCSR(is->dma_ch) = 0; ++ } ++ } ++ if ( file->f_mode & FMODE_WRITE ) { ++ if ( val & PCM_ENABLE_OUTPUT ) { ++ if ( !os->buffers && audio_setup_buf(os) ) ++ return -ENOMEM; ++ if ( !(DCSR(os->dma_ch) & DCSR_RUN) ) { ++ audio_buf_t *b = &os->buffers[os->dma_frag]; ++ DDADR(os->dma_ch) = b->dma_desc->ddadr; ++ DCSR(os->dma_ch) = DCSR_RUN; ++ } ++ } else { ++ DCSR(os->dma_ch) = 0; ++ } ++ } ++ return 0; ++ case SNDCTL_DSP_GETOSPACE: ++ { ++ audio_buf_info inf = { 0, }; ++ audio_stream_t *s = os; ++ int j,k; ++ if ( (s == os && !(file->f_mode & FMODE_WRITE)) ) ++ return -EINVAL; ++ if ( !s->buffers && audio_setup_buf(s) ) ++ return -ENOMEM; ++ j = s->usr_frag; ++ k = s->dma_frag; ++ if ( atomic_read(&s->sem.count) > 0 ) { ++ if ( j > k ) { ++ inf.fragments = s->nbfrags - ( j - k ); ++ } else if ( j < k ) { ++ inf.fragments = k - j; ++ } else { ++ inf.fragments = s->nbfrags; ++ } ++ } ++ inf.bytes = s->fragsize * inf.fragments; ++ inf.fragsize = s->fragsize; ++ inf.fragstotal = s->nbfrags; ++ return copy_to_user((void *)arg, &inf, sizeof(inf)); ++ } ++ case SNDCTL_DSP_GETISPACE: ++ { ++ audio_buf_info inf = { 0, }; ++ audio_stream_t *s = is; ++ int j,k; ++ ++ if ( (s == is && !(file->f_mode & FMODE_READ)) ) ++ return -EINVAL; ++ if (!s->buffers && audio_setup_buf(s)) ++ return -ENOMEM; ++ ++ j = s->usr_frag; ++ k = s->dma_frag; ++ if ( atomic_read(&s->sem.count) <= 0 ) { ++ inf.fragments = 0; ++ } else { ++ inf.fragments = atomic_read(&s->sem.count); ++ } ++ inf.bytes = s->fragsize * inf.fragments; ++ inf.fragsize = s->fragsize; ++ inf.fragstotal = s->nbfrags; ++ return copy_to_user((void *)arg, &inf, sizeof(inf)); ++ } ++ case SNDCTL_DSP_GETOPTR: ++ case SNDCTL_DSP_GETIPTR: ++ { ++ count_info inf = { 0, }; ++ audio_stream_t *s = (cmd == SNDCTL_DSP_GETOPTR) ? os : is; ++ dma_addr_t ptr; ++ int bytecount, offset, flags; ++ if ( (s == is && !(file->f_mode & FMODE_READ)) || ++ (s == os && !(file->f_mode & FMODE_WRITE)) ) ++ return -EINVAL; ++ if ( DCSR(s->dma_ch) & DCSR_RUN ) { ++ audio_buf_t *b; ++ save_flags_cli(flags); ++ ptr = (s->output) ? DSADR(s->dma_ch) : DTADR(s->dma_ch); ++ b = &s->buffers[s->dma_frag]; ++ offset = ptr - b->dma_desc->dsadr; ++ if ( offset >= s->fragsize ) ++ offset = s->fragsize - 4; ++ } else { ++ save_flags(flags); ++ offset = 0; ++ } ++ inf.ptr = s->dma_frag * s->fragsize + offset; ++ bytecount = s->bytecount + offset; ++ s->bytecount = -offset; ++ inf.blocks = s->fragcount; ++ s->fragcount = 0; ++ restore_flags(flags); ++ if ( bytecount < 0 ) ++ bytecount = 0; ++ inf.bytes = bytecount; ++ return copy_to_user((void *)arg, &inf, sizeof(inf)); ++ } ++ case SNDCTL_DSP_NONBLOCK: ++ file->f_flags |= O_NONBLOCK; ++ return 0; ++ case SNDCTL_DSP_RESET: ++ if ( file->f_mode & FMODE_WRITE ) ++ pxa_audio_clear_buf(os); ++ if ( file->f_mode & FMODE_READ ) ++ pxa_audio_clear_buf(is); ++ return 0; ++ case SNDCTL_DSP_SPEED: ++ audio_sync(file); ++ IOCTL_IN(arg, data); ++ return IOCTL_OUT(arg, (*sound.mach.setFreq)(data)); ++ case SNDCTL_DSP_STEREO: ++ audio_sync(file); ++ IOCTL_IN(arg, data); ++ return IOCTL_OUT(arg, (*sound.mach.setStereo)(data)); ++ case SOUND_PCM_WRITE_CHANNELS: ++ audio_sync(file); ++ IOCTL_IN(arg, data); ++ return IOCTL_OUT(arg, (*sound.mach.setStereo)(data-1)+1); ++ case SNDCTL_DSP_SETFMT: ++ audio_sync(file); ++ IOCTL_IN(arg, data); ++ return IOCTL_OUT(arg, (*sound.mach.setFormat)(data)); ++ case SNDCTL_DSP_GETFMTS: ++ fmt = 0; ++ if (sound.trans) { ++ if (sound.trans->ct_ulaw) ++ fmt |= AFMT_MU_LAW; ++ if (sound.trans->ct_alaw) ++ fmt |= AFMT_A_LAW; ++ if (sound.trans->ct_s8) ++ fmt |= AFMT_S8; ++ if (sound.trans->ct_u8) ++ fmt |= AFMT_U8; ++ if (sound.trans->ct_s16be) ++ fmt |= AFMT_S16_BE; ++ if (sound.trans->ct_u16be) ++ fmt |= AFMT_U16_BE; ++ if (sound.trans->ct_s16le) ++ fmt |= AFMT_S16_LE; ++ if (sound.trans->ct_u16le) ++ fmt |= AFMT_U16_LE; ++ } ++ return IOCTL_OUT(arg, fmt); ++ default: ++ return mixer_ioctl(inode, file, cmd, arg); ++ } ++ return 0; ++} ++ ++static int audio_mmap(struct file *file, struct vm_area_struct *vma) ++{ ++ audio_state_t *state = file->private_data; ++ audio_stream_t *s; ++ unsigned long size, vma_addr; ++ int i, ret; ++ ++ if (vma->vm_pgoff != 0) ++ return -EINVAL; ++ ++ if (vma->vm_flags & VM_WRITE) { ++ if (!state->wr_ref) ++ return -EINVAL;; ++ s = state->output_stream; ++ } else if (vma->vm_flags & VM_READ) { ++ if (!state->rd_ref) ++ return -EINVAL; ++ s = state->input_stream; ++ } else return -EINVAL; ++ ++ if (s->mapped) ++ return -EINVAL; ++ size = vma->vm_end - vma->vm_start; ++ if (size != s->fragsize * s->nbfrags) ++ return -EINVAL; ++ if (!s->buffers && audio_setup_buf(s)) ++ return -ENOMEM; ++ vma_addr = vma->vm_start; ++ for (i = 0; i < s->nbfrags; i++) { ++ audio_buf_t *buf = &s->buffers[i]; ++ if (!buf->master) ++ continue; ++ ret = remap_page_range(vma_addr, buf->dma_desc->dsadr, ++ buf->master, vma->vm_page_prot); ++ if (ret) ++ return ret; ++ vma_addr += buf->master; ++ } ++ for (i = 0; i < s->nbfrags; i++) ++ s->buffers[i].dma_desc->ddadr &= ~DDADR_STOP; ++ s->mapped = 1; ++ return 0; ++} ++ ++static int audio_release(struct inode *inode, struct file *file) ++{ ++ audio_state_t *state = file->private_data; ++ int err; ++ ++ down(&state->sem); ++ if ( file->f_mode & FMODE_READ ) { ++ pxa_audio_clear_buf(state->input_stream); ++ *state->input_stream->drcmr = 0; ++ pxa_free_dma(state->input_stream->dma_ch); ++ state->rd_ref = 0; ++ } ++ ++ if ( file->f_mode & FMODE_WRITE ) { ++ audio_sync(file); ++ pxa_audio_clear_buf(state->output_stream); ++ *state->output_stream->drcmr = 0; ++ pxa_free_dma(state->output_stream->dma_ch); ++ state->wr_ref = 0; ++ } ++ ++ // Close wm9712 ++ if( (err = wm9712_close()) ) { ++ DEBUG(DBG_L0, "Can not close wm9712\n"); ++ return err; ++ } ++ sound.mode = 0; ++ up(&state->sem); ++ return 0; ++} ++ ++static struct file_operations ac97_audio_fops = { ++ llseek: no_llseek, ++ write: audio_write, ++ read: audio_read, ++ poll: audio_poll, ++ ioctl: audio_ioctl, ++ open: audio_open, ++ release: audio_release, ++ mmap: audio_mmap, ++ owner: THIS_MODULE ++}; ++ ++static void tosa_intmode_mix(unsigned char *dest,int bUsed) ++#ifdef ALARM_NO_MALLOC ++{ ++ int i; ++ short *cdata = (short *)dest; ++ int cnt = min(tosa_intmode, bUsed); ++ int idx; ++ ++ for ( i = 0; i < (cnt/4); i++ ) { ++ idx = (tosa_intmode_cur>>8); ++ *cdata++ = int_data_org[idx*2]; ++ *cdata++ = int_data_org[idx*2+1]; ++ tosa_intmode_cur += tosa_intmode_step; ++ } ++ ++ tosa_intmode -= cnt; ++ if ( tosa_intmode <= 0 ) { ++ tosa_intmode = 0; ++ int_data_org = NULL; ++ } ++} ++#else ++{ ++ int i; ++ short *cdata = (short *)dest; ++ int cnt = min(tosa_intmode, bUsed); ++ ++ for ( i = 0; i < (cnt/4); i++ ) { ++ *cdata = *int_data; ++ int_data++; ++ cdata++; ++ *cdata = *int_data; ++ int_data++; ++ cdata++; ++ } ++ ++ tosa_intmode -= cnt; ++ if ( tosa_intmode <= 0 ) { ++ tosa_intmode = 0; ++ if ( int_data_org ) { ++ kfree(int_data_org); ++ int_data_org = NULL; ++ } ++ } ++} ++#endif /* ALARM_NO_MALLOC */ ++ ++/************************************************************ ++ * Buzzer ++ ************************************************************/ ++#ifdef CONFIG_BUZZER_TOSA ++ ++#ifdef ALARM_NO_MALLOC ++int audio_buzzer_intmode(unsigned short *buffer,int count,int speed) ++{ ++ int idx,i; ++ unsigned long snddata; ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *os = state->output_stream; ++ audio_stream_t *s = os; ++ ++ int_data_org = buffer; ++ tosa_intmode = (count * sound.freq / speed)&(~3); ++ tosa_intmode_speed = speed; ++ tosa_intmode_cur = 0; ++ tosa_intmode_step = (speed << 8 ) / sound.freq; // fixed point (x256) ++ tosa_intmode_direct = 1; ++ ++ // pause during play or recording , so kick this place. ++ if ( ((DCSR(s->dma_ch) & DCSR_STOPSTATE) && (state->wr_ref)) || ++ ((!state->wr_ref ) && ( state->rd_ref)) ) { ++ for ( i = 0; i < (tosa_intmode/4) ; i++ ) { ++ idx = (tosa_intmode_cur>>8); ++ snddata = (buffer[idx*2]|(buffer[idx*2+1]<<16)); ++ tosa_intmode_cur += tosa_intmode_step; ++ tosa_ac97_write(snddata); ++ } ++ tosa_intmode = 0; ++ int_data_org = NULL; ++ } ++ tosa_intmode_direct = 0; ++ return 1; ++} ++#else /* ALARM_NO_MALLOC */ ++int audio_buzzer_intmode(unsigned short *buffer,int count,int speed) ++{ ++ int samplingCount = count * sound.hw_freq / speed; ++ int idx,i ; ++ int cur=0,step = (speed << 8 ) / sound.hw_freq; // fixed point (x256) ++ unsigned short *dstct; ++ ++ int_data = (unsigned short *)kmalloc(count * 6,GFP_KERNEL); ++ if ( !int_data ) return 0; ++ int_data_org = int_data; ++ ++ samplingCount &= ~0x3; ++ ++ dstct = int_data; ++ for( i = 0; i < (samplingCount/4); i++ ) { ++ idx = (cur>>8); ++ *dstct++ = buffer[idx*2]; ++ *dstct++ = buffer[idx*2+1]; ++ cur += step; ++ } ++ ++ tosa_intmode = samplingCount; ++ tosa_intmode_speed = speed; ++ tosa_intmode_direct = 1; ++ ++ { ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *os = state->output_stream; ++ audio_stream_t *s = os; ++ ++ // pause during play or recording , so kick this place. ++ if ( ((DCSR(s->dma_ch) & DCSR_STOPSTATE) && (state->wr_ref)) || ++ ((!state->wr_ref) && (state->rd_ref)) ) { ++ int i; ++ for ( i = 0; i < (tosa_intmode/4); i++ ) { ++ tosa_ac97_write(*(unsigned long *)int_data); ++ int_data++; ++ int_data++; ++ } ++ tosa_intmode = 0; ++ kfree(int_data_org); ++ int_data_org = NULL; ++ } ++ } ++ ++ tosa_intmode_direct = 0; ++ return 1; ++} ++#endif /* ALARM_NO_MALLOC */ ++ ++int audio_buzzer_write(const char *buffer,int count) ++{ ++ const char *buffer0 = buffer; ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *s = state->output_stream; ++ int chunksize, ret = 0; ++ ++ ++ if (!s->buffers && audio_setup_buf(s)) ++ return -ENOMEM; ++ ++ while ( count > 0 ) { ++ audio_buf_t *b = &s->buffers[s->usr_frag]; ++ ++#ifdef BUZZER_FORCE_CLOSE ++ if( buzzer_close ) break; ++#endif ++ ++ chunksize = s->fragsize - b->offset; ++ if ( chunksize > count ) ++ chunksize = count; ++ memcpy(b->data + b->offset, buffer, chunksize); ++ ++ b->offset += chunksize; ++ buffer += chunksize; ++ count -= chunksize; ++ ++ if ( b->offset < s->fragsize ) { ++ up(&s->sem); ++ break; ++ } ++ ++ b->offset = 0; ++ b->dma_desc->ddadr &= ~DDADR_STOP; ++#ifdef DMA_NO_INITIALIZED ++ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE )|| !(DCSR(s->dma_ch) & DCSR_RUN) ){ ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#else ++ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) { ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#endif ++ ++ /* move the index to the next fragment */ ++ if ( ++s->usr_frag >= s->nbfrags ) ++ s->usr_frag = 0; ++ } ++ ++ if ( buffer - buffer0 ) ++ ret = buffer - buffer0; ++ ++ return ret; ++} ++ ++void audio_buzzer_sync(void) ++{ ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *s = state->output_stream; ++ audio_buf_t *b; ++ pxa_dma_desc *final_desc; ++ u_long dcmd_save = 0; ++ DECLARE_WAITQUEUE(wait, current); ++ ++#ifdef BUZZER_FORCE_CLOSE ++ if( buzzer_close ) goto sync_end; ++#endif ++ ++ //audio_sync(file); ++ ++ /* ++ * Send current buffer if it contains data. Be sure to send ++ * a full sample count. ++ */ ++ final_desc = NULL; ++ b = &s->buffers[s->usr_frag]; ++ if ( b->offset &= ~3 ) { ++ final_desc = &b->dma_desc[1 + b->offset/MAX_DMA_SIZE]; ++ b->offset &= (MAX_DMA_SIZE-1); ++ dcmd_save = final_desc->dcmd; ++ final_desc->dcmd = b->offset | s->dcmd | DCMD_ENDIRQEN; ++ final_desc->ddadr |= DDADR_STOP; ++ b->offset = 0; ++ b->dma_desc->ddadr &= ~DDADR_STOP; ++#ifdef DMA_NO_INITIALIZED ++ if ( (DCSR(s->dma_ch) & DCSR_STOPSTATE) || !(DCSR(s->dma_ch) & DCSR_RUN) ) { ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#else ++ if ( DCSR(s->dma_ch) & DCSR_STOPSTATE ) { ++ DDADR(s->dma_ch) = b->dma_desc->ddadr; ++ DCSR(s->dma_ch) = DCSR_RUN; ++ } ++#endif ++ } ++ ++#ifdef BUZZER_FORCE_CLOSE ++sync_end:; ++#endif ++ ++ /* Wait for DMA to complete. */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ add_wait_queue(&s->frag_wq, &wait); ++ while ( (DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current) ) { ++ schedule(); ++ set_current_state(TASK_INTERRUPTIBLE); ++ } ++ ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&s->frag_wq, &wait); ++} ++ ++int audio_buzzer_release(void) ++{ ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *s = state->output_stream; ++ int err, ret = 0; ++ DECLARE_WAITQUEUE(wait, current); ++ ++ ++ //audio_sync(file); ++ /* Wait for DMA to complete. */ ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ add_wait_queue(&s->frag_wq, &wait); ++ while ( (DCSR(s->dma_ch) & DCSR_RUN) && !signal_pending(current) ) { ++ schedule(); ++ set_current_state(TASK_INTERRUPTIBLE); ++ } ++ ++ set_current_state(TASK_RUNNING); ++ remove_wait_queue(&s->frag_wq, &wait); ++ ++ audio_clear_buf(state->output_stream); ++ *state->output_stream->drcmr = 0; ++ pxa_free_dma(state->output_stream->dma_ch); ++ state->wr_ref = 0; ++ ++#ifdef ALARM_NO_MALLOC ++ // wait playing int sound. ++#ifdef BUZZER_FORCE_CLOSE ++ while ( tosa_intmode_direct && !buzzer_close ) ++ schedule(); ++#else ++ while ( tosa_intmode_direct ) ++ schedule(); ++#endif /* BUZZER_FORCE_CLOSE */ ++ ++ tosa_intmode = 0; ++ int_data_org = NULL; ++#else ++ if ( int_data_org ) { ++ kfree(int_data_org); ++ int_data_org = NULL; ++ } ++#endif /* ALARM_NO_MALLOC */ ++ if( (err = wm9712_close()) < 0 ) { ++ DEBUG(DBG_L0, "Can not close wm9712\n"); ++ ret = err; ++ } ++ state->wr_ref = 0; ++#ifdef BUZZER_FORCE_CLOSE ++ buzzer_open = 0; ++#endif /* BUZZER_FORCE_CLOSE */ ++ return 0; ++} ++ ++int audio_buzzer_open(int speed) ++{ ++ audio_state_t *state = &ac97_audio_state; ++ audio_stream_t *os = state->output_stream; ++ SOUND_SETTINGS settings; ++ int err; ++ ++ err = -EBUSY; ++ if ( state->wr_ref || state->rd_ref ) ++ goto out; ++ ++ state->wr_ref = 1; ++ ++#ifdef BUZZER_FORCE_CLOSE ++ buzzer_open = 1; ++#endif /* BUZZER_FORCE_CLOSE */ ++ ++ /* request DMA channels */ ++ if ( (err = pxa_request_dma(os->name, DMA_PRIO_LOW, audio_dma_irq, os)) < 0 ) ++ goto error; ++ os->dma_ch = err; ++ ++ os->fragsize = AUDIO_FRAGSIZE_DEFAULT; ++ os->nbfrags = AUDIO_NBFRAGS_DEFAULT; ++ os->output = 1; ++ os->mapped = 0; ++ init_waitqueue_head(&os->frag_wq); ++ init_waitqueue_head(&os->stop_wq); ++ *os->drcmr = os->dma_ch | DRCMR_MAPVLD; ++ ++ sound.mode = SOUND_PLAY_MODE; ++ settings.mode = sound.mode; ++ settings.output.left = sound.volume_left; ++ settings.output.right = sound.volume_right; ++ settings.input.left = sound.gain_left; ++ settings.input.right = sound.gain_right; ++ settings.frequency = speed; ++ ++ if( (err = wm9712_open(&settings)) < 0 ) { ++ DEBUG(DBG_L0, "Can not open wm9712\n"); ++ goto error; ++ } ++ ++ sound.freq = speed; ++ ++ err = 0; ++out: ++#ifdef BUZZER_FORCE_CLOSE ++ if( buzzer_close ){ ++ err = -EBUSY; ++ goto error; ++ } ++#endif ++ return err; ++ ++error: ++ *os->drcmr = 0; ++ pxa_free_dma(os->dma_ch); ++ state->wr_ref = 0; ++ return err; ++} ++#endif /* CONFIG_BUZZER_TOSA */ ++ ++/************************************************************ ++ * /dev/sndstat ++ * Audio Stat stuff ++ ************************************************************/ ++static int state_open(struct inode *inode, struct file *file) ++{ ++ char *buffer = tosa_sound_state.buf; ++ int len = 0; ++ ++ if ( tosa_sound_state.busy ) return -EBUSY; ++ ++ MOD_INC_USE_COUNT; ++ tosa_sound_state.ptr = 0; ++ tosa_sound_state.busy = 1; ++ ++ len += sprintf(buffer+len, " TOSA AC97 sound driver:\n"); ++ len += sprintf(buffer+len, "\tsound.speed = %dHz\n", sound.freq); ++ len += sprintf(buffer+len, "\tsound.stereo = 0x%x (%s)\n", ++ sound.stereo, sound.stereo ? "stereo" : "mono"); ++ tosa_sound_state.len = len; ++ return 0; ++} ++ ++static int state_release(struct inode *inode, struct file *file) ++{ ++ tosa_sound_state.busy = 0; ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static ssize_t state_read(struct file *file, char *buf, size_t count, ++ loff_t *ppos) ++{ ++ int n = tosa_sound_state.len - tosa_sound_state.ptr; ++ if ( n > count ) n = count; ++ if ( n <= 0 ) return 0; ++ if ( copy_to_user(buf, &tosa_sound_state.buf[tosa_sound_state.ptr], n) ) ++ return -EFAULT; ++ tosa_sound_state.ptr += n; ++ return n; ++} ++ ++static struct file_operations state_fops = ++{ ++ llseek: no_llseek, ++ read: state_read, ++ open: state_open, ++ release: state_release, ++}; ++ ++static void state_init(void) ++{ ++ tosa_sound_state.dev_state = ++ register_sound_special(&state_fops, SND_DEV_STATUS); ++ if ( tosa_sound_state.dev_state < 0 ) return; ++ tosa_sound_state.busy = 0; ++} ++ ++/************************************************************ ++ * /dev/mixer ++ * Audio Mixer stuff ++ ************************************************************/ ++static int mixer_ioctl( struct inode *inode, struct file *file, ++ unsigned int cmd, unsigned long arg) ++{ ++ int data; ++ ++ switch (cmd) { ++ case SOUND_MIXER_READ_DEVMASK: ++ return IOCTL_OUT(arg, (SOUND_MASK_VOLUME|SOUND_MASK_MIC) ); ++ case SOUND_MIXER_READ_RECMASK: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_READ_STEREODEVS: ++ return IOCTL_OUT(arg, SOUND_MASK_VOLUME); ++ case SOUND_MIXER_READ_CAPS: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_WRITE_VOLUME: ++ IOCTL_IN(arg, data); ++ (*sound.mach.setVolume)(data); ++ case SOUND_MIXER_READ_VOLUME: ++ return IOCTL_OUT(arg, (*sound.mach.getVolume)()); ++ case SOUND_MIXER_READ_TREBLE: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_WRITE_TREBLE: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_READ_SPEAKER: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_WRITE_SPEAKER: ++ return IOCTL_OUT(arg, 0); ++ case SOUND_MIXER_WRITE_MIC: ++ IOCTL_IN(arg, data); ++ (*sound.mach.setGain)(data); ++ case SOUND_MIXER_READ_MIC: ++ return IOCTL_OUT(arg, (*sound.mach.getGain)()); ++ case SOUND_MIXER_AGC: ++ IOCTL_IN(arg, data); ++ return IOCTL_OUT(arg, wm9712_set_agc(data)); ++ } ++ return -EINVAL; ++} ++ ++static int mixer_open(struct inode *inode, struct file *file) ++{ ++ if ( codec->mixer_busy ) return -EBUSY; ++ MOD_INC_USE_COUNT; ++ codec->mixer_busy = 1; ++ return 0; ++} ++ ++static int mixer_release(struct inode *inode, struct file *file) ++{ ++ codec->mixer_busy = 0; ++ MOD_DEC_USE_COUNT; ++ return 0; ++} ++ ++static struct file_operations mixer_fops = { ++ ioctl: mixer_ioctl, ++ llseek: no_llseek, ++ open: mixer_open, ++ release: mixer_release, ++ owner: THIS_MODULE ++}; ++ ++static void mixer_init(void) ++{ ++ codec->dev_mixer = register_sound_mixer(&mixer_fops, -1); ++ if ( codec->dev_mixer < 0 ) return; ++ codec->mixer_busy = 0; ++} ++ ++/************************************************************ ++ * /dev/dsp ++ * Audio stuff ++ ************************************************************/ ++static void sq_init(void) ++{ ++ /* Regist /dev/dsp. */ ++ ac97_audio_state.dev_dsp = register_sound_dsp(&ac97_audio_fops, -1); ++ if( ac97_audio_state.dev_dsp < 0 ) return; ++ ++ ac97_audio_state.wr_ref = 0; ++ ac97_audio_state.rd_ref = 0; ++ ++ /* Set default settings */ ++ sound.format = AFMT_S16_LE; ++ sound.stereo = 1; ++ sound.freq = 48000; ++ sound.size = 16; ++ sound.trans = &trans_tosa; ++ sound.trans_read = &trans_r_tosa; ++ sound.volume_left = 80; ++ sound.volume_right = 80; ++ sound.gain_left = 40; ++ sound.gain_right = 40; ++ ++ /* Change Format */ ++ (*sound.mach.setFormat)(sound.format); ++} ++ ++static int __init pxa_ac97_init(void) ++{ ++ sound.mach = mach_tosa; ++ ++ if( (*sound.mach.init)() < 0 ) { ++ wm9712_exit(); ++ return -EBUSY; ++ } ++ /* Set default settings. */ ++ sq_init(); ++ /* Set up /dev/sndstat. */ ++ state_init(); ++ /* Set up /dev/mixer. */ ++ mixer_init(); ++#ifdef CONFIG_PM ++ pxa_sound_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_pm_callback); ++#endif /* CONFIG_PM */ ++ ++ printk(KERN_INFO "Tosa AC97 initialize\n"); ++ ++ return 0; ++} ++ ++static void __exit pxa_ac97_exit(void) ++{ ++ if ( ac97_audio_state.dev_dsp >= 0 ) ++ unregister_sound_dsp(ac97_audio_state.dev_dsp); ++ unregister_sound_mixer(codec->dev_mixer); ++ if ( tosa_sound_state.dev_state >= 0 ) ++ unregister_sound_special(tosa_sound_state.dev_state); ++ wm9712_exit(); ++} ++ ++ ++module_init(pxa_ac97_init); ++module_exit(pxa_ac97_exit); ++ ++#ifdef CONFIG_PM ++/************************************************************ ++ * Power Management ++ ************************************************************/ ++static int tosa_pm_callback(struct pm_dev *pm_dev,pm_request_t req, void *data) ++{ ++ int err; ++ switch (req) { ++ case PM_SUSPEND: ++ DEBUG(DBG_L1, "PM_SUSPEND: start\n"); ++ wm9712_suspend(); ++#ifdef CONFIG_TOSA_TS ++ tosa_ts_suspend(); ++#endif /* CONFIG_TOSA_TS */ ++ if ( ac97_audio_state.rd_ref != 0 ) { ++ audio_clear_buf(ac97_audio_state.input_stream); ++ *ac97_audio_state.input_stream->drcmr = 0; ++ pxa_free_dma(ac97_audio_state.input_stream->dma_ch); ++ } ++ ++ if ( ac97_audio_state.wr_ref != 0 ) { ++ audio_clear_buf(ac97_audio_state.output_stream); ++ *ac97_audio_state.output_stream->drcmr = 0; ++ pxa_free_dma(ac97_audio_state.output_stream->dma_ch); ++ } ++ DEBUG(DBG_L1, "PM_SUSPEND: done\n"); ++ break; ++ case PM_RESUME: ++ DEBUG(DBG_L1, "PM_RESUME: start\n"); ++ /* request DMA channels */ ++ if ( ac97_audio_state.wr_ref != 0 ) { ++ init_waitqueue_head(&ac97_audio_state.output_stream->frag_wq); ++ init_waitqueue_head(&ac97_audio_state.output_stream->stop_wq); ++ *ac97_audio_state.output_stream->drcmr = ++ ac97_audio_state.output_stream->dma_ch | DRCMR_MAPVLD; ++ err = pxa_request_dma(ac97_audio_state.output_stream->name, DMA_PRIO_LOW, ++ audio_dma_irq, ac97_audio_state.output_stream); ++ if ( err < 0 ) { ++ DEBUG(DBG_L0, "Can not get DMA\n"); ++ } ++ ac97_audio_state.output_stream->dma_ch = err; ++ } ++ if ( ac97_audio_state.rd_ref != 0 ) { ++ init_waitqueue_head(&ac97_audio_state.input_stream->frag_wq); ++ init_waitqueue_head(&ac97_audio_state.input_stream->stop_wq); ++ *ac97_audio_state.input_stream->drcmr = ++ ac97_audio_state.input_stream->dma_ch | DRCMR_MAPVLD; ++ err = pxa_request_dma(ac97_audio_state.input_stream->name, DMA_PRIO_LOW, ++ audio_dma_irq, ac97_audio_state.input_stream); ++ if ( err < 0 ) { ++ DEBUG(DBG_L0, "Can not get DMA\n"); ++ } ++ ac97_audio_state.input_stream->dma_ch = err; ++ } ++ wm9712_resume(); ++#ifdef CONFIG_TOSA_TS ++ tosa_ts_resume(); ++#endif /* CONFIG_TOSA_TS */ ++ DEBUG(DBG_L1, "PM_RESUME: done\n"); ++ break; ++ } ++ return 0; ++} ++#endif /* CONFIG_PM */ +diff -Nur linux_c860_org/drivers/sound/pxa-audio.c linux/drivers/sound/pxa-audio.c +--- linux_c860_org/drivers/sound/pxa-audio.c 2002-08-26 15:00:56.000000000 +0900 ++++ linux/drivers/sound/pxa-audio.c 2004-06-10 21:09:10.000000000 +0900 +@@ -8,6 +8,9 @@ + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. ++ * ++ * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/init.h> +@@ -78,7 +81,11 @@ + * This function allocates the DMA descriptor array and buffer data space + * according to the current number of fragments and fragment size. + */ ++#ifdef CONFIG_ARCH_PXA_TOSA ++int audio_setup_buf(audio_stream_t * s) ++#else + static int audio_setup_buf(audio_stream_t * s) ++#endif /* CONFIG_ARCH_PXA_TOSA */ + { + pxa_dma_desc *dma_desc; + dma_addr_t dma_desc_phys; +@@ -258,7 +265,11 @@ + /* + * Validate and sets up buffer fragments, etc. + */ ++#ifdef CONFIG_ARCH_PXA_TOSA ++int audio_set_fragments(audio_stream_t *s, int val) ++#else + static int audio_set_fragments(audio_stream_t *s, int val) ++#endif /* CONFIG_ARCH_PXA_TOSA */ + { + if (s->mapped || DCSR(s->dma_ch) & DCSR_RUN) + return -EBUSY; +@@ -428,7 +439,11 @@ + } + + ++#ifdef CONFIG_ARCH_PXA_TOSA ++int audio_sync(struct file *file) ++#else + static int audio_sync(struct file *file) ++#endif /* CONFIG_ARCH_PXA_TOSA */ + { + audio_state_t *state = file->private_data; + audio_stream_t *s = state->output_stream; +@@ -810,12 +825,16 @@ + } + + file->private_data = state; ++#ifndef CONFIG_ARCH_PXA_TOSA + file->f_op->release = audio_release; ++#endif /* CONFIG_ARCH_PXA_TOSA */ + file->f_op->write = audio_write; + file->f_op->read = audio_read; + file->f_op->mmap = audio_mmap; + file->f_op->poll = audio_poll; ++#ifndef CONFIG_ARCH_PXA_TOSA + file->f_op->ioctl = audio_ioctl; ++#endif /* CONFIG_ARCH_PXA_TOSA */ + file->f_op->llseek = no_llseek; + + if ((file->f_mode & FMODE_WRITE)) { +@@ -849,3 +868,8 @@ + EXPORT_SYMBOL(pxa_audio_attach); + EXPORT_SYMBOL(pxa_audio_clear_buf); + ++#ifdef CONFIG_ARCH_PXA_TOSA ++EXPORT_SYMBOL(audio_set_fragments); ++EXPORT_SYMBOL(audio_sync); ++EXPORT_SYMBOL(audio_setup_buf); ++#endif +diff -Nur linux_c860_org/drivers/sound/sound_core.c linux/drivers/sound/sound_core.c +--- linux_c860_org/drivers/sound/sound_core.c 2002-08-26 14:38:55.000000000 +0900 ++++ linux/drivers/sound/sound_core.c 2004-06-10 21:09:10.000000000 +0900 +@@ -37,6 +37,7 @@ + #include <linux/config.h> + #include <linux/module.h> + #include <linux/init.h> ++#include <linux/sched.h> + #include <linux/slab.h> + #include <linux/types.h> + #include <linux/kernel.h> +diff -Nur linux_c860_org/drivers/sound/tosa_wm9712.c linux/drivers/sound/tosa_wm9712.c +--- linux_c860_org/drivers/sound/tosa_wm9712.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/sound/tosa_wm9712.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,861 @@ ++/* ++ * linux/drivers/sound/tosa_wm9712.c ++ * ++ * wm9712 ctrl funstions for PXA (SHARP) ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/drivers/sound/poodle_wm8731.c ++ * wm8731 ctrl funstions for PXA (SHARP) ++ * Copyright (C) 2002 SHARP ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ ++#include <linux/sched.h> ++#include <linux/timer.h> ++#include <linux/poll.h> ++#include <linux/delay.h> ++#include <linux/config.h> ++#include <linux/init.h> ++#include <linux/module.h> ++#include <linux/ac97_codec.h> ++#include <asm/arch/hardware.h> ++#include <asm/arch/irqs.h> ++ ++#ifdef CONFIG_PM ++#include <asm/sharp_apm.h> ++#endif /* CONFIG_PM */ ++ ++#include <asm/arch/tosa_wm9712.h> ++ ++/************************************************************ ++ * Debug ++ ************************************************************/ ++#define DBG_LEVEL 0 ++ ++#define DBG_L0 0 ++#define DBG_L1 1 ++#define DBG_L2 2 ++#define DBG_L3 3 ++ ++#ifdef DBG_LEVEL ++#define DEBUG(level, x, args...) \ ++ if ( level <= DBG_LEVEL ) printk("%s: " x,__FUNCTION__ ,##args) ++#else ++#define DEBUG(level, x, args...) \ ++ if ( !level ) printk("%s: " x,__FUNCTION__ ,##args) ++#endif /* DBG_LEVEL */ ++ ++//X#define DISABLE_JACKCHECK_PLAYING ++//X#define USE_HARDWARE_LMIX ++ ++/*** Some valiables **************************************************/ ++typedef struct { ++ unsigned char used; //used: open(1) close(0) ++ unsigned char jack; //Jack: in(1) out(0) ++ unsigned char mic; // Mic headPhone(1) no mic(0) ++ unsigned char last_jack_state; // jack state ++ unsigned char open_play; ++ unsigned char open_rec; ++ unsigned short mode; //Sound mode ++ int out_left; //Volume out left ++ int out_right; //Volume out right ++ int in_left; //Volume in left ++ int in_right; //Volume in right ++ int rate; //Sampling rate ++ int agc; //Agc: on(1) off(0) ++ int vol0; ++#ifdef DISABLE_JACKCHECK_PLAYING ++ int need_after_check; // check jack after playing ++#endif ++#ifdef CONFIG_PM ++ int suspend; //Suspend: on(1) off(0) ++#endif /* CONFIG_PM */ ++} wm9712_stat_t; ++ ++static wm9712_stat_t wm9712_stat; ++static unsigned char ac97_on = 0; ++int wm9712_mono_out = 0; // mix output data into mono ++//static spinlock_t ear_in_lock = SPIN_LOCK_UNLOCKED; ++//static struct tq_struct wm9712_queue; ++static struct timer_list hp_wakeup_timer; ++#define HP_WAKEUP_DELAY (HZ*3) ++ ++static int wm9712_setup(SOUND_SETTINGS *); ++static void wm9712_update_agc(int); ++ ++#define MAKEJACKSTATE(jack,mic) ((jack)*2+(mic)) ++#define INVALID_JACKSTATE -1 ++#define DEV_OUTALL 0 ++#define DEV_SP 1 ++#define DEV_HP 2 ++#define DEV_HPL 3 ++#define DEV_MIC 4 ++ ++#define BIT_ZC (0x1<<7) ++#define BIT_INV (0x1<<6) ++#define VOLL_SHIFT 8 ++#define VOLL_MASK (0x3f<<VOLL_SHIFT) ++#define VOLR_MASK (0x3f) ++#define VOLL_MUTE (0x2000) ++#define MASK_DACVOL (0x1f1f) ++#define LDACVOLSHIFT 8 ++#define RDACVOLSHIFT 0 ++#define BOOSTSHIFT 14 ++#define MASK_BOOST (0x1<<BOOSTSHIFT) ++#define MASK_RECVOL (0x3f3f) ++#define RECVOLLSHIFT 8 ++#define RECVOLRSHIFT 0 ++#define DACVOL_MASK 0x1F1F ++ ++#define RECSL_MASK 0x0707 ++#define RECSL_BITS_MIC 0x0000 ++#define RECSL_BITS_LINEIN 0x0304 ++#define D2H_BIT (0x1<<15) ++#define D2S_BIT (0x1<<14) ++#define AC97_GPIO1 (0x1<<1) ++#define AC97_GPIO5 (0x1<<5) ++#define ALCM_MASK 0x0c00 ++#define ALCM_MUTE 0x0c00 ++#define ALCM_HP 0x0800 ++#define ALC_MASK 0xc080 ++#define ALC_ON 0x4080 ++#define MS_MASK 0x0060 ++#define MS_MIC2 0x0040 ++#define MUTE_INPUT (0x1<<15) ++#define BIT_VRA (0x1<<0) ++ ++#define DEFAULT_OUT_VOLUME (75) ++#define DEFAULT_IN_VOLUME (75) ++#define DEFAULT_RATE (8000) ++#define JACK_POLLING_WAIT (5) ++ ++static DECLARE_WAIT_QUEUE_HEAD(hp_queue); ++static DECLARE_WAIT_QUEUE_HEAD(hp_proc); ++static int volume_table_initialized = FALSE; ++static unsigned short SpVolToReal[101]; ++static unsigned short HpVolToReal[101]; ++static unsigned short MicVolToReal[101]; ++static unsigned short DacVolToReal[101]; ++static unsigned short VolCnvTbl[38][2] __initdata = { ++ {8,31}, {8,31}, {8,30}, {8,29}, {8,28}, // 0 - 4 ++ {8,27}, {8,26}, {8,25}, {8,24}, {8,23}, // 5 - 9 ++ {8,22}, {8,21}, {8,20}, {8,19}, {8,18}, // 10 - 14 ++ {8,17}, {8,16}, {8,15}, {8,14}, {8,13}, // 15 - 19 ++ {8,12}, {8,11}, {8,10}, {8, 9}, {8, 8}, // 20 - 24 ++ {8, 7}, {8, 6}, {8, 5}, {8, 4}, {8, 3}, // 25 - 29 ++ {8, 2}, {8, 1}, {8, 0}, {7, 0}, {6, 0}, // 30 - 34 ++ {5, 0}, {4, 0}, {3, 0}, }; // 35 - 37 ++ ++static unsigned short VolInitTbl[101] __initdata = { ++ 0, 1, 5, 9, 11, 13, 14, 15, 16, 17, ++ 18, 19, 19, 20, 21, 21, 22, 22, 23, 23, ++ 23, 24, 24, 25, 25, 25, 25, 26, 26, 26, ++ 27, 27, 27, 27, 28, 28, 28, 28, 28, 29, ++ 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, ++ 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, ++ 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, ++ 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, ++ 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, ++ 35, 35, 35, 35, 36 ,36, 36, 36, 36, 36, ++ 37 }; ++ ++#ifdef CONFIG_PM ++#define ADEV_MAIN 0 ++#define ADEV_HP 1 ++#define ADEV_VOL 2 ++#define ADEV_OFFON 3 ++#define ADEV_INIT 4 ++static int lockState = 0; ++static void audioLockFCS( int dev, int bLock ) ++{ ++ int curLockState = lockState; ++ int now,last; ++ if (bLock) { ++ curLockState |= 0x1<<dev; ++ } else { ++ curLockState &= ~(0x1<<dev); ++ } ++ if (curLockState!=lockState) { ++ now = (curLockState!=0)?TRUE:FALSE; ++ last = (lockState!=0)?TRUE:FALSE; ++ if ( now != last ) { ++ lock_FCS(LOCK_FCS_SOUND, (curLockState!=0)?TRUE:FALSE); ++ } ++ lockState = curLockState; ++ } ++} ++#endif // end CONFIG_PM ++ ++/************************************************************ ++ * Config & Setup ++ ************************************************************/ ++int wm9712_busy(void) ++{ ++ return wm9712_stat.used; ++} ++ ++void wm9712_checkjack_sleep(void) ++{ ++ interruptible_sleep_on(&hp_proc); ++} ++ ++void wm9712_checkjack_wakeup(void) ++{ ++ wake_up(&hp_proc); ++} ++ ++static int check_hp_jack(void) ++{ ++ unsigned short gpio_status; ++ int count = 0, err = 0; ++ int state; ++ ++ gpio_status = ac97_read(AC97_GPIO_STATUS); ++ state = !(gpio_status & AC97_GPIO1); //Active L ++ ++ while( !(count>10 || err>50) ) { ++ if (wm9712_stat.suspend) mdelay(JACK_POLLING_WAIT); ++ else interruptible_sleep_on_timeout((wait_queue_head_t*)&hp_queue, JACK_POLLING_WAIT ); // wait ++ ++ gpio_status = ac97_read(AC97_GPIO_STATUS); ++ if (state == !(gpio_status & AC97_GPIO1)) { ++ count++; ++ } else { ++ err++; ++ state = !(gpio_status & AC97_GPIO1); ++ count=0; ++ } ++ } ++ ++ if ( count > 10 ) { ++ wm9712_stat.jack = (state)?TRUE:FALSE; ++ } else { // error ++ wm9712_stat.jack = FALSE; ++ } ++ return wm9712_stat.jack; ++} ++ ++static int check_hp_mic(void) ++{ ++ unsigned short gpio_status; ++ int count = 0, err = 0; ++ volatile int state; ++ int LchMute; ++ ++ if (!wm9712_stat.jack) { ++ wm9712_stat.mic = FALSE; ++ return FALSE; ++ } ++#ifdef DISABLE_JACKCHECK_PLAYING ++ if (wm9712_stat.open_play) { // cannot check mic while playing ++ wm9712_stat.need_after_check=TRUE; ++ return wm9712_stat.mic; ++ } ++ wm9712_stat.need_after_check=FALSE; ++#endif ++ ++ wm9712_power_mode_tmp(WM9712_PWR_ENMICBIAS); // MICBIAS on ++ LchMute = !(TC6393_SYS_REG(TC6393_SYS_GPODSR1) & TC6393_L_MUTE); ++ if (!LchMute) TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_L_MUTE; // set L_Mute ++ ++ gpio_status = ac97_read(AC97_GPIO_STATUS); ++ state = (gpio_status & AC97_GPIO5); //Active H ++ ++ while( !(count>10 || err>50) ) { ++ if (wm9712_stat.suspend) mdelay(JACK_POLLING_WAIT); ++ else interruptible_sleep_on_timeout((wait_queue_head_t*)&hp_queue, JACK_POLLING_WAIT ); // wait ++ ++ gpio_status = ac97_read(AC97_GPIO_STATUS); ++ if (state == (gpio_status & AC97_GPIO5)) { ++ count++; ++ } else { ++ err++; ++ state = (gpio_status & AC97_GPIO5); ++ count=0; ++ } ++ } ++ ++ wm9712_power_mode_tmp(WM9712_PWR_OFF); // restore MICBIAS ++ if (!LchMute) TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_L_MUTE; // restore L_Mute ++ ++ if ( count > 10 ) { ++ wm9712_stat.mic = (state)?TRUE:FALSE; ++ } else { // error ++ wm9712_stat.mic = FALSE; ++ } ++ return wm9712_stat.mic; ++} ++ ++static void set_mute_registers( int dev, int mute ) ++{ ++ unsigned short val,val2; ++#ifdef USE_HARDWARE_LMIX ++ unsigned short val3; ++#endif ++ ++ switch(dev) { ++ case DEV_MIC: ++ if (mute) { ++ ac97_bit_set(AC97_RECORD_GAIN, MUTE_INPUT); ++ } else { ++ ac97_bit_clear(AC97_RECORD_GAIN, MUTE_INPUT); ++ } ++ break; ++ case DEV_OUTALL: ++ set_mute_registers(DEV_SP,mute); ++ set_mute_registers(DEV_HP,mute); ++ break; ++ case DEV_SP: // speaker ++ val = ac97_read(AC97_MASTER_VOL_STEREO); ++ val2 = ac97_read(AC97_DAC_VOL); ++ if (mute || wm9712_stat.vol0) { ++ val |= AC97_MUTE; ++ val2 |= D2S_BIT; ++ } else { ++ val &= ~AC97_MUTE; ++ val2 &= ~D2S_BIT; ++ } ++ ac97_write(AC97_MASTER_VOL_STEREO,val); ++ ac97_write(AC97_DAC_VOL,val2); ++ break; ++ case DEV_HP: // headphone ++ val = ac97_read(AC97_HEADPHONE_VOL); ++ val2 = ac97_read(AC97_DAC_VOL); ++ if (mute || wm9712_stat.vol0) { ++ val |= AC97_MUTE; ++ val2 |= D2H_BIT; ++ } else { ++ val &= ~AC97_MUTE; ++ val2 &= ~D2H_BIT; ++ } ++ ac97_write(AC97_HEADPHONE_VOL,val); ++ ac97_write(AC97_DAC_VOL,val2); ++ break; ++ case DEV_HPL: // headphone Lch only ++ val = ac97_read(AC97_HEADPHONE_VOL); ++#ifdef USE_HARDWARE_LMIX ++ val2 = ac97_read(AC97_SIDETONE); ++ val3 = ac97_read(AC97_DAC_VOL); ++#endif ++ if (mute) { ++ wm9712_mono_out=1; ++ val |= VOLL_MUTE; // mute bit ++#ifdef USE_HARDWARE_LMIX ++ val2 &= ~ALCM_MASK; // SP Mix to Rch ++ val2 |= ALCM_HP; ++ val3 |= D2H_BIT; ++ val3 &= ~D2S_BIT; ++ if (!wm9712_stat.open_rec) set_mute_registers(DEV_MIC,FALSE); ++#endif ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_L_MUTE; // Mute Lch ++ } else { ++ wm9712_mono_out=0; ++ val &= ~VOLL_MASK; ++ val |= (val&VOLR_MASK)<<VOLL_SHIFT; ++#ifdef USE_HARDWARE_LMIX ++ val2 &= ~ALCM_MASK; // mute SP Mix ++ val2 |= ALCM_MUTE; ++ val3 &= ~D2H_BIT; ++ val3 &= ~D2S_BIT; ++ if (!wm9712_stat.open_rec) set_mute_registers(DEV_MIC,TRUE); ++#endif ++ TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_L_MUTE; // Mute Lch off ++ } ++ ac97_write(AC97_HEADPHONE_VOL,val); ++#ifdef USE_HARDWARE_LMIX ++ ac97_write(AC97_SIDETONE,val2) ++ ac97_write(AC97_DAC_VOL,val3); ++#endif ++ break; ++ } ++} ++ ++static void set_audio_registers( int jackmode ) ++{ ++ char play = wm9712_stat.open_play; ++ char rec = wm9712_stat.open_rec; ++ unsigned short val; ++ ++ switch( jackmode ) { ++ case MAKEJACKSTATE(0,0): // Speaker (no HP) ++ case MAKEJACKSTATE(0,1): ++ // record from OnBoard Mic ++ val = ac97_read(AC97_RECORD_SELECT); ++ val &= ~RECSL_MASK; ++ val |= RECSL_BITS_MIC; ++ ac97_write(AC97_RECORD_SELECT,val); ++ // power down ++ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY:WM9712_PWR_OFF); ++ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC:WM9712_PWR_OFF); ++ // mute ++ set_mute_registers(DEV_HP,TRUE); ++ set_mute_registers(DEV_HPL,FALSE); ++ set_mute_registers(DEV_SP,FALSE); ++ break; ++ case MAKEJACKSTATE(1,0): // Stereo HP ++ // record from OnBoard Mic ++ val = ac97_read(AC97_RECORD_SELECT); ++ val &= ~RECSL_MASK; ++ val |= RECSL_BITS_MIC; ++ ac97_write(AC97_RECORD_SELECT,val); ++ // power down ++ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY_HP:WM9712_PWR_OFF); ++ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC_HP:WM9712_PWR_OFF); ++ // mute ++ set_mute_registers(DEV_SP,TRUE); ++ set_mute_registers(DEV_HPL,FALSE); ++ set_mute_registers(DEV_HP,FALSE); ++ break; ++ case MAKEJACKSTATE(1,1): // Mic HP ++ // record from HP Mic ++ val = ac97_read(AC97_RECORD_SELECT); ++ val &= ~RECSL_MASK; ++ val |= RECSL_BITS_LINEIN; ++ ac97_write(AC97_RECORD_SELECT,val); ++ // power down ++ wm9712_power_mode_audio((play)?WM9712_PWR_PLAY_MIC:WM9712_PWR_OFF); ++ wm9712_power_mode_audioin((rec)?WM9712_PWR_REC_MIC:WM9712_PWR_OFF); ++ // mute ++ set_mute_registers(DEV_SP,TRUE); ++ set_mute_registers(DEV_HPL,TRUE); ++ set_mute_registers(DEV_HP,FALSE); ++ break; ++ } ++} ++ ++void wm9712_update_jack_state() ++{ ++ int cur_jack_state; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_HP, 1 ); ++#endif ++ check_hp_jack(); ++ check_hp_mic(); ++ cur_jack_state = MAKEJACKSTATE(wm9712_stat.jack,wm9712_stat.mic); ++ if (wm9712_stat.last_jack_state == cur_jack_state) { ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_HP, 0 ); ++#endif ++ return; ++ } ++ ++ DEBUG(DBG_L0, "HP jack state changed (Jack=%d,Mic=%d)\r\n",wm9712_stat.jack,wm9712_stat.mic); ++ ++ set_audio_registers(cur_jack_state); ++ wm9712_stat.last_jack_state = cur_jack_state; ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_HP, 0 ); ++#endif ++} ++ ++static void wm9712_ear_in_interrupt(int irq, void *dev_id, struct pt_regs *regs) ++{ ++ wm9712_checkjack_wakeup(); ++} ++ ++ ++void wm9712_exit(void) ++{ ++ set_mute_registers(DEV_OUTALL,TRUE); ++ ++ free_irq(IRQ_GPIO_EAR_IN, NULL); ++ ++ wm9712_power_mode_audio(WM9712_PWR_OFF); ++ wm9712_power_mode_audioin(WM9712_PWR_OFF); ++ wm9712_power_mode_tmp(WM9712_PWR_OFF); ++ ++ pxa_ac97_put(&ac97_on); ++} ++ ++ ++int wm9712_init(void) ++{ ++ unsigned short val; ++ ++ printk("w9712_init\n"); ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_INIT, 1 ); ++#endif ++ if (!volume_table_initialized) { ++ int i; ++ // initialize status ++ memset(&wm9712_stat,0,sizeof(wm9712_stat)); ++ wm9712_stat.out_left = DEFAULT_OUT_VOLUME; ++ wm9712_stat.out_right = DEFAULT_OUT_VOLUME; ++ wm9712_stat.in_left = DEFAULT_IN_VOLUME; ++ wm9712_stat.in_right = DEFAULT_IN_VOLUME; ++ wm9712_stat.rate = DEFAULT_RATE; ++ ++ // set volume table ++ // volume '90' is 0dB, max volume is 7.5dB ++ for (i=0; i<=100; i++) { ++ SpVolToReal[i] = VolCnvTbl[VolInitTbl[i]][1]; ++ HpVolToReal[i] = VolCnvTbl[VolInitTbl[i]][1]; ++ DacVolToReal[i] = VolCnvTbl[VolInitTbl[i]][0]; ++ MicVolToReal[i] = 0xf * i / 100; ++ } ++ volume_table_initialized=TRUE; ++ } ++ wm9712_stat.last_jack_state = INVALID_JACKSTATE; ++ pxa_ac97_get(&codec, &ac97_on); ++ wm9712_power_mode_audio(WM9712_PWR_OFF); ++ wm9712_power_mode_audioin(WM9712_PWR_OFF); ++ wm9712_power_mode_tmp(WM9712_PWR_OFF); ++ ++ ++ // set default values in wm9712 registers ++ // 0x02 MASTER_VOLUME ... ZC=1, INV=1 ++ val = ac97_read(AC97_MASTER_VOL_STEREO); ++ val |= BIT_ZC|BIT_INV; ++ ac97_write(AC97_MASTER_VOL_STEREO,val); ++ ++ // 0x04 HEADPHONE_VOLUME ... ZC=1 ++ val = ac97_read(AC97_HEADPHONE_VOL); ++ val |= BIT_ZC; ++ ac97_write(AC97_HEADPHONE_VOL,val); ++ ++ // 0x0E MIC VOLUME ... set MS ++ val = ac97_read(AC97_MIC_VOL); ++ val &= ~MS_MASK; ++ val |= MS_MIC2; ++ ac97_write(AC97_MIC_VOL,val); ++ ++ // 0x1A RECORD_SELECT ... set BOOST ++ val = ac97_read(AC97_RECORD_SELECT); ++ val |= MASK_BOOST; ++ ac97_write(AC97_RECORD_SELECT,val); ++ ++ // 0x1C RECORD_GAIN ... set ZC=1 ++ val = ac97_read(AC97_RECORD_GAIN); ++ val |= BIT_ZC; ++ ac97_write(AC97_RECORD_GAIN,val); ++ ++ // 0x2A AC97_EXTENDED_STATUS set VRA=1 ++ val = ac97_read(AC97_EXTENDED_STATUS); ++ val |= BIT_VRA; ++ ac97_write(AC97_EXTENDED_STATUS,val); ++ ++ // set default volume ++ wm9712_set_output_volume(wm9712_stat.out_left, wm9712_stat.out_right); ++ wm9712_set_input_gain(wm9712_stat.in_left, wm9712_stat.in_right); ++ ++ // set default rate ++ ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate); ++ ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate); ++ ++ wm9712_update_jack_state(); ++ init_timer(&hp_wakeup_timer); ++ hp_wakeup_timer.function = wm9712_checkjack_wakeup; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_INIT, 0 ); ++#endif ++ ++ set_GPIO_IRQ_edge(GPIO_HP_IN, GPIO_BOTH_EDGES); ++ if( request_irq(IRQ_GPIO_EAR_IN, wm9712_ear_in_interrupt, SA_INTERRUPT, "ear_in", NULL) ) { ++ DEBUG(DBG_L0, "IRQ error %d\n", IRQ_GPIO_EAR_IN); ++ return -EBUSY; ++ } ++ ++ return 0; ++} ++ ++/************************************************************ ++ * Open & Close ++ ************************************************************/ ++int wm9712_open(SOUND_SETTINGS *settings) ++{ ++ DEBUG(DBG_L2, "wm9712 open\n"); ++ ++ if ( wm9712_stat.used ) { ++ DEBUG(DBG_L0, "wm9712 device is busy now !\n"); ++ return -EBUSY; ++ } ++ ++ wm9712_stat.used = TRUE; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_MAIN, 1 ); ++#endif /* CONFIG_PM */ ++ ++ if ( wm9712_setup(settings) < 0 ) { ++ wm9712_close(); ++ wm9712_stat.used = FALSE; ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++int wm9712_close(void) ++{ ++ DEBUG(DBG_L2 ,"wm9712 close\n"); ++ ++ // set_mute_registers(DEV_OUTALL,TRUE); ++ set_mute_registers(DEV_MIC,TRUE); ++ ++ wm9712_stat.used = FALSE; ++ wm9712_stat.open_play = FALSE; ++ wm9712_stat.open_rec = FALSE; ++ ++ wm9712_power_mode_audio(WM9712_PWR_OFF); ++ wm9712_power_mode_audioin(WM9712_PWR_OFF); ++ wm9712_power_mode_tmp(WM9712_PWR_OFF); ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_MAIN, 0 ); ++#endif /* CONFIG_PM */ ++ ++#ifdef DISABLE_JACKCHECK_PLAYING ++ if (wm9712_stat.need_after_check) { ++ wm9712_checkjack_wakeup(); ++ } ++#endif ++ ++ return 0; ++} ++ ++/************************************************************ ++ * Setup ++ ************************************************************/ ++static int wm9712_setup(SOUND_SETTINGS *setting) ++{ ++ int ret = 0; ++ ++ if( setting == NULL ) return -1; ++ ++ if ( !wm9712_stat.used ) { ++ DEBUG(DBG_L0, "not opened !\n"); ++ return -EINVAL; ++ } ++ ++ wm9712_stat.mode = setting->mode & SOUND_MODE_MASK; ++ if (wm9712_stat.mode & SOUND_PLAY_MODE) { ++ DEBUG(DBG_L2, "Sound Play Setting\n"); ++ // wm9712_set_output_volume(setting->output.left, setting->output.right); ++ wm9712_stat.open_play=TRUE; ++ } ++ if (wm9712_stat.mode & SOUND_REC_MODE) { ++ DEBUG(DBG_L2, "Sound Rec Mode\n"); ++ set_mute_registers(DEV_MIC,FALSE); ++ // wm9712_set_input_gain(setting->input.left, setting->input.right); ++ wm9712_stat.open_rec=TRUE; ++ } ++ if (!wm9712_stat.open_play && !wm9712_stat.open_rec) { ++ DEBUG(DBG_L0, "Sound mode(%x) is not supported !\n", wm9712_stat.mode); ++ return -EINVAL; ++ } ++ ++ set_audio_registers(wm9712_stat.last_jack_state); ++ ++ if ( (ret = wm9712_set_freq(setting)) < 0 ) return ret; ++ ++ return 0; ++} ++ ++// for Freq. ++int wm9712_set_freq(SOUND_SETTINGS *setting) ++{ ++ int ret = 0; ++ unsigned int actual_val; ++ wm9712_stat.rate = setting->frequency; ++ DEBUG(DBG_L2, "rate = %d\n", wm9712_stat.rate); ++ ++ if ( !wm9712_stat.used ) { ++ DEBUG(DBG_L0, "not opened !\n"); ++ return -EINVAL; ++ } ++ if ( wm9712_stat.rate < 8000 ) wm9712_stat.rate = 8000; ++ else if ( wm9712_stat.rate > 48000 ) wm9712_stat.rate = 48000; ++ ++ if (wm9712_stat.open_play) { ++ actual_val = ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate); ++ if ( actual_val != wm9712_stat.rate) { ++ DEBUG(DBG_L1,"Set DAC rate error: %d->%d\n",wm9712_stat.rate,actual_val); ++ } ++ } ++ if (wm9712_stat.open_rec) { ++ actual_val = ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate); ++ if ( actual_val != wm9712_stat.rate) { ++ DEBUG(DBG_L1,"Set ADC rate error: %d->%d\n",wm9712_stat.rate,actual_val); ++ } ++ } ++ ++ DEBUG(DBG_L2, "Sampling rate: %d\n", wm9712_stat.rate); ++ ++ return ret; ++} ++ ++ ++/************************************************************ ++ * Volume ++ ************************************************************/ ++ ++int wm9712_set_output_volume(int left, int right) ++{ ++ unsigned short real_left_vol,real_right_vol,val; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 1 ); ++#endif ++ // speaker volume ++ real_left_vol = SpVolToReal[left]; ++ real_right_vol = SpVolToReal[right]; ++ ++ val = ac97_read(AC97_MASTER_VOL_STEREO); ++ val &= ~(VOLL_MASK|VOLR_MASK); ++ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol; ++ ac97_write(AC97_MASTER_VOL_STEREO,val); ++ ++ // head phone volume ++ real_left_vol = HpVolToReal[left]; ++ real_right_vol = HpVolToReal[right]; ++ ++ val = ac97_read(AC97_HEADPHONE_VOL); ++ val &= ~(VOLL_MASK|VOLR_MASK); ++ if (wm9712_stat.mic) { // minimize Lch volume ++ val |= VOLL_MASK | real_right_vol; ++ } else { ++ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol; ++ } ++ ac97_write(AC97_HEADPHONE_VOL,val); ++ ++ // pcm volume ++ real_left_vol = DacVolToReal[left]; ++ real_right_vol = DacVolToReal[right]; ++ ++ val = ac97_read(AC97_DAC_VOL); ++ val &= ~DACVOL_MASK; ++ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol; ++ ac97_write(AC97_DAC_VOL,val); ++ ++ wm9712_stat.out_left = left; ++ wm9712_stat.out_right = right; ++ ++ // volume 0 means mute ++ if ( (left==0 && right==0) && wm9712_stat.vol0!=TRUE) { ++ wm9712_stat.vol0 = TRUE; ++ set_mute_registers(DEV_OUTALL,TRUE); ++ } ++ if ( (left>0 || right>0) && wm9712_stat.vol0==TRUE) { ++ wm9712_stat.vol0 = FALSE; ++ set_audio_registers(wm9712_stat.last_jack_state); ++ } ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 0 ); ++#endif ++ return 0; ++} ++ ++int wm9712_set_input_gain(int left, int right) ++{ ++ unsigned short real_left_vol,real_right_vol,val; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 1 ); ++#endif ++ ++ real_left_vol = MicVolToReal[left]; ++ real_right_vol = MicVolToReal[left]; // Rch use left volume ++ ++ val = ac97_read(AC97_RECORD_GAIN); ++ val &= ~(VOLL_MASK|VOLR_MASK); ++ val |= (real_left_vol << VOLL_SHIFT) | real_right_vol; ++ ac97_write(AC97_RECORD_GAIN,val); ++ ++ wm9712_stat.in_left = left; ++ wm9712_stat.in_right = right; ++ ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 0 ); ++#endif ++ ++ return 0; ++} ++ ++/* ++ * AGC ++ */ ++static void wm9712_update_agc(int agc) ++{ ++ unsigned short val; ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 1 ); ++#endif ++ if ( wm9712_stat.mode | SOUND_REC_MODE ) { ++ val = ac97_read(AC97_NOISE_CTL); ++ val &= ~ALC_MASK; ++ if (agc) val |= ALC_ON; ++ ac97_write(AC97_NOISE_CTL,val); ++ } ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_VOL, 0 ); ++#endif ++ ++} ++ ++int wm9712_set_agc(int agc) ++{ ++ if ( agc < 0 ) return wm9712_stat.agc; ++ agc = !!agc; /* should be 0 or 1 now */ ++ if ( wm9712_stat.agc != agc ) { ++ wm9712_stat.agc = agc; ++ wm9712_update_agc(wm9712_stat.agc); ++ } ++ return agc; ++} ++ ++/*** Suspend/Resume ***********************************************************/ ++#ifdef CONFIG_PM ++void wm9712_suspend(void) ++{ ++ DEBUG(DBG_L2, "in\n"); ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_OFFON, 1 ); ++#endif ++ wm9712_stat.suspend = 1; ++ wm9712_exit(); ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_OFFON, 0 ); ++#endif ++ DEBUG(DBG_L2, "out\n"); ++} ++ ++void wm9712_resume(void) ++{ ++ DEBUG(DBG_L2, "in\n"); ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_OFFON, 1 ); ++#endif ++ wm9712_init(); ++ if (wm9712_stat.open_play) { ++ ac97_set_dac_rate(codec, (unsigned int)wm9712_stat.rate); ++ } ++ if (wm9712_stat.open_rec) { ++ set_mute_registers(DEV_MIC,FALSE); ++ ac97_set_adc_rate(codec, (unsigned int)wm9712_stat.rate); ++ } ++ wm9712_stat.suspend = 0; ++ //X wm9712_checkjack_wakeup(); ++ hp_wakeup_timer.expires = jiffies + HP_WAKEUP_DELAY; ++ add_timer(&hp_wakeup_timer); ++#ifdef CONFIG_PM ++ audioLockFCS( ADEV_OFFON, 0 ); ++#endif ++ DEBUG(DBG_L2, "out\n"); ++} ++#endif /* CONFIG_PM */ +diff -Nur linux_c860_org/drivers/usb/Config.in linux/drivers/usb/Config.in +--- linux_c860_org/drivers/usb/Config.in 2002-08-29 12:26:42.000000000 +0900 ++++ linux/drivers/usb/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -36,6 +36,12 @@ + fi + dep_tristate ' OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support' CONFIG_USB_OHCI $CONFIG_USB + dep_tristate ' SA1111 OHCI-compatible host interface support' CONFIG_USB_OHCI_SA1111 $CONFIG_USB ++dep_tristate ' TC6393 OHCI-compatible host interface support' CONFIG_USB_OHCI_TC6393 $CONFIG_USB ++if [ "$CONFIG_USB_OHCI_TC6393" != "n" ]; then ++ define_bool CONFIG_USB_USE_INTERNAL_MEMORY y ++else ++ define_bool CONFIG_USB_USE_INTERNAL_MEMORY n ++fi + + comment 'USB Device Class drivers' + dep_tristate ' USB Audio support' CONFIG_USB_AUDIO $CONFIG_USB $CONFIG_SOUND +diff -Nur linux_c860_org/drivers/usb/Makefile linux/drivers/usb/Makefile +--- linux_c860_org/drivers/usb/Makefile 2002-08-29 12:26:42.000000000 +0900 ++++ linux/drivers/usb/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -16,10 +16,11 @@ + + # Multipart objects. + +-list-multi := usbcore.o hid.o pwc.o ++list-multi := usbcore.o hid.o pwc.o usb_ohci_tc6393.o + usbcore-objs := usb.o usb-debug.o hub.o + hid-objs := hid-core.o hid-input.o + pwc-objs := pwc-if.o pwc-misc.o pwc-ctrl.o pwc-uncompress.o ++ohci-tc6393-objs := usb-ohci.o usb-ohci-tc6393.o pcipool.o mem-onchip.o + + + # Optional parts of multipart objects. +@@ -48,6 +49,7 @@ + obj-$(CONFIG_USB_UHCI_ALT) += uhci.o + obj-$(CONFIG_USB_OHCI) += usb-ohci.o usb-ohci-pci.o + obj-$(CONFIG_USB_OHCI_SA1111) += usb-ohci.o usb-ohci-sa1111.o ++obj-$(CONFIG_USB_OHCI_TC6393) += usbcore.o usb_ohci_tc6393.o + + obj-$(CONFIG_USB_MOUSE) += usbmouse.o + obj-$(CONFIG_USB_HID) += hid.o +@@ -105,3 +107,6 @@ + + pwc.o: $(pwc-objs) + $(LD) -r -o $@ $(pwc-objs) ++ ++usb_ohci_tc6393.o: $(ohci-tc6393-objs) ++ $(LD) -r -o $@ $(ohci-tc6393-objs) +diff -Nur linux_c860_org/drivers/usb/device/bi/pxa.c linux/drivers/usb/device/bi/pxa.c +--- linux_c860_org/drivers/usb/device/bi/pxa.c 2003-11-07 11:35:45.000000000 +0900 ++++ linux/drivers/usb/device/bi/pxa.c 2004-06-10 21:09:10.000000000 +0900 +@@ -24,6 +24,8 @@ + * Change Log + * 28-Nov-2003 Lineo Solutions, Inc. Add module parameter. 'shortpacket' + * and 'recvpacket'. ++ * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa (support cable gpio) + * + */ + +@@ -912,6 +914,10 @@ + PXA_REGS(UDCCS0," <-- ep0"); + } + ++#ifdef USBD_CABLE_GPIO ++static int udc_connect_state = 0; ++#endif ++ + /* ********************************************************************************************* */ + /* Interrupt Handler + */ +@@ -975,10 +981,24 @@ + // uncommon interrupts + if ((udccr = UDCCR) & (UDCCR_RSTIR | UDCCR_RESIR | UDCCR_SUSIR)) { + ++#ifdef USBD_CABLE_GPIO ++ if (!udc_connect_state && (udccr & UDCCR_RSTIR)) { ++ // printk("ignore UDC Reset\n"); ++ UDCCR |= UDCCR_RSTIR; ++ udccr &= ~UDCCR_RSTIR; ++ } ++ if (!udc_connect_state && (udccr & UDCCR_RESIR)) { ++ // printk("ignore UDC Resume\n"); ++ UDCCR |= UDCCR_RESIR; ++ udccr &= ~UDCCR_RESIR; ++ } ++#endif ++ + // UDC Reset +- if (udccr & UDCCR_RSTIR) { ++ if (udccr & UDCCR_RSTIR) { + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE) + static int is1stReset = 1; ++ // printk("UDC Reset\n"); + if (is1stReset) { + is1stReset = 0; + } else { +@@ -995,7 +1015,8 @@ + } + + // UDC Resume +- if (udccr & UDCCR_RESIR) { ++ if (udccr & UDCCR_RESIR) { ++ // printk("UDC Resume\n"); + PXA_CCR(udccr, "------------------------> Resume"); + if (udc_suspended) { + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE) +@@ -1009,6 +1030,7 @@ + + // UDC Suspend + if (udccr & UDCCR_SUSIR) { ++ // printk("UDC Suspend\n"); + PXA_CCR(udccr, "------------------------> Suspend"); + if (!udc_suspended) { + #if defined(CONFIG_ARCH_SHARP_SL) && defined(CONFIG_APM_CPU_IDLE) +@@ -1284,7 +1306,17 @@ + */ + int udc_connected () + { +- return 1; ++ int rc = 1; ++#ifdef USBD_CABLE_GPIO ++#ifdef USBD_CABLE_ACTIVE_HIGH ++ rc = (GPLR(USBD_CABLE_GPIO) & GPIO_bit(USBD_CABLE_GPIO)) != 0; ++ //dbg_udc (1, "udc_connected: ACTIVE_HIGH: %d", rc); ++#else ++ rc = (GPLR(USBD_CABLE_GPIO) & GPIO_bit(USBD_CABLE_GPIO)) == 0; ++ //dbg_udc (1, "udc_connected: ACTIVE_LOW: %d", rc); ++#endif ++#endif ++ return rc; + } + + /** +@@ -1294,6 +1326,9 @@ + */ + void udc_connect (void) + { ++#ifdef USBD_CABLE_GPIO ++ udc_connect_state = 1; ++#endif + #ifdef CONFIG_SABINAL_DISCOVERY + /* Set GPIO pin function to I/O */ + GAFR1_U &= ~(0x3 << ((USBD_CONNECT_GPIO & 0xF) << 1)); +@@ -1318,6 +1353,20 @@ + GPCR(USBD_CONNECT_GPIO) = GPIO_bit(USBD_CONNECT_GPIO); + #endif + ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ if (!udc_connected()) { ++ //printk("USB Cable not connected!!\n"); ++ return; ++ } ++ SCP_JC_REG_GPCR |= USBD_CONNECT_GPIO; ++#if defined(USBD_CONNECT_HIGH) ++ /* Set GPIO pin high to connect */ ++ set_scoop_jc_gpio(USBD_CONNECT_GPIO); ++#else ++ /* Set GPIO pin low to connect */ ++ reset_scoop_jc_gpio(USBD_CONNECT_GPIO); ++#endif ++ + #else + #warning NO USB Device connect + #endif +@@ -1330,6 +1379,9 @@ + */ + void udc_disconnect (void) + { ++#ifdef USBD_CABLE_GPIO ++ udc_connect_state = 0; ++#endif + #ifdef CONFIG_SABINAL_DISCOVERY + /* Set GPIO pin function to I/O */ + GAFR1_U &= ~(0x3 << ((USBD_CONNECT_GPIO & 0xF) << 1)); +@@ -1354,18 +1406,35 @@ + GPSR(USBD_CONNECT_GPIO) = GPIO_bit(USBD_CONNECT_GPIO); + #endif + ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++ SCP_JC_REG_GPCR |= USBD_CONNECT_GPIO; ++#if defined(USBD_CONNECT_HIGH) ++ /* Set GPIO pin low to disconnect */ ++ reset_scoop_jc_gpio(USBD_CONNECT_GPIO); ++#else ++ /* Set GPIO pin high to disconnect */ ++ set_scoop_jc_gpio(USBD_CONNECT_GPIO); ++#endif ++ + #else + #warning NO USB Device connect + #endif + } + +-#if 0 ++#ifdef USBD_CABLE_GPIO + /** + * udc_int_hndlr_cable - interrupt handler for cable + */ + static void udc_int_hndlr_cable (int irq, void *dev_id, struct pt_regs *regs) + { + // GPIOn interrupt ++ //dbg_udc("udc_cradle_interrupt: ->%08x\n",GPLR(USBD_CABLE_GPIO)); ++ if (udc_connected()) { ++ usbd_device_event(udc_device, DEVICE_HUB_RESET, 0); ++ udc_cable_event (); ++ } else { ++ udc_disconnect(); ++ } + } + #endif + +@@ -1663,12 +1732,14 @@ + */ + int udc_request_cable_irq () + { +-#ifdef XXXX_CABLE_IRQ ++#ifdef USBD_CABLE_GPIO ++ set_GPIO_mode(USBD_CABLE_GPIO | GPIO_IN); ++ set_GPIO_IRQ_edge(USBD_CABLE_GPIO, GPIO_BOTH_EDGES); + // request IRQ and IO region +- if (request_irq +- (XXXX_CABLE_IRQ, int_hndlr, SA_INTERRUPT | SA_SAMPLE_RANDOM, UDC_NAME " Cable", +- NULL) != 0) { +- printk (KERN_INFO "usb_ctl: Couldn't request USB irq\n"); ++ if (request_irq (IRQ_GPIO(USBD_CABLE_GPIO), udc_int_hndlr_cable, ++ SA_INTERRUPT | SA_SAMPLE_RANDOM, UDC_NAME " Cable", NULL) != 0) ++ { ++ printk (KERN_INFO "usb_ctl: Couldn't request USB cable irq\n"); + return -EINVAL; + } + #endif +@@ -1921,8 +1992,8 @@ + */ + void udc_release_cable_irq () + { +-#ifdef XXXX_IRQ +- free_irq (XXXX_CABLE_IRQ, NULL); ++#ifdef USBD_CABLE_GPIO ++ free_irq (IRQ_GPIO(USBD_CABLE_GPIO), NULL); + #endif + } + +diff -Nur linux_c860_org/drivers/usb/device/bi/pxa.h linux/drivers/usb/device/bi/pxa.h +--- linux_c860_org/drivers/usb/device/bi/pxa.h 2002-08-26 15:19:05.000000000 +0900 ++++ linux/drivers/usb/device/bi/pxa.h 2004-06-10 21:09:10.000000000 +0900 +@@ -21,6 +21,8 @@ + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * ++ * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + +@@ -54,6 +56,15 @@ + #define USBD_CONNECT_HIGH 1 + #endif + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++/* SHARP SL-6000 specific GPIO assignments */ ++#define USBD_CONNECT_GPIO SCP_JC_USB_PULLUP ++#define USBD_CONNECT_HIGH 1 ++#define USBD_CABLE_GPIO GPIO_USB_IN ++// active low ++//#define USBD_CABLE_ACTIVE_HIGH 1 ++#endif ++ + + /* + * DMA Notes +diff -Nur linux_c860_org/drivers/usb/device/usbd-arch.h linux/drivers/usb/device/usbd-arch.h +--- linux_c860_org/drivers/usb/device/usbd-arch.h 2003-10-16 13:59:01.000000000 +0900 ++++ linux/drivers/usb/device/usbd-arch.h 2004-06-10 21:09:10.000000000 +0900 +@@ -42,6 +42,9 @@ + * Typically during early development you will set these via the kernel + * configuration and migrate the values into here once specific values + * have been tested and will no longer change. ++ * ++ * Change Log ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + +@@ -442,13 +445,13 @@ + #define CONFIG_USBD_PRODUCT_NAME "SL-C750" + #else + #define CONFIG_USBD_PRODUCT_NAME "SL-7500" +-#endif +-#endif +-#endif ++#endif // CONFIG_ARCH_SHARP_SL_J ++#endif // CONFIG_ARCH_PXA_HUSKY ++#endif // CONFIG_ARCH_PXA_SHEPHERD + + #ifdef CONFIG_ARCH_PXA_BOXER +- #undef CONFIG_USBD_PRODUCT_NAME +- #define CONFIG_USBD_PRODUCT_NAME "SL-C860" ++ #undef CONFIG_USBD_PRODUCT_NAME ++ #define CONFIG_USBD_PRODUCT_NAME "SL-C860" + #endif + + #undef CONFIG_USBD_NET_CDC +@@ -458,4 +461,38 @@ + #define CONFIG_USBD_NET_MDLM 1 + #define CONFIG_USBD_MAC_AS_SERIAL_NUMBER 1 + +-#endif ++#endif // CONFIG_ARCH_PXA_CORGI ++ ++ ++#ifdef CONFIG_ARCH_PXA_TOSA ++ ++ #warning CONFIGURING FOR TOSA ++ ++ #undef CONFIG_USBD_VENDORID ++ #define CONFIG_USBD_VENDORID 0x04dd ++ #undef CONFIG_USBD_SERIAL_PRODUCT ID ++ #define CONFIG_USBD_SERIAL_PRODUCT ID 0x9032 ++ #undef CONFIG_USBD_NET_PRODUCTID ++ #define CONFIG_USBD_NET_PRODUCTID 0x9032 ++ ++ #undef CONFIG_USBD_SELFPOWERED ++ #undef CONFIG_USBD_MANUFACTURER ++ #undef CONFIG_USBD_PRODUCT_NAME ++ ++ #define CONFIG_USBD_SELFPOWERED 1 ++ #define CONFIG_USBD_MANUFACTURER "Sharp" ++#ifdef CONFIG_ARCH_SHARP_SL_J ++ #define CONFIG_USBD_PRODUCT_NAME "SL-6000" ++#else ++ #define CONFIG_USBD_PRODUCT_NAME "SL-6000" ++#endif // CONFIG_ARCH_SHARP_SL_J ++ ++ #undef CONFIG_USBD_NET_CDC ++ #undef CONFIG_USBD_NET_MDLM ++ #undef CONFIG_USBD_NET_SAFE ++ ++ #define CONFIG_USBD_NET_MDLM 1 ++ #define CONFIG_USBD_MAC_AS_SERIAL_NUMBER 1 ++ ++#endif // CONFIG_ARCH_PXA_TOSA ++ +diff -Nur linux_c860_org/drivers/usb/device/usbd-monitor.c linux/drivers/usb/device/usbd-monitor.c +--- linux_c860_org/drivers/usb/device/usbd-monitor.c 2002-08-26 15:19:04.000000000 +0900 ++++ linux/drivers/usb/device/usbd-monitor.c 2004-06-10 21:09:10.000000000 +0900 +@@ -23,6 +23,8 @@ + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * ++ * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + +@@ -62,7 +64,7 @@ + * Architecture specific includes + */ + +-#if defined(CONFIG_ARCH_SA1100) || defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_SA1100) || defined(CONFIG_SABINAL_DISCOVERY) || defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + + #include <asm/irq.h> + #include <asm/hardware.h> +diff -Nur linux_c860_org/drivers/usb/inode.c linux/drivers/usb/inode.c +--- linux_c860_org/drivers/usb/inode.c 2002-08-26 14:39:15.000000000 +0900 ++++ linux/drivers/usb/inode.c 2004-06-10 21:09:10.000000000 +0900 +@@ -24,6 +24,9 @@ + * + * History: + * 0.1 04.01.2000 Created ++ * ++ * Change Log ++ * 27-Dec-2003 SHARP fixed non-reentrant codes + */ + + /*****************************************************************************/ +@@ -628,6 +631,9 @@ + s->s_root = d_alloc_root(root_inode); + if (!s->s_root) + goto out_no_root; ++#ifdef CONFIG_ARCH_SHARP_SL ++ lock_kernel(); ++#endif + list_add_tail(&s->u.usbdevfs_sb.slist, &superlist); + for (i = 0; i < NRSPECIAL; i++) { + if (!(inode = iget(s, IROOT+1+i))) +@@ -646,6 +652,9 @@ + recurse_new_dev_inode(bus->root_hub, s); + } + up (&usb_bus_list_lock); ++#ifdef CONFIG_ARCH_SHARP_SL ++ unlock_kernel(); ++#endif + return s; + + out_no_root: +@@ -674,9 +683,15 @@ + struct list_head *slist; + + lock_kernel(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ down (&usb_bus_list_lock); ++#endif + for (slist = superlist.next; slist != &superlist; slist = slist->next) + new_bus_inode(bus, list_entry(slist, struct super_block, u.usbdevfs_sb.slist)); + update_special_inodes(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ up (&usb_bus_list_lock); ++#endif + unlock_kernel(); + usbdevfs_conn_disc_event(); + } +@@ -684,9 +699,15 @@ + void usbdevfs_remove_bus(struct usb_bus *bus) + { + lock_kernel(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ down (&usb_bus_list_lock); ++#endif + while (!list_empty(&bus->inodes)) + free_inode(list_entry(bus->inodes.next, struct inode, u.usbdev_i.dlist)); + update_special_inodes(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ up (&usb_bus_list_lock); ++#endif + unlock_kernel(); + usbdevfs_conn_disc_event(); + } +@@ -696,9 +717,15 @@ + struct list_head *slist; + + lock_kernel(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ down (&usb_bus_list_lock); ++#endif + for (slist = superlist.next; slist != &superlist; slist = slist->next) + new_dev_inode(dev, list_entry(slist, struct super_block, u.usbdevfs_sb.slist)); + update_special_inodes(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ up (&usb_bus_list_lock); ++#endif + unlock_kernel(); + usbdevfs_conn_disc_event(); + } +@@ -709,6 +736,9 @@ + struct siginfo sinfo; + + lock_kernel(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ down (&usb_bus_list_lock); ++#endif + while (!list_empty(&dev->inodes)) + free_inode(list_entry(dev->inodes.next, struct inode, u.usbdev_i.dlist)); + while (!list_empty(&dev->filelist)) { +@@ -728,6 +758,9 @@ + } + + update_special_inodes(); ++#ifdef CONFIG_ARCH_SHARP_SL ++ up (&usb_bus_list_lock); ++#endif + unlock_kernel(); + usbdevfs_conn_disc_event(); + } +diff -Nur linux_c860_org/drivers/usb/mem-onchip.c linux/drivers/usb/mem-onchip.c +--- linux_c860_org/drivers/usb/mem-onchip.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/usb/mem-onchip.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,364 @@ ++/* ++ * linux/drivers/usb/mem-onchip.c ++ * ++ * memory allocate functions for RAM on chip ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file "COPYING" in the main directory of this archive ++ * for more details. ++ * ++ */ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/ioport.h> ++#include <linux/interrupt.h> ++#include <linux/slab.h> ++#include <linux/usb.h> ++ ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/io.h> ++ ++#include "mem-onchip.h" ++ ++#if 0 ++#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg) ++#else ++#define dbg(format, arg...) do {} while (0) ++#endif ++ ++ ++ ++//#define MALLOCK_BOUNDART_32BYTE ++#define MALLOCK_BOUNDART_16BYTE ++ ++#define MAKE_POINTER(p, offset) ((oc_mem_head *)((u32)(p) + offset)) ++ ++#define INIT_OC_MEM_HEAD(p, s) \ ++ {\ ++ INIT_LIST_HEAD(&(p)->free_list);\ ++ (p)->size = s;\ ++ (p)->flag = 0;\ ++ } ++ ++#define IS_ALLOCATED_MEMORY(p) ((struct list_head *)(p) == (p)->free_list.next \ ++ && (p)->free_list.next == (p)->free_list.prev) ++ ++/* memory block header */ ++typedef struct __oc_mem_head { ++ struct list_head free_list; ++ size_t size; ++ u32 flag; ++#ifdef MALLOCK_BOUNDART_32BYTE ++ u32 dummy[4]; // for 32byte boundary ++#endif ++} oc_mem_head; ++ ++ ++u32 OC_MEM_TOP = 0; ++static u32 OC_MEM_BASE = 0; ++static u32 OC_MEM_SIZE = 0; ++static u32 OC_MEM_HCCA_BASE = 0; ++#define OC_MEM_HCCA_SIZE 0x100 ++ ++static spinlock_t oc_mem_list_lock = SPIN_LOCK_UNLOCKED; ++static int is_oc_hcca_allocated = 0; ++ ++static void oc_mem_list_add(oc_mem_head *cp); ++static void* oc_malloc(size_t size, int gfp); ++static void oc_mfree(void* fp); ++static size_t oc_mem_check(int verbose); ++ ++ ++/* mem_base is 256byte boundary */ ++void oc_mem_init(unsigned int mem_base, size_t size) ++{ ++ oc_mem_head *top, *cp; ++ ++ if (OC_MEM_BASE) return; ++ ++ OC_MEM_TOP = mem_base; ++ OC_MEM_HCCA_BASE = mem_base; ++ OC_MEM_BASE = mem_base + OC_MEM_HCCA_SIZE; /* 0x100 for HCCA */ ++ OC_MEM_SIZE = size - OC_MEM_HCCA_SIZE; ++ ++ top = MAKE_POINTER(OC_MEM_BASE, 0); ++ INIT_OC_MEM_HEAD(top, 0); ++ ++ cp = MAKE_POINTER(top, sizeof(oc_mem_head) + top->size); ++ INIT_OC_MEM_HEAD(cp, OC_MEM_SIZE ++ - sizeof(oc_mem_head) - top->size ++ - sizeof(oc_mem_head)); ++ ++ list_add(&cp->free_list, &top->free_list); ++ ++#if 0 ++ // for test ++ { ++ char *a, *b, *c; ++ a = oc_malloc(oc_mem_check(1), 0); ++ oc_mem_check(1); ++ ++ a = oc_malloc(256, 0); ++ oc_mem_check(1); ++ b = oc_malloc(256, 0); ++ oc_mem_check(1); ++ c = oc_malloc(256, 0); ++ oc_mem_check(1); ++ oc_mfree(b); ++ oc_mem_check(1); ++ b = oc_malloc(256, 0); ++ oc_mem_check(); ++ ++ oc_mfree(a); ++ oc_mem_check(1); ++ oc_mfree(b); ++ oc_mem_check(1); ++ oc_mfree(c); ++ oc_mem_check(1); ++ ++ a = oc_malloc(256, 0); ++ oc_mem_check(1); ++ b = oc_malloc(256, 0); ++ oc_mem_check(1); ++ c = oc_malloc(256, 0); ++ oc_mem_check(1); ++ oc_mfree(a); ++ oc_mem_check(1); ++ oc_mfree(c); ++ oc_mem_check(1); ++ oc_mfree(b); ++ oc_mem_check(1); ++ } ++#endif ++} ++ ++static void oc_mem_list_add(oc_mem_head *cp) ++{ ++ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE; ++ struct list_head *n; ++ ++ /* address order */ ++ list_for_each(n, &top->free_list) { ++ if ((u32)n > (u32)cp) { ++ list_add_tail(&cp->free_list, n); ++ return; ++ } ++ } ++ list_add_tail(&cp->free_list, &top->free_list); ++} ++ ++static void* oc_malloc(size_t size, int gfp) ++{ ++ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE; ++ oc_mem_head *cp = NULL; ++ struct list_head *n; ++ ++ if (!top) ++ panic("oc_malloc: not set OC_MEM_BASE."); ++ ++ if (size == 0) ++ return (void*)0; ++ ++#if defined(MALLOCK_BOUNDART_32BYTE) ++ size = ((size + 32 - 1) / 32) * 32; // for 32byte boundary ++#elif defined(MALLOCK_BOUNDART_16BYTE) ++ size = ((size + 16 - 1) / 16) * 16; // for 16byte boundary ++#else ++ size = ((size + sizeof(u32) - 1) / sizeof(u32)) * sizeof(u32); ++#endif ++ ++ list_for_each(n, &top->free_list) { ++ if (((oc_mem_head *)n)->size >= size) { ++ cp = (oc_mem_head *)n; ++ break; ++ } ++ } ++ if (!cp) { ++ return (void*)0; ++ } ++ ++ if (cp->size > size + sizeof(oc_mem_head)) { ++ oc_mem_head *fp; ++ size_t alloc = size + sizeof(oc_mem_head); ++ size_t new_size = cp->size - alloc; ++ ++ list_del(&cp->free_list); ++ INIT_OC_MEM_HEAD(cp, size); ++ ++ fp = MAKE_POINTER(cp, alloc); ++ INIT_OC_MEM_HEAD(fp, new_size); ++ oc_mem_list_add(fp); ++ dbg("separate %08x-%04x %08x-%04x\n", (u32)cp, cp->size, (u32)fp, fp->size); ++ } else if (cp->free_list.next == cp->free_list.prev ++ && cp->free_list.next == &top->free_list) { ++ dbg("mallock error %08x-%04x\n", (u32)cp, cp->size); ++ return (void*)0; ++ } else { ++ dbg("alloc this %08x-%04x\n", (u32)cp, cp->size); ++ list_del_init(&cp->free_list); ++ } ++ ++ return (void *)(cp + 1); ++} ++ ++static void oc_mfree(void* fp) ++{ ++ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE; ++ oc_mem_head *cp = (oc_mem_head *)fp - 1; ++ struct list_head *n; ++ ++ if (fp == (void*)0) ++ return; ++ if (!IS_ALLOCATED_MEMORY(cp)) { ++ dbg("%08x is not allocated memory. n=%08x p=%08x s=%04x\n", ++ (u32)fp, (u32)cp->free_list.next, (u32)cp->free_list.prev, cp->size); ++ return; ++ } ++ ++ list_for_each(n, &top->free_list) { ++ /* cp is just previous of this free block */ ++ if (MAKE_POINTER(cp, cp->size + sizeof(oc_mem_head)) ++ == (oc_mem_head *)n) { ++ oc_mem_head *pp = (oc_mem_head *)n->prev; ++ dbg("P %08x-%04x merged to %08x-%04x\n", (u32)n, ((oc_mem_head *)n)->size, (u32)cp, cp->size); ++ list_del(n); ++ INIT_OC_MEM_HEAD(cp, cp->size ++ + ((oc_mem_head *)n)->size ++ + sizeof(oc_mem_head)); ++ /* cp merge to previous free block */ ++ if (cp == MAKE_POINTER(pp, ++ pp->size + sizeof(oc_mem_head)) && pp != top) { ++ dbg("P %08x-%04x merged to %08x-%04x\n", (u32)cp, cp->size, (u32)pp, pp->size); ++ list_del(&pp->free_list); ++ INIT_OC_MEM_HEAD(pp, pp->size ++ + cp->size + sizeof(oc_mem_head)); ++ cp = pp; ++ } ++ break; ++ } ++ /* cp is just next of this free block */ ++ if (cp == MAKE_POINTER(n, ((oc_mem_head *)n)->size ++ + sizeof(oc_mem_head))) { ++ oc_mem_head *np = (oc_mem_head *)n->next; ++ dbg("N %08x-%04x merged to %08x-%04x\n", (u32)cp, cp->size, (u32)n, ((oc_mem_head *)n)->size); ++ list_del(n); ++ INIT_OC_MEM_HEAD((oc_mem_head *)n, ++ ((oc_mem_head *)n)->size ++ + cp->size + sizeof(oc_mem_head)); ++ cp = (oc_mem_head *)n; ++ if (np == MAKE_POINTER(cp, ++ cp->size + sizeof(oc_mem_head))) { ++ dbg("N %08x-%04x merged to %08x-%04x\n", (u32)np, np->size, (u32)cp, cp->size); ++ list_del(&np->free_list); ++ INIT_OC_MEM_HEAD(cp, cp->size ++ + np->size + sizeof(oc_mem_head)); ++ } ++ break; ++ } ++ } ++ ++ oc_mem_list_add(cp); ++} ++ ++ ++static size_t oc_mem_check(int verbose) ++{ ++ oc_mem_head *top = (oc_mem_head *)OC_MEM_BASE; ++ oc_mem_head *nhp = top; ++ int bc = 0; ++ int alloc_bc = 0; ++ int free_bc = 0; ++ size_t alloc_size = 0; ++ size_t free_size = 0; ++ size_t total = 0; ++ ++ if (verbose) { ++ printk("[No.] A HEAD PREV NEXT SIZE\n"); ++ printk("-----+-+--------+--------+--------+----\n"); ++ } ++ while ((u32)nhp < OC_MEM_BASE + OC_MEM_SIZE) { ++ char *mark; ++ if (IS_ALLOCATED_MEMORY(nhp)) { ++ mark = "*"; ++ alloc_bc++; ++ alloc_size += nhp->size + sizeof(oc_mem_head); ++ } else { ++ mark = " "; ++ free_bc++; ++ free_size += nhp->size + sizeof(oc_mem_head); ++ } ++ total += nhp->size + sizeof(oc_mem_head); ++ if (verbose) { ++ printk("[%03d] %s %08x : %08x %08x %04x\n", ++ bc++, mark, (u32)nhp, ++ (u32)nhp->free_list.prev, ++ (u32)nhp->free_list.next, nhp->size); ++ } ++ nhp = MAKE_POINTER(nhp, nhp->size+sizeof(oc_mem_head)); ++ } ++ if (verbose) { ++ printk("-----+-+--------+--------+--------+----\n"); ++ } ++ printk("alloc=%08x(%d) free=%08x(%d) total=%08x\n", ++ alloc_size, alloc_bc, free_size, free_bc, total); ++ ++ return free_size; ++} ++ ++#undef kmalloc ++#undef kfree ++ ++void KFREE(void* p) ++{ ++ dbg("KFREE %08x\n", p); ++ spin_lock(&oc_mem_list_lock); ++ oc_mfree((void*)p); ++ spin_unlock(&oc_mem_list_lock); ++} ++ ++void* KMALLOC(size_t s, int v) ++{ ++ void *p; ++ spin_lock(&oc_mem_list_lock); ++ p = oc_malloc(s, v); ++ spin_unlock(&oc_mem_list_lock); ++ ++//oc_mem_check(0); ++ dbg("KMALLOC %08x - %04x\n", p , s); ++ if (s != 0 && p == NULL) { ++ oc_mem_check(1); ++ panic("oc_malloc: no more memory on chip RAM (%dbyts)", s); ++ } ++ return p; ++} ++ ++void* oc_hcca_alloc(struct pci_dev *hwdev, size_t size, dma_addr_t *handle) ++{ ++ void *p; ++ ++ if (!size) ++ return (void *)0; ++ ++ if (!OC_MEM_HCCA_BASE) ++ panic("oc_malloc: not set OC_MEM_BASE."); ++ if (is_oc_hcca_allocated) ++ panic("oc_hcca_alloc: HCCA memory was alrady allocated."); ++ if (size > OC_MEM_HCCA_SIZE) ++ panic("oc_hcca_alloc: no more memory on RAM0 (size=%d)", size); ++ ++ p = (void *)OC_MEM_HCCA_BASE; /* 256byte boundary */ ++ //*handle = (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p); ++ return p; ++} ++ ++void oc_hcca_free(struct pci_dev *hwdev, size_t size, void *vaddr, ++ dma_addr_t dma_handle) ++{ ++ is_oc_hcca_allocated = 0; ++} ++ +diff -Nur linux_c860_org/drivers/usb/mem-onchip.h linux/drivers/usb/mem-onchip.h +--- linux_c860_org/drivers/usb/mem-onchip.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/usb/mem-onchip.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,144 @@ ++/* ++ * linux/drivers/usb/mem-onchip.h ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file "COPYING" in the main directory of this archive ++ * for more details. ++ * ++ */ ++ ++#ifndef _MEM_ON_CHIP_H_ ++#define _MEM_ON_CHIP_H_ 1 ++ ++#include <linux/pci.h> ++ ++#define OC_MEM_PCI_MAP_DEBUG ++#define OC_MEM_PCI_MAP_USE_MEMCPY ++ ++#define OC_MEM_VAR_TO_OFFSET(x) ((unsigned int)x - OC_MEM_TOP) ++#define OC_MEM_OFFSET_TO_VAR(x) ((unsigned int)x + OC_MEM_TOP) ++ ++#ifdef __LINUX_USB_H ++#define pci_alloc_consistent(dev, size, dma_addr) \ ++ oc_hcca_alloc(dev, size, dma_addr) ++#define pci_free_consistent(dev, size, var, dma_addr) \ ++ oc_hcca_free(dev, size, var, dma_addr) ++#else ++#define pci_alloc_consistent(dev, size, dma_addr) \ ++ PCI_ALLOC_CONSISTENT(dev, size, dma_addr) ++#define pci_free_consistent(dev, size, var, dma_addr) \ ++ KFREE(var) ++#endif ++ ++#define pci_map_single(hwdev, ptr, size, direction) \ ++ PCI_MAP_SINGLE(hwdev, ptr, size, direction) ++#define pci_unmap_single(hwdev, dma_addr, size, direction) \ ++ PCI_UNMAP_SINGLE(hwdev, dma_addr, size, direction) ++ ++ ++extern u32 OC_MEM_TOP; ++ ++void oc_mem_init(unsigned int top, size_t size); ++void* KMALLOC(size_t s, int v); ++void KFREE(void* p); ++void* oc_hcca_alloc(struct pci_dev *hwdev, size_t size, dma_addr_t *handle); ++void oc_hcca_free(struct pci_dev *hwdev, ++ size_t size, void *vaddr, dma_addr_t dma_handle); ++ ++ ++/* ++ * replace PCI function ++*/ ++static inline void* PCI_ALLOC_CONSISTENT(struct pci_dev *hwdev, size_t size, dma_addr_t *handle) ++{ ++ void *p = KMALLOC(size, GFP_KERNEL | GFP_DMA); ++ *handle = (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p); ++ return p; ++} ++ ++#ifdef OC_MEM_PCI_MAP_DEBUG ++static inline char* PCI_DMA_FLAG_DESC(int direction) ++{ ++ switch (direction) { ++ case PCI_DMA_NONE: return "NONE"; ++ case PCI_DMA_FROMDEVICE: return "FROMDEVICE"; ++ case PCI_DMA_TODEVICE: return "TODEVICE"; ++ case PCI_DMA_BIDIRECTIONAL: return "BIDIRECTIONAL"; ++ } ++ return "unknown"; ++} ++#endif ++ ++static inline dma_addr_t ++PCI_MAP_SINGLE(struct pci_dev *hwdev, void *ptr, size_t size, int direction) ++{ ++#ifndef OC_MEM_PCI_MAP_USE_MEMCPY ++ return (dma_addr_t)OC_MEM_VAR_TO_OFFSET(ptr); ++#else ++ void *p; ++ size_t l = ((size + 3) / 4) * 4 + 4; ++ ++ switch (direction) { ++ case PCI_DMA_NONE: ++ BUG(); ++ break; ++ case PCI_DMA_FROMDEVICE: /* invalidate only */ ++ p = KMALLOC(l, GFP_KERNEL | GFP_DMA); ++ break; ++ case PCI_DMA_TODEVICE: /* writeback only */ ++ case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */ ++ p = KMALLOC(l, GFP_KERNEL | GFP_DMA); ++ memcpy(p, ptr, size); ++ break; ++ } ++ ++ *((volatile unsigned int *)((unsigned int)p + l - 4)) ++ = (unsigned int)ptr; ++#ifdef OC_MEM_PCI_MAP_DEBUG ++#if 0 ++ printk("PCI_MAP_SINGLE: %s %08x - %04x , %08x - %04x\n", ++ PCI_DMA_FLAG_DESC(direction), ++ ptr, size, OC_MEM_VAR_TO_OFFSET(p), l); ++#endif ++#endif ++ return (dma_addr_t)OC_MEM_VAR_TO_OFFSET(p); ++#endif ++} ++ ++static inline void ++PCI_UNMAP_SINGLE(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int direction) ++{ ++#ifndef OC_MEM_PCI_MAP_USE_MEMCPY ++ /* nothing to do */ ++#else ++ void *p, *ptr; ++ size_t l = ((size + 3) / 4) * 4 + 4; ++ p = (void *)OC_MEM_OFFSET_TO_VAR(dma_addr); ++ ptr = (void *)*((volatile unsigned int *)((unsigned int)p + l - 4)); ++ ++ switch (direction) { ++ case PCI_DMA_NONE: ++ BUG(); ++ break; ++ case PCI_DMA_FROMDEVICE: /* invalidate only */ ++ case PCI_DMA_BIDIRECTIONAL: /* writeback and invalidate */ ++ memcpy(ptr, p, size); ++ KFREE(p); ++ break; ++ case PCI_DMA_TODEVICE: /* writeback only */ ++ KFREE(p); ++ break; ++ } ++#ifdef OC_MEM_PCI_MAP_DEBUG ++#if 0 ++ printk("PCI_UNMAP_SINGLE: %s %08x - %04x , %08x\n", ++ PCI_DMA_FLAG_DESC(direction), ptr, size, dma_addr); ++#endif ++#endif ++#endif ++} ++ ++ ++#endif /* _MEM_ON_CHIP_H_ */ +diff -Nur linux_c860_org/drivers/usb/pcipool.c linux/drivers/usb/pcipool.c +--- linux_c860_org/drivers/usb/pcipool.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/usb/pcipool.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,401 @@ ++/* ++ * linux/arch/arm/mach-pxa/pcipool.c ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Based on linux/arch/arm/mach-sa1100/pcipool.c ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ */ ++/* ++ NOTE: ++ ++ this code was lifted straight out of drivers/pci/pci.c; ++ when compiling for the Intel StrongARM SA-1110/SA-1111 the ++ usb-ohci.c driver needs these routines even when the architecture ++ has no pci bus... ++*/ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/types.h> ++#include <linux/kernel.h> ++#include <linux/pci.h> ++#include <linux/string.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/spinlock.h> ++#include <linux/bitops.h> ++ ++#include <asm/page.h> ++ ++#if defined(CONFIG_USB_USE_INTERNAL_MEMORY) ++#include "mem-onchip.h" ++#endif ++ ++ ++struct pci_pool *pci_pool_create (const char *name, struct pci_dev *dev, ++ size_t size, size_t align, size_t allocation, int flags); ++void pci_pool_destroy (struct pci_pool *pool); ++ ++void *pci_pool_alloc (struct pci_pool *pool, int flags, dma_addr_t *handle); ++void pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t addr); ++ ++ ++/* ++ * Pool allocator ... wraps the pci_alloc_consistent page allocator, so ++ * small blocks are easily used by drivers for bus mastering controllers. ++ * This should probably be sharing the guts of the slab allocator. ++ */ ++ ++struct pci_pool { /* the pool */ ++ struct list_head page_list; ++ spinlock_t lock; ++ size_t blocks_per_page; ++ size_t size; ++ int flags; ++ struct pci_dev *dev; ++ size_t allocation; ++ char name [32]; ++ wait_queue_head_t waitq; ++}; ++ ++struct pci_page { /* cacheable header for 'allocation' bytes */ ++ struct list_head page_list; ++ void *vaddr; ++ dma_addr_t dma; ++ unsigned long bitmap [0]; ++}; ++ ++#define POOL_TIMEOUT_JIFFIES ((100 /* msec */ * HZ) / 1000) ++#define POOL_POISON_BYTE 0xa7 ++ ++// #define CONFIG_PCIPOOL_DEBUG ++ ++ ++/** ++ * pci_pool_create - Creates a pool of pci consistent memory blocks, for dma. ++ * @name: name of pool, for diagnostics ++ * @pdev: pci device that will be doing the DMA ++ * @size: size of the blocks in this pool. ++ * @align: alignment requirement for blocks; must be a power of two ++ * @allocation: returned blocks won't cross this boundary (or zero) ++ * @flags: SLAB_* flags (not all are supported). ++ * ++ * Returns a pci allocation pool with the requested characteristics, or ++ * null if one can't be created. Given one of these pools, pci_pool_alloc() ++ * may be used to allocate memory. Such memory will all have "consistent" ++ * DMA mappings, accessible by the device and its driver without using ++ * cache flushing primitives. The actual size of blocks allocated may be ++ * larger than requested because of alignment. ++ * ++ * If allocation is nonzero, objects returned from pci_pool_alloc() won't ++ * cross that size boundary. This is useful for devices which have ++ * addressing restrictions on individual DMA transfers, such as not crossing ++ * boundaries of 4KBytes. ++ */ ++struct pci_pool * ++pci_pool_create (const char *name, struct pci_dev *pdev, ++ size_t size, size_t align, size_t allocation, int flags) ++{ ++ struct pci_pool *retval; ++ ++ if (align == 0) ++ align = 1; ++ if (size == 0) ++ return 0; ++ else if (size < align) ++ size = align; ++ else if ((size % align) != 0) { ++ size += align + 1; ++ size &= ~(align - 1); ++ } ++ ++ if (allocation == 0) { ++ if (PAGE_SIZE < size) ++ allocation = size; ++ else ++ allocation = PAGE_SIZE; ++ // FIXME: round up for less fragmentation ++ } else if (allocation < size) ++ return 0; ++ ++ if (!(retval = kmalloc (sizeof *retval, flags))) ++ return retval; ++ ++#ifdef CONFIG_PCIPOOL_DEBUG ++ flags |= SLAB_POISON; ++#endif ++ ++ strncpy (retval->name, name, sizeof retval->name); ++ retval->name [sizeof retval->name - 1] = 0; ++ ++ retval->dev = pdev; ++ INIT_LIST_HEAD (&retval->page_list); ++ spin_lock_init (&retval->lock); ++ retval->size = size; ++ retval->flags = flags; ++ retval->allocation = allocation; ++ retval->blocks_per_page = allocation / size; ++ init_waitqueue_head (&retval->waitq); ++ ++#ifdef CONFIG_PCIPOOL_DEBUG ++ printk (KERN_DEBUG "pcipool create %s/%s size %d, %d/page (%d alloc)\n", ++ pdev ? pdev->slot_name : NULL, retval->name, size, ++ retval->blocks_per_page, allocation); ++#endif ++ ++ return retval; ++} ++ ++ ++static struct pci_page * ++pool_alloc_page (struct pci_pool *pool, int mem_flags) ++{ ++ struct pci_page *page; ++ int mapsize; ++ ++ mapsize = pool->blocks_per_page; ++ mapsize = (mapsize + BITS_PER_LONG - 1) / BITS_PER_LONG; ++ mapsize *= sizeof (long); ++ ++ page = (struct pci_page *) kmalloc (mapsize + sizeof *page, mem_flags); ++ if (!page) ++ return 0; ++ page->vaddr = pci_alloc_consistent (pool->dev, ++ pool->allocation, &page->dma); ++ if (page->vaddr) { ++ memset (page->bitmap, 0xff, mapsize); // bit set == free ++ if (pool->flags & SLAB_POISON) ++ memset (page->vaddr, POOL_POISON_BYTE, pool->allocation); ++ list_add (&page->page_list, &pool->page_list); ++ } else { ++ kfree (page); ++ page = 0; ++ } ++ return page; ++} ++ ++ ++static inline int ++is_page_busy (int blocks, unsigned long *bitmap) ++{ ++ while (blocks > 0) { ++ if (*bitmap++ != ~0UL) ++ return 1; ++ blocks -= BITS_PER_LONG; ++ } ++ return 0; ++} ++ ++static void ++pool_free_page (struct pci_pool *pool, struct pci_page *page) ++{ ++ dma_addr_t dma = page->dma; ++ ++ if (pool->flags & SLAB_POISON) ++ memset (page->vaddr, POOL_POISON_BYTE, pool->allocation); ++ pci_free_consistent (pool->dev, pool->allocation, page->vaddr, dma); ++ list_del (&page->page_list); ++ kfree (page); ++} ++ ++ ++/** ++ * pci_pool_destroy - destroys a pool of pci memory blocks. ++ * @pool: pci pool that will be destroyed ++ * ++ * Caller guarantees that no more memory from the pool is in use, ++ * and that nothing will try to use the pool after this call. ++ */ ++void ++pci_pool_destroy (struct pci_pool *pool) ++{ ++ unsigned long flags; ++ ++#ifdef CONFIG_PCIPOOL_DEBUG ++ printk (KERN_DEBUG "pcipool destroy %s/%s\n", ++ pool->dev ? pool->dev->slot_name : NULL, ++ pool->name); ++#endif ++ ++ spin_lock_irqsave (&pool->lock, flags); ++ while (!list_empty (&pool->page_list)) { ++ struct pci_page *page; ++ page = list_entry (pool->page_list.next, ++ struct pci_page, page_list); ++ if (is_page_busy (pool->blocks_per_page, page->bitmap)) { ++ printk (KERN_ERR "pci_pool_destroy %s/%s, %p busy\n", ++ pool->dev ? pool->dev->slot_name : NULL, ++ pool->name, page->vaddr); ++ /* leak the still-in-use consistent memory */ ++ list_del (&page->page_list); ++ kfree (page); ++ } else ++ pool_free_page (pool, page); ++ } ++ spin_unlock_irqrestore (&pool->lock, flags); ++ kfree (pool); ++} ++ ++ ++/** ++ * pci_pool_alloc - get a block of consistent memory ++ * @pool: pci pool that will produce the block ++ * @mem_flags: SLAB_KERNEL or SLAB_ATOMIC ++ * @handle: pointer to dma address of block ++ * ++ * This returns the kernel virtual address of a currently unused block, ++ * and reports its dma address through the handle. ++ * If such a memory block can't be allocated, null is returned. ++ */ ++void * ++pci_pool_alloc (struct pci_pool *pool, int mem_flags, dma_addr_t *handle) ++{ ++ unsigned long flags; ++ struct list_head *entry; ++ struct pci_page *page; ++ int map, block; ++ size_t offset; ++ void *retval; ++ ++restart: ++ spin_lock_irqsave (&pool->lock, flags); ++ list_for_each (entry, &pool->page_list) { ++ int i; ++ page = list_entry (entry, struct pci_page, page_list); ++ /* only cachable accesses here ... */ ++ for (map = 0, i = 0; ++ i < pool->blocks_per_page; ++ i += BITS_PER_LONG, map++) { ++ if (page->bitmap [map] == 0) ++ continue; ++ block = ffz (~ page->bitmap [map]); ++ if ((i + block) < pool->blocks_per_page) { ++ clear_bit (block, &page->bitmap [map]); ++ offset = (BITS_PER_LONG * map) + block; ++ offset *= pool->size; ++ goto ready; ++ } ++ } ++ } ++ if (!(page = pool_alloc_page (pool, mem_flags))) { ++ if (mem_flags == SLAB_KERNEL) { ++ DECLARE_WAITQUEUE (wait, current); ++ ++ current->state = TASK_INTERRUPTIBLE; ++ add_wait_queue (&pool->waitq, &wait); ++ spin_unlock_irqrestore (&pool->lock, flags); ++ ++ schedule_timeout (POOL_TIMEOUT_JIFFIES); ++ ++ current->state = TASK_RUNNING; ++ remove_wait_queue (&pool->waitq, &wait); ++ goto restart; ++ } ++ retval = 0; ++ goto done; ++ } ++ ++ clear_bit (0, &page->bitmap [0]); ++ offset = 0; ++ready: ++ retval = offset + page->vaddr; ++ *handle = offset + page->dma; ++done: ++ spin_unlock_irqrestore (&pool->lock, flags); ++ return retval; ++} ++ ++ ++static struct pci_page * ++pool_find_page (struct pci_pool *pool, dma_addr_t dma) ++{ ++ unsigned long flags; ++ struct list_head *entry; ++ struct pci_page *page; ++ ++ spin_lock_irqsave (&pool->lock, flags); ++ list_for_each (entry, &pool->page_list) { ++ page = list_entry (entry, struct pci_page, page_list); ++ if (dma < page->dma) ++ continue; ++ if (dma < (page->dma + pool->allocation)) ++ goto done; ++ } ++ page = 0; ++done: ++ spin_unlock_irqrestore (&pool->lock, flags); ++ return page; ++} ++ ++ ++/** ++ * pci_pool_free - put block back into pci pool ++ * @pool: the pci pool holding the block ++ * @vaddr: virtual address of block ++ * @dma: dma address of block ++ * ++ * Caller promises neither device nor driver will again touch this block ++ * unless it is first re-allocated. ++ */ ++void ++pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t dma) ++{ ++ struct pci_page *page; ++ unsigned long flags; ++ int map, block; ++ ++ if ((page = pool_find_page (pool, dma)) == 0) { ++ printk (KERN_ERR "pci_pool_free %s/%s, %p/%x (bad dma)\n", ++ pool->dev ? pool->dev->slot_name : NULL, ++ pool->name, vaddr, dma); ++ return; ++ } ++#ifdef CONFIG_PCIPOOL_DEBUG ++ if (((dma - page->dma) + (void *)page->vaddr) != vaddr) { ++ printk (KERN_ERR "pci_pool_free %s/%s, %p (bad vaddr)/%x\n", ++ pool->dev ? pool->dev->slot_name : NULL, ++ pool->name, vaddr, dma); ++ return; ++ } ++#endif ++ ++ block = dma - page->dma; ++ block /= pool->size; ++ map = block / BITS_PER_LONG; ++ block %= BITS_PER_LONG; ++ ++#ifdef CONFIG_PCIPOOL_DEBUG ++ if (page->bitmap [map] & (1UL << block)) { ++ printk (KERN_ERR "pci_pool_free %s/%s, dma %x already free\n", ++ pool->dev ? pool->dev->slot_name : NULL, ++ pool->name, dma); ++ return; ++ } ++#endif ++ if (pool->flags & SLAB_POISON) ++ memset (vaddr, POOL_POISON_BYTE, pool->size); ++ ++ spin_lock_irqsave (&pool->lock, flags); ++ set_bit (block, &page->bitmap [map]); ++ if (waitqueue_active (&pool->waitq)) ++ wake_up (&pool->waitq); ++ /* ++ * Resist a temptation to do ++ * if (!is_page_busy(bpp, page->bitmap)) pool_free_page(pool, page); ++ * it is not interrupt safe. Better have empty pages hang around. ++ */ ++ spin_unlock_irqrestore (&pool->lock, flags); ++} ++ ++ ++/* ++EXPORT_SYMBOL (pci_pool_create); ++EXPORT_SYMBOL (pci_pool_destroy); ++EXPORT_SYMBOL (pci_pool_alloc); ++EXPORT_SYMBOL (pci_pool_free); ++*/ ++ +diff -Nur linux_c860_org/drivers/usb/usb-ohci-tc6393.c linux/drivers/usb/usb-ohci-tc6393.c +--- linux_c860_org/drivers/usb/usb-ohci-tc6393.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/usb/usb-ohci-tc6393.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,516 @@ ++/* ++ * linux/drivers/usb/usb-ohci-tc6393.c ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * ++ * linux/drivers/usb/usb-ohci-pci.c ++ * ++ * and ++ * ++ * linux/drivers/usb/usb-ohci-sa1111.c ++ * ++ * The outline of this code was taken from Brad Parkers <brad@heeltoe.com> ++ * original OHCI driver modifications, and reworked into a cleaner form ++ * by Russell King <rmk@arm.linux.org.uk>. ++ */ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/sched.h> ++#include <linux/ioport.h> ++#include <linux/interrupt.h> ++#include <linux/slab.h> ++#include <linux/usb.h> ++#include <linux/pm.h> ++#include <linux/delay.h> ++#include <linux/ioctl.h> ++#include <linux/miscdevice.h> ++#include <asm/uaccess.h> ++ ++#include <asm/hardware.h> ++#include <asm/irq.h> ++#include <asm/io.h> ++#include <asm/sharp_tc6393_usb.h> ++ ++#include "usb-ohci.h" ++ ++#define TC6393_OHCI_CTL_MINOR_DEV 222 ++ ++static int tc6393_usb_internal_port_enable = 0; // default is disable ++static int tc6393_usb_external_port_enable = 1; // default is enable ++ ++//#define THREAD_RESUME ++#ifdef THREAD_RESUME ++static int resume_thread_alive = 0; ++static int tc6393_ohci_pm_resume(void); ++#endif ++ ++int __devinit ++hc_add_ohci(struct pci_dev *dev, int irq, void *membase, unsigned long flags, ++ ohci_t **ohci, const char *name, const char *slot_name); ++extern void hc_remove_ohci(ohci_t *ohci); ++ ++static ohci_t *tc6393_ohci; ++ ++#ifdef CONFIG_PM ++static int tc6393_ohci_pm_callback( ++ struct pm_dev *pm_device, pm_request_t rqst, void *data); ++#endif ++ ++ ++static int do_ioctl(struct inode * inode, ++ struct file *filp, u_int cmd, u_long arg) ++{ ++ long val,res; ++ ++#ifdef THREAD_RESUME ++ while(resume_thread_alive) udelay(100); ++#endif ++ switch (cmd) { ++ case TC6393_OHCI_IOC_PDOWN: /* Power Down */ ++ //printk("TC6393_OHCI_IOC_PDOWN: %d\n",arg); ++ if (arg == 0) { ++ TC6393_USB_REG(TC6393_USB_SVPMCS) ++ |= TC6393_USB_PM_USPW1; ++ tc6393_usb_external_port_enable = 0; ++ } else if (arg == 1) { ++ TC6393_USB_REG(TC6393_USB_SVPMCS) ++ |= TC6393_USB_PM_USPW2; ++ tc6393_usb_internal_port_enable = 0; ++ } else ++ return -EINVAL; ++ return 0; ++ case TC6393_OHCI_IOC_PON: /* Power On */ ++ //printk("TC6393_OHCI_IOC_PON: %d\n",arg); ++ if (arg == 0) { ++ TC6393_USB_REG(TC6393_USB_SVPMCS) ++ &= ~TC6393_USB_PM_USPW1; ++ tc6393_usb_external_port_enable = 1; ++ } else if (arg == 1) { ++ TC6393_USB_REG(TC6393_USB_SVPMCS) ++ &= ~TC6393_USB_PM_USPW2; ++ tc6393_usb_internal_port_enable = 1; ++ } else ++ return -EINVAL; ++ return 0; ++ case TC6393_OHCI_IOC_PCHECK: /* Check Power */ ++ if ( get_user(val, (long *) arg) ) ++ return -EFAULT; ++ if (val == 0) { ++ res = (TC6393_USB_REG(TC6393_USB_SVPMCS)&TC6393_USB_PM_USPW1)?0:1; ++ } else if (val == 1) { ++ res = (TC6393_USB_REG(TC6393_USB_SVPMCS)&TC6393_USB_PM_USPW2)?0:1; ++ } else return -EINVAL; ++ return put_user(res, (int *)arg); ++ default: ++ break; ++ } ++ return -EOPNOTSUPP; ++} ++ ++static struct file_operations tc6393_ohci_fops = { ++ owner: THIS_MODULE, ++ ioctl: do_ioctl ++}; ++ ++static struct miscdevice tc6393_ohci_ctl_device = { ++ TC6393_OHCI_CTL_MINOR_DEV, ++ "tc6393_ohci_ctl", ++ &tc6393_ohci_fops ++}; ++ ++ ++static void tc6393_ohci_configure(void) ++{ ++ u16 portval; ++#if 0 ++printk("TC6393_SYS_PLL2CR: %04x\n", TC6393_SYS_REG(TC6393_SYS_PLL2CR)); ++TC6393_SYS_REG(TC6393_SYS_PLL2CR) = 0x0cc1; ++#endif ++ ++ TC6393_SYS_REG(TC6393_SYS_CCR) |= 2; /* clock enable */ ++ TC6393_SYS_REG(TC6393_SYS_FER) |= 1; /* USB enable */ ++ ++ //TC6393_USB_REG(TC6393_USB_SPPCNF) |= 1; ++ TC6393_USB_REG(TC6393_USB_SPBA1) ++ = TC6393_USB_OHCI_OP_REG_BASE & 0xffff; /* LW */ ++ TC6393_USB_REG(TC6393_USB_SPBA2) ++ = TC6393_USB_OHCI_OP_REG_BASE >> 16; /* HW */ ++ TC6393_USB_REG(TC6393_USB_ILME) = 1; ++ ++ portval = TC6393_USB_PM_PMES | TC6393_USB_PM_PMEE | TC6393_USB_PM_CKRNEN | TC6393_USB_PM_GCKEN; ++ if (!tc6393_usb_external_port_enable) portval |= TC6393_USB_PM_USPW1; ++ if (!tc6393_usb_internal_port_enable) portval |= TC6393_USB_PM_USPW2; ++ TC6393_USB_REG(TC6393_USB_SVPMCS) = portval; ++ ++ TC6393_USB_REG(TC6393_USB_INTC) = 2; ++ ++#if 0 ++printk("TC6393_SYS_ConfigCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_ConfigCR)); ++printk("TC6393_SYS_CCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_CCR)); ++printk("TC6393_SYS_PLL2CR: %04x\n", TC6393_SYS_REG(TC6393_SYS_PLL2CR)); ++printk("TC6393_SYS_PLL1CR: %08x\n", (*(int *)(TC6393_SYS_BASE+TC6393_SYS_PLL1CR1))); ++printk("TC6393_SYS_MCR: %04x\n", TC6393_SYS_REG(TC6393_SYS_MCR)); ++printk("TC6393_SYS_FER: %04x\n", TC6393_SYS_REG(TC6393_SYS_FER)); ++printk("TC6393_USB_Rev: %d\n", TC6393_USB_REG(TC6393_USB_SPRID)); ++printk("TC6393_USB_SPBA: %08x\n", (*(int *)(TC6393_USB_BASE+TC6393_USB_SPBA1))); ++printk("TC6393_USB_ILME: %04x\n", TC6393_USB_REG(TC6393_USB_ILME)); ++printk("TC6393_USB_SVPMCS: %04x\n", TC6393_USB_REG(TC6393_USB_SVPMCS)); ++printk("TC6393_USB_INTC: %04x\n", TC6393_USB_REG(TC6393_USB_INTC)); ++printk("OHCI Rev: %08x\n", (*(int *)(TC6393_SYS_BASE+TC6393_USB_OHCI_OP_REG_BASE))); ++#endif ++#if 0 ++ { ++ unsigned int top = TC6393_RAM0_BASE + 0x100; ++ volatile unsigned int *ip = (volatile unsigned int *)(top); ++ volatile unsigned short *sp = (volatile unsigned short *)(top+4); ++ volatile unsigned char *cp = (volatile unsigned char *)(top+8); ++ *ip = 0x12345678; ++ printk("int %08x\n", *ip); ++ sp[0] = 0x9876; ++ sp[1] = 0x5432; ++ printk("short %04x %04x\n", sp[0], sp[1]); ++ cp[0] = 0x12; ++ cp[1] = 0x23; ++ cp[2] = 0x34; ++ cp[3] = 0x45; ++ printk("byte: %02x %02x %02x %02x\n", cp[0], cp[1], cp[2], cp[3]); ++ } ++#endif ++} ++ ++static int __init tc6393_ohci_init(void) ++{ ++ int ret; ++ ++ /* ++ * Request memory resources. ++ */ ++// if (!request_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT, "usb-ohci")) ++// return -EBUSY; ++ ++ tc6393_ohci_configure(); ++ oc_mem_init(TC6393_RAM0_BASE, TC6393_RAM0_SIZE); ++ ++ /* ++ * Initialise the generic OHCI driver. ++ */ ++ ret = hc_add_ohci((struct pci_dev *)1, TC6393_IRQ_USBINT, ++ (void *)(TC6393_SYS_BASE+TC6393_USB_OHCI_OP_REG_BASE), ++ 0, &tc6393_ohci, "usb-ohci", "tc6393"); ++ ++#ifdef CONFIG_PM ++ pm_register(PM_SYS_DEV, PM_SYS_UNKNOWN, tc6393_ohci_pm_callback); ++#endif ++ ++ if (misc_register(&tc6393_ohci_ctl_device)) ++ printk("failed to register tc6393_ohci_ctl_device\n"); ++ ++// if (ret) ++// release_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT); ++ ++ return ret; ++} ++ ++static void __exit tc6393_ohci_exit(void) ++{ ++ misc_deregister(&tc6393_ohci_ctl_device); ++ ++#ifdef CONFIG_PM ++ pm_unregister_all(tc6393_ohci_pm_callback); ++#endif ++ hc_remove_ohci(tc6393_ohci); ++ ++ /* ++ * Put the USB host controller into reset. ++ */ ++ TC6393_SYS_REG(TC6393_SYS_FER) &= ~1; ++ ++ /* ++ * Stop the USB clock. ++ */ ++ TC6393_SYS_REG(TC6393_SYS_CCR) &= ~2; ++ ++ /* ++ * Release memory resources. ++ */ ++// release_mem_region(_USB_OHCI_OP_BASE, _USB_EXTENT); ++ ++} ++ ++module_init(tc6393_ohci_init); ++module_exit(tc6393_ohci_exit); ++ ++ ++#ifdef CONFIG_PM ++static void* tc6393_sram0_backup; ++static dma_addr_t tc6393_sram0_backup_phys; ++ ++/* usb-ohci.c */ ++#define OHCI_CONTROL_INIT \ ++ (OHCI_CTRL_CBSR & 0x3) | OHCI_CTRL_IE | OHCI_CTRL_PLE ++extern spinlock_t usb_ed_lock; ++ ++extern td_t * dl_reverse_done_list (ohci_t * ohci); ++extern void dl_done_list (ohci_t * ohci, td_t * td_list); ++extern int hc_start (ohci_t * ohci); ++extern int hc_reset (ohci_t * ohci); ++ ++ ++/* controller died; cleanup debris, then restart */ ++/* must not be called from interrupt context */ ++ ++static void hc_restart (ohci_t *ohci) ++{ ++ int temp; ++ int i; ++ ++ ohci->disabled = 1; ++ ohci->sleeping = 0; ++ if (ohci->bus->root_hub) ++ usb_disconnect (&ohci->bus->root_hub); ++ ++ /* empty the interrupt branches */ ++ for (i = 0; i < NUM_INTS; i++) ohci->ohci_int_load[i] = 0; ++ for (i = 0; i < NUM_INTS; i++) ohci->hcca->int_table[i] = 0; ++ ++ /* no EDs to remove */ ++ ohci->ed_rm_list [0] = NULL; ++ ohci->ed_rm_list [1] = NULL; ++ ++ /* empty control and bulk lists */ ++ ohci->ed_isotail = NULL; ++ ohci->ed_controltail = NULL; ++ ohci->ed_bulktail = NULL; ++ ++ if ((temp = hc_reset (ohci)) < 0 || (temp = hc_start (ohci)) < 0) { ++ err ("can't restart usb-%s, %d", ohci->ohci_dev->slot_name, temp); ++ } else ++ dbg ("restart usb-%s completed", ohci->ohci_dev->slot_name); ++} ++ ++static unsigned int tc6393_usb_pm_uspw = 0; ++ ++static int tc6393_ohci_pm_suspend(u32 state) ++{ ++ ohci_t *ohci = tc6393_ohci; ++ unsigned long flags; ++ ++ /* bus suspend */ ++ if ((ohci->hc_control & OHCI_CTRL_HCFS) != OHCI_USB_OPER) { ++ dbg ("can't suspend usb-%s (state is %s)", ohci->slot_name, ++ hcfs2string (ohci->hc_control & OHCI_CTRL_HCFS)); ++ return -EIO; ++ } ++ ++ /* act as if usb suspend can always be used */ ++ info ("USB suspend: usb-%s", ohci->slot_name); ++ ohci->sleeping = 1; ++ ++ /* First stop processing */ ++ spin_lock_irqsave (&usb_ed_lock, flags); ++ ohci->hc_control &= ~(OHCI_CTRL_PLE|OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_IE); ++ writel (ohci->hc_control, &ohci->regs->control); ++ writel (OHCI_INTR_SF, &ohci->regs->intrstatus); ++ (void) readl (&ohci->regs->intrstatus); ++ spin_unlock_irqrestore (&usb_ed_lock, flags); ++ ++ /* Wait a frame or two */ ++ mdelay(1); ++ if (!readl (&ohci->regs->intrstatus) & OHCI_INTR_SF) ++ mdelay (1); ++ ++ /* Enable remote wakeup */ ++ writel (readl(&ohci->regs->intrenable) | OHCI_INTR_RD, &ohci->regs->intrenable); ++ ++ /* Suspend chip and let things settle down a bit */ ++ ohci->hc_control = OHCI_USB_SUSPEND; ++ writel (ohci->hc_control, &ohci->regs->control); ++#if 0 ++ (void) readl (&ohci->regs->control); ++ mdelay (500); /* No schedule here ! */ ++ switch (readl (&ohci->regs->control) & OHCI_CTRL_HCFS) { ++ case OHCI_USB_RESET: ++ dbg("Bus in reset phase ???"); ++ break; ++ case OHCI_USB_RESUME: ++ dbg("Bus in resume phase ???"); ++ break; ++ case OHCI_USB_OPER: ++ dbg("Bus in operational phase ???"); ++ break; ++ case OHCI_USB_SUSPEND: ++ dbg("Bus suspended"); ++ break; ++ } ++ tc6393_usb_pm_uspw = TC6393_USB_REG(TC6393_USB_SVPMCS); ++#else ++ /* Power Down */ ++ tc6393_usb_pm_uspw = TC6393_USB_REG(TC6393_USB_SVPMCS); ++ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_USPW1; ++ TC6393_USB_REG(TC6393_USB_SVPMCS) |= TC6393_USB_PM_USPW2; ++#endif ++ ++ /* store SRAM */ ++ tc6393_sram0_backup = consistent_alloc(GFP_KERNEL | GFP_DMA, ++ TC6393_RAM0_SIZE, &tc6393_sram0_backup_phys); ++ memcpy(tc6393_sram0_backup , TC6393_RAM0_BASE, TC6393_RAM0_SIZE); ++//memset(TC6393_RAM0_BASE, 0xff, TC6393_RAM0_SIZE); ++ /* device suspend */ ++ TC6393_SYS_REG(TC6393_SYS_FER) &= ~1; ++ TC6393_SYS_REG(TC6393_SYS_CCR) &= ~2; ++ ++ return 0; ++} ++ ++static int tc6393_ohci_pm_resume(void) ++{ ++ ohci_t *ohci = tc6393_ohci; ++ int temp; ++ unsigned long flags; ++ int ret = 0; ++ ++#ifdef THREAD_RESUME ++ resume_thread_alive = 1; ++#endif ++ ++ /* device resume */ ++ tc6393_ohci_configure(); ++ ++ /* restore SRAM */ ++ memcpy(TC6393_RAM0_BASE, tc6393_sram0_backup, TC6393_RAM0_SIZE); ++ consistent_free(tc6393_sram0_backup, ++ TC6393_RAM0_SIZE, tc6393_sram0_backup_phys); ++ ++ /* Power On */ ++ if ( !(tc6393_usb_pm_uspw & TC6393_USB_PM_USPW1) ) ++ TC6393_USB_REG(TC6393_USB_SVPMCS) &= ~TC6393_USB_PM_USPW1; ++ if ( !(tc6393_usb_pm_uspw & TC6393_USB_PM_USPW2) ) ++ TC6393_USB_REG(TC6393_USB_SVPMCS) &= ~TC6393_USB_PM_USPW2; ++ ++ /* bus resume */ ++ /* guard against multiple resumes */ ++ atomic_inc (&ohci->resume_count); ++ if (atomic_read (&ohci->resume_count) != 1) { ++ err ("concurrent resumes for usb-%s", ohci->slot_name); ++ atomic_dec (&ohci->resume_count); ++#ifdef THREAD_RESUME ++ resume_thread_alive = 0; ++#endif ++ return 0; ++ } ++ ++ /* did we suspend, or were we powered off? */ ++ ohci->hc_control = readl (&ohci->regs->control); ++ temp = ohci->hc_control & OHCI_CTRL_HCFS; ++ ++#ifdef DEBUG ++ /* the registers may look crazy here */ ++ ohci_dump_status (ohci); ++#endif ++ ++ switch (temp) { ++ ++ case OHCI_USB_RESET: // lost power ++ info ("USB restart: usb-%s", ohci->slot_name); ++ hc_restart (ohci); ++ break; ++ ++ case OHCI_USB_SUSPEND: // host wakeup ++ case OHCI_USB_RESUME: // remote wakeup ++ info ("USB continue: usb-%s from %s wakeup", ohci->slot_name, ++ (temp == OHCI_USB_SUSPEND) ++ ? "host" : "remote"); ++ ohci->hc_control = OHCI_USB_RESUME; ++ writel (ohci->hc_control, &ohci->regs->control); ++ (void) readl (&ohci->regs->control); ++ mdelay (20); /* no schedule here ! */ ++ /* Some controllers (lucent) need a longer delay here */ ++ mdelay (15); ++ temp = readl (&ohci->regs->control); ++ temp = ohci->hc_control & OHCI_CTRL_HCFS; ++ if (temp != OHCI_USB_RESUME) { ++ err ("controller usb-%s won't resume", ohci->slot_name); ++ ohci->disabled = 1; ++#ifdef THREAD_RESUME ++ resume_thread_alive = 0; ++#endif ++ return -EIO; ++ } ++ ++ /* Some chips likes being resumed first */ ++ writel (OHCI_USB_OPER, &ohci->regs->control); ++ (void) readl (&ohci->regs->control); ++ mdelay (3); ++ ++ /* Then re-enable operations */ ++ spin_lock_irqsave (&usb_ed_lock, flags); ++ ohci->disabled = 0; ++ ohci->sleeping = 0; ++ ohci->hc_control = OHCI_CONTROL_INIT | OHCI_USB_OPER; ++ if (!ohci->ed_rm_list[0] && !ohci->ed_rm_list[1]) { ++ if (ohci->ed_controltail) ++ ohci->hc_control |= OHCI_CTRL_CLE; ++ if (ohci->ed_bulktail) ++ ohci->hc_control |= OHCI_CTRL_BLE; ++ } ++ writel (ohci->hc_control, &ohci->regs->control); ++ writel (OHCI_INTR_SF, &ohci->regs->intrstatus); ++ writel (OHCI_INTR_SF, &ohci->regs->intrenable); ++ /* Check for a pending done list */ ++ writel (OHCI_INTR_WDH, &ohci->regs->intrdisable); ++ (void) readl (&ohci->regs->intrdisable); ++ spin_unlock_irqrestore (&usb_ed_lock, flags); ++ if (ohci->hcca->done_head) ++ dl_done_list (ohci, dl_reverse_done_list (ohci)); ++ writel (OHCI_INTR_WDH, &ohci->regs->intrenable); ++ writel (OHCI_BLF, &ohci->regs->cmdstatus); /* start bulk list */ ++ writel (OHCI_CLF, &ohci->regs->cmdstatus); /* start Control list */ ++ break; ++ ++ default: ++ warn ("odd resume for usb-%s", ohci->slot_name); ++ } ++ ++ /* controller is operational, extra resumes are harmless */ ++ atomic_dec (&ohci->resume_count); ++ ++#ifdef THREAD_RESUME ++ resume_thread_alive = 0; ++#endif ++ return ret; ++} ++ ++static int ++tc6393_ohci_pm_callback(struct pm_dev *pm_device, pm_request_t rqst, void *data) ++{ ++ int error = 0; ++ ++ switch (rqst) { ++ case PM_SAVE_STATE: ++ break; ++ case PM_SUSPEND: ++#ifdef THREAD_RESUME ++ while(resume_thread_alive) udelay(100); ++#endif ++ error = tc6393_ohci_pm_suspend((u32)data); ++ break; ++ case PM_RESUME: ++#ifdef THREAD_RESUME ++ kernel_thread(tc6393_ohci_pm_resume, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); ++ error = 0; ++#else ++ error = tc6393_ohci_pm_resume(); ++#endif ++ break; ++ default: ++ break; ++ } ++ return error; ++} ++#endif +diff -Nur linux_c860_org/drivers/usb/usb-ohci.c linux/drivers/usb/usb-ohci.c +--- linux_c860_org/drivers/usb/usb-ohci.c 2002-08-26 14:45:02.000000000 +0900 ++++ linux/drivers/usb/usb-ohci.c 2004-06-10 21:09:10.000000000 +0900 +@@ -12,6 +12,7 @@ + * + * History: + * ++ * 2004/02/26 Lineo Solutions, Inc. for Tosa (SHARP) + * 2001/09/19 USB_ZERO_PACKET support (Jean Tourrilhes) + * 2001/07/17 power management and pmac cleanup (Benjamin Herrenschmidt) + * 2001/03/24 td/ed hashing to remove bus_to_virt (Steve Longerbeam); +@@ -89,7 +90,7 @@ + #define OHCI_UNLINK_TIMEOUT (HZ / 10) + + static LIST_HEAD (ohci_hcd_list); +-static spinlock_t usb_ed_lock = SPIN_LOCK_UNLOCKED; ++spinlock_t usb_ed_lock = SPIN_LOCK_UNLOCKED; + + + /*-------------------------------------------------------------------------*/ +@@ -1295,7 +1296,7 @@ + err("internal OHCI error: TD index > length"); + return; + } +-if (data & (1 << 20)) panic("td_fill: A20 = 1: %08x\n", data); ++//if (data & (1 << 20)) panic("td_fill: A20 = 1: %08x\n", data); + + /* use this td as the next dummy */ + td_pt = urb_priv->td [index]; +@@ -1509,7 +1510,7 @@ + /* replies to the request have to be on a FIFO basis so + * we reverse the reversed done-list */ + +-static td_t * dl_reverse_done_list (ohci_t * ohci) ++td_t * dl_reverse_done_list (ohci_t * ohci) + { + __u32 td_list_hc; + td_t * td_rev = NULL; +@@ -1657,7 +1658,7 @@ + + /* td done list */ + +-static void dl_done_list (ohci_t * ohci, td_t * td_list) ++void dl_done_list (ohci_t * ohci, td_t * td_list) + { + td_t * td_list_next = NULL; + ed_t * ed; +@@ -2126,7 +2127,7 @@ + + /* reset the HC and BUS */ + +-static int hc_reset (ohci_t * ohci) ++int hc_reset (ohci_t * ohci) + { + int timeout = 30; + int smm_timeout = 50; /* 0,5 sec */ +@@ -2171,7 +2172,7 @@ + * enable interrupts + * connect the virtual root hub */ + +-static int hc_start (ohci_t * ohci) ++int hc_start (ohci_t * ohci) + { + __u32 mask; + unsigned int fminterval; +@@ -2418,7 +2419,8 @@ + ohci_mem_cleanup (ohci); + + /* unmap the IO address space */ +- iounmap (ohci->regs); ++ if ((int)ohci->ohci_dev != 1) ++ iounmap (ohci->regs); + + pci_free_consistent (ohci->ohci_dev, sizeof *ohci->hcca, + ohci->hcca, ohci->hcca_dma); +@@ -2432,7 +2434,7 @@ + */ + int __devinit + hc_add_ohci(struct pci_dev *dev, int irq, void *mem_base, unsigned long flags, +- ohci_t **ohci, const char *name, const char *slot_name) ++ ohci_t **ohcip, const char *name, const char *slot_name) + { + char buf[8], *bufp = buf; + ohci_t * ohci; +@@ -2447,6 +2449,7 @@ + (unsigned long) mem_base, bufp); + + ohci = hc_alloc_ohci (dev, mem_base); ++ *ohcip = ohci; + if (!ohci) { + return -ENOMEM; + } +diff -Nur linux_c860_org/drivers/usb/usb-ohci.h linux/drivers/usb/usb-ohci.h +--- linux_c860_org/drivers/usb/usb-ohci.h 2002-08-26 14:45:02.000000000 +0900 ++++ linux/drivers/usb/usb-ohci.h 2004-06-10 21:09:10.000000000 +0900 +@@ -5,8 +5,15 @@ + * (C) Copyright 2000-2001 David Brownell <dbrownell@users.sourceforge.net> + * + * usb-ohci.h ++ * ++ * ChangeLog: ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa (SHARP) + */ + ++#if defined(CONFIG_USB_USE_INTERNAL_MEMORY) ++#include "mem-onchip.h" ++#endif ++ + + static int cc_to_error[16] = { + +diff -Nur linux_c860_org/drivers/usb/usbkbd.c linux/drivers/usb/usbkbd.c +--- linux_c860_org/drivers/usb/usbkbd.c 2002-08-26 14:39:14.000000000 +0900 ++++ linux/drivers/usb/usbkbd.c 2004-06-10 21:09:10.000000000 +0900 +@@ -7,7 +7,11 @@ + * + * Sponsored by SuSE + */ +- ++/* ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * ++ */ + /* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by +@@ -46,6 +50,26 @@ + MODULE_DESCRIPTION( DRIVER_DESC ); + MODULE_LICENSE("GPL"); + ++#ifdef CONFIG_ARCH_PXA_TOSA ++static unsigned char usb_kbd_keycode[256] = { ++ 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ++ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 41, 42, ++ 43, 44, 45, 46, 47, 48, 49, 50, 28, 34, 31, 65, 92, 51, 52, 55, ++ 54, 0, 97, 95, 96, 70, 98, 99,100, 60, 33, 58, 94, 39, 88, 89, ++ 90,110,117,120, 30, 40,115, 0, 0, 0,104,106, 81,105,107, 124, ++ 121,123,122, 32, 82, 83, 85, 86, 87, 71, 72, 73, 74, 75, 76, 77, ++ 78, 79, 80, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0,101, 69, 53, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 56, 27, 57, 29,111,112,113,114, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++}; ++#else + static unsigned char usb_kbd_keycode[256] = { + 0, 0, 0, 0, 30, 48, 46, 32, 18, 33, 34, 35, 23, 36, 37, 38, + 50, 49, 24, 25, 16, 19, 31, 20, 22, 47, 17, 45, 21, 44, 2, 3, +@@ -64,6 +88,7 @@ + 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113, + 150,158,159,128,136,177,178,176,142,152,173,140 + }; ++#endif + + struct usb_kbd { + struct input_dev dev; +@@ -84,6 +109,12 @@ + + if (urb->status) return; + ++#if 0 ++ printk("kbd_irq[%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x]\n", ++ kbd->new[0],kbd->new[1],kbd->new[2],kbd->new[3],kbd->new[4], ++ kbd->new[5],kbd->new[6],kbd->new[7],kbd->new[8]); ++#endif ++ + for (i = 0; i < 8; i++) + input_report_key(&kbd->dev, usb_kbd_keycode[i + 224], (kbd->new[0] >> i) & 1); + +@@ -200,7 +231,11 @@ + + kbd->usbdev = dev; + ++#ifdef CONFIG_ARCH_SHARP_SL ++ kbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED); ++#else + kbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP); ++#endif + kbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL) | BIT(LED_COMPOSE) | BIT(LED_KANA); + + for (i = 0; i < 255; i++) +diff -Nur linux_c860_org/drivers/video/Config.in linux/drivers/video/Config.in +--- linux_c860_org/drivers/video/Config.in 2002-09-11 12:02:37.000000000 +0900 ++++ linux/drivers/video/Config.in 2004-06-10 21:09:10.000000000 +0900 +@@ -10,6 +10,21 @@ + if [ "$CONFIG_FB" = "y" ]; then + define_bool CONFIG_DUMMY_CONSOLE y + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then ++ bool "UNICON Support(EXPERIMENTAL)" CONFIG_UNICON ++ if [ "$CONFIG_UNICON" = "y" ]; then ++ tristate "Double Byte GB encode (module only)" CONFIG_UNICON_GB ++ if [ "$CONFIG_UNICON_GB" = "y" ]; then ++ define_bool CONFIG_UNICON_GB m ++ fi ++ tristate "Double Byte SJIS encode (module only)" CONFIG_UNICON_SJIS ++ if [ "$CONFIG_UNICON_SJIS" = "y" ]; then ++ define_bool CONFIG_UNICON_SJIS m ++ fi ++ tristate "Double Byte EUCJP encode (module only)" CONFIG_UNICON_EUCJP ++ if [ "$CONFIG_UNICON_EUCJP" = "y" ]; then ++ define_bool CONFIG_UNICON_EUCJP m ++ fi ++ fi + if [ "$CONFIG_PCI" = "y" ]; then + tristate ' nVidia Riva support (EXPERIMENTAL)' CONFIG_FB_RIVA + fi +@@ -58,7 +73,9 @@ + dep_bool ' Cached FB support' CONFIG_POODLE_CONSISTENT_ALLOC $CONFIG_FB_POODLE + fi + dep_bool ' Corgi LCD support' CONFIG_FB_CORGI $CONFIG_ARCH_PXA_CORGI ++ dep_bool ' Tosa LCD support' CONFIG_FB_TOSA $CONFIG_ARCH_PXA_TOSA + dep_bool ' SHARP LOGO screen support' CONFIG_SHARP_LOGO_SCREEN $CONFIG_ARCH_SHARP_SL ++ dep_bool ' Boot fastsysclk 100MHz. (EXPERIMENTAL)' CONFIG_SL_SYSCLK100 $CONFIG_ARCH_PXA_CORGI + fi + dep_tristate ' CyberPro 2000/2010/5000 support' CONFIG_FB_CYBER2000 $CONFIG_PCI + if [ "$CONFIG_APOLLO" = "y" ]; then +diff -Nur linux_c860_org/drivers/video/Makefile linux/drivers/video/Makefile +--- linux_c860_org/drivers/video/Makefile 2002-10-04 21:01:43.000000000 +0900 ++++ linux/drivers/video/Makefile 2004-06-10 21:09:10.000000000 +0900 +@@ -41,6 +41,10 @@ + obj-$(CONFIG_PPC) += macmodes.o + endif + ++obj-$(CONFIG_UNICON_GB) += encode-gb.o ++obj-$(CONFIG_UNICON_BIG5) += encode-big5.o ++obj-$(CONFIG_UNICON_SJIS) += encode-sjis.o ++obj-$(CONFIG_UNICON_EUCJP) += encode-eucjp.o + obj-$(CONFIG_FB_ACORN) += acornfb.o + obj-$(CONFIG_FB_AMIGA) += amifb.o + obj-$(CONFIG_FB_PM2) += pm2fb.o fbgen.o +@@ -91,7 +95,7 @@ + obj-$(CONFIG_FB_COTULLA) += cotulla_fb.o discovery_frontlight.o + obj-$(CONFIG_FB_POODLE) += cotulla_fb.o poodle_frontlight.o + obj-$(CONFIG_FB_CORGI) += w100fb.o fbgen.o corgi_backlight.o +- ++obj-$(CONFIG_FB_TOSA) += tc6393fb.o fbgen.o tosa_backlight.o + + subdir-$(CONFIG_FB_MATROX) += matrox + ifeq ($(CONFIG_FB_MATROX),y) +diff -Nur linux_c860_org/drivers/video/encode-eucjp.c linux/drivers/video/encode-eucjp.c +--- linux_c860_org/drivers/video/encode-eucjp.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/encode-eucjp.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,67 @@ ++/* ++ * linux/video/encode_eucjp.c ++ * ++ * Copyright (C) 2000 Kazuhide Takahashi ++ * HOLON Inc. ++ * Copyright (C) 1999 Christopher Li, Jim Chen ++ * GNU/Linux Research Center ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * ++ */ ++ ++ ++#include <linux/module.h> ++#include <linux/fb_doublebyte.h> ++#include "font_jis16.h" ++#define min1 0xa1 ++#define max1 0xfe ++ ++ ++int is_left(int c) ++{ ++ return ( c >= min1 && c<=max1); ++} ++int is_right(int c) ++{ ++ return ( c >= min1 && c<=max1); ++} ++int index_euc (int left, int right) ++{ ++ if ( left == 0x8E ) ++ left = 0; ++ else ++ left &= 0x7F; ++ right &= 0x7F; ++ ++ if (left > 0x29) ++ return ((right - 0x40 + (left - 0x25) * 96) << 5); ++ else ++ return ((right - 0x20 + (left - 0x20) * 96) << 5); ++} ++struct double_byte db_gb = ++{ ++ 0, ++ "EUCJP", ++ is_left, ++ is_right, ++ index_euc, ++ 16,16, ++ max_jis16, ++ font_jis16 ++}; ++ ++int init_module(void) ++{ ++ if (doublebyte_default) return 1; ++ doublebyte_default = &db_gb; ++ return 0; ++} ++ ++void cleanup_module(void) ++{ ++ doublebyte_default = (void*) 0; ++} +diff -Nur linux_c860_org/drivers/video/encode-gb.c linux/drivers/video/encode-gb.c +--- linux_c860_org/drivers/video/encode-gb.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/encode-gb.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,50 @@ ++/* ++ * linux/video/encode_gb.c ++ * ++ * Copyright (C) 1999 Christopher Li, Jim Chen ++ * GNU/Linux Research Center ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * ++ */ ++ ++ ++#include <linux/module.h> ++#include <linux/fb_doublebyte.h> ++#include "font_gb16.h" ++#define min1 0xa1 ++#define max1 0xfe ++int index_gb(int left, int right) ++{ ++ return ((left-min1)*94+right-min1) << 5; ++} ++int is_hz(int c) ++{ ++ return ( c >= min1 && c<=max1); ++} ++struct double_byte db_gb = ++{ ++ 0, ++ "GB", ++ is_hz, ++ is_hz, ++ index_gb, ++ 16,16, ++ max_gb16, ++ font_gb16 ++}; ++ ++int init_module(void) ++{ ++ if (doublebyte_default) return 1; ++ doublebyte_default = &db_gb; ++ return 0; ++} ++ ++void cleanup_module(void) ++{ ++ doublebyte_default = (void*) 0; ++} +diff -Nur linux_c860_org/drivers/video/encode-sjis.c linux/drivers/video/encode-sjis.c +--- linux_c860_org/drivers/video/encode-sjis.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/encode-sjis.c 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,84 @@ ++/* ++ * linux/video/encode_sjis.c ++ * ++ * Copyright (C) 2000 Kazuhide Takahashi ++ * HOLON Inc. ++ * Copyright (C) 1999 Christopher Li, Jim Chen ++ * GNU/Linux Research Center ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * ++ */ ++ ++ ++#include <linux/module.h> ++#include <linux/fb_doublebyte.h> ++#include "font_jis16.h" ++#define min1 0x81 ++#define max1 0xfc ++ ++ ++int is_left(int c) ++{ ++ return ( (c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc) ); ++} ++int is_right(int c) ++{ ++ return ( (c >= 0x40 && c <= 0x7e) || (c >= 0x80 && c <= 0xfc) ); ++} ++int index_sjis (int left, int right) ++{ ++ int ch1, ch2; ++ ++ if ( !is_left(left) || !is_right(right) ) return -512; ++ ++ ch1 = left; ++ ch2 = right; ++ ++ if ( ch1 <= 0x9f ) ++ ch1 -= 0x71; ++ else ++ ch1 -= 0xb1; ++ ch1 *= 2; ++ ++ch1; ++ ++ if ( ch2 >= 0x7f ) ++ --ch2; ++ if ( ch2 >= 0x9e ) { ++ ch2 -= 0x7d; ++ ++ch1; ++ } else { ++ ch2 -= 0x1f; ++ } ++ ++ if (ch1 > 0x29) ++ return ((ch2 - 0x40 + (ch1 - 0x25) * 96) << 5); ++ else ++ return ((ch2 - 0x20 + (ch1 - 0x20) * 96) << 5); ++} ++struct double_byte db_gb = ++{ ++ 0, ++ "SJIS", ++ is_left, ++ is_right, ++ index_sjis, ++ 16,16, ++ max_jis16, ++ font_jis16 ++}; ++ ++int init_module(void) ++{ ++ if (doublebyte_default) return 1; ++ doublebyte_default = &db_gb; ++ return 0; ++} ++ ++void cleanup_module(void) ++{ ++ doublebyte_default = (void*) 0; ++} +diff -Nur linux_c860_org/drivers/video/fbcon-cfb16.c linux/drivers/video/fbcon-cfb16.c +--- linux_c860_org/drivers/video/fbcon-cfb16.c 2003-01-14 14:43:43.000000000 +0900 ++++ linux/drivers/video/fbcon-cfb16.c 2004-06-10 21:09:10.000000000 +0900 +@@ -13,6 +13,7 @@ + * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 + * 31-Oct-2002 SHARP + * added support for rotation logo screen on SHARP SL-C700 ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/module.h> +@@ -217,9 +218,11 @@ + + width *= fontwidth(p)/4; + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#if 0 /* c700 bug fix 0 */ + if (width * 8 == bytes) + rectfill(dest, 1, lines * width * 4, bgx, bytes); + else ++#endif + rectfill(dest, lines, width * 4, bgx, bytes); + #else + if (width * 8 == bytes) +@@ -240,10 +243,17 @@ + u8 *dest, *cdat, bits; + int bytes = p->next_line, rows; + u32 eorx, fgx, bgx; ++#ifdef CONFIG_UNICON ++ u8 *temp; ++#endif + + #if defined(CONFIG_FBCON_ROTATE_R) + dest = p->screen_base + ++#ifdef CONFIG_UNICON ++ yy * fontwidth(p) * bytes + (p->var.xres - (xx+1) * fontheight(p) - 1) * 2; ++#else + yy * fontwidth(p) * bytes + (p->var.xres - xx * fontheight(p) - 1) * 2; ++#endif + #elif defined(CONFIG_FBCON_ROTATE_L) + dest = p->screen_base + + (p->var.yres - yy * fontwidth(p) - 1) * bytes + xx * fontheight(p) * 2; +@@ -262,6 +272,32 @@ + case 8: + cdat = p->fontdata + (c & p->charmask) * fontheight(p); + #if defined(CONFIG_FBCON_ROTATE_R) ++#ifdef CONFIG_UNICON ++ rows = fontheight(p); ++ temp = dest+rows*2; ++ for (; rows--; dest += 2,temp -= 2) { ++ bits = *cdat++; ++ fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx, ++ temp); ++ fb_writew((tab_cfb16[bits >> 6 & 1] & eorx) ^ bgx, ++ temp+1*bytes); ++ fb_writew((tab_cfb16[bits >> 5 & 1] & eorx) ^ bgx, ++ temp+2*bytes); ++ fb_writew((tab_cfb16[bits >> 4 & 1] & eorx) ^ bgx, ++ temp+3*bytes); ++ if (fontwidth(p) == 8) { ++ fb_writew((tab_cfb16[bits >> 3 & 1] & eorx) ^ bgx, ++ temp+4*bytes); ++ fb_writew((tab_cfb16[bits >> 2 & 1] & eorx) ^ bgx, ++ temp+5*bytes); ++ fb_writew((tab_cfb16[bits >> 1 & 1] & eorx) ^ bgx, ++ temp+6*bytes); ++ fb_writew((tab_cfb16[bits & 1] & eorx) ^ bgx, ++ temp+7*bytes); ++ } ++ } ++ dest = temp; ++#else + for (rows = fontheight(p); rows--; dest += 2) { + bits = *cdat++; + fb_writew((tab_cfb16[bits >> 7 & 1] & eorx) ^ bgx, +@@ -283,6 +319,7 @@ + dest+7*bytes); + } + } ++#endif + #elif defined(CONFIG_FBCON_ROTATE_L) + for (rows = fontheight(p); rows--; dest += 2) { + bits = *cdat++; +@@ -734,6 +771,15 @@ + rectfill(p->screen_base + + (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2, + right_start, bottom_width, bgx, bytes); ++#else ++#ifdef CONFIG_FB_TOSA /* re_check */ ++ if (!bottom_only && (right_width = p->var.yres - right_start)) ++ rectfill(p->screen_base + right_start * bytes + (p->var.xres - 1) * 2, ++ right_width, p->var.xres_virtual, bgx, bytes); ++ if ((bottom_width = p->var.xres - bottom_start)) ++ rectfill(p->screen_base + ++ (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2, ++ right_start, bottom_width, bgx, bytes); + #else // general R + if (!bottom_only && (right_width = p->var.yres - right_start)) + rectfill(p->screen_base + right_start * bytes + (p->var.xres - 1) * 2, +@@ -743,6 +789,7 @@ + (p->var.xres - (p->var.xoffset + bottom_start) - 1) * 2, + right_start, bottom_width, bgx, bytes); + #endif ++#endif + #elif defined(CONFIG_FBCON_ROTATE_L) + #ifdef CONFIG_FB_CORGI + if (!bottom_only && (right_width = p->var.yres - right_start)) +@@ -752,6 +799,15 @@ + rectfill(p->screen_base + (p->var.yres - 1) * bytes + + (p->var.xoffset + bottom_start) * 2, + right_start, bottom_width, bgx, bytes); ++#else ++#ifdef CONFIG_FB_TOSA /* re_check */ ++ if (!bottom_only && (right_width = p->var.yres - right_start)) ++ rectfill(p->screen_base + (p->var.yres - right_start - 1) * bytes, ++ right_width, p->var.xres_virtual, bgx, bytes); ++ if ((bottom_width = p->var.xres - bottom_start)) ++ rectfill(p->screen_base + (p->var.yres - 1) * bytes + ++ (p->var.xoffset + bottom_start) * 2, ++ right_start, bottom_width, bgx, bytes); + #else // general L + if (!bottom_only && (right_width = p->var.yres - right_start)) + rectfill(p->screen_base + (p->var.yres - right_start - 1) * bytes, +@@ -761,6 +817,7 @@ + (p->var.xoffset + bottom_start) * 2, + right_start, bottom_width, bgx, bytes); + #endif ++#endif + #else + if (!bottom_only && (right_width = p->var.xres-right_start)) + rectfill(p->screen_base+right_start*2, right_width, +diff -Nur linux_c860_org/drivers/video/fbcon.c linux/drivers/video/fbcon.c +--- linux_c860_org/drivers/video/fbcon.c 2003-01-14 14:44:30.000000000 +0900 ++++ linux/drivers/video/fbcon.c 2004-06-10 21:09:10.000000000 +0900 +@@ -66,6 +66,7 @@ + * added support for rotation logo screen on SHARP SL-C700 + * 08-Nov-2002 SHARP + * SHARP logo screen modification ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #undef FBCONDEBUG +@@ -78,6 +79,11 @@ + #include <linux/kernel.h> + #include <linux/delay.h> /* MSch: for IRQ probe */ + #include <linux/tty.h> ++ ++#ifdef CONFIG_UNICON ++#include <linux/fb_doublebyte.h> ++#endif ++ + #include <linux/console.h> + #include <linux/string.h> + #include <linux/kd.h> +@@ -668,7 +674,12 @@ + if (con == fg_console && p->type != FB_TYPE_TEXT) { + if (fbcon_softback_size) { + if (!softback_buf) { ++#ifndef CONFIG_UNICON + softback_buf = (unsigned long)kmalloc(fbcon_softback_size, GFP_KERNEL); ++#else ++ softback_buf = (unsigned long)kmalloc(fbcon_softback_size*2, GFP_KERNEL); ++#endif ++ + if (!softback_buf) { + fbcon_softback_size = 0; + softback_top = 0; +@@ -816,11 +827,18 @@ + (p->var.yres_virtual % fontwidth(p) < p->var.yres % fontwidth(p))) + p->vrows--; + #else ++#ifdef CONFIG_FB_TOSA /* re_check */ ++ p->vrows = p->var.yres_virtual / fontwidth(p); ++ if ((p->var.yres % fontwidth(p)) && ++ (p->var.yres_virtual % fontwidth(p) < p->var.yres % fontwidth(p))) ++ p->vrows--; ++#else + p->vrows = p->var.xres_virtual / fontheight(p); + if ((p->var.xres % fontheight(p)) && + (p->var.xres_virtual % fontheight(p) < p->var.xres % fontheight(p))) + p->vrows--; + #endif ++#endif + #else + p->vrows = p->var.yres_virtual/fontheight(p); + if ((p->var.yres % fontheight(p)) && +@@ -916,6 +934,27 @@ + * restriction is simplicity & efficiency at the moment. + */ + ++#ifdef CONFIG_UNICON ++static inline unsigned short * hibyte_pos(struct vc_data * conp,unsigned short* p) ++{ ++ unsigned long pos=(long)p; ++ ++ if (pos >= conp->vc_origin && pos < conp->vc_scr_end) { ++ /* pos in the vc buffer - Chrisl 99.11.12*/ ++ return (unsigned short*)(pos+conp->vc_screenbuf_size); ++ } else if (conp->vc_num == fg_console){ ++ /*&& softback_lines,because the scroll will first change ++ softback_lines, then call this function, so it is ignored here ++ -JimChen 99.11.12*/ ++ return (unsigned short*)(pos+fbcon_softback_size); ++ } else { ++ /* Should not happen */ ++ printk("Warnning, changing not active console\n"); ++ return p; ++ } ++} ++#endif ++ + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + static __inline__ int real_x(struct display *p, int xpos) + { +@@ -993,6 +1032,60 @@ + vbl_cursor_cnt = CURSOR_DRAW_DELAY; + } + ++#ifdef CONFIG_UNICON ++struct double_byte * doublebyte_default = NULL; ++EXPORT_SYMBOL(doublebyte_default); ++/* ypos is absolute y(relative to video buffer), not y in screen coordinate, ++ and the validation is assured by the caller */ ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++void fbcon_putc_tl(struct vc_data *conp, int c, int xpos, int ypos) ++#else ++void fbcon_putc_tl(struct vc_data *conp, int c, int ypos, int xpos) ++#endif ++{ ++ int unit = conp->vc_num; ++ struct display *p = &fb_display[unit]; ++ int extendedchar; ++ u_char * fontdata_save; ++ ++ if (!doublebyte_default){ ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ p->dispsw->putc(conp, p, c&0xffff, xpos, ypos); ++#else ++ p->dispsw->putc(conp, p, c&0xffff, ypos, xpos); ++#endif ++ return; ++ } ++ extendedchar = c & (DB_VALIDATE<<16); ++ fontdata_save = p -> fontdata; ++ if (extendedchar) { ++ int index; ++ if ( c & (DB_RIGHT_MASK << 16)) {// right half ++ index = doublebyte_default->font_index((c>>16)&0xff, (c&0xff)) + 16; ++ } else { ++ index = doublebyte_default->font_index((c&0xff),(c>>16)&0xff); ++ } ++ //printk("<6>%d %x",(unsigned long)p->fontdata-(unsigned long) font_gb16,c); ++ if (index >=0 && index < doublebyte_default->charcount) { ++ p->fontdata = doublebyte_default->font_data +index; ++ c = (c & 0xff00); ++ }else c = c & 0xffff; ++ } else { ++ c = c & 0xffff; ++ } ++ ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ p->dispsw->putc(conp, p, c, xpos, ypos); ++#else ++ p->dispsw->putc(conp, p, c, ypos, xpos); ++#endif ++ ++ if (extendedchar) { ++ p->fontdata = fontdata_save; ++ } ++} ++EXPORT_SYMBOL(fbcon_putc_tl); ++#endif + + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + static void fbcon_putc(struct vc_data *conp, int c, int xpos, int ypos) +@@ -1019,16 +1112,39 @@ + redraw_cursor = 1; + } + ++#ifdef CONFIG_UNICON ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ fbcon_putc_tl(conp, c, real_x(p, xpos), ypos); ++#else ++ fbcon_putc_tl(conp, c, real_y(p, ypos), xpos); ++#endif ++#else + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + p->dispsw->putc(conp, p, c, real_x(p, xpos), ypos); + #else + p->dispsw->putc(conp, p, c, real_y(p, ypos), xpos); + #endif ++#endif + + if (redraw_cursor) + vbl_cursor_cnt = CURSOR_DRAW_DELAY; + } + ++#ifdef CONFIG_UNICON ++//ypos is absolute pos. ++static void fbcon_putcs_tl(struct vc_data *conp, const unsigned short *s, int count, ++ int ypos, int xpos) ++{ ++ const unsigned short *str=s; ++ ++ while (count--) { ++ fbcon_putc_tl(conp, (scr_readw(hibyte_pos(conp,(unsigned short *)str))<<16)|scr_readw(str), ++ ypos, xpos); ++ str++; ++ xpos++; ++ } ++} ++#endif + + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + static void fbcon_putcs(struct vc_data *conp, const unsigned short *s, int count, int xpos, int ypos) +@@ -1057,11 +1173,19 @@ + cursor_undrawn(); + redraw_cursor = 1; + } ++#ifndef CONFIG_UNICON + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + p->dispsw->putcs(conp, p, s, count, real_x(p, xpos), ypos); + #else + p->dispsw->putcs(conp, p, s, count, real_y(p, ypos), xpos); + #endif ++#else ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ fbcon_putcs_tl(conp,s,count,real_x(p,xpos),ypos); ++#else ++ fbcon_putcs_tl(conp,s,count,real_y(p,ypos),xpos); ++#endif ++#endif + if (redraw_cursor) + vbl_cursor_cnt = CURSOR_DRAW_DELAY; + } +@@ -1362,6 +1486,9 @@ + unsigned short *start; + unsigned short *le; + unsigned short c; ++#ifdef CONFIG_UNICON ++ unsigned short c_ext; ++#endif + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + int y = 0; + #else +@@ -1373,30 +1500,53 @@ + le = advance_row(s, 1); + do { + c = scr_readw(s); ++#ifdef CONFIG_UNICON ++ c_ext = scr_readw(hibyte_pos(conp,s)); ++#endif + if (attr != (c & 0xff00)) { + attr = c & 0xff00; + if (s > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_x(p, line), y); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#endif + y += s - start; + #else +- p->dispsw->putcs(conp, p, start, s - start, +- real_y(p, line), x); ++#ifndef CONFIG_UNICON ++ p->dispsw->putcs(conp, p, start, s - start, ++ real_y(p, line), x); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif + x += s - start; + #endif + start = s; + } + } ++#ifndef CONFIG_UNICON + if (c == scr_readw(d)) { ++#else ++ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) { ++#endif + if (s > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_x(p, line), y); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#endif + y += s - start + 1; + #else +- p->dispsw->putcs(conp, p, start, s - start, +- real_y(p, line), x); ++#ifndef CONFIG_UNICON ++ p->dispsw->putcs(conp, p, start, s - start, ++ real_y(p, line), x); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif + x += s - start + 1; + #endif + start = s + 1; +@@ -1414,9 +1564,17 @@ + } while (s < le); + if (s > start) + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y); + #else ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#endif ++#else ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif + #endif + line++; + if (d == (u16 *)softback_end) +@@ -1441,6 +1599,9 @@ + unsigned short *start = s; + unsigned short *le = advance_row(s, 1); + unsigned short c; ++#ifdef CONFIG_UNICON ++ unsigned short c_ext; ++#endif + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + int y = 0; + #else +@@ -1450,30 +1611,53 @@ + + do { + c = scr_readw(s); ++#ifdef CONFIG_UNICON ++ c_ext = scr_readw(hibyte_pos(conp,s)); ++#endif + if (attr != (c & 0xff00)) { + attr = c & 0xff00; + if (s > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_x(p, line), y); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#endif + y += s - start; + #else ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_y(p, line), x); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif + x += s - start; + #endif + start = s; + } + } ++#ifndef CONFIG_UNICON + if (c == scr_readw(d)) { ++#else ++ if (c == scr_readw(d) && c_ext == scr_readw(hibyte_pos(conp,d))) { ++#endif + if (s > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_x(p, line), y); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#endif + y += s - start + 1; + #else ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, s - start, + real_y(p, line), x); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif + x += s - start + 1; + #endif + start = s + 1; +@@ -1487,17 +1671,28 @@ + } + } + scr_writew(c, d); ++#ifdef CONFIG_UNICON ++ scr_writew(scr_readw(s+(conp->vc_screenbuf_size>>1)),d+(conp->vc_screenbuf_size>>1)); ++#endif + console_conditional_schedule(); + s++; + d++; + } while (s < le); + if (s > start) ++#ifndef CONFIG_UNICON + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + p->dispsw->putcs(conp, p, start, s - start, real_x(p, line), y); + #else + p->dispsw->putcs(conp, p, start, s - start, real_y(p, line), x); + #endif + console_conditional_schedule(); ++#else ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ fbcon_putcs_tl(conp,start,s-start,real_x(p,line),y); ++#else ++ fbcon_putcs_tl(conp,start,s-start,real_y(p,line),x); ++#endif ++#endif + if (offset > 0) + line++; + else { +@@ -1603,10 +1798,18 @@ + attr = c & 0xff00; + if (d > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, d - start, dx, y); ++#else ++ fbcon_putcs_tl(conp,start,d-start,dx,y); ++#endif + y += d - start; + #else +- p->dispsw->putcs(conp, p, start, d - start, dy, x); ++#ifndef CONFIG_UNICON ++ p->dispsw->putcs(conp, p, start, d - start, dy, x); ++#else ++ fbcon_putcs_tl(conp,start,d-start,dy,x); ++#endif + x += d - start; + #endif + start = d; +@@ -1615,10 +1818,18 @@ + if (s >= ls && s < le && c == scr_readw(s)) { + if (d > start) { + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, d - start, dx, y); ++#else ++ fbcon_putcs_tl(conp,start,d-start,dx,y); ++#endif + y += d - start + 1; + #else ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, d - start, dy, x); ++#else ++ fbcon_putcs_tl(conp,start,d-start,dy,x); ++#endif + x += d - start + 1; + #endif + start = d + 1; +@@ -1636,9 +1847,17 @@ + } while (d < le); + if (d > start) + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, d - start, dx, y); + #else ++ fbcon_putcs_tl(conp,start,d-start,dx,y); ++#endif ++#else ++#ifndef CONFIG_UNICON + p->dispsw->putcs(conp, p, start, d - start, dy, x); ++#else ++ fbcon_putcs_tl(conp,start,d-start,dy,x); ++#endif + #endif + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + sx++; +@@ -1660,6 +1879,9 @@ + + while (count) { + scr_memcpyw((u16 *)softback_in, p, conp->vc_size_row); ++#ifdef CONFIG_UNICON ++ scr_memcpyw((u16 *)softback_in+(fbcon_softback_size>>1),p+(conp->vc_screenbuf_size>>1),conp->vc_size_row); ++#endif + count--; + p = advance_row(p, 1); + softback_in += conp->vc_size_row; +@@ -1764,6 +1986,13 @@ + conp->vc_size_row * (b-count)), + conp->vc_video_erase_char, + conp->vc_size_row * count); ++#ifdef CONFIG_UNICON ++ scr_memsetw((unsigned short *)(conp->vc_origin + ++ conp->vc_size_row * (b-count) + ++ conp->vc_screenbuf_size), ++ conp->vc_video_erase_char & 0xff, ++ conp->vc_size_row * count); ++#endif + return 1; + } + #else +@@ -1879,6 +2108,13 @@ + conp->vc_size_row * t), + conp->vc_video_erase_char, + conp->vc_size_row * count); ++#ifdef CONFIG_UNICON ++ scr_memsetw((unsigned short *)(conp->vc_origin + ++ conp->vc_size_row * t + ++ conp->vc_screenbuf_size), ++ conp->vc_video_erase_char & 0xff, ++ conp->vc_size_row * count); ++#endif + return 1; + } + #else +@@ -2566,11 +2802,31 @@ + return p->fb_info->fbops->fb_set_cmap(&palette_cmap, 1, unit, p->fb_info); + } + ++#ifdef CONFIG_UNICON ++/*offset:relative to softback_curr if softback valid in this vc ++The return pos may exists in buffer pointed by conp->vc_origin or softback_top. ++I assume the offset is always >=0 in normal case and I use the -offset-1 to mean to get the pos of the second word ++*/ ++#endif ++ + static u16 *fbcon_screen_pos(struct vc_data *conp, int offset) + { + int line; + unsigned long p; +- ++#ifdef CONFIG_UNICON ++ if (offset < 0) { ++ offset = -offset - 1; ++ if (conp->vc_num != fg_console || !softback_lines) ++ return (u16 *)(conp->vc_origin + offset + conp->vc_screenbuf_size); ++ line = offset / conp->vc_size_row; ++ if (line >= softback_lines) ++ return (u16 *)(conp->vc_origin + offset - softback_lines * conp->vc_size_row + conp->vc_screenbuf_size); ++ p = softback_curr + offset; ++ if (p >= softback_end) ++ p += softback_buf - softback_end; ++ return (u16 *)(p+fbcon_softback_size); ++ } ++#endif + if (conp->vc_num != fg_console || !softback_lines) + return (u16 *)(conp->vc_origin + offset); + line = offset / conp->vc_size_row; +@@ -2582,6 +2838,10 @@ + return (u16 *)p; + } + ++#ifdef CONFIG_UNICON ++// pos is a pointer either pointing into softback or (vc_origin--vc_scr_end), ++// return the pointer to the start of next row ( no matter in vi_origin or softback!) ++#endif + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + static unsigned long fbcon_getxy(struct vc_data *conp, unsigned long pos, int *py, int *px) + #else +@@ -2684,6 +2944,11 @@ + p -= conp->vc_size_row; + q -= conp->vc_size_row; + scr_memcpyw((u16 *)q, (u16 *)p, conp->vc_size_row); ++#ifdef CONFIG_UNICON ++ scr_memcpyw((u16* )(q+conp->vc_screenbuf_size), ++ (u16* )(p+fbcon_softback_size), ++ conp->vc_size_row); ++#endif + } + softback_in = p; + update_region(unit, conp->vc_origin, logo_lines * conp->vc_cols); +diff -Nur linux_c860_org/drivers/video/fbmem.c linux/drivers/video/fbmem.c +--- linux_c860_org/drivers/video/fbmem.c 2003-01-14 14:48:09.000000000 +0900 ++++ linux/drivers/video/fbmem.c 2004-06-10 21:09:10.000000000 +0900 +@@ -16,6 +16,8 @@ + * - Added support for ATI w100 on SHARP SL-C700 + * 11-Sep-2002 SHARP + * - Allocated frame buffer to cache memory on SHARP SL-B500/5600 ++ * 24-Jul-2003 Lineo Solutions, Inc. ++ * - Added support for TOSHIBA TC6393XB on SHARP SL-6 + */ + + #include <linux/config.h> +@@ -145,6 +147,8 @@ + extern int cotulla_fb_init(void); + extern int w100fb_init(void); + extern int w100fb_setup(char*); ++extern int tc6393fb_init(void); ++extern int tc6393fb_setup(char*); + + static struct { + const char *name; +@@ -322,6 +326,9 @@ + #ifdef CONFIG_FB_CORGI + { "w100fb", w100fb_init, w100fb_setup }, + #endif ++#ifdef CONFIG_FB_TOSA ++ { "tc6393fb", tc6393fb_init, NULL }, ++#endif + + /* + * Generic drivers that don't use resource management (yet) +diff -Nur linux_c860_org/drivers/video/font_gb16.h linux/drivers/video/font_gb16.h +--- linux_c860_org/drivers/video/font_gb16.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/font_gb16.h 2004-06-10 21:09:10.000000000 +0900 +@@ -0,0 +1,8180 @@ ++#define max_gb16 261696 ++unsigned char font_gb16[max_gb16] = { ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x2,0x2,0x4,0x4,0x9,0x9,0x12,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x4,0x4,0x8,0x8,0x1f,0x20,0x40,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0xc0,0x40,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x63,0x63,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0xc,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x60,0x60,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x88,0x10,0x98,0x98,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x98,0x88,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x4,0x0, ++0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x0,0x0, ++0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x8,0x4, ++0x20,0x90,0x48,0x24,0x12,0x9,0x4,0x2,0x4,0x9,0x12,0x24,0x48,0x90,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x4,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x5,0x7,0x0,0x0,0x0,0xc0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x4,0x7,0x0,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x84,0x88,0x88,0x90,0x90,0x90,0x90,0x90,0x90,0x88,0x88,0x84,0xfe,0x0, ++0x0,0xfe,0x42,0x22,0x22,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfc,0xf8,0xf0,0xf0,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf8,0xfc,0xfe,0x0, ++0x0,0xfe,0x7e,0x3e,0x1e,0x1e,0xe,0xe,0xe,0xe,0x1e,0x1e,0x3e,0x7e,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x1,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1f,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x0, ++0x0,0x40,0x40,0x20,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0, ++0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0,0x0, ++0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x78,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3c,0x0, ++0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0, ++0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x7f,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0, ++0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x41,0xa2,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0, ++0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x4,0x9,0x9,0x9,0x9,0x9,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0, ++0x0,0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x7,0x18,0x20,0x20,0x40,0x43,0x43,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0x0,0x80,0x60,0x10,0x10,0x8,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0,0x0, ++0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x6,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1,0x1,0x7,0x9,0x9,0xa,0xa,0x7,0x2,0x2,0x4,0x24,0x18,0x60,0x90,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x18,0x20,0x41,0x41,0x42,0x22,0x1c,0x0,0x7f,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x70,0x88,0x4,0x4,0x4,0x8,0x30,0x0,0xfc,0x0,0xfc,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x38,0x47,0x0,0x38,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0xf0,0x4,0x8,0xf0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x38,0x40,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x2,0x4,0x38,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3c,0x42,0x41,0x81,0x81,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x80,0x0,0x0,0x0,0x0,0x80,0x7e,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x7f,0x4,0x4,0x8,0x10,0x10,0x20,0x10,0x20,0x20,0x40,0x40,0xfc,0x80,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x4,0x5,0x6,0x1c,0x64,0x84,0x64,0x1c,0x6,0x5,0x4,0x4,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x0,0x0, ++0x0,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x40,0x40,0x40,0xc0,0x70,0x4c,0x42,0x4c,0x70,0xc0,0x40,0x40,0x40,0x0,0x0, ++0x0,0x0,0x1,0x6,0x18,0x60,0x80,0x60,0x98,0x66,0x19,0x6,0x1,0x0,0x0,0x0,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x98,0x60,0x18,0x0, ++0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x33,0xc,0x30,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x2,0xc,0x32,0xcc,0x30,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3c,0x42,0x81,0x81,0x81,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x84,0x2,0x2,0x2,0x84,0x78,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0, ++0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x3,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0, ++0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x30,0x48,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x53,0x24,0x8,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x8,0x4,0x3,0x0,0x0,0xf4,0xc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x8,0xf0,0x0, ++0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x1,0x1,0x21,0x21,0x31,0x2f,0x1,0x0,0xe8,0x18,0x8,0x8,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0, ++0x0,0x40,0x27,0x18,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x18,0x27,0x40,0x0,0x0,0x2,0xe4,0x18,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x18,0xe4,0x2,0x0, ++0x0,0x0,0xf,0x10,0x20,0x40,0x40,0x41,0x41,0x42,0x42,0x24,0x14,0xf,0x10,0x20,0x10,0x20,0xe8,0x58,0x48,0x80,0x80,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0, ++0x1,0x2,0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x3a,0x46,0x42,0x45,0x38,0x0,0xc0,0x20,0x20,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xf8,0x0, ++0x0,0x30,0x48,0x48,0x48,0x49,0x32,0x4,0x8,0x11,0x22,0x42,0x82,0x2,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x8c,0x52,0x52,0x52,0x52,0x8c,0x0, ++0x7,0x8,0x8,0x4,0x2,0x3,0x4,0x8,0x8,0x5,0x2,0x1,0x4,0x8,0x8,0x7,0x80,0x40,0xc0,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x80, ++0x60,0x21,0x31,0x31,0x29,0x29,0x29,0x29,0x25,0x25,0x25,0x25,0x23,0x23,0xa1,0x41,0x80,0x40,0x0,0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x18,0x0,0x7e,0x0, ++0x1,0x1,0x2,0x2,0x2,0x4,0xfc,0x40,0x30,0x8,0x8,0x11,0x16,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x7e,0x4,0x18,0x20,0x20,0x90,0x50,0x30,0x8,0x0, ++0x1,0x1,0x3,0x3,0x3,0x7,0xff,0x3f,0x1f,0xf,0xf,0x1f,0x1e,0x18,0x20,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0xfe,0xf8,0xf0,0xe0,0xe0,0xf0,0xf0,0x30,0x8,0x0, ++0x0,0x7,0x18,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0x8,0x8,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0, ++0x0,0x7,0x1f,0x3f,0x3f,0x7f,0x7f,0x7f,0x7f,0x7f,0x3f,0x3f,0x1f,0x7,0x0,0x0,0x0,0xc0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfc,0xfc,0xfc,0xf8,0xf8,0xf0,0xc0,0x0,0x0, ++0x0,0x7,0x18,0x27,0x28,0x50,0x50,0x50,0x50,0x50,0x28,0x27,0x18,0x7,0x0,0x0,0x0,0xc0,0x30,0xc8,0x28,0x14,0x14,0x14,0x14,0x14,0x28,0xc8,0x30,0xc0,0x0,0x0, ++0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0, ++0x1,0x3,0x7,0xf,0x1f,0x3f,0x7f,0xff,0x7f,0x3f,0x1f,0xf,0x7,0x3,0x1,0x0,0x0,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x0,0x0, ++0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x0,0x0, ++0x0,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x0,0x0,0x0,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0x0,0x0, ++0x0,0x1,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0xff,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0xfe,0x0,0x0, ++0x0,0x1,0x3,0x7,0x7,0xf,0xf,0x1f,0x1f,0x3f,0x3f,0x7f,0x7f,0xff,0x0,0x0,0x0,0x0,0x80,0xc0,0xc0,0xe0,0xe0,0xf0,0xf0,0xf8,0xf8,0xfc,0xfc,0xfe,0x0,0x0, ++0x0,0x43,0x23,0x10,0x8,0x4,0x2,0x61,0x62,0x4,0x8,0x10,0x23,0x43,0x80,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0xc,0x8c,0x40,0x20,0x10,0x8,0x4,0x2,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x38,0xfe,0x38,0x20,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x8,0x38,0xff,0x38,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x3,0x3,0x7,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x3,0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x80,0x80,0x0,0x0, ++0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0xfe,0xfe,0xfe,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x6,0xa,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0, ++0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x90,0x0, ++0x0,0xf,0x10,0x10,0x0,0x0,0x1,0x6,0x1,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0, ++0x0,0x3,0x5,0x5,0x5,0x9,0x9,0x9,0x11,0x11,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x8,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0, ++0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0, ++0x0,0x1f,0x10,0x10,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0xc0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0, ++0x0,0xf,0x10,0x10,0x10,0x10,0x9,0x6,0x9,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x10,0x0, ++0x0,0xf,0x10,0x10,0x10,0x10,0x10,0x11,0xe,0x0,0x0,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x10,0x0, ++0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc8,0x0, ++0x0,0x20,0x61,0xa2,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x90,0x0, ++0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x20,0x21,0x22,0x24,0x24,0x24,0x24,0x27,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0x20,0xe4,0x0, ++0x0,0x23,0x64,0xa4,0x20,0x20,0x20,0x21,0x20,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0, ++0x0,0x20,0x61,0xa1,0x21,0x22,0x22,0x22,0x24,0x24,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xf0,0x40,0x40,0x40,0x48,0x0, ++0x0,0x27,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x24,0x24,0x23,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0, ++0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0xc4,0x0, ++0x0,0x27,0x64,0xa4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0xf0,0x10,0x10,0x20,0x40,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x0, ++0x0,0x23,0x64,0xa4,0x24,0x24,0x22,0x21,0x22,0x24,0x24,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x40,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0xc4,0x0, ++0x0,0x23,0x64,0xa4,0x24,0x24,0x24,0x24,0x23,0x20,0x20,0x24,0x24,0x24,0x23,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0xc4,0x0, ++0x0,0x38,0x45,0x45,0x5,0x5,0x5,0x19,0x21,0x41,0x41,0x41,0x45,0x45,0x7c,0x0,0x0,0xe0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xe4,0x0, ++0x0,0x40,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x0, ++0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x80,0x80,0x83,0x84,0x88,0x88,0x8f,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x2,0x2,0x42,0x42,0xc2,0x4,0x0, ++0x0,0x40,0x87,0x88,0x88,0x80,0x80,0x83,0x80,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x82,0x2,0x82,0x42,0x42,0x42,0x42,0x82,0x4,0x0, ++0x0,0x41,0x82,0x82,0x82,0x84,0x84,0x88,0x88,0x8f,0x80,0x80,0x80,0x80,0x40,0x0,0x0,0x84,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xe2,0x82,0x82,0x82,0x82,0x4,0x0, ++0x0,0x40,0x8f,0x88,0x88,0x88,0x8b,0x8c,0x88,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0xc2,0x2,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0, ++0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x8b,0x8c,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x2,0x2,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0, ++0x0,0x40,0x8f,0x88,0x88,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x40,0x0,0x0,0x4,0xe2,0x22,0x22,0x42,0x82,0x82,0x82,0x2,0x2,0x2,0x2,0x2,0x4,0x0, ++0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0x82,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0, ++0x0,0x40,0x87,0x88,0x88,0x88,0x88,0x88,0x87,0x80,0x80,0x88,0x88,0x87,0x40,0x0,0x0,0x4,0x82,0x42,0x42,0x42,0x42,0xc2,0x42,0x42,0x42,0x42,0x42,0x82,0x4,0x0, ++0x0,0x40,0x88,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x88,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x40,0x0,0x0,0x4,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x4,0x0, ++0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x91,0x92,0x92,0x92,0x93,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x22,0xc2,0x2,0x2,0x12,0x12,0xf2,0x4,0x0, ++0x0,0x40,0x91,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x22,0xc2,0x22,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x90,0x90,0x90,0x90,0x91,0x91,0x92,0x92,0x93,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0x62,0xa2,0xa2,0xa2,0x22,0x22,0x22,0x22,0xfa,0x22,0x22,0x22,0x4,0x0, ++0x0,0x40,0x93,0x92,0x92,0x92,0x92,0x93,0x92,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xf2,0x2,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x93,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x2,0x2,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x93,0x92,0x92,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x40,0x0,0x0,0x4,0xf2,0x12,0x12,0x22,0x42,0x42,0x42,0x82,0x82,0x82,0x82,0x82,0x4,0x0, ++0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0xe2,0x12,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x91,0x92,0x92,0x92,0x92,0x92,0x91,0x90,0x90,0x92,0x92,0x91,0x40,0x0,0x0,0x4,0xe2,0x12,0x12,0x12,0x12,0x32,0xd2,0x12,0x12,0x12,0x12,0xe2,0x4,0x0, ++0x0,0x40,0x9c,0xa2,0xa2,0x82,0x82,0x84,0x88,0x90,0xa0,0xa2,0xa2,0xbe,0x40,0x0,0x0,0x4,0x72,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x72,0x4,0x0, ++0x7,0x18,0x20,0x41,0x41,0x81,0x81,0x81,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x81,0x82,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x2,0x2,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x83,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0xc2,0x2,0xc2,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x43,0x45,0x85,0x85,0x89,0x89,0x8f,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0xc2,0x4,0x4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x4,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x2,0x2,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x80,0x80,0x80,0x81,0x81,0x41,0x41,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x82,0x82,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x83,0x84,0x84,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0x82,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x47,0x44,0x84,0x84,0x87,0x80,0x80,0x44,0x47,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xc4,0x44,0x42,0x42,0xc2,0x42,0x42,0x44,0xc4,0x8,0x30,0xc0,0x0, ++0x7,0x18,0x20,0x4b,0x4a,0x8a,0x8a,0x8a,0x8a,0x8a,0x4a,0x4b,0x20,0x18,0x7,0x0,0xc0,0x30,0x8,0xe4,0x24,0x22,0x22,0x22,0x22,0x22,0x24,0xe4,0x8,0x30,0xc0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x20,0x40,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x80,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0, ++0x0,0x20,0x40,0x80,0x9f,0x80,0x80,0x80,0x80,0x80,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x22,0xf2,0x2,0x2,0x2,0x2,0x12,0xfa,0x2,0x2,0x4,0x8,0x0, ++0x0,0x20,0x40,0x9f,0x80,0x80,0x80,0x8f,0x80,0x80,0x80,0xbf,0x80,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x42,0xe2,0x2,0x2,0x12,0xfa,0x2,0x4,0x8,0x0, ++0x0,0x20,0x40,0x80,0xbf,0xa4,0xa4,0xa4,0xa4,0xa4,0xbf,0x80,0x80,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0xfa,0x4a,0x4a,0x4a,0x4a,0x4a,0xfa,0x2,0x2,0x4,0x8,0x0, ++0x0,0x20,0x40,0x9f,0x82,0x82,0x82,0x9f,0x84,0x84,0x84,0x84,0xbf,0x40,0x20,0x0,0x0,0x8,0x24,0xf2,0x2,0x2,0x22,0xf2,0x22,0x22,0x22,0x22,0xfa,0x4,0x8,0x0, ++0x0,0x20,0x40,0x82,0x81,0x80,0xbf,0x80,0x80,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x42,0x22,0x12,0x12,0x4,0x8,0x0, ++0x0,0x20,0x42,0x82,0x82,0x82,0x82,0x83,0xbe,0x82,0x82,0x82,0x82,0x41,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0x7a,0x82,0x2,0x2,0x2,0x22,0x22,0xe4,0x8,0x0, ++0x0,0x20,0x40,0x84,0x84,0x84,0x84,0x84,0x88,0x88,0x90,0xa0,0x80,0x40,0x20,0x0,0x0,0x8,0x84,0x82,0x82,0x82,0x82,0x82,0x42,0x22,0x1a,0x12,0x2,0x4,0x8,0x0, ++0x0,0x20,0x42,0x82,0x82,0x9f,0x82,0x82,0x82,0x84,0x84,0x88,0x90,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x42,0xe2,0x42,0x42,0x42,0x42,0x4a,0x4a,0x3a,0x4,0x8,0x0, ++0x0,0x20,0x41,0x81,0x81,0x81,0xbf,0x81,0x81,0x81,0x81,0x81,0x81,0x40,0x20,0x0,0x0,0x8,0x4,0x2,0x2,0x12,0xfa,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x8,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0, ++0x0,0xe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0, ++0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3b,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xb8,0x0, ++0x0,0x77,0x22,0x22,0x22,0x21,0x21,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x1c,0x8,0x8,0x8,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa0,0xa0,0x40,0x40,0x0, ++0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x8,0x4,0x4,0x4,0x2,0x2,0x1,0x1,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0, ++0x0,0x71,0x20,0x20,0x20,0x11,0x11,0x11,0x11,0xa,0xa,0xa,0xa,0x4,0x4,0x0,0x0,0xdc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0, ++0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x7e,0x0, ++0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x22,0x14,0x14,0x14,0x14,0x8,0x8,0x0,0x0,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xfe,0x0, ++0x0,0xee,0x44,0x42,0x42,0x41,0x40,0x40,0x40,0x40,0x41,0x41,0x42,0x44,0xee,0x0,0x0,0xe,0x4,0x8,0x8,0x10,0xa0,0x40,0xa0,0xa0,0x10,0x10,0x8,0x4,0xe,0x0, ++0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x70,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x1c,0x0, ++0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xee,0x44,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xee,0x0, ++0x0,0xe0,0x40,0x20,0x11,0xa,0xa,0x4,0xa,0xa,0x11,0x11,0x20,0x40,0xe0,0x0,0x0,0xfe,0x54,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x94,0x54,0xfe,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x4,0x3f,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x0,0x0, ++0x0,0x38,0x10,0x8,0x4,0x2,0x2,0x1,0x1,0xf,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x38,0x10,0x20,0x40,0x80,0x80,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x80,0x0, ++0x0,0x18,0x24,0x24,0x24,0x24,0x24,0x19,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x60,0x90,0x90,0x90,0x90,0x90,0x60, ++0x0,0xf,0x10,0x10,0x10,0x10,0xb,0x4,0x1c,0x22,0x41,0x40,0x40,0x21,0x1e,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x70,0x20,0xa0,0x44,0xa4,0x18,0x0, ++0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x10,0x20,0x40,0x40,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xc, ++0x60,0x10,0x8,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x1,0x21,0x11,0x9,0x5,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x0,0x80,0x40,0x20,0x10,0x0,0x0,0x0, ++0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x1,0x3,0x5,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0, ++0x0,0xf,0x10,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0x40,0x80,0x40,0x20,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x3f,0x0,0x0,0x3,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xf0,0x80,0x80,0xe0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x0,0x30,0x30,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3,0xc,0x30,0x40,0x30,0xc,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xc,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x60,0x18,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x18,0x4,0x18,0x60,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x18,0x24,0x42,0x42,0x4,0x8,0x8,0x8,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x18,0x20,0x46,0x49,0x48,0x48,0x48,0x49,0x46,0x20,0x18,0x7,0x0,0x0,0x0,0xc0,0x20,0x10,0x90,0x88,0x88,0x88,0x88,0x90,0x90,0x64,0x8,0xf0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x4,0x4,0xfc,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x1f,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x71,0x21,0x22,0x24,0x38,0x24,0x22,0x21,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0xc0,0x60,0x50,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0,0x6,0xc,0x14,0x24,0x44,0x84,0x4,0x4,0x4,0x4,0xe,0x0,0x0,0x0,0x0, ++0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0x8,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x11,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x90,0x60,0xc0,0x30,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x80,0x70,0x0,0x0,0x0,0x0, ++0x0,0xf,0x10,0x20,0x20,0x10,0xf,0x0,0x0,0x20,0x30,0x2f,0x0,0x0,0x0,0x0,0x0,0xe8,0x18,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0xe3,0x41,0x41,0x41,0x22,0x22,0x22,0x14,0x14,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8e,0x4,0x4,0x4,0x88,0x88,0x88,0x50,0x50,0x20,0x20,0x0,0x0,0x0,0x0, ++0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xe,0x0,0x0, ++0x0,0x40,0x20,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x8,0x4,0x0,0x0, ++0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x10,0x10,0x8,0x8,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0xf,0x10,0x0,0xf,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x50,0xa0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0xc,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0xf,0x10,0x10,0x1f,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0xc0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0, ++0x0,0x8,0x8,0x8,0x8,0xb,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x8,0x8,0x8,0x9,0xa,0xd,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1b,0xc,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x30,0x0, ++0x0,0x0,0x0,0x0,0x0,0x5,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x7,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x2,0x2,0x2,0xf,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0xc,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x4,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x11,0x9,0x9,0xa,0xa,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0xa0,0xa0,0x40,0x40,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x4,0x2,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0xf,0x8,0x0,0x1,0x2,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x4,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x40,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x4,0x4,0x25,0x1e,0x4,0x7,0xc,0x14,0x23,0x22,0x25,0x18,0x0,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x80,0xe0,0x90,0x88,0x8,0x8,0x10,0x20,0xc0, ++0x4,0x4,0x4,0x47,0x3c,0x4,0x4,0x1f,0x24,0x42,0x42,0x41,0x22,0x1c,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x40,0x40,0xf0,0x48,0x84,0x84,0x4,0x84,0x8,0x30,0x0, ++0x0,0x0,0x0,0x0,0x0,0x10,0x18,0x10,0x10,0x10,0x10,0x11,0xa,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x10,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x21,0x22,0x14,0xc,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0x4,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0xf,0x1,0x2,0x0,0x11,0xe,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0xf,0x0,0x1,0x0,0x21,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x80,0x40,0x80,0x0,0xe0,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x0,0x1,0x0,0x3,0x1c,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x40,0x38,0x0, ++0x0,0xf,0x0,0x1,0x0,0x3,0x3c,0x1,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x80,0x80,0x80,0x40,0x3c,0x0, ++0x0,0x0,0x0,0x4,0x4,0x4,0x3f,0x4,0x7,0x4,0xc,0x14,0x34,0x15,0x8,0x0,0x0,0x0,0x0,0x0,0x10,0x8,0x4,0x8,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0, ++0x0,0x4,0x4,0x7,0x3c,0x4,0x5,0x6,0xc,0x14,0x24,0x64,0x35,0xc,0x4,0x0,0x0,0x0,0x10,0x88,0x4,0x18,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0, ++0x0,0x2,0x2,0x2,0x2,0x43,0x3c,0x4,0x4,0x4,0x8,0x8,0x10,0x22,0x41,0x0,0x0,0x0,0x0,0x20,0x10,0xc8,0x44,0x54,0x4c,0x40,0x40,0x80,0x80,0x80,0x0,0x0, ++0x0,0x4,0x4,0x4,0x4,0x87,0x78,0x8,0x8,0x8,0x10,0x11,0x21,0x45,0x82,0x0,0x8,0x4,0x12,0x48,0x24,0x90,0x88,0xa8,0x98,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x2,0x3,0x1d,0x0,0x3,0x1c,0x0,0x3,0x0,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x60,0x80,0x0,0xe0,0x80,0x40,0x40,0xe0,0x20,0x0,0x0,0x0,0xc0,0x0, ++0x4,0x4,0x4,0x7,0x3a,0x1,0x7,0x38,0x0,0x7,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x8,0xc4,0x12,0x8,0xc4,0x0,0x80,0x80,0xc0,0x40,0x0,0x0,0x0,0x80,0x0, ++0x0,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x8,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0, ++0x0,0x2,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x10,0x8,0x4,0x2,0x1,0x1,0x0,0x0,0x8,0x4,0x22,0x10,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x0,0x80,0x40,0x40,0x40,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0, ++0x0,0x0,0x10,0x10,0x20,0x20,0x27,0x40,0x40,0x40,0x50,0x50,0x20,0x20,0x1,0x0,0x8,0x84,0x52,0x48,0x44,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0, ++0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0, ++0x0,0x0,0x10,0xf,0x0,0x3,0x4,0x0,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x8,0xe4,0x82,0x10,0x8,0x4,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0, ++0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0, ++0x0,0x4,0x2,0x2,0x3f,0x1,0x0,0x0,0x1,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x8,0x4,0xd2,0x8,0x4,0x80,0x40,0xe0,0x20,0x0,0x0,0x0,0x0,0xe0,0x0, ++0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0, ++0x0,0x18,0xc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x9,0x6,0x0,0x0,0x10,0x8,0x24,0x10,0x8,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0, ++0x0,0x3,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0, ++0x3,0x1,0x1,0x1,0x7f,0x1,0x7,0x9,0x9,0x9,0x6,0x0,0x1,0x1,0x2,0xc,0x8,0x4,0x12,0x8,0xf4,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x0,0x80,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0, ++0x0,0x0,0x10,0x8,0x8,0xb,0x7c,0x8,0x8,0x8,0x9,0x8,0x8,0x8,0x7,0x0,0x8,0x84,0x52,0x48,0x44,0xf0,0x40,0x40,0x40,0x40,0x40,0x80,0x0,0x0,0xf0,0x0, ++0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0, ++0x0,0x10,0xf,0x1,0x2,0x4,0x8,0x1f,0x22,0x44,0x4,0x4,0x2,0x1,0x0,0x0,0x8,0x24,0x92,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0, ++0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0, ++0x0,0x4,0x4,0x47,0x3c,0x9,0x8,0x8,0x10,0x10,0x12,0x22,0x21,0x40,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0xe0,0x30,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0, ++0x0,0x2,0x2,0x2,0x3,0x7e,0x4,0x7,0x4,0xc,0x8,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0, ++0x0,0x4,0x4,0x5,0x7,0x7c,0x8,0xb,0xc,0x18,0x10,0x0,0x0,0x0,0x0,0x3,0x0,0x8,0x4,0x12,0x88,0x4,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x20,0xc0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f,0x8,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x20,0x40,0x80,0x0, ++0x0,0x0,0x0,0x1,0x6,0x78,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0xc,0xf0,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0xe,0x0,0x0,0x8,0x4,0x12,0xc8,0x24,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7f,0x21,0x2,0x4,0x4,0x4,0x4,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x8,0xfc,0xc0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xf0,0x0, ++0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0, ++0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x6,0x8,0x10,0x10,0x10,0x8,0x7,0x0,0x8,0x4,0x12,0x8,0x4,0x30,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0, ++0x0,0x0,0xc,0x4,0x7,0x7c,0x24,0x8,0x8,0x10,0x10,0x23,0x44,0x4,0x3,0x0,0x0,0x0,0x20,0x10,0x8,0x18,0x40,0x40,0x40,0x40,0x40,0xe0,0x50,0x48,0x84,0x0, ++0x0,0x20,0x10,0x10,0x13,0x20,0x20,0x20,0x40,0x4a,0x4a,0x52,0x51,0x60,0x40,0x0,0x0,0x0,0x0,0x1c,0xe8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0, ++0x0,0x2,0x1,0x21,0x11,0x17,0x19,0x11,0x31,0x4a,0x4a,0x44,0x44,0x4a,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x74,0x8c,0x94,0x62,0x0,0x0, ++0x0,0x10,0x8,0x8,0x8,0x1e,0x69,0xa,0xc,0x18,0x28,0x48,0xa9,0x29,0x18,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x10,0xf0,0x18,0x24,0xc2,0x0, ++0x0,0x0,0x0,0x7,0x19,0x21,0x42,0x42,0x42,0x44,0x44,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x0, ++0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x0,0x80,0x40,0x50,0x78,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0x8,0x84,0x52,0x48,0x74,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x20,0x10,0x10,0x10,0x27,0x20,0x20,0x40,0x48,0x48,0x53,0x54,0x64,0x43,0x0,0xc,0x92,0x52,0x4c,0x70,0xc0,0x40,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x20,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0, ++0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x8,0x4,0x12,0x28,0x24,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0, ++0x0,0x0,0x2,0x3e,0x4,0x8,0x8,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0xc,0x12,0x12,0x2c,0x20,0x30,0x28,0x24,0x20,0x20,0x40,0x40,0x40,0x80,0x0,0x0, ++0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x0,0x0,0x80,0xc0,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0, ++0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0x8,0x4,0x92,0xc8,0x4,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0, ++0x0,0x2,0x1,0x0,0x1,0x2,0x2,0x1,0x0,0x3,0x4,0x8,0x78,0x26,0x1,0x0,0xc,0x12,0x92,0xcc,0x0,0x0,0x0,0x0,0xe0,0x98,0x84,0x8c,0x90,0x80,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x84,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x24,0x18,0x80,0x40,0x20,0x18,0x6,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0x70,0xc0,0x40,0x40,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x8,0xe4,0x52,0x48,0x44,0x40,0xf8,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x20,0x17,0x10,0x10,0x20,0x27,0x20,0x40,0x48,0x48,0x51,0x52,0x62,0x41,0x0,0x0,0xec,0x52,0x52,0x4c,0x40,0xf0,0x40,0x40,0x40,0x40,0xc0,0x70,0x48,0x84,0x0, ++0x0,0x1,0x1,0x1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1d,0x23,0x21,0x1e,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0, ++0x0,0x0,0x13,0xc,0x0,0x1,0x1,0x1,0x2,0x1a,0x27,0x44,0x48,0x30,0x0,0x1,0x0,0x0,0x80,0x80,0x80,0x0,0x10,0x10,0x10,0x10,0xa0,0x70,0x28,0x44,0x80,0x0, ++0x0,0x8,0x4,0x4,0x7,0x7c,0x4,0x1c,0x24,0x24,0x24,0x1c,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x90,0xc8,0x4,0xc,0x10,0x0,0x0,0x10,0x10,0x10,0x18,0xf0,0x0, ++0x0,0x1,0x10,0x10,0x10,0x1f,0x11,0x29,0x45,0x42,0x45,0x48,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0xc0,0x20,0x10,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x0, ++0x2,0x2,0x2,0x2,0x23,0x1e,0x4,0x4,0x44,0x3f,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x10,0x8,0xc8,0x8,0x8,0x8,0x8,0x8,0xf0,0x0, ++0x0,0x0,0x2,0x1,0x0,0x0,0x3,0x24,0x1f,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x30,0x48,0x88,0x8,0x8,0x70,0x0,0x80,0x80,0x40, ++0x0,0x2,0x1,0x0,0x6,0x9,0x10,0x11,0x7e,0x8,0x8,0x4,0x2,0x2,0x1,0x0,0x0,0x0,0x80,0x40,0x40,0x80,0x30,0xc8,0x4,0x4,0x88,0x70,0x0,0x0,0x0,0x80, ++0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x12,0x14,0x14,0x18,0x1a,0x11,0x10,0x1,0x2,0x0,0x0,0x0,0x0,0x80,0x80,0xe0,0x90,0x88,0x88,0x88,0x88,0x90,0xe0,0x0,0x0, ++0x0,0x0,0x10,0x10,0x10,0x11,0x22,0x24,0x24,0x24,0x28,0x2a,0x31,0x10,0x0,0x3,0x0,0x80,0x40,0x40,0xf8,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x58,0xe0,0x80,0x0, ++0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xf,0x11,0x11,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x0,0x0, ++0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1f,0x21,0x41,0x42,0x3c,0x0,0x0,0x0,0x0,0x0,0x10,0x38,0xc0,0x0,0x0,0x0,0x0,0xc0,0x30,0x8,0x4,0x0, ++0x0,0x1c,0x2,0x2,0x4,0x8,0x10,0x10,0x10,0x13,0x14,0x18,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x30,0xc0,0x0, ++0x0,0x10,0x8,0x9,0xa,0xa,0x12,0x14,0x14,0x18,0x8,0x0,0x0,0x0,0x1,0x2,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0, ++0x0,0x0,0xf,0x0,0x0,0x0,0x1,0x2,0x7,0x8,0x10,0x3,0x4,0x4,0x3,0x0,0x0,0x40,0xa0,0x20,0x40,0x80,0x0,0xf0,0x8,0x4,0x4,0x84,0x44,0x28,0xf0,0x0, ++0x0,0x8,0x8,0x8,0xe,0x79,0xa,0xc,0x8,0x18,0x28,0x28,0x68,0x18,0x8,0x0,0x0,0x0,0x20,0x50,0x88,0x8,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x8,0x0,0x0, ++0x0,0x3,0x1c,0x0,0x1,0x2,0x4,0xf,0x18,0x20,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc0,0x40,0x80,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0x10,0x60,0x80,0x0, ++0x0,0x0,0x8,0x4,0x4,0x7,0x3c,0x7,0xc,0x14,0x24,0x34,0xc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0, ++0x0,0x10,0x8,0x8,0x4f,0x38,0xb,0xc,0x8,0x18,0x28,0x48,0x68,0x18,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x18,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0, ++0x0,0x0,0x3,0x1c,0x0,0x1,0x1,0x3,0xf,0x12,0x22,0x44,0x38,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0xf0,0x8,0x4,0x4,0x64,0x94,0x88,0x70,0x0, ++0x0,0xf,0x0,0x1,0x3,0x6,0x8,0x13,0x24,0x3,0x2,0x4,0x18,0x26,0x41,0x0,0x0,0xc0,0x80,0x0,0xe0,0x10,0x10,0x90,0xa0,0xc0,0x0,0x0,0x38,0x44,0x88,0x0, ++0x0,0x2,0x1,0x1,0x1f,0x1,0x2,0x3,0x4,0x8,0x11,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0xe0,0x0,0x8,0xc,0xd0,0x60,0xc0,0x40,0x40,0x40,0x0,0xf8,0x0, ++0x0,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x3,0x2,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x22,0x22,0x24,0x24,0x18,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x3f,0x0,0x0,0x0,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x1,0x1,0x0,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1,0x11,0x1f,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0x1,0x21,0x3f,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x3,0xc,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x1f,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x1,0x1,0x3f,0x3,0x5,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x42,0x1,0x0,0x0,0x80,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0, ++0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0, ++0x0,0x2,0x2,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x21,0x40,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0, ++0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0, ++0x0,0x8,0x8,0x4,0x4,0x3f,0x2,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0xe4,0x0,0x0,0x0,0x70,0x80,0x80,0x40,0x40,0x20,0x20,0x0, ++0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x2,0x2,0x3,0x4,0x4,0x8,0x10,0x20,0x0,0x1,0x2,0xc,0x30,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x8,0xf,0x10,0x20,0x41,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xf4,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x24,0xf0,0x20,0x20,0x20,0x40,0xe0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x7f,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x1,0x0,0x0,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0, ++0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x9,0x1,0x2,0x0,0x8,0x4,0x92,0x88,0x84,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x18,0x4,0x2,0x30,0x8,0x4,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x40,0x80,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x1,0x3,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x8,0xe4,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x20,0x18,0x8,0x0, ++0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x0,0x20,0xf0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x7,0x7c,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0xe0,0x20,0x40,0x80,0x0,0x0,0x20,0xf0,0x0,0x0, ++0x0,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x8,0x4,0x12,0x48,0x24,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x4,0x7,0x4,0x8,0x8,0x10,0x24,0x2,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0xf,0x8,0x10,0x10,0x20,0x49,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x8,0x4,0x52,0xe8,0x44,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x1f,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x0,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x3e,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x52,0xe8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x4,0x3,0x21,0x18,0x8,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x2,0x21,0x11,0x8,0x8,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x8,0x4,0x42,0x22,0x10,0x10,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x4,0x12,0x28,0x24,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1f,0x0,0x0,0x0,0x7f,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0xf0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x8,0x4,0x92,0xc8,0x4,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x40,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x4,0x4,0x4,0x6,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1f,0x0,0x0,0xc,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x40,0x80,0xc0,0x30,0x10,0x0,0x0,0x0,0x0, ++0x2,0x1,0x0,0x0,0x1f,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x1,0x1,0x1,0x0,0x0,0x80,0x80,0x0,0xc0,0x80,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0x20,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x44,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0x4c,0x20,0x10,0x10,0x8,0x8,0xc,0x4,0x0,0x0,0x0,0x0, ++0x0,0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x60,0x80,0x0,0x0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0, ++0x0,0x0,0x0,0x20,0x20,0x21,0x21,0x26,0x38,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0xc0,0x0,0x0, ++0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x8,0x4,0x12,0x48,0xe4,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0xc,0x12,0x52,0xec,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x12,0x8,0x4,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x18,0x24,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x12,0x12,0xc,0x0,0x0,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x8,0x4,0x12,0x8,0x4,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0xc,0x12,0x12,0xc,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0x8,0x8,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x20,0x20,0x40,0x80,0x80,0x40,0x40,0x0,0x0,0x0, ++0x0,0x0,0xe,0x1,0x0,0x0,0x1c,0x3,0x0,0x0,0x1c,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x20,0x0,0x0,0xc0,0x40,0x0,0x80,0x60,0x20,0x0,0x0, ++0x0,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x3f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0xf8,0x8,0x8,0x0, ++0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x40,0x80,0x80,0x60,0x20,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x3,0x3e,0x2,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x8,0x4,0x5,0x3e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x20, ++0x0,0x10,0x8,0x8,0x4,0x5,0x7e,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x10,0x20,0x0,0x80,0x80,0x40,0x40,0x20,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x48,0xfc,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0, ++0x0,0x0,0xf,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x6,0x18,0x0,0x0,0x40,0xe0,0x0,0x10,0xf8,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x1,0x1,0x2,0x4,0x8,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x84,0x88,0x90,0xa0,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x20,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x40,0xe0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x10,0x1f,0x10,0x10,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x20,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x1f,0x9,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0xe0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x0,0x2,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf8,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x10,0x8,0x6,0x2,0x0,0x0,0x0,0x1,0x2,0x24,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x2,0x22,0x3f,0x20,0x20,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x8,0x4,0x12,0x28,0xf4,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x1,0x1,0xf,0x1,0x1,0x2,0x2,0x2,0x5,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x7,0x8,0x10,0x21,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xe0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x10,0x10,0x20,0xc0,0x20,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x10,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0x10,0x8,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x40,0xc0,0x40,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x20,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x28,0x2f,0x28,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x28,0xe8,0x28,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x71,0x21,0x22,0x24,0x28,0x38,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x60,0x30,0x30,0x28,0x28,0x24,0x24,0x22,0x22,0x21,0x70,0x0,0x0,0x0,0x0,0x0,0xc,0x18,0x18,0x28,0x28,0x48,0x48,0x88,0x88,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x60,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x88,0x48,0x28,0x18,0xc,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x10,0x10,0x0,0x4,0x7,0x4,0x0,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x10,0x8,0x4,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x6,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x40,0xa0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0xf,0x11,0x21,0x21,0x21,0x11,0xf,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x43,0x21,0x11,0x11,0x11,0x11,0xf,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x84,0x8,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x10,0x48,0x44,0x7c,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x10,0x24,0x44,0x7c,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x80,0x40,0x40,0x80,0x0,0xc0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0xc,0x12,0x22,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3,0x4,0x2,0x1,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x4,0x4,0x2,0x1,0x2,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x2,0x4,0x4,0x3,0x2,0x4,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x3,0x0,0x0,0x0,0x40,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0, ++0x0,0x0,0x0,0x1,0xa,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0, ++0x0,0x3,0x4,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0x0,0x18,0x8,0x8,0xd,0xa,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x40,0x80,0x0,0x0,0x0,0x80,0x40,0x70,0x0,0x0,0x0,0x0, ++0x4,0xa,0x2,0x1,0x1,0x1,0x3,0x2,0x2,0x4,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x50,0x50,0x20,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x18,0x8,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x8,0x7,0x8,0x8,0x7,0x4,0x8,0x8,0x8,0x7,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0xc0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x24,0x4,0x4,0x4,0x4,0x4,0x8,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x40,0x40,0x40,0x40,0x40,0x40,0x50,0x20,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x18,0x14,0x13,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x9,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x8,0x14,0x4,0x4,0x4,0x4,0x4,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x7,0x9,0x11,0x11,0x11,0x11,0x11,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x14,0x4,0x2,0x2,0x1,0x1,0x2,0x4,0x8,0x8,0x10,0x0,0x0,0x0,0x0,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x80,0x80,0x40,0x50,0x20,0x0,0x0,0x0, ++0x0,0x1,0x1,0x11,0x29,0x9,0x9,0x9,0x9,0x9,0x9,0x7,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x4,0x8,0x11,0x11,0x11,0x11,0x11,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0xa0,0x40,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x2,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0xe0,0x10,0x10,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x0,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x8,0x0,0x7f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x20,0x0,0xf8,0x8,0x8,0x20,0xe0,0x20,0x0,0x8,0x8,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x33,0x49,0x9,0x5,0x3,0x5,0x9,0x9,0x11,0x11,0x63,0x0,0x0,0x0,0x0,0x0,0x98,0x24,0x20,0x40,0x80,0x40,0x20,0x20,0x10,0x10,0x8c,0x0,0x0,0x0,0x0, ++0x0,0x17,0x18,0x10,0x0,0x0,0x1,0x0,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x0,0xc,0x8,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x4,0x74,0x23,0x20,0x20,0x20,0x23,0x24,0x28,0x30,0x20,0x60,0x0,0x0,0x0,0x0,0x40,0x4c,0x88,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x21,0x22,0x3c,0x22,0x21,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x38,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x30,0x28,0x28,0x24,0x24,0x22,0x21,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x18,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0xf,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xd0,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x41,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0xfc,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x1c,0x8,0x8,0x4,0x4,0x2,0x1,0x0,0x1,0x12,0xc,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x70,0x10,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x70,0x0,0x0,0x0,0x0,0x0,0x1c,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x10,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x3,0x1,0x1f,0x21,0x41,0x41,0x41,0x21,0x1f,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x4,0x4,0x0,0x0, ++0x0,0x38,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x30,0xd0,0x10,0x10,0x10,0x38,0x0,0x0,0x0,0x0, ++0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x0,0x73,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x7f,0x0,0x0,0x0,0x0,0x0,0x9c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xfc,0x4,0x4,0x0,0x0, ++0x0,0x3e,0x24,0x4,0x4,0x7,0x4,0x4,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0, ++0x0,0x70,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x88,0x48,0x48,0x48,0x88,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x8,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x2f,0x30,0x20,0x0,0x0,0x1,0x0,0x0,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xe0,0x10,0x8,0x4,0x4,0xfc,0x4,0x4,0x8,0x10,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x71,0x22,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x22,0x71,0x0,0x0,0x0,0x0,0x0,0xf0,0x8,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0xf0,0x0,0x0,0x0,0x0, ++0x0,0x3,0x4,0x8,0x8,0x4,0x3,0x0,0x3,0x4,0x8,0x38,0x0,0x0,0x0,0x0,0x0,0xfc,0x8,0x8,0x8,0x8,0xf8,0x88,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x0,0xf,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0xc0,0x40,0x40,0xd0,0x20,0x0,0x0,0x0,0x0, ++0x0,0x7,0x8,0x10,0x17,0x18,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0xc0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x80,0x40,0x40,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x1f,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x0,0x7,0x8,0x10,0x10,0x1f,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x33,0x9,0x9,0x5,0x7,0x9,0x9,0x11,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x98,0x20,0x20,0x40,0xc0,0x20,0x20,0x10,0x88,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0xb,0xc,0x8,0x0,0x1,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x4,0x3,0x38,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x70,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x9,0xe,0x9,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x80,0x80,0x0,0x0,0x0,0x80,0x90,0x60,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0xf,0x4,0x4,0x4,0x4,0x4,0x14,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x38,0x10,0x18,0x14,0x12,0x12,0x11,0x10,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x30,0x50,0x90,0x90,0x10,0x10,0x38,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0xb,0x1c,0x8,0x8,0x8,0x8,0xc,0xb,0x8,0x8,0x8,0x1c,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x40,0x0,0x0,0x0,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x4,0x4,0x4,0x2,0x1,0x1,0x2,0x14,0x8,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0xd,0x13,0x11,0x11,0x11,0x11,0x13,0xd,0x1,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x60,0x90,0x10,0x10,0x10,0x10,0x90,0x60,0x0,0x0,0x80,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x40,0x80,0x0,0x80,0x40,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xf0,0x10,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0xe0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3b,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf8,0x8,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3c,0x28,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x38,0x10,0x10,0x10,0x10,0x90,0x90,0x90,0x38,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x1c,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x7,0x8,0x0,0x0,0x1,0x0,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0xe0,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x38,0x11,0x12,0x12,0x1e,0x12,0x12,0x11,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x3,0x4,0x4,0x4,0x3,0x1,0x2,0xa,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x70,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x7,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x0,0x1,0x2,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x4,0x2,0x1,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x0,0x7,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x40,0x80,0x0,0x0,0x0, ++0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x3,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x4,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4,0x2,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x7,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x2,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x4,0x2,0x1,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0x3,0x4,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0x0,0x1,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0x8,0x5,0x2,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0xf,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0xe0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x4,0x2,0x1,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x2,0x1,0x0,0x0,0x2,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x2,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xb0,0x0,0x0,0x0, ++0x0,0x1,0x2,0x4,0x0,0x3,0x4,0x8,0xf,0x8,0x8,0x4,0x3,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x80,0x40,0x20,0xe0,0x0,0x0,0x20,0xc0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0xc0,0x40,0x40,0x40,0x40,0xc0,0x60,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x7,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0x0,0x0,0x0,0xa0,0x60,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x40,0x80,0x0, ++0x0,0x0,0x1,0x2,0x0,0x1a,0xd,0x9,0x9,0x9,0x9,0x9,0x9,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x0,0x0,0x0, ++0x0,0x0,0x1,0x2,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0, ++0x0,0x4,0x2,0x1,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x40,0x80,0x0,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0, ++0x0,0x2,0x1,0x0,0x0,0xd,0x6,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40, ++0x0,0x4,0x4,0x8,0x1f,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0xc,0x30,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x10,0x0,0x0, ++0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x0,0x0,0x0, ++0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0, ++0x0,0x4,0x4,0x8,0x1f,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x11,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40, ++0x0,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x8,0x0,0x0, ++0x0,0x0,0x3f,0x0,0x0,0x1,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0xc0,0x40,0x80,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40, ++0x0,0x1,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x50,0x20, ++0x0,0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x8,0x8,0x4,0x4,0x2,0x2,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x80,0x40,0x40,0x20,0x20,0x0, ++0x0,0x0,0x7f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0xa0,0x40, ++0x0,0x0,0x3f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x9,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x60,0xa0,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x4,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x0, ++0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x0,0x0,0x0,0xfc,0x0,0x0, ++0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x11,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x0,0x40,0x80,0x0,0x0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1f,0x0,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0xe0,0x0,0x0, ++0x0,0x0,0x3f,0x4,0x4,0x4,0x4,0x4,0x4,0x5,0x4,0x4,0x4,0x4,0x4,0x4,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0xc0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2,0x2,0x2,0x7f,0x4,0x4,0x4,0xf,0x0,0x0,0x0,0x0,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x80,0x0, ++0x0,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0xf0,0x8,0x0,0x0, ++0x0,0x10,0x8,0x4,0x2,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x7f,0x1,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x7f,0x1,0x1,0xf,0x10,0x20,0x20,0x20,0x20,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0xe0,0x0, ++0x0,0x0,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0x9,0x8,0x7,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0xfc,0x40,0x40,0x40,0x80,0x80,0x0,0x0,0xf0,0x0,0x0, ++0x0,0x0,0x7f,0x9,0x9,0x11,0x1f,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x0, ++0x0,0x0,0x1c,0x4,0x4,0x4,0x2,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x18,0x0, ++0x0,0x2,0x2,0x4,0x4,0x8,0x8,0x1f,0x1,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x40,0x20,0xf0,0x10,0x0,0x0, ++0x0,0x0,0x0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x8,0x0,0x0,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x0,0x0,0x0, ++0x0,0x3f,0x8,0x8,0x8,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x20,0x20,0x20,0x40,0x40,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0, ++0x0,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x8,0x8,0x8,0x10,0x10,0x20,0x0, ++0x0,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7c,0x0, ++0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x0,0x0,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0, ++0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x8,0x4,0x2,0x1,0x0,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x40,0x20,0x10,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x73,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9c,0x9c,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0,0x80,0x80,0x80,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xee,0xee,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0,0x80,0x80,0x80,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x3,0x3,0x3,0x3,0x3,0x3,0x7f,0x7f,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xff,0xff,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6, ++0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x17,0x18,0x10,0x0,0x0,0x0,0x10,0x10,0xf,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x0,0x0,0x0,0x3,0x4,0x8,0x10,0x10,0x10,0x1f,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0xe0,0x0,0x0,0x0,0x0,0x10,0x10,0xf0,0x0, ++0x0,0x7,0x8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x7,0x0,0x0,0xc0,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0xc0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x2f,0xf9,0xa9,0xaa,0xaa,0xac,0xaa,0xaa,0xa9,0xe9,0xad,0xa,0x8,0x8,0x8,0x4,0x7e,0x4,0x4,0x14,0x7c,0x54,0x54,0x54,0x54,0x74,0x54,0x4,0x4,0x14,0xc, ++0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x40,0x40,0x40,0x4,0xfe,0x8,0x8,0x28,0xf8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10, ++0x10,0x10,0x10,0x11,0x13,0xfc,0x11,0x11,0x12,0x10,0x17,0x1c,0xf0,0x40,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x1a,0x30,0xd7,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x1,0x2,0x4,0x90,0x90,0x94,0xfe,0x90,0x90,0x8,0x8,0x90,0x90,0x60,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x4a,0x48,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x5,0xc,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4,0x0, ++0x10,0x10,0x25,0x7f,0x45,0x44,0x45,0x7c,0x44,0x45,0x45,0x45,0x7d,0x45,0x0,0x0,0x20,0x20,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x93,0x52,0x53,0x10,0x37,0x54,0xd7,0x10,0x24,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0x44,0x44,0xfc,0x4, ++0x8,0xff,0x8,0x43,0x32,0x13,0x2,0xf3,0x11,0x13,0x14,0x12,0x16,0x1a,0x13,0x0,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x4,0xd4,0x8, ++0x20,0x21,0x28,0x3c,0x53,0x90,0x15,0xfe,0x10,0x17,0x10,0x29,0x24,0x44,0x81,0x6,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x5c,0x48,0x40,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8, ++0x4,0x4,0xff,0x4,0x4,0x0,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4, ++0x0,0x5,0xff,0x11,0x11,0x21,0x24,0x7f,0xa4,0x27,0x25,0x24,0x3c,0x24,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x10,0xfe,0x10,0x90,0x90,0x10,0x50,0x20, ++0x0,0x3f,0x11,0x9,0x7f,0x42,0x82,0x7f,0x4,0x7,0xa,0x9,0x10,0x11,0x22,0xc,0x78,0x80,0x10,0x20,0xfe,0x2,0x4,0xf8,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8, ++0x4,0x7a,0x49,0x48,0x57,0x60,0x51,0x4a,0x4c,0x4b,0x6a,0x52,0x42,0x42,0x4f,0x40,0x4,0x8,0x10,0x4,0xfe,0xa0,0x10,0x8,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x28,0x28,0xfe,0x29,0x39,0x12,0x7c,0x57,0x54,0x7c,0x11,0xfe,0x10,0x10,0x10,0x13,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4, ++0x10,0x1f,0x20,0x5f,0x80,0x3f,0x2,0x3f,0x22,0x4,0xff,0x8,0x19,0x6,0x9,0x30,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x8,0xf8,0x88,0x8,0xa,0x8a,0x44, ++0x2,0x1,0x7f,0x40,0x82,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x2,0xc,0x30,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x40,0x80,0x40,0x30,0x10, ++0x8,0x8,0x8,0x17,0x10,0x31,0x52,0x94,0x1b,0x12,0x13,0x12,0x13,0x12,0x10,0x10,0x40,0x40,0x48,0xfc,0xa0,0x10,0x4e,0x44,0xf8,0x48,0xf8,0x48,0xf8,0x4a,0x42,0x3e, ++0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x3f,0xd0,0x10,0x11,0x10,0x10,0x10,0x50,0x23,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4, ++0x0,0x8,0x7f,0x48,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x20,0x3f,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x80, ++0x4,0x3e,0x24,0x25,0x25,0x3e,0x24,0x27,0x24,0x3c,0x25,0x24,0x24,0x44,0x94,0x9,0x40,0x20,0x0,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x50,0x8c,0x4, ++0x1,0x7f,0x41,0x82,0x7f,0x4,0xc,0x3,0x1c,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0xfe,0x2,0x4,0xfc,0x20,0x40,0x80,0x70,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x45,0x96,0x8,0x40,0x20,0x4,0xfe,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0, ++0x3f,0x20,0x3f,0x20,0x3f,0x0,0x6,0x78,0x40,0x40,0x40,0x46,0x58,0x60,0x0,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80, ++0x1,0x1,0x3f,0x21,0x21,0xff,0x2,0xc,0x30,0xc0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0xfe,0x80,0x60,0x1e,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x0,0x0,0x7c,0x44,0x44,0x44,0x44,0x44,0x44,0x47,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0xc4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x8,0x8,0xa,0x7f,0x8,0x3f,0x8,0xff,0x10,0x1e,0x12,0x22,0x22,0x54,0x89,0x2,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0xa,0x7f,0x8,0x3e,0x9,0xfe,0x10,0x1e,0x22,0x4a,0x85,0x0,0x24,0x22,0x40,0x40,0x40,0x40,0x44,0xfe,0x8,0x48,0x50,0x20,0x50,0x8e,0x4,0x0,0x88,0x44,0x4, ++0x10,0x20,0x7d,0x44,0x7c,0x45,0x7c,0x10,0xfe,0x28,0x55,0x92,0x7c,0x10,0x11,0x10,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88, ++0x20,0x10,0x13,0xfc,0x8,0x10,0x10,0x37,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x12,0x12,0x12,0x2f,0x22,0x6f,0xa2,0x3f,0x24,0x27,0x24,0x24,0x28,0x33,0x20,0x20,0x10,0x10,0x10,0x94,0x3e,0xc4,0x24,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x28,0x46,0x84, ++0x2,0x4,0x1f,0x11,0x15,0x11,0x1f,0x11,0x15,0x11,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0x50,0x10,0xf0,0x10,0x50,0x10,0x4,0xfe,0x80,0x60,0x1c,0x8, ++0x10,0x11,0x17,0x14,0x5d,0x54,0x57,0x94,0x15,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4, ++0x0,0x41,0x37,0x14,0x85,0x64,0x27,0xc,0x15,0x24,0xe0,0x2f,0x20,0x21,0x22,0x2c,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4,0x40,0xfe,0xa0,0x10,0xe,0x4, ++0x4,0x4,0xff,0x4,0x4,0x1f,0x11,0x11,0x11,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x11,0x19,0x37,0xd1,0x11,0x12,0x12,0x15,0x58,0x20,0x44,0xe4,0x44,0x54,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x44,0x44,0x44,0x94,0x8, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0, ++0x0,0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x4a,0x4,0x8,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x18,0xe,0x4,0x0, ++0x0,0x8,0x7f,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x1,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0x80,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x48,0x7c,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x4,0x0, ++0x0,0x0,0x1f,0x10,0x90,0x57,0x54,0x14,0x34,0x57,0xd4,0x14,0x24,0x24,0x43,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0xfc,0x13,0x10,0x14,0x19,0x31,0xd1,0x12,0x12,0x14,0x14,0x58,0x23,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4, ++0x4,0x7e,0x44,0x44,0x47,0x7c,0x10,0x11,0x5d,0x51,0x52,0x52,0x5c,0x74,0xc8,0x3,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4, ++0x28,0x28,0xff,0x29,0x39,0x11,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x15,0xff,0x11,0x7d,0x11,0xff,0x11,0x31,0x39,0x55,0x55,0x91,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x3,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x3f,0x1,0x7f,0x89,0x22,0x7f,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x9,0xf8,0x0,0xfe,0x24,0x8,0x7c,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0x88,0x18, ++0x0,0x3f,0x24,0x24,0x3f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x0,0x8,0xfc,0x48,0x48,0xf8,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0x10,0xf8,0x8, ++0x4,0x4,0xc,0x32,0x1,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x10,0x10,0x10,0xf,0x40,0x20,0x58,0x88,0x0,0x80,0x60,0x18,0xf6,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc, ++0x2,0x4,0x8,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x20,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0xff,0x1,0x2,0x4,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x17,0x14,0x14,0xff,0x14,0x10,0x1b,0x30,0xd0,0x1f,0x10,0x11,0x12,0x57,0x20,0x4,0xfe,0xa4,0xa4,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x80,0x10,0x8,0xfc,0x4, ++0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x24,0x45,0x82,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x4,0xe,0x78,0x8,0x8,0x7e,0x8,0x8,0xff,0x8,0x9,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x39,0x35,0x50,0x51,0x97,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x12,0xf9,0x20,0x2f,0x20,0x24,0xfa,0x21,0x21,0x22,0x22,0x3c,0xe4,0x48,0x0,0x0,0x4,0x7e,0x10,0xd0,0x10,0x90,0xfc,0x10,0x10,0x90,0x50,0x50,0x14,0xfe,0x0, ++0x1,0x9,0xfd,0x21,0x25,0x25,0x25,0xf5,0x25,0x29,0x21,0x22,0x3a,0xe2,0x44,0x8,0x0,0x4,0x7e,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x21,0x22,0x27,0x24,0xfe,0x25,0x24,0x2f,0x34,0xe6,0x25,0x24,0x24,0x28,0xb2,0x41,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xc2,0xbc,0xa4,0xa4,0xa4,0x98,0x88,0x94,0xa4,0x42, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x31,0xd1,0x12,0x12,0x14,0x59,0x20,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0, ++0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4, ++0x0,0x2b,0x28,0x24,0x45,0x43,0x85,0x7f,0x25,0x25,0x25,0x25,0x24,0x24,0x4c,0x83,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x12,0x12,0x14,0x19,0x10,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0, ++0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x49,0x49,0x4a,0x4a,0x4c,0x89,0x8,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x8e,0x4,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1c,0x33,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x20,0xa0,0xa0,0x90,0x10,0xe,0x4,0x8,0xfc,0x88,0x88,0x88,0x8,0x8,0x28,0x10, ++0x10,0x10,0x12,0x11,0xfc,0x13,0x14,0x18,0x30,0xd7,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x8,0x8,0xa,0x11,0x10,0x37,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x40,0x20,0xf8,0x7,0x54,0x55,0xfd,0x25,0x25,0x25,0x3d,0xe5,0x26,0x4b,0x90,0x0,0x10,0x48,0xbe,0x40,0x54,0x54,0x7e,0x48,0x48,0x48,0x7e,0x48,0xa8,0x98,0x8,0x8, ++0x1,0x21,0x19,0x9,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0x18,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x2,0x2,0x3f,0x2,0x2,0x12,0x32,0x22,0x44,0x84,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x30,0x2c,0x26,0x22,0x20,0x20,0xa0,0x40,0x0, ++0x10,0x10,0x21,0x20,0x44,0xf8,0x11,0x20,0x40,0xfc,0x3,0x0,0x1c,0xe0,0x40,0x0,0x20,0x20,0x24,0xac,0xb0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x8,0x8,0xa,0xff,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0xa,0xff,0x8,0x7e,0x8,0xff,0x8,0x11,0x3f,0xd1,0x11,0x11,0x11,0x11,0x1,0x0,0x7c,0x48,0x50,0x58,0x44,0x64,0x58,0x50,0xf0,0x10,0x10,0x10,0x50,0x20,0x0, ++0x11,0x11,0x11,0x17,0xf9,0x11,0x37,0x39,0x55,0x57,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20, ++0x10,0x10,0x11,0x10,0xfc,0x13,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10, ++0x8,0x7c,0x49,0x48,0x48,0x7b,0x4a,0x48,0x4f,0x78,0x48,0x48,0x48,0x48,0x89,0x1a,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10, ++0x11,0x11,0x21,0x27,0x49,0xf1,0x27,0x41,0xf9,0x47,0x1,0x19,0xe2,0x42,0x4,0x0,0x0,0x3e,0x22,0xe4,0x24,0x28,0xe4,0x24,0x22,0xe2,0x22,0x34,0x28,0x20,0x20,0x20, ++0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x39,0x55,0x52,0x95,0x10,0x13,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x20,0x50,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40, ++0x0,0x8,0xfd,0x10,0x10,0x23,0x22,0x3c,0x67,0xa4,0x24,0x24,0x24,0x3c,0x25,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x55,0x54,0x7c,0x13,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x11,0x1c,0x20,0x23,0x7e,0x90,0x13,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x28,0xfc,0x88,0x50,0xfe,0x44,0x20,0xfe,0x80,0xf8,0x88,0x88,0x88,0x28,0x10, ++0x8,0x8,0xb,0x11,0x10,0x37,0x54,0x90,0x1f,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x80,0x50,0xf8,0x10,0xa0,0xfc,0x88,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20, ++0x0,0x40,0x37,0x11,0x0,0xf,0xe8,0x20,0x2f,0x21,0x21,0x21,0x29,0x31,0x22,0x4,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x84,0x40,0xfe,0x0,0xf0,0x10,0x10,0x10,0x50,0x20, ++0x4,0x4,0xff,0x4,0x4,0xf,0x10,0x2f,0x48,0x8,0xf,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0, ++0x4,0x3e,0x24,0x25,0x26,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x88,0xfc,0x8,0x28,0xf8,0x28,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0, ++0x4,0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x10,0xf8,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x30,0x4,0x4,0xfc,0x0, ++0x2,0x1,0x7f,0x8,0x17,0x14,0x37,0x50,0x9f,0x12,0x14,0x5,0xc,0x14,0x66,0x4,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x80,0xfc,0xa0,0x90,0x8,0xd0,0x20,0x5c,0x8, ++0x1,0x7f,0x1,0x3f,0x1,0xff,0x8,0x49,0x29,0x2a,0x1c,0x2a,0xc9,0x8,0x28,0x10,0x4,0x84,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x14,0x8, ++0x8,0xff,0x8,0x47,0x20,0x27,0x84,0x4f,0x14,0x27,0xe4,0x20,0x2f,0x22,0x21,0x20,0x20,0xfe,0x50,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x30, ++0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0xf,0x10,0x2f,0x48,0xf,0x8,0x8,0x7,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf0,0x90,0xd0,0x90,0x90,0xb4,0x4,0xfc, ++0x8,0xb,0xa,0x12,0x12,0x33,0x32,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x10,0x17,0x14,0x24,0x27,0x60,0xbf,0x21,0x22,0x2c,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x80,0xfc,0xc0,0xa0,0x9c,0x80,0xf8,0x0,0x4,0xfe,0x0, ++0x20,0x20,0x20,0x3c,0x25,0x4a,0x45,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x0,0x3f,0x1,0x1,0x1f,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x60,0x20,0x8,0xfc,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x14,0xfc,0x14,0x14,0xf4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x8,0x8,0x28,0x10,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x1f,0x10,0x1f,0x10,0x1f,0x4,0x7f,0x4,0xff,0x4,0x9,0x35,0xc3,0x9,0x11,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xfc,0x40,0xfe,0x40,0x20,0x5e,0x84,0x20,0x10,0x0, ++0x8,0x10,0x22,0xd4,0x48,0x31,0x2a,0xcc,0x14,0x24,0xcc,0x14,0x64,0x4,0x28,0x10,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10, ++0x8,0x8,0x1e,0x14,0x28,0x7f,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xe,0x70,0x20,0x40,0x40,0x44,0x7e,0x84,0x14,0xf4,0x94,0x94,0xf4,0x94,0x88,0x82,0x82,0x7e,0x0, ++0x13,0x12,0x13,0x16,0x5b,0x51,0x57,0x91,0x1f,0x11,0x12,0x2d,0x28,0x41,0x82,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe4,0x50,0x48,0xc0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40, ++0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa4,0x25,0x27,0x24,0x3c,0x24,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x0,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x1,0x2,0x1f,0x11,0x11,0x1f,0x11,0x12,0x1f,0x5,0x9,0xff,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x4,0x4,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0x4,0x4,0x1c,0xe4,0x44,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x4,0x7c,0x4,0x7c,0x4,0x7c,0x6,0x4,0x3f,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x88,0xfc,0x80,0xfc,0x80,0xfc,0x80,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x4,0x4,0x7c,0x4,0x1c,0xe4,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x78,0x42,0x42,0x3e,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x8,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x18,0x8, ++0x10,0x10,0x11,0x1d,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x14,0x18,0x11,0x2,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2, ++0x8,0x8,0xf,0x10,0x12,0x31,0x51,0x9f,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x8,0x8,0x51,0x22,0x0,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x50,0x88,0x6,0x2, ++0x4,0x7,0x8,0x14,0x23,0x2,0xc,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0xf0,0x20,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x8,0xf,0x14,0x12,0x23,0xc,0x30,0xdf,0x11,0x1f,0x11,0x1f,0x2,0x29,0x28,0x47,0x0,0xe0,0x40,0x80,0x80,0x60,0x1e,0xf4,0x10,0xf0,0x10,0xf0,0x0,0x88,0x94,0xf4, ++0x10,0x10,0x17,0x14,0x5a,0x51,0x51,0x9f,0x10,0x13,0x12,0x2a,0x26,0x46,0x83,0x2,0x80,0x48,0xfc,0x0,0x18,0x10,0x24,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x10,0x10,0x5,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x1,0x1,0x7f,0x2,0x5,0x9,0x37,0xc1,0x9,0x8,0x7f,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20, ++0x4,0x4,0xff,0x4,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x7f,0x5,0x5,0x5,0x9,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x20,0x20,0x10,0xee,0x4,0x0,0x0,0x0, ++0x8,0xa,0x1f,0x28,0x45,0x1,0x7f,0x3,0x5,0x9,0x11,0x2f,0xc1,0x1,0x1,0x1,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfc,0x80,0x40,0x20,0x10,0xee,0x4,0x0,0x0,0x0, ++0x1,0x21,0x21,0x3f,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x0,0x8,0x8,0xf8,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xa8,0x10, ++0x10,0x17,0x24,0x24,0x44,0xff,0x14,0x24,0x44,0xff,0x44,0x4,0x1c,0xe4,0x4a,0x11,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xc4,0x94,0x8, ++0x0,0xff,0x1,0x7,0x19,0xe1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x41,0x81,0x4,0xfe,0x0,0x60,0x18,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10, ++0x0,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x9,0x1,0x7d,0x5,0x9,0x11,0x61,0x3,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x20,0x1e,0x4,0x0, ++0x0,0x7a,0x4a,0x4b,0x48,0x7b,0x12,0x12,0x13,0x5a,0x52,0x53,0x5a,0xe2,0x44,0x9,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xcc, ++0x4,0x42,0x21,0x2f,0x2,0x2,0xe2,0x2f,0x22,0x22,0x22,0x22,0x24,0x58,0x8f,0x0,0x10,0x20,0x40,0xf8,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x26,0xfc,0x0, ++0x0,0x4f,0x20,0x27,0x4,0x4,0xe7,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x6,0xfc,0x0, ++0x1,0x1f,0x12,0x11,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x4,0x18,0x10,0xf8,0x10,0x10,0x90,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x40, ++0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x26,0x38,0x60,0x0,0x80,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0, ++0x2,0x3f,0x22,0x22,0x3e,0x9,0xff,0x8,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x7f,0x41,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0xa,0x1f,0x28,0x45,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x0,0x20,0x28,0x7c,0xa0,0x10,0x7c,0x80,0x10,0x78,0x80,0x8,0x7c,0x80,0x2,0x2,0xfe, ++0x8,0x8,0x10,0x13,0x22,0x4a,0x8a,0x12,0x33,0x52,0x93,0x12,0x14,0x14,0x19,0x16,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x4,0xfe,0x11,0x7d,0x11,0x1f,0xf1,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x8,0xff,0x9,0x2,0x3f,0x24,0x23,0x24,0x3f,0x0,0x20,0x3e,0x20,0x26,0x78,0x20,0x24,0xfe,0x20,0x10,0xf8,0x90,0x10,0x90,0xf0,0x0,0x88,0x98,0xa0,0xc4,0x84,0x7c, ++0x4,0x4,0xff,0x4,0x49,0x2a,0xc,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x41,0x43,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84, ++0x20,0x20,0x20,0x3e,0x20,0x22,0x2c,0x70,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x80,0x80,0x98,0xe0,0x80,0x84,0x84,0x7c,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x20,0x20,0x3e,0x20,0x2e,0x30,0x0,0xff,0x10,0x1e,0x22,0x52,0xc,0x8,0x10,0x60,0x80,0x98,0xe0,0x80,0x88,0x78,0x4,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c, ++0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x4,0x12,0x50,0x51,0x96,0x18,0x67,0x0,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x40,0x88,0x6,0x12,0x10,0xf0,0x0, ++0x0,0x3,0x7d,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x38,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0, ++0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x25,0x4e,0x84,0x0,0x0,0x88,0xfc,0x0,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x1,0x0,0x3f,0x20,0xaf,0x68,0x2f,0x28,0x2f,0x60,0xbf,0x24,0x24,0x44,0x88,0x10,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x10,0x10,0x10,0x10,0x10, ++0x20,0x1b,0x8,0x40,0x40,0x5f,0x40,0x41,0x42,0x44,0x48,0x50,0x40,0x42,0x41,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x14,0x8, ++0x8,0x49,0x2b,0x2c,0x9,0x7f,0x49,0x49,0x5d,0x5b,0x69,0x49,0x49,0x4b,0x40,0x41,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x44,0x48,0x28,0x10,0x28,0x48,0x86,0x4, ++0x8,0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x8,0xff,0x8,0x8,0x10,0x20,0x20,0x20,0x24,0x3e,0x44,0xc4,0x28,0x10,0x28,0x46,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x2,0x1,0x1,0x1,0x8,0x8,0x48,0x48,0x48,0x89,0xa,0xc,0x18,0x28,0x47,0x0,0x0,0x0,0x20,0x30,0x20,0x40,0x48,0x46,0x82,0x0,0x0,0x10,0x10,0x10,0xf0,0x0, ++0x0,0x0,0x3e,0x23,0x22,0x22,0x3e,0x23,0x20,0x3e,0x23,0x62,0xa2,0x3e,0x20,0x0,0x40,0x20,0x8,0xfc,0x0,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20, ++0x2,0x3f,0x22,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0x1f,0x0,0x0,0x7f,0x0,0x20,0x14,0xfe,0x44,0x28,0xfe,0x10,0xfe,0x10,0x90,0x80,0xf8,0x80,0x84,0xfe,0x0, ++0x2,0x3f,0x22,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x1,0x4f,0x29,0x9,0x9,0xf,0xe8,0x28,0x2f,0x39,0x29,0x29,0x2f,0x50,0x8f,0x0,0x20,0x90,0x14,0xfe,0x0,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0x16,0xfc,0x0, ++0x2,0x7a,0x4a,0x53,0x52,0x62,0x52,0x4b,0x48,0x48,0x68,0x53,0x40,0x40,0x4f,0x40,0x20,0x20,0x24,0xac,0x30,0x20,0xa4,0x1c,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x28,0x28,0xfe,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x84,0xfe,0x90,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x50,0x20,0x30,0x4e,0x84, ++0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x11,0x11,0x11,0x12,0x14,0x28,0x47,0x0,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0, ++0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf6,0x4a,0x3,0x1a,0xe2,0x42,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc, ++0x4,0x7e,0x45,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x10,0x28,0x47,0x82,0x0,0x8,0x1c,0xe0,0x0,0x40,0x20,0xfc,0x4,0x8,0x10,0x20,0x40,0x80,0x46,0x3c,0x0, ++0x1,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x19,0x29,0x2f,0x49,0x89,0x9,0x8,0x0,0x88,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x10,0x17,0x10,0x10,0x27,0x24,0x67,0xa4,0x27,0x24,0x22,0x21,0x20,0x21,0x22,0x2c,0x4,0xfe,0x40,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x40,0x40,0x80,0x60,0x1e,0x4, ++0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x44,0x1f,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0x0,0x8,0xfc,0x40,0x50,0x48,0x4c,0x44,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8, ++0x2,0x1,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x0,0x0,0x0, ++0x20,0x10,0x10,0x7c,0x8,0x2a,0x2a,0xfe,0x12,0x10,0xfc,0x11,0x11,0x12,0x24,0x40,0x10,0x88,0x88,0xbe,0x84,0x94,0x94,0xbe,0x88,0x88,0xbe,0x8,0x8,0x8,0x8,0x8, ++0x20,0x12,0x11,0x7d,0x8,0x2f,0x29,0xfd,0x11,0x11,0xfd,0x11,0x11,0x11,0x21,0x40,0x20,0x10,0x10,0x7c,0x8,0x28,0x28,0x7e,0x10,0x10,0x7c,0x10,0x50,0x90,0x10,0x10, ++0x20,0x10,0x10,0x7d,0x9,0x2b,0x28,0xfc,0x11,0x13,0xfc,0x10,0x10,0x13,0x20,0x40,0x10,0x88,0x88,0x3e,0x4,0xd4,0x54,0xbe,0x8,0xc8,0x3e,0x8,0xc8,0x8,0x8,0x8, ++0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x27,0x26,0x26,0x2b,0x2a,0x32,0x50,0x8f,0x0,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xf8,0xa8,0xa8,0x6,0xfc,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x10,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x80, ++0x5,0x7,0x4,0x3f,0x24,0x27,0x3c,0x27,0x20,0x2f,0x29,0x29,0x29,0x49,0x90,0x20,0x0,0x84,0xc,0xd0,0xa0,0x4,0x8c,0x90,0x20,0x44,0xc,0x10,0x22,0x42,0xfe,0x0, ++0x0,0x7b,0x48,0x48,0x49,0x79,0x49,0x49,0x48,0x79,0x48,0x4b,0x48,0x49,0x4a,0x98,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x60, ++0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x2,0x5,0xc,0x34,0xc4,0x5,0x6,0x4,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0, ++0x8,0x2a,0x1c,0x7f,0x49,0x5d,0x6b,0x47,0x8,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0xc4,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe, ++0x49,0x2a,0x8,0x7f,0x49,0x5d,0x6b,0x49,0x43,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x24,0x3e,0x48,0xa8,0x10,0x2e,0x44,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0, ++0x1,0x3f,0x21,0x21,0x21,0x3f,0x28,0x9,0xff,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x3f,0x21,0xa7,0x64,0x27,0x24,0x27,0x64,0xa7,0x21,0x22,0x26,0x3b,0x42,0x81,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x20,0x10,0x6e,0x84,0x8,0xf8, ++0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x52,0x52,0x94,0x10,0x10,0x10,0x10,0x10,0x80,0x82,0x82,0x84,0xe8,0x90,0x82,0xc2,0xa4,0x88,0x92,0x82,0x84,0x88,0x90,0xa0, ++0x0,0x20,0x11,0x0,0xfc,0xb,0x48,0x28,0x29,0x11,0x29,0x25,0x45,0x81,0x3,0x0,0x10,0x10,0xf4,0x12,0x10,0xfe,0x10,0x50,0x50,0x70,0x50,0x48,0x48,0x6a,0x86,0x2, ++0x2,0x42,0x2a,0x2b,0xa,0x8a,0x5f,0x2,0x2a,0x2a,0xd3,0x42,0x44,0x48,0x50,0x1,0x4,0xfe,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0xd4,0x54,0x54,0x10,0x28,0x46,0x82, ++0x0,0x40,0x2f,0x28,0x10,0x83,0x52,0x13,0x12,0x22,0xe2,0x3f,0x20,0x23,0x22,0x24,0x80,0x40,0xfe,0x2,0x64,0x80,0x10,0xf8,0x20,0x20,0x24,0xfe,0x0,0x20,0x18,0x8, ++0x2,0x1,0x3f,0x20,0x40,0xf,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0xc,0x8,0x10,0x0,0x0,0xfc,0x4,0xe8,0x0,0x20,0xf0,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x10, ++0x10,0x10,0x17,0x14,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x1f,0x10,0x11,0x51,0x22,0x40,0x20,0xfe,0x2,0x34,0xc0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4, ++0x0,0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0xf0,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x44,0xfe,0x0,0x40,0x30,0x18,0x8, ++0x0,0x40,0x30,0x10,0x0,0xf,0x11,0x12,0x22,0xe4,0x24,0x28,0x30,0x20,0x22,0x21,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x33,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x9c,0xc,0x4,0x4,0x14,0x8, ++0x0,0x0,0xff,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x22,0x24,0x28,0x20,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x88,0x48,0x28,0x28,0x8,0x28,0x10, ++0x0,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x3,0x5,0x9,0x11,0x61,0x1,0x78,0x80,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x80,0x40,0x30,0xe,0x4,0x0, ++0x20,0x21,0x20,0x3c,0x47,0x48,0xa0,0x20,0x27,0x20,0x20,0x24,0x28,0x31,0x22,0x4,0x0,0x8,0x90,0x0,0xfc,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x90,0x10,0x10,0x10, ++0x0,0x20,0x2f,0x20,0x28,0xb0,0xa7,0xa4,0x24,0x24,0x24,0x25,0x54,0x4c,0x84,0x4,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x64,0x94,0x14,0x4,0x4,0x14,0x8, ++0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x37,0x54,0x94,0x14,0x25,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x44,0x44,0xa4,0x14,0x4,0x14,0x8, ++0x10,0xc,0x4,0x3f,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0x30,0x40,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x8,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x1e,0xf2,0x42,0x4,0x8,0x3,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x4,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x8,0xff,0x8,0x20,0x13,0x92,0x42,0xa,0x12,0xe2,0x24,0x24,0x24,0x29,0x32,0x20,0x24,0xfe,0x20,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x13,0x10,0x12,0xfd,0x17,0x11,0x1a,0x34,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x38,0xc0,0x44,0x4c,0x50,0xfe,0x50,0x4e,0x44,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8, ++0x10,0x10,0x12,0x12,0xff,0x10,0x14,0x18,0x11,0x31,0xd2,0x12,0x14,0x18,0x51,0x22,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x20,0x20,0x20,0x38,0x47,0x80,0x78,0x20,0x21,0xfa,0x24,0x21,0x28,0x30,0x20,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0xf0,0x40,0x40,0x40,0x40, ++0x0,0x40,0x30,0x17,0x4,0x84,0x44,0xf,0x14,0x25,0xe4,0x24,0x28,0x29,0x32,0x24,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4, ++0x20,0x20,0x2f,0x20,0x27,0xfc,0x27,0x24,0x27,0x24,0x20,0x2f,0x22,0x21,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x8,0xa,0x7f,0x8,0x8,0x7f,0x41,0x82,0x3e,0x4,0x8,0x7e,0x8,0x8,0x29,0x12,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x10,0x10,0x17,0x10,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x10,0x1f,0x12,0x11,0x50,0x20,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x20,0x10,0x83,0x42,0xa,0x13,0xe2,0x22,0x22,0x23,0x22,0x40,0x44,0x7e,0xa0,0x10,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0, ++0x8,0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x84,0x20,0x20,0x44,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,0x0, ++0x8,0x7c,0x4b,0x48,0x4b,0x7a,0x4c,0x49,0x48,0x78,0x4f,0x48,0x48,0x48,0x49,0x98,0x40,0x48,0xfc,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x8,0x7c,0x4f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x48,0x4f,0x4a,0x49,0x48,0x98,0x50,0x48,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x2,0x42,0x32,0x1f,0x82,0x5f,0x50,0xf,0x11,0x22,0xe3,0x2e,0x22,0x22,0x2a,0x25,0x10,0x10,0x90,0xd4,0x3e,0xd4,0x54,0x94,0x14,0x24,0xa4,0x24,0x44,0x44,0x94,0x8, ++0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xa,0x13,0x22,0xe2,0x22,0x22,0x23,0x22,0x20,0x40,0x40,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0, ++0x4,0x7f,0x4,0x24,0x24,0x24,0x24,0x25,0x3e,0x2,0x2,0x1e,0xe2,0x42,0xb,0x4,0x0,0x8,0x88,0x50,0x20,0x50,0x88,0x8,0x4,0x8c,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8, ++0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x10,0x78,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8, ++0x10,0x8,0x8,0x2,0xfe,0x4,0x8,0xa,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x20,0x21,0x23,0x22,0xfb,0x22,0x23,0x22,0x23,0x22,0x38,0xe7,0x40,0x0,0x0,0x0,0x80,0x8,0xfc,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0xff,0x0,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0x1,0x4,0xfe,0x80,0x80,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x2,0xff,0x4,0x9,0x11,0x3f,0x51,0x91,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0, ++0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x1,0x9,0xd,0x11,0x21,0x0,0x3,0xc,0x70,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x18,0x20,0x20,0xc0,0x0,0x0,0x0, ++0x10,0x3e,0x49,0x0,0x27,0x10,0x13,0x82,0x43,0xa,0x13,0xe2,0x2f,0x21,0x20,0x20,0x40,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0xfe,0x10,0x90,0x30, ++0x10,0x8,0x2,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x10,0x10,0x10,0x13,0x58,0x55,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x80,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20, ++0x20,0x20,0x2f,0x2a,0xfb,0x26,0x25,0x2b,0x32,0xe5,0x28,0x27,0x22,0x22,0xa5,0x40,0x80,0x40,0xfe,0x2,0xbc,0xa4,0x28,0x18,0x8,0xf6,0x0,0xfc,0x48,0x44,0x44,0x80, ++0x0,0x48,0x2f,0x10,0x2b,0x48,0xf,0x18,0x2b,0x4a,0x8b,0xa,0xb,0xa,0x52,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x18, ++0x4,0x4,0x3f,0x4,0xff,0x10,0x8,0x7f,0x8,0x11,0x3a,0x54,0x93,0x19,0x11,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x89,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20, ++0x0,0x0,0x0,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x2,0x1,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0, ++0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x54,0x54,0x55,0x2a,0x24,0x44,0x80,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x50,0x20, ++0x8,0x7f,0x48,0x4a,0x49,0x78,0x48,0x4f,0x48,0x78,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1c,0xe0,0x88,0x48,0x50,0x0,0x44,0xfe,0x40,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40, ++0x4,0x7f,0x44,0x45,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x50,0x5d,0xe2,0x40,0x0,0x1c,0xe0,0x44,0x26,0xa8,0x0,0x24,0xfe,0x20,0x60,0x70,0xa8,0x26,0x24,0x20,0x20, ++0x0,0x0,0x7f,0x0,0x11,0x8,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x8,0x7c,0x80,0x8,0x18,0xa0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0, ++0x1,0xe,0xf1,0x49,0x2a,0x20,0x8,0xff,0x8,0x1c,0x1b,0x29,0x48,0x88,0x8,0x8,0x0,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x4,0xc,0x10,0x20,0x40,0x80, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x12,0x9,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x38,0xc0,0x10,0x20,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0, ++0x4,0x4,0xff,0x14,0x16,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x19,0x21,0x3,0x40,0x44,0xfe,0x40,0xf8,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0, ++0x10,0x1e,0x10,0x3e,0x44,0x29,0x12,0x65,0xf,0x38,0xcf,0x8,0xf,0xa,0x9,0xc,0x0,0xf8,0x88,0x50,0x20,0x50,0x8c,0x44,0xe0,0x3e,0xe4,0x20,0xe0,0x10,0xa0,0x78, ++0x2,0x2,0x4,0x1f,0x2,0xff,0x4,0x8,0x13,0x2c,0xc1,0xe,0x0,0x1,0xe,0x70,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0xa0,0x10,0x4e,0x84,0x10,0x60,0x80,0x0,0x0, ++0x0,0x3f,0x1,0x1,0xff,0x2,0x5,0x9,0x3f,0xd1,0x11,0x1f,0x1,0x1,0x3f,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0xfe,0x14,0x10,0xf0,0x0,0x10,0xf8,0x8, ++0x0,0x4,0x7e,0x10,0x10,0x1f,0x22,0x22,0x65,0x94,0x8,0x8,0x10,0x20,0x43,0x80,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x21,0x21,0x21,0x2f,0xb2,0xad,0xa5,0x2f,0x21,0x21,0x21,0x2f,0x25,0x21,0x21,0x21,0x0,0x6,0x38,0xe0,0x20,0x20,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x48,0x48,0x88,0x8, ++0x20,0x20,0x21,0x27,0xb0,0xaf,0xa1,0x22,0x24,0x39,0x22,0x20,0x23,0x20,0x20,0x27,0x80,0xa0,0x10,0xf8,0x80,0xfe,0x20,0x50,0x8e,0x24,0x40,0x88,0x10,0x20,0xc0,0x0, ++0x10,0x10,0x10,0x14,0x54,0x59,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x20,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x18,0x6f,0x88,0x8,0x8,0x8,0x8,0x7,0x0,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xee,0x24,0xa0,0x40,0x10,0x10,0xf0,0x0, ++0x8,0x10,0x3c,0x24,0x34,0x2d,0x26,0xfc,0x24,0x34,0x2c,0x24,0x24,0x24,0x54,0x88,0x20,0x20,0x50,0x50,0x88,0x6,0x4,0xf8,0x88,0x88,0xa8,0x90,0x80,0x84,0x84,0x7c, ++0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xcf,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x20,0x1e,0xe4,0x20,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0, ++0x0,0x40,0x31,0x11,0x82,0x44,0x48,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x4,0xff,0x4,0x4,0x5f,0x50,0x57,0x75,0x17,0x74,0x57,0x55,0x95,0x27,0x44,0x80,0x84,0xfe,0xa8,0xa4,0xfe,0x20,0xa0,0x24,0xa4,0xa4,0xa8,0x28,0x10,0xb2,0x4a,0x86, ++0x10,0x11,0x11,0x11,0xfc,0x17,0x14,0x1f,0x30,0xd0,0x1f,0x10,0x11,0x12,0x54,0x20,0x10,0xf8,0x10,0xf0,0x4,0xbe,0xa4,0xbc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x10,0x10,0x55,0x39,0x10,0xfc,0x10,0x33,0x39,0x55,0x91,0x11,0x11,0x12,0x14,0x10,0x10,0x50,0x50,0x7c,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x7c,0x80,0x7e,0x0, ++0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x57,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x3f,0x24,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x8,0x8,0x7f,0x8,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x22,0x45,0x44,0x88,0x10,0x4,0xfe,0x0,0x84,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x4,0x84,0x94,0x8, ++0x10,0x3e,0x50,0x9,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x5,0x9,0x11,0x61,0x1,0x20,0x7c,0xa0,0x10,0x4,0xfe,0x8,0xfc,0x8,0x88,0x58,0x20,0x10,0xe,0x4,0x0, ++0x10,0x10,0x17,0x24,0x25,0x65,0xa5,0x25,0x25,0x25,0x25,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x44,0x4,0x84,0x44,0x14,0x8, ++0x2,0x1f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x12,0x26,0x41,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x10, ++0x0,0x40,0x27,0x24,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x21,0x22,0x24,0x28,0x20,0x0,0x44,0xe4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x17,0x10,0x10,0x1f,0x11,0x22,0x24,0x4f,0x80,0x4,0xfe,0x4,0x4,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0x8,0xfc,0x4, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x12,0x53,0x5c,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x50,0x0,0xfe,0x22,0xaa,0x72,0x22,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4, ++0x10,0x10,0x17,0x10,0xf8,0x17,0x10,0x19,0x36,0xd4,0x14,0x17,0x14,0x14,0x57,0x24,0x10,0x38,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4, ++0x0,0x0,0x3f,0x0,0x12,0x11,0x9,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4, ++0x8,0x8,0xff,0xa,0x2,0xff,0x4,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x0,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x1,0x2,0x4,0x19,0x21,0xdf,0x1,0x9,0x19,0x21,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0x18,0x8,0x0,0x0, ++0x1,0x1,0xff,0x5,0x9,0x11,0x3f,0xd0,0x10,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0, ++0x0,0x8,0xfc,0x17,0x10,0x21,0x22,0x7c,0xab,0x2a,0x2b,0x2a,0x2b,0x38,0x27,0x0,0x40,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x0, ++0x11,0x11,0x17,0x11,0xfc,0x10,0x15,0x1a,0x34,0xd3,0x10,0x12,0x12,0x14,0x51,0x20,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x2,0x1,0x7f,0x48,0x8e,0x12,0x2c,0x68,0x17,0x20,0x5f,0x81,0x9,0x11,0x25,0x2,0x0,0x0,0xfe,0x2,0xf4,0x90,0x60,0x20,0xd0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0, ++0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x30,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x2,0xff,0x4,0x8,0x17,0x20,0x40,0x80,0x1f,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x20,0xf0,0x80,0x80,0x88,0xfc, ++0x0,0x40,0x37,0x14,0x0,0x0,0xf7,0x10,0x10,0x10,0x17,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0xfe,0x2,0x24,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x20,0x20, ++0x8,0x8,0x28,0x2e,0x28,0x28,0x2e,0x71,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x1,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0xff,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x4,0x8,0x12,0xea,0x2c,0x29,0x14,0xe6,0xa,0x12,0x66,0xa,0x13,0xe2,0x14,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x18,0x28,0x48,0x88,0x8,0x8,0x28,0x10, ++0x10,0x10,0x11,0x12,0xff,0x12,0x16,0x1b,0x30,0xd1,0x12,0x1c,0x10,0x11,0x50,0x20,0x40,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa0,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10, ++0x10,0x10,0x11,0x13,0xf8,0x17,0x10,0x19,0x32,0xd4,0x19,0x12,0x10,0x11,0x50,0x23,0x80,0xa0,0x10,0xf8,0x80,0xfe,0xa0,0x10,0x48,0x8e,0x24,0x40,0x90,0x20,0x40,0x80, ++0x11,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x14,0x1f,0xe4,0x40,0x0,0x0,0x4,0x8c,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20, ++0x20,0x20,0x20,0x39,0x4b,0x56,0x82,0x23,0x20,0x21,0x26,0x20,0x28,0x31,0x20,0x0,0x80,0x80,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10, ++0x1,0x21,0x11,0x12,0x7,0x2,0xf2,0x13,0x10,0x11,0x16,0x10,0x10,0x15,0x18,0x0,0x0,0x0,0xf0,0x20,0xf8,0x48,0x48,0xf8,0xa2,0x22,0x1e,0xc0,0x30,0x80,0x60,0x10, ++0x10,0x10,0x27,0x24,0x4d,0xf5,0x25,0x45,0xfd,0x5,0x5,0x1c,0xe5,0x48,0x13,0x20,0x40,0x24,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x10,0x10,0x10,0x1d,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x20,0x10,0x4,0xfe,0x0,0x84,0x48,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x1,0x1,0x7f,0x8,0x4,0x4,0x1f,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x17,0x50,0x44,0x42,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x4,0x4,0x4,0xc, ++0x8,0xff,0x0,0x7f,0x55,0x5d,0x55,0x7f,0x0,0x3e,0x32,0x2a,0x3e,0x0,0xff,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82, ++0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x1,0x45,0x29,0x11,0x29,0x49,0x9,0x18,0x2b,0x4a,0x8a,0xb,0xa,0xa,0x53,0x22,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x20,0x27,0x20,0x20,0xf8,0x21,0x27,0x21,0x21,0x21,0x3a,0xe2,0x44,0x8,0x11,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x1,0x11,0x9,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x2,0x4,0x8,0x1f,0x0,0x0,0x10,0x20,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x10, ++0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0, ++0x8,0x8,0x8,0x8,0x8,0x9,0x8,0xff,0x9,0x9,0x8,0x8,0x8,0x9,0xe,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x8,0xa,0x9,0x10,0x17,0x34,0x58,0x93,0x10,0x10,0x1f,0x10,0x10,0x11,0x13,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x90,0x8,0xfc,0x4, ++0x8,0x7f,0x48,0x48,0x48,0x79,0x4b,0x48,0x48,0x79,0x49,0x4a,0x4c,0x48,0x49,0x98,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x49,0x29,0x2a,0x8,0x7f,0x41,0x41,0x5d,0x55,0x55,0x55,0x5d,0x41,0x45,0x42,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84, ++0x10,0x13,0x10,0x7c,0x54,0x55,0x57,0x7c,0x54,0x55,0x55,0x7e,0x54,0x10,0x11,0x10,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x48,0x4b,0x4a,0x7a,0x4b,0x2,0x2,0x3,0x2,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x10,0x7c,0x10,0x10,0xfd,0x12,0x51,0x5d,0x51,0x51,0x71,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10,0x0,0xf8,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x1a,0x32,0xd4,0x10,0x10,0x10,0x10,0x50,0x27,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0, ++0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x92,0x12,0x7c,0x10,0x10,0x14,0x18,0x10,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x50,0x10,0x20,0xc0,0x0, ++0x8,0xa,0x7f,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x48,0xa,0xff,0x8,0x8,0x9,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8, ++0x2,0x22,0xff,0xa2,0xa2,0xaf,0xa8,0xaf,0xa8,0xaf,0xaa,0xe2,0xbf,0x2,0x2,0x2,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c, ++0x2,0x42,0x2f,0x22,0x2,0x8f,0x48,0x4f,0x8,0x1f,0x2a,0xe2,0x3f,0x22,0x22,0x22,0x4,0x3e,0xa4,0x24,0xa4,0xfc,0xa4,0xa4,0xa4,0xbc,0x24,0xa4,0xe4,0x24,0x44,0x8c, ++0x11,0x11,0x22,0x11,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0x20,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x0,0x8,0x7c,0x48,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0, ++0x10,0x10,0x10,0x10,0x55,0x59,0x51,0x92,0x12,0x14,0x10,0x28,0x24,0x44,0x80,0x7,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x48,0x10,0x10,0x20,0xc0,0x0, ++0x2,0x2,0x7f,0x4,0x9,0x11,0x21,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x10,0xfc,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x22,0x21,0x2f,0x22,0xf4,0x2f,0x20,0x37,0x24,0xe7,0x24,0x27,0x24,0x24,0xa4,0x45,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84, ++0x25,0x3f,0x44,0xbf,0x4,0x3f,0x24,0x25,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x4,0x84,0x24,0xa4,0x24,0xa4,0xa4,0x8c,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0, ++0x10,0x12,0x12,0x22,0x42,0x92,0x13,0x2e,0x62,0xa2,0x22,0x23,0x20,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0xe4,0x24,0x24,0x64,0xa4,0x24,0x44,0x84,0x28,0x10, ++0x2,0x41,0x2f,0x22,0x4,0x8f,0x40,0x47,0x14,0x27,0xe4,0x27,0x24,0x24,0x24,0x25,0x10,0x10,0xd0,0x14,0xbe,0xc4,0x24,0xa8,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84, ++0x11,0x11,0x11,0x11,0xff,0x11,0x33,0x3b,0x55,0x55,0x99,0x11,0x11,0x11,0x11,0x11,0x0,0x3e,0x22,0x24,0xe4,0x28,0x28,0xa4,0x62,0x22,0x22,0x32,0x2a,0x24,0x20,0x20, ++0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x8,0xfc,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x25,0x25,0x24,0x24,0x44,0x45,0x86,0x4,0x10,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4,0x0, ++0x1,0x1,0x5,0xd,0x11,0x21,0x41,0x0,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x40,0x20,0x18,0xc,0x4,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0, ++0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x25,0x44,0x44,0x87,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xf0,0x4,0xfe,0x8,0x90,0x60,0x1e,0x4, ++0x10,0x10,0x10,0x10,0x53,0x5a,0x54,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x40,0x37,0x14,0x84,0x68,0x21,0x9,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x0,0x0,0xfc,0x4,0x8,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x78,0x48,0x57,0x50,0x60,0x51,0x4a,0x4b,0x48,0x69,0x51,0x42,0x44,0x40,0x40,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x28,0x24,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x10,0x7d,0x11,0x12,0xfc,0x11,0x10,0x5c,0x51,0x50,0x70,0x48,0x87,0x0,0x40,0x40,0xa0,0x10,0x28,0x6e,0x84,0x20,0x60,0x88,0x18,0x20,0x40,0x86,0xfc,0x0, ++0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x34,0x59,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20, ++0x12,0x11,0x17,0x14,0xf9,0x11,0x11,0x18,0x37,0xd0,0x13,0x10,0x17,0x10,0x51,0x20,0x48,0x50,0xfe,0x2,0xf4,0x10,0xf0,0x18,0xe0,0x40,0xf8,0x40,0xfc,0x40,0x40,0x80, ++0x4,0xe,0x78,0x8,0x9,0xfe,0x8,0x1c,0x1a,0x28,0x29,0x49,0x8a,0x8,0x8,0x8,0x40,0x40,0x80,0x80,0xfe,0x4,0x28,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40, ++0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe6,0x45,0x4,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6, ++0x10,0x13,0x10,0x12,0xfd,0x12,0x37,0x38,0x57,0x52,0x92,0x13,0x11,0x10,0x1f,0x10,0x0,0xa8,0xb4,0xa8,0x10,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa0,0xfe,0x0, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x3e,0x22,0x22,0x22,0x2a,0x24,0x40,0x81,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x62,0x92,0xa,0x6, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x0,0x0,0x1f,0x1,0xff,0x5,0x3d,0x5,0xd,0x75,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x0,0x4,0xfe,0x40,0x58,0x60,0x44,0x3c,0x80,0x40,0x30,0x1c,0x8,0x0, ++0x8,0x1d,0xf1,0x11,0x11,0xff,0x11,0x38,0x37,0x54,0x50,0x91,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x1b,0x20,0x40,0x12,0x1a,0x32,0x52,0x97,0x10,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x50,0x78,0x40,0x40,0x48,0xfc,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0, ++0x0,0x47,0x31,0x15,0x82,0x44,0x4f,0x10,0x17,0x24,0xe4,0x27,0x22,0x21,0x3f,0x20,0x0,0x50,0x68,0x50,0x20,0x10,0xfe,0x4,0xf0,0x10,0x10,0xf0,0x20,0x44,0xfe,0x0, ++0x0,0x40,0x20,0x27,0x4,0x4,0xe4,0x27,0x24,0x24,0x24,0x2e,0x35,0x24,0x8,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x90,0x30,0x4a,0x8a,0x6, ++0x1f,0x0,0x1,0x1,0x79,0xf,0x9,0x11,0x17,0x21,0x21,0x4f,0x81,0x1,0x5,0x2,0xf0,0x20,0x40,0x84,0x2c,0xf0,0x20,0x10,0xd0,0x8,0x4e,0xe4,0x0,0x0,0x0,0x0, ++0x0,0x47,0x24,0x24,0x7,0x0,0xef,0x20,0x20,0x27,0x20,0x20,0x2f,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x6,0xfc,0x0, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x48,0x7f,0x4,0x5,0x1c,0xe4,0x44,0x14,0x8,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4,0xfe,0x80,0xfc,0x4,0x4,0x4,0x28,0x10, ++0x8,0x1c,0xf1,0x10,0x11,0xfc,0x10,0x38,0x37,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x48,0x48,0x48,0x48,0x79,0x4a,0x2,0x1,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x1,0x0,0x1f,0x12,0x92,0x53,0x55,0x19,0x31,0x5f,0xd1,0x11,0x12,0x22,0x44,0x8,0x0,0x84,0xfe,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0xa4,0x7c,0x24,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x18,0x30,0xd7,0x12,0x11,0x11,0x10,0x50,0x20,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20, ++0x2,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x2,0xff,0x8,0x2a,0x2f,0x28,0x58,0x87,0x0,0x40,0x40,0x40,0x40,0x48,0x58,0x60,0x40,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc,0x0, ++0x0,0x40,0x32,0x12,0x82,0x63,0x2e,0x2,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0, ++0x0,0x43,0x22,0x22,0x2,0x3,0xe2,0x22,0x22,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x1c,0x0,0x6,0xfc,0x0, ++0x8,0x7c,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x50,0x20,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x4b,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x28,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x24,0x34,0x28,0x22,0x2,0xfe,0x0, ++0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x3f,0xe4,0x44,0x7,0x4,0x4,0x10,0x10,0x10,0x90,0x94,0x9e,0x90,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x0, ++0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x21,0x21,0x22,0x24,0x28,0x20,0x3f,0x20,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x88,0x68,0x28,0x8,0xf8,0x8, ++0x8,0x8,0x9,0x13,0x10,0x30,0x50,0x91,0x16,0x10,0x10,0x13,0x10,0x10,0x10,0x17,0x80,0xfc,0x8,0x10,0xa0,0x40,0x90,0x10,0x20,0x7e,0x84,0x48,0x30,0x20,0xc0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x14,0x12,0x11,0x10,0x20,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x80,0x40,0x30,0xe,0x4, ++0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x4,0x4,0x14,0x14,0x24,0x48,0x88,0x11,0x20,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x80, ++0x20,0x20,0x27,0xf8,0x24,0x22,0x70,0x50,0x52,0x54,0x50,0x52,0x21,0x50,0x4f,0x80,0x0,0x4,0xbe,0x84,0xa4,0x94,0x84,0x84,0x94,0xa4,0x84,0x94,0x8,0x6,0xfc,0x0, ++0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x23,0x20,0x20,0x40,0x40,0x80,0x0,0x10,0x78,0x80,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0xe0,0xb0,0x90,0x80,0x80,0x80, ++0x10,0x10,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x10,0x28,0x25,0x42,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x90,0x88,0xc,0x4,0x0, ++0x2,0x1,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x50,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x40,0x20,0x20,0x7,0x14,0x14,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40, ++0x1,0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x7e,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x8,0xfc,0x4,0x0, ++0x1,0x21,0x21,0x3f,0x22,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x1,0x11,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x8,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x0,0x20,0x18,0x8,0x0, ++0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x9,0x12,0x20,0x40,0x0,0x0,0xfe,0x2,0x84,0x50,0xf8,0x80,0x90,0xb0,0xc0,0x80,0x82,0x82,0x7e,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xaa,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x2,0x44,0x44,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0x54,0x94,0x94,0x4,0x4, ++0x0,0x4,0x7f,0x54,0x57,0x54,0x57,0x7c,0x54,0x57,0x55,0x55,0x7e,0x44,0x8,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10, ++0x0,0x7c,0x47,0x44,0x47,0x44,0x7f,0x10,0x10,0x5f,0x51,0x51,0x5a,0xe4,0x48,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10, ++0x8,0x1f,0xf2,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x12,0x14,0x18,0x0,0xfe,0x22,0x22,0xfa,0x22,0x22,0xfa,0x2,0xfa,0x8a,0x8a,0x8a,0xfa,0x8a,0x4, ++0x4,0xe,0x78,0x8,0xfe,0x8,0x1d,0x2a,0x48,0x9,0x2,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0xa4,0xac,0xb0,0x50,0x48,0x8e,0x4,0x0,0x90,0xac,0x24,0xe0,0x0, ++0x10,0x1f,0x28,0x45,0x1,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x2,0x0,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xfc,0x10,0x10,0x50,0x20, ++0x9,0x9,0x9,0x11,0x17,0x31,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x10,0x17,0x24,0x24,0x4d,0xfc,0x14,0x25,0x44,0xfd,0x5,0x5,0x1d,0xe5,0x48,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x14,0x8, ++0x0,0x9,0x7f,0x49,0x49,0x7f,0x49,0x4b,0x4b,0x7d,0x49,0x49,0x49,0x79,0x49,0x1,0x80,0xd0,0x10,0x12,0x56,0xb8,0x10,0x90,0x50,0x10,0x28,0x28,0x28,0x46,0x84,0x0, ++0x0,0x3f,0x2,0x2,0x2,0x2,0x2,0x1f,0x4,0x4,0x4,0x4,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0xff,0x2,0x4,0x18,0x60,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x14,0xfe,0x80,0x60,0x1c,0x8, ++0x20,0x10,0x10,0x5,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10, ++0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x27,0x24,0x24,0xff,0x24,0x75,0x6d,0xa5,0x25,0x24,0x25,0x25,0x2b,0x30,0x20,0x4,0xfe,0x0,0x44,0xe4,0x4,0xde,0x44,0x44,0xd4,0xc,0x44,0x44,0xe4,0x14,0x8, ++0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x2f,0x20,0x29,0x2a,0x23,0x5c,0x80,0x4,0xfe,0x0,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x8,0x8,0x88,0x28,0x10, ++0x4,0x7f,0x44,0x44,0x47,0x7c,0x10,0x17,0x50,0x59,0x53,0x55,0x5d,0xf1,0x41,0x1,0x90,0xfe,0x90,0x48,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x20,0x20,0x23,0x7a,0x82,0x2,0xfb,0x22,0x22,0xfb,0x22,0x22,0x2f,0x30,0x20,0x0,0x10,0x10,0xd0,0x54,0x7e,0x54,0xd4,0x54,0x54,0xd4,0x54,0x54,0xf4,0x24,0x54,0x88, ++0x10,0x10,0x20,0x3c,0x45,0x8a,0x14,0xfe,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x0,0x40,0x50,0x94,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x0,0x5e,0x32,0x34,0x14,0x95,0x5a,0x14,0x32,0x33,0xda,0x54,0x51,0x52,0x50,0x10,0x20,0x20,0x50,0x50,0x88,0x6,0xfc,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x48,0x48,0x4f,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x40,0x50,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x3f,0x1,0x9,0x9,0x11,0x11,0x29,0x47,0x80,0x20,0x28,0xfc,0x20,0x78,0xa4,0x20,0xf8,0x10,0x40,0xe0,0x0,0x0,0x6,0xfc,0x0, ++0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa4,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x18,0x25,0x24,0x60,0xbd,0x24,0x25,0x26,0x24,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0x50,0x64,0xfe,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88, ++0x1,0x3f,0x1,0xf,0x8,0x9,0x9,0x7f,0x8,0x7e,0x8,0x3e,0x22,0x2a,0x2a,0xff,0x10,0xf8,0x0,0xe0,0x20,0x20,0x28,0xfc,0x20,0xfc,0x20,0xf8,0x88,0xa8,0xa8,0xfe, ++0x10,0x10,0x1f,0x10,0xfd,0x13,0x10,0x18,0x33,0xd0,0x17,0x14,0x17,0x14,0x57,0x24,0x80,0x44,0xfe,0x80,0x10,0xf0,0x40,0x88,0xf8,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x4, ++0x20,0x20,0x3c,0x48,0x51,0xfd,0x55,0x55,0x7d,0x55,0x55,0x7d,0x54,0x54,0x55,0x8c,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x20,0x28,0x3c,0xe2,0x82, ++0x0,0x10,0x10,0x10,0x1e,0x22,0x22,0x22,0x54,0x94,0x8,0x14,0x14,0x22,0x41,0x80,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x6,0xfc,0x0, ++0x10,0x10,0x12,0x12,0xfb,0x10,0x17,0x18,0x30,0xd7,0x14,0x14,0x14,0x14,0x54,0x24,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8, ++0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4, ++0x2,0x1,0x7f,0x44,0x88,0x0,0x3f,0x8,0x10,0x3f,0x1,0x2,0x4,0x18,0x61,0x0,0x0,0x0,0xfe,0x42,0x24,0x0,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x80, ++0x10,0x10,0x10,0x11,0xfc,0x13,0x30,0x39,0x56,0x50,0x91,0x16,0x10,0x17,0x10,0x10,0x80,0xf8,0x88,0xf8,0x14,0xfe,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa6,0x24,0xa0,0x40, ++0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x11,0x13,0x10,0x11,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x0,0xfc,0x8,0x10,0xa0,0x40,0x60,0x20, ++0x8,0x12,0x3f,0x22,0x32,0x2a,0x22,0x23,0xfe,0x22,0x32,0x2a,0x22,0x42,0x8a,0x4,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x0,0x8,0x7e,0x4a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x48,0x48,0xf8,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xb4,0x8, ++0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0, ++0x1,0x0,0x1f,0x10,0x91,0x52,0x54,0x1b,0x32,0x52,0xd2,0x12,0x22,0x22,0x41,0x0,0x0,0x84,0xfe,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x8,0x8,0xf8,0x0, ++0x2,0x1,0x7f,0x48,0x92,0x4,0x3f,0x22,0x23,0x24,0x2a,0x21,0x22,0x24,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x0,0xf8,0x8,0xc8,0x48,0x88,0x8,0x88,0x8,0xf8,0x8, ++0x20,0x20,0x27,0xf9,0xa8,0xaf,0xa8,0xab,0xaa,0xab,0xaa,0xbb,0x20,0x23,0x20,0x2f,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe, ++0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x21,0x21,0x22,0x24,0x48,0x50,0x80,0x0,0x0,0x84,0xfe,0x80,0x80,0x88,0xfc,0x80,0xc0,0xa0,0x90,0x88,0x8e,0x84,0x80,0x80, ++0x20,0x17,0x50,0x40,0x4f,0x40,0x44,0x44,0x44,0x47,0x40,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xf4,0x14,0xd4,0x14,0x54,0x24,0xc, ++0x8,0x8,0x14,0x12,0x21,0x20,0x7e,0xa2,0x22,0x2a,0x24,0x20,0x21,0x21,0x1f,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x0,0x8,0x7c,0x48,0x49,0x4a,0x48,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x10,0x10,0x10,0x10,0x55,0x5a,0x50,0x90,0x10,0x10,0x10,0x10,0x19,0x26,0x44,0x88,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x10,0x10,0x13,0x10,0xfc,0x17,0x11,0x19,0x37,0xd1,0x11,0x17,0x10,0x10,0x53,0x20,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0, ++0x10,0x10,0x13,0x1c,0x20,0x23,0x7d,0x91,0x17,0x79,0x11,0x13,0x14,0x18,0x13,0x0,0x8,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0xfc,0x40,0x50,0xf8,0x0, ++0x0,0x0,0x3f,0x1,0x1,0x7f,0x9,0x9,0xff,0x9,0x9,0x7f,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x8,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x10,0xf8,0x0, ++0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x20,0xe0,0x20, ++0x10,0x17,0x10,0x13,0xfc,0x17,0x39,0x32,0x57,0x5a,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x8,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x83,0x82,0xfe,0x82,0x20,0x10,0xfe,0x4,0xfe,0x84,0xfc,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x40, ++0x0,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x28,0x2e,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1e,0x4,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x40,0x37,0x10,0x83,0x62,0x23,0x8,0x13,0x20,0xe0,0x2f,0x20,0x20,0x21,0x20,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x64,0xfe,0x40,0x40,0x40,0x80, ++0x10,0x10,0x20,0x27,0x48,0xfa,0x12,0x22,0x42,0xfb,0x42,0x0,0x18,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0, ++0x1,0x7f,0x1,0x3f,0x2,0x7f,0x8,0x1f,0xe8,0xf,0x10,0x7c,0x54,0x7c,0x12,0xfe,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x20,0xf0,0x2e,0xe4,0x20,0xf8,0xa8,0xf8,0x24,0xfc, ++0x0,0xf7,0x52,0x31,0x52,0x94,0x10,0x14,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x20,0xa0,0xa8,0xa4,0xa0,0xae,0xf0,0x20,0xa4,0x24,0x18,0x10,0x30,0x4a,0x8a,0x4, ++0x10,0x10,0x20,0x20,0x4b,0xfa,0x13,0x22,0x43,0xf8,0x40,0x7,0x18,0xe0,0x40,0x0,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x1,0x0,0x1f,0x11,0x91,0x51,0x55,0x15,0x35,0x55,0xd5,0x15,0x25,0x25,0x4e,0x4,0x0,0x84,0xfe,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x22,0xe2,0x1e,0x0, ++0x8,0x8,0xff,0x8,0x1,0x41,0x33,0x12,0x4,0x10,0xe0,0x20,0x21,0x21,0x22,0xc,0x20,0x24,0xfe,0x20,0x0,0x8,0xfc,0x8,0x90,0x80,0x80,0x80,0x40,0x30,0xe,0x4, ++0x2,0x11,0xf8,0x27,0x21,0x41,0x42,0x77,0xd0,0x51,0x51,0x52,0x54,0x77,0x50,0x0,0x8,0x98,0xa0,0xfe,0x8,0x8,0x52,0xbc,0x84,0x8,0x8,0x10,0xa4,0xfe,0x42,0x0, ++0x14,0x14,0x14,0x54,0x55,0x5e,0x54,0x54,0x54,0x54,0x54,0x54,0x5d,0xe6,0x44,0x0,0x50,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x8,0x1c,0xf0,0x11,0x10,0x14,0xfe,0x10,0x15,0x7e,0x44,0x45,0x44,0x44,0x7c,0x44,0x40,0x20,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20, ++0x8,0x4,0xff,0x8,0x8,0x12,0x7c,0x8,0x12,0x7e,0x0,0xa,0x29,0x28,0x48,0x7,0x20,0x44,0xfe,0x20,0x20,0x44,0xf8,0x10,0x24,0xfc,0x0,0x0,0x88,0xa4,0x24,0xe0, ++0x21,0x11,0x1,0xa,0x70,0x20,0x27,0x0,0xff,0x10,0x1f,0x10,0x13,0x10,0x16,0x38,0x0,0x8,0xfc,0x48,0x40,0xa0,0x1c,0x4,0xfe,0x0,0xe0,0x20,0x20,0xa4,0x24,0x1c, ++0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x13,0x16,0x18,0x10,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8, ++0x4,0x4,0x4,0x24,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x8,0x9,0xff,0x8,0x7f,0x49,0x49,0x4b,0x18,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x54,0x55,0x56,0x54,0x11,0x2a,0x44,0x81,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0x24,0x44,0x84,0x28,0x10, ++0x0,0x40,0x30,0x11,0x1,0x2,0x8,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x8,0xfc,0x8,0x50,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x5,0xfe,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0xfd,0x6,0x4,0x4,0x4,0xcc,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x44,0x20,0xa4,0x8a,0x8a,0x78,0x0, ++0x4,0x4,0xff,0x14,0x1f,0x12,0x2e,0x25,0x48,0x11,0x2,0x4,0x52,0x51,0x90,0xf,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x88,0xc8,0x28,0x10,0x0,0x4,0x92,0x92,0xf0, ++0x4,0x8,0x7f,0x44,0x44,0x47,0x44,0x48,0x54,0x42,0x41,0x42,0x44,0x48,0x7f,0x40,0x0,0x4,0xfe,0x4,0x4,0xe4,0x24,0x44,0x44,0x84,0x4,0x84,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x8,0x1f,0x12,0x22,0x4a,0x86,0x5,0x4,0x8,0x11,0x22,0x44,0x8,0x0,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0xc4,0x34,0x14,0x4,0x28,0x10, ++0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x21,0x42,0x84,0x0,0x20,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x50,0x88,0x88,0xc,0x6,0x4, ++0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x21,0x41,0x82,0x0,0xff,0x0,0x0,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4,0x0,0xfe,0x0, ++0x0,0x40,0x2f,0x20,0x7,0x1,0xf,0x12,0x24,0xeb,0x30,0x27,0x20,0x21,0x22,0x24,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfc,0x20,0x10,0xee,0x84,0xf0,0x80,0x40,0x30,0x10, ++0x8,0x8,0x4a,0x2a,0x1c,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x88,0x8,0xb,0x8,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0, ++0x2,0x7f,0x14,0x15,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x28,0x28,0xfe,0x28,0xa8,0x28,0xfe,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44, ++0x10,0x12,0x1f,0x24,0x42,0x10,0x8,0xff,0x10,0x1c,0x14,0x27,0x24,0x44,0x94,0xb,0x20,0x24,0x3e,0x48,0x84,0x80,0xfe,0x40,0x7c,0xa0,0x24,0xfe,0x20,0x50,0x8e,0x4, ++0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x12,0x12,0x12,0x12,0x15,0x18,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0, ++0x0,0x78,0x4b,0x4a,0x4d,0x78,0x11,0x11,0x5d,0x50,0x53,0x52,0x5f,0xe2,0x40,0x0,0x40,0x20,0xfe,0x8a,0x24,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0xfe,0x22,0x20,0x20, ++0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0xa,0x32,0xc4,0xf,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x9e,0x44,0xe0, ++0x2,0x1,0x7f,0x44,0x99,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x41,0x7f,0x41,0x1,0x1,0x0,0x0,0xfe,0x42,0x34,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xfc,0x4,0x0,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x33,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0, ++0x1,0x21,0x21,0x3f,0x28,0x11,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x8,0xf8,0x8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0, ++0x8,0x9,0x9,0x11,0x11,0x30,0x51,0x93,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0x24,0x24,0xfc,0xa0,0x14,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x8,0x7c,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x49,0x5a,0x84,0x80,0x80,0xf8,0x10,0x24,0xfe,0x0,0x78,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0, ++0x1,0x0,0x1f,0x10,0x90,0x57,0x51,0x11,0x32,0x54,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x80,0x48,0xfc,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x53,0x90,0x10,0x10,0x10,0x10,0x40,0x20,0x28,0xfc,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x40,0x30,0x17,0x1,0x81,0x61,0x22,0x4,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xac,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x3e,0x2,0x12,0xa,0x12,0x1,0x7f,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0xf8,0x8,0x48,0x28,0x48,0x0,0xfc,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x14,0xff,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x50,0x20, ++0x2,0x2,0xff,0x4,0x8,0xb,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x11,0x10,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x1,0x0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x4,0xfe,0x13,0x10,0x21,0x24,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x88,0x4c,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x40,0x88,0xfc,0x10,0x10,0x14,0xfe,0x0, ++0x20,0x23,0x22,0x23,0xfa,0x23,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x2f,0xa0,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x80,0xfc,0x84,0xa8,0x90,0x90,0xae,0xc4, ++0x11,0x10,0x10,0x17,0xfc,0x13,0x10,0x1f,0x30,0xd1,0x11,0x12,0x14,0x18,0x53,0x20,0x8,0x98,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x8,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x11,0x11,0x11,0x17,0xfd,0x11,0x17,0x18,0x33,0xd2,0x12,0x13,0x12,0x12,0x53,0x22,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x12,0x12,0xfa,0x12,0x15,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x1f,0x20,0x20,0x7f,0x90,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x11,0x11,0x17,0x11,0xfc,0x10,0x11,0x1a,0x35,0xd0,0x13,0x12,0x12,0x12,0x53,0x22,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x20,0x20,0x0,0xf,0xe0,0x21,0x21,0x22,0x22,0x24,0x28,0x50,0x8f,0x0,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0x0,0x40,0x20,0x10,0x18,0x8,0x6,0xfc,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x1f,0x20,0xcf,0x8,0x8,0x8,0xf,0x8,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x20,0xf8,0xe,0xe4,0x20,0x20,0x20,0xe0,0x20, ++0x1,0x0,0x1f,0x92,0x52,0x5f,0x12,0x31,0x52,0xd7,0x18,0x17,0x24,0x24,0x47,0x4,0x0,0x84,0xfe,0x20,0x28,0xfc,0xa0,0x40,0x20,0xf0,0xe,0xf4,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x0,0xff,0x2,0x2,0x2,0x3,0x4,0xc,0xa,0x11,0x20,0x40,0x0,0x3,0xc,0x30,0x4,0xfe,0x0,0x0,0x0,0xf8,0x8,0x8,0x10,0x90,0xa0,0x40,0x80,0x0,0x0,0x0, ++0x10,0x10,0x1f,0x20,0x2f,0x61,0xbf,0x22,0x24,0x2c,0x32,0x21,0x22,0x24,0x28,0x21,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x20,0x90,0x9e,0xa4,0xc0,0xa0,0x98,0x88,0x80, ++0x8,0x7f,0x8,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x22,0x7f,0x22,0xff,0x22,0x41,0x50,0x48,0x44,0xfe,0x40,0x48,0x48,0x50,0x50,0x20,0x20,0x60,0x90,0x92,0xa,0x6, ++0x9,0x9,0x7f,0x9,0x9,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x50,0x20,0x0, ++0x4,0xfe,0x20,0x20,0x3c,0x25,0x27,0x44,0xa5,0x15,0x9,0x9,0x11,0x21,0x41,0x0,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x40,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x6, ++0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0xa0,0x90,0xbc,0xc0,0x42,0x32,0xe,0xf0,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x10, ++0x8,0x8,0x10,0x37,0xd0,0x10,0x12,0x11,0xff,0xa,0x9,0x18,0x28,0xc9,0xa,0xc,0xa0,0x90,0xfc,0x80,0x40,0x24,0x1c,0x0,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x8,0x8,0x13,0x20,0x48,0x8,0x17,0x30,0x50,0x97,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20, ++0x0,0x40,0x27,0x20,0xf,0x0,0xe7,0x20,0x24,0x22,0x24,0x28,0x22,0x51,0x8f,0x0,0x80,0x90,0xf8,0x90,0xfc,0x90,0xf0,0x80,0x90,0xa0,0x98,0x88,0x80,0x6,0xfc,0x0, ++0x4,0x4,0x8,0x10,0x7f,0x0,0x3f,0x20,0x20,0x3f,0x2,0x11,0x50,0x50,0x8f,0x0,0x0,0x40,0x20,0x10,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0x80,0x94,0x12,0xf2,0x0, ++0x4,0xfe,0x48,0x4b,0x7a,0x4c,0x48,0x48,0x78,0x48,0x48,0x4d,0xf9,0xa,0xc,0x8,0x40,0x40,0x44,0xfe,0x44,0x48,0x60,0x60,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x1e,0x32,0xd2,0x13,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0, ++0x0,0x1f,0x10,0x12,0x11,0x11,0x10,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x10,0x8,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x1,0x1,0x1,0x10,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x41,0x22,0x14,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x48,0x48,0x50,0x50,0x48,0x44,0x44,0x44,0x64,0xd4,0x48,0x40,0x40, ++0x11,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x17,0x10,0x10,0x50,0x20,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20, ++0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x25,0x54,0x88,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0, ++0x10,0x1f,0x10,0x3f,0x40,0xbf,0x12,0xa,0x5,0x38,0x2,0x12,0xa,0x5,0x8,0x70,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x50,0x90,0x10,0xf0,0x10,0x50,0x90,0x12,0xca,0x24, ++0x10,0x10,0x17,0x24,0x24,0x64,0xa7,0x24,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0, ++0x12,0x11,0x10,0x13,0x5a,0x56,0x53,0x92,0x12,0x13,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x44,0x33,0x11,0x80,0x40,0x41,0xa,0x10,0x22,0xe1,0x20,0x20,0x21,0x22,0x2c,0x40,0x44,0x4c,0x50,0x40,0xa0,0x1c,0x48,0x40,0x48,0x58,0xa0,0x90,0x10,0xe,0x4, ++0x0,0x40,0x2f,0x21,0x2,0x4,0xef,0x21,0x29,0x25,0x22,0x2a,0x33,0x24,0x8,0x10,0x8,0x1c,0x70,0x10,0x10,0x10,0x5c,0x50,0x50,0x50,0x50,0x7c,0x0,0x80,0x46,0x3c, ++0xa,0x7d,0x8,0xb,0xa,0x7a,0x4b,0x42,0x42,0x7b,0x8,0xf,0x8,0x8,0x50,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40, ++0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0x41,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0xfc,0x8,0x20,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x4, ++0x1,0x21,0x19,0x9,0x1,0x1,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x7f,0x0,0x0,0x8,0x18,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x12,0x11,0xfd,0x10,0x17,0x18,0x30,0xd0,0x13,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x11,0xd,0x5,0x7f,0x40,0x8f,0x8,0x8,0x8,0xf,0x4,0x4,0x4,0x8,0x30,0x0,0x10,0x30,0x40,0xfe,0x22,0xf4,0x20,0x20,0x20,0xe0,0x80,0x80,0x84,0x84,0x7c, ++0x8,0x8,0xff,0x8,0x47,0x30,0x10,0x81,0x47,0x11,0x21,0xe2,0x22,0x24,0x29,0x20,0x20,0x24,0xfe,0x20,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x10,0x10,0x12,0x11,0xfd,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x10,0x14,0x14,0x17,0x50,0x20,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x0,0xfe,0x82,0x92,0x92,0xf2,0xa,0x4, ++0x4,0x7f,0x44,0x46,0x45,0x45,0x7c,0x13,0x12,0x5e,0x53,0x52,0x5e,0xf2,0x43,0x2,0x1c,0xe0,0x48,0x2c,0x28,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x1f,0x22,0x22,0x64,0xaf,0x21,0x21,0x2f,0x21,0x21,0x21,0x2f,0x24,0x20,0x4,0x44,0xe4,0x4,0x94,0x54,0xd4,0x14,0x14,0xd4,0x14,0x14,0xc4,0x4,0x14,0x8, ++0x1,0x2,0xf,0x8,0xa,0x9,0x8,0x8,0xf,0x8,0x2,0x22,0x22,0x3f,0x20,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x60,0x4,0xfe,0x4,0x4,0x24,0x24,0xe4,0x34,0x8, ++0x20,0x10,0x13,0x0,0xfd,0x8,0x13,0x38,0x54,0x93,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfe,0x8,0x48,0x28,0x8,0x28,0x10, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x0,0x0,0xff,0x0,0x8,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x14,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x1,0x7f,0x8,0x10,0x22,0x41,0x7f,0x8,0xa,0x7f,0x8,0x8,0x8,0xf,0xf8,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x4,0x84,0x14,0x8, ++0x8,0x1f,0xf0,0x12,0x11,0xfd,0x10,0x3b,0x36,0x52,0x53,0x92,0x12,0x12,0x13,0x12,0x1c,0xe0,0x48,0x4c,0x48,0x10,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x2,0x41,0x37,0x10,0x1,0x3,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2b,0x44,0x3,0x8,0x10,0xfc,0x80,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x6,0xfc, ++0x1,0x41,0x33,0x12,0x4,0x10,0x21,0xc6,0x40,0x1f,0x12,0x12,0x12,0x12,0xff,0x0,0x0,0x8,0xfc,0x48,0x40,0xa0,0x10,0xe,0x4,0xf0,0x90,0x90,0x90,0x94,0xfe,0x0, ++0x10,0x10,0x2f,0x20,0x47,0x94,0x14,0x27,0x60,0xaf,0x20,0x21,0x25,0x25,0x28,0x20,0x40,0x44,0xfe,0x40,0xfc,0xa4,0xa4,0xfc,0x0,0xfe,0x40,0x20,0x24,0xa,0xfa,0x0, ++0x8,0xb,0x12,0x13,0x22,0x4b,0x88,0x17,0x30,0x50,0x9f,0x12,0x11,0x11,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20, ++0x10,0x10,0x22,0x7f,0x42,0x43,0x42,0x42,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x4,0x28,0x10, ++0x8,0x7f,0x48,0x4a,0x49,0x49,0x7b,0x14,0x13,0x5a,0x52,0x53,0x5d,0xe0,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0, ++0x10,0x10,0x17,0x10,0x54,0x58,0x50,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x3e,0x2,0x12,0xc,0x8,0x1f,0x20,0xcf,0x8,0x8,0xf,0x4,0x2,0x7f,0x0,0x80,0x90,0xa0,0x48,0x50,0x20,0xf0,0x2e,0xf4,0x20,0x20,0xe0,0x40,0x88,0xfc,0x0, ++0x10,0x14,0x3e,0x49,0x5,0x1,0x3f,0x1,0xff,0x0,0x0,0x3f,0x8,0x4,0x1,0x0,0x40,0x48,0xfc,0x20,0x10,0x0,0xf8,0x0,0xfe,0x40,0x50,0xf8,0x40,0x40,0x40,0x80, ++0x8,0x7f,0x48,0x4a,0x49,0x79,0x4b,0x4c,0x4b,0x7a,0x4a,0x4b,0x49,0x78,0x4f,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x8,0xfe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0, ++0x3e,0x12,0xc,0xf,0x10,0x2f,0xc8,0xf,0x4,0x7f,0x0,0x7,0x4,0x4,0x8,0x30,0x90,0xa0,0x48,0xf0,0x10,0xee,0x24,0xe0,0x48,0xfc,0x40,0xe0,0x40,0x44,0x44,0x3c, ++0x0,0xfe,0x2,0x42,0x24,0x24,0x18,0x8,0x18,0x14,0x24,0x22,0x42,0x80,0x0,0x0,0x0,0xfc,0x84,0x88,0x88,0x90,0xa0,0x98,0x84,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80, ++0x23,0x22,0x22,0x23,0xfa,0x22,0x23,0x20,0x2f,0x20,0x3a,0xe2,0x42,0x5,0x8,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x40,0x50,0x78,0x40,0x40,0xc6,0x7c, ++0x10,0x10,0x17,0x24,0x24,0x64,0xa4,0x27,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x90,0x12,0x4a,0x2a,0x4, ++0x0,0x40,0x2f,0x22,0x1,0x87,0x44,0x4d,0x14,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x80,0x44,0xfe,0x8,0x14,0xfe,0x44,0xf4,0x44,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x0,0x40,0x20,0x2f,0x8,0x8,0xe8,0x2f,0x28,0x28,0x28,0x2f,0x28,0x50,0x8f,0x0,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8,0x6,0xfc,0x0, ++0x2,0x7,0x78,0x8,0x8,0xa,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x20,0x20,0x20,0x44,0x7e,0x88,0x48,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x12,0x1f,0x28,0x45,0x81,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x44,0x28,0x10,0x29,0x49,0x89,0xa,0x18,0x28,0x48,0x88,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x24,0xeb,0x21,0x22,0x24,0x21,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x40,0xfc,0x50,0x4c,0x44,0x40,0x80, ++0x0,0x7e,0x2,0x22,0x1a,0x12,0x23,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x8,0x48,0x38,0x28,0x48,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x40,0x24,0xfe,0x88,0x54,0xfe,0x24,0xfc,0x24,0x74,0x54,0x54,0x74,0x4,0x14,0x8, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x8,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x50,0xd0,0x2a,0xa,0x4, ++0x2,0x1,0x3f,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x28,0x4a,0x4d,0x88,0x0,0x0,0x4,0xfe,0x0,0x70,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0xa4,0x94,0xc, ++0x0,0x20,0x22,0x22,0x22,0x22,0xfb,0x26,0x22,0x22,0x22,0x22,0x3a,0xe2,0x41,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0, ++0x4,0x7f,0x4,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x1,0x1,0x48,0xfc,0x40,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x50,0x20,0x0, ++0x10,0x14,0x3e,0x49,0xbf,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x80,0x88,0xfc,0x20,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x24,0x18,0x0, ++0x2,0x1,0x3f,0x8,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x10,0xf8,0x20,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0, ++0x8,0x6,0x2,0x7f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x19,0x61,0x1,0x1,0x20,0x60,0x88,0xfc,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x4,0x14,0x8,0x0,0x0, ++0x4,0x42,0x2f,0x20,0x0,0xf,0xe8,0x28,0x2f,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x10,0x28,0xfc,0x88,0x88,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x86,0xfc, ++0x10,0x10,0x27,0x21,0x48,0xff,0x14,0x28,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x40,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40, ++0x10,0x15,0xfe,0x10,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x7c,0x44,0xfe,0x0,0x28,0x45,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x40,0x48,0x86,0x2, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x0,0x40,0x37,0x10,0x83,0x62,0x23,0xa,0x13,0x22,0xe3,0x22,0x2f,0x21,0x23,0x24,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x27,0x24,0x3c,0x25,0x2,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0xfe,0x0,0x88,0x86,0x2, ++0x2,0x2,0x2,0x3,0x2,0x2,0x3f,0x20,0x20,0x20,0x3f,0x0,0x29,0x24,0x44,0x80,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x10,0xc8,0x44,0x4, ++0x4,0x4,0x4,0x3f,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0x30,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0x48,0x48,0x48,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x7c,0x11,0x7d,0x12,0xff,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x45,0x56,0x48,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x20,0xa8,0xbc,0xa0,0xa0,0xa0,0x60,0x26,0x1c, ++0x8,0x8,0x7e,0x8,0xa,0x1c,0x68,0x8,0x2b,0x11,0x1,0x7f,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x48,0xc8,0x68,0x58,0x8a,0x6,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x2,0x2,0x2,0x7f,0x42,0x42,0x7f,0x42,0x42,0x7f,0x42,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x10,0x27,0x24,0x64,0xa4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4,0x0, ++0x8,0x8,0x1f,0x20,0x40,0x80,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x14,0x8, ++0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x80,0x88,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0x3e,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x10,0x8,0x7f,0x4,0x1f,0x14,0x14,0x18,0x1f,0x10,0x1f,0x1,0xff,0x2,0x4,0x38,0x10,0x20,0xfc,0x50,0xf8,0x50,0x50,0x30,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x78,0x10, ++0x0,0x40,0x30,0x17,0x84,0x68,0x27,0x0,0x12,0x22,0xe2,0x22,0x22,0x25,0x28,0x20,0x80,0x40,0x40,0xfe,0x4,0x8,0xfc,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0xc6,0x7c, ++0x0,0x7f,0x41,0x41,0x7f,0x40,0x52,0x7f,0x52,0x52,0x7f,0x40,0x52,0x51,0xa0,0x1,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0x86,0x4, ++0x8,0xfd,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8, ++0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x49,0x7b,0x49,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x14,0x24,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10, ++0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x41,0x5d,0x55,0x55,0x5d,0x51,0x85,0x2,0x20,0xa8,0x40,0x7e,0xc8,0x48,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40, ++0x0,0x7,0x44,0x24,0x25,0x4,0xc,0x17,0x24,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x30,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x0, ++0x10,0x10,0x10,0x10,0xff,0x12,0x17,0x1a,0x33,0xd2,0x10,0x1f,0x10,0x10,0x50,0x20,0x48,0x7c,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x0,0x0, ++0x10,0x10,0x10,0x1c,0x20,0x21,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x44,0x7e,0x84,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10, ++0x40,0x27,0x24,0x4,0x5,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x8,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x4,0x7e,0x45,0x45,0x45,0x7d,0x52,0x10,0x13,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x8c,0x6,0x4, ++0x4,0x8,0x34,0x3,0x6,0x1a,0x67,0x8c,0x13,0x6,0x19,0x2,0xd,0x1,0x6,0x38,0x40,0x20,0x58,0x80,0xc0,0x30,0xce,0x44,0x80,0x80,0xf0,0x20,0x40,0x80,0x0,0x0, ++0x0,0x9,0xfd,0x13,0x11,0x21,0x25,0x3f,0x65,0xa4,0x27,0x24,0x24,0x3d,0x22,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xf4,0x41,0x2,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x0,0x42,0x32,0x13,0x2,0x4,0xf0,0x17,0x10,0x10,0x10,0x11,0x12,0x28,0x44,0x3,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x80,0xa0,0x18,0x8,0x0,0x6,0xfc, ++0x0,0x41,0x31,0x17,0x1,0x1,0xf1,0x11,0x11,0x10,0x17,0x10,0x14,0x19,0x12,0x0,0x50,0x50,0x54,0xfe,0x50,0x50,0x70,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x1f,0x4,0x3,0x3e,0x14,0x8,0x76,0x0,0x7f,0x40,0x9f,0x10,0x1e,0x11,0x10,0xff,0xf0,0x40,0x80,0xf8,0x50,0x20,0xdc,0x0,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x14,0xfe, ++0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x78,0x4f,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x8,0x7f,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x13,0x1c,0x20,0x20,0x7c,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x20,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x58,0x84,0x2, ++0xf,0x8,0xf,0x28,0x2f,0x28,0x2f,0x20,0x3e,0x2,0xfe,0x12,0x12,0x22,0xc2,0x2,0xe0,0x20,0xe0,0x28,0xe8,0x28,0xe8,0x8,0xf8,0x80,0xfc,0x84,0x84,0x84,0x84,0x80, ++0x10,0x10,0x10,0x1d,0x21,0x22,0x7d,0x90,0x10,0x7d,0x11,0x11,0x15,0x1a,0x14,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0xfc,0x20,0x28,0x3c,0x20,0x20,0x20,0xa0,0x66,0x3c, ++0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x0,0x20,0xf0,0x0,0x0,0x0,0x6,0xfc,0x0, ++0x0,0x40,0x27,0x20,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x10,0x3f,0x0,0xf0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0xf8,0x8, ++0x2,0x2,0x2,0xff,0x4,0x9,0x9,0x11,0x3f,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x40,0x20,0x10,0x18,0x8,0x0, ++0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x2,0xc,0x30,0xc6,0x1,0x0,0x6,0x1,0x0,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4,0x80,0x0,0x0,0x80,0x40, ++0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x44,0xfe,0x40,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc, ++0x21,0x2f,0x21,0x27,0xb0,0xaf,0xa0,0x27,0x24,0x27,0x24,0x27,0x20,0x27,0x20,0x2f,0x14,0xfe,0x10,0xfc,0x40,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe, ++0x0,0x8,0x7c,0x0,0x5,0xfe,0x10,0x10,0x20,0x24,0x42,0xfe,0x41,0x1,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x38,0x35,0x53,0x50,0x91,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x48,0xfc,0x80,0x80,0xa0,0x24,0xfe,0x20,0x28,0x24,0x22,0x22,0xa0,0x40, ++0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x0,0x40,0x23,0x10,0x10,0x1,0x1,0xb,0x10,0x60,0x20,0x21,0x22,0x24,0x20,0x0,0x40,0x48,0xfc,0x80,0x80,0x20,0x24,0xfe,0x20,0xa0,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x0,0x43,0x32,0x12,0x83,0x42,0x4a,0x12,0x12,0x22,0xe2,0x22,0x22,0x22,0x22,0x22,0x4,0xfe,0x4,0x14,0xfc,0x4,0x14,0xfc,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x1,0xa,0x37,0x24,0x24,0x27,0x24,0x2c,0x37,0x20,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xdc,0x48,0x48,0xc8,0x48,0x48,0xd8,0x8,0x40,0x42,0x42,0x42,0x3e,0x0, ++0x10,0x11,0x10,0x10,0xfc,0x11,0x14,0x18,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x10,0x10,0xd0,0x50,0x10,0x10,0xd0,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10, ++0x0,0x8,0x6,0x2,0x10,0xc,0x4,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x78,0x48,0x53,0x50,0x60,0x57,0x48,0x4a,0x4a,0x6a,0x52,0x45,0x44,0x48,0x40,0x40,0x40,0x50,0xf8,0x40,0x48,0xfc,0x40,0x50,0x78,0x40,0x40,0x40,0xc6,0x3c,0x0, ++0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x0,0x8,0x4,0x2,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x0,0x20,0x40,0x84,0xfe,0x0, ++0x0,0x47,0x20,0x20,0x3,0x2,0xf2,0x13,0x10,0x11,0x10,0x17,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xa0,0xfc,0x0,0x6,0xfc,0x0, ++0x1,0x0,0x1f,0x10,0x97,0x50,0x53,0x12,0x32,0x52,0xd3,0x10,0x21,0x20,0x4f,0x0,0x0,0x84,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0, ++0x10,0x12,0x7f,0x12,0x14,0xff,0x8,0x12,0x3f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0xe,0x8,0xff,0x28,0x2a,0x49,0x58,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x1,0x3f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf8,0x10,0x60, ++0x10,0x10,0x51,0x50,0x7c,0x53,0x90,0x14,0x19,0x30,0xd7,0x10,0x10,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4, ++0x0,0x44,0x28,0x10,0x2b,0x4a,0x8a,0x1a,0x2a,0x4b,0xa,0x8,0x8,0x8,0x57,0x20,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x48,0x78,0x84,0x4, ++0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x11,0x10,0x17,0x10,0x14,0x18,0x10,0x3,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x50,0x8c,0x4, ++0x10,0x10,0x10,0x11,0xfc,0x10,0x17,0x10,0x10,0x11,0x1e,0xe4,0x48,0x10,0x0,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88, ++0x8,0x7c,0x48,0x49,0x48,0x78,0x4f,0x48,0x48,0x79,0x4a,0x4c,0x48,0x78,0x48,0x0,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88, ++0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x10,0x28,0x44,0x84,0x40,0x40,0x44,0xf8,0x48,0x50,0xfe,0x48,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88, ++0x10,0x10,0x10,0x14,0xfe,0x10,0x31,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x3b,0x42,0x82,0x7b,0x22,0x22,0xfa,0x23,0x22,0x2a,0x34,0x24,0x8,0x3,0x40,0x24,0xfe,0x50,0x50,0xfc,0x50,0x70,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x3e,0x24,0x24,0x24,0x3c,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x54,0x88,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x23,0x20,0x2f,0x22,0x21,0x20,0x43,0x8c,0x30,0x0,0x84,0xfe,0x20,0x28,0xfc,0x20,0xe0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4, ++0x0,0x40,0x37,0x14,0x84,0x67,0x24,0x4,0x14,0x25,0xe4,0x24,0x28,0x28,0x31,0x26,0x80,0x44,0xfe,0x90,0x94,0xfe,0x90,0xf0,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x2a,0x46,0x84,0x8,0x40,0x20,0x20,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x20,0x11,0x11,0xfd,0x1,0x48,0x4b,0x48,0x49,0x49,0x11,0x1d,0xe1,0x41,0x1,0x20,0x20,0x24,0x24,0x24,0xfc,0x0,0xfe,0x44,0xfe,0x54,0x54,0x54,0x54,0x4,0xc, ++0x20,0x20,0x2b,0x3c,0x50,0x91,0x11,0x15,0xff,0x11,0x10,0x11,0x28,0x24,0x47,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x90,0x94,0xfe,0x0, ++0x21,0x26,0x3c,0x44,0x87,0x7c,0x24,0x27,0xfd,0x24,0x24,0x27,0x2c,0x34,0x25,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x0,0x6,0x38,0x20,0x24,0x3e,0x21,0x24,0x3e,0x20,0x20,0x3e,0xe0,0x20,0x20,0x23,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x44,0x64,0x55,0x4e,0x44,0x7f,0x44,0x4e,0x55,0x64,0x44,0x44,0x7f,0x40,0x1,0x0,0xc,0xf0,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8, ++0x21,0x26,0x24,0x44,0x4f,0xf4,0x24,0x47,0x45,0xfc,0x4,0xf,0x34,0xc4,0x5,0x6,0x88,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x11,0x11,0x1d,0xe1,0x41,0x1,0x1,0x1,0x80,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0, ++0x10,0x8,0x4,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x8,0x10,0x60,0x10,0x20,0x50,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x69,0x51,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x8,0x6,0x4, ++0x0,0x0,0x0,0xfc,0x7,0x4,0x48,0x29,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20, ++0x24,0x22,0x3f,0x20,0x2f,0xf8,0x2f,0x20,0x2f,0x21,0x22,0x3f,0xe2,0x42,0xa,0x4,0x20,0xa0,0xe0,0x24,0xbe,0xc4,0xa4,0x24,0xa4,0x28,0x28,0x90,0x10,0x28,0x46,0x84, ++0x0,0x8,0x7c,0x4f,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e, ++0x8,0x7f,0x48,0x49,0x49,0x49,0x79,0x51,0x11,0x59,0x50,0x57,0x59,0xe0,0x40,0x0,0x88,0xfe,0x54,0xfe,0x54,0xdc,0x4,0xfc,0x4,0xfc,0x8,0xfe,0x8,0x88,0x28,0x10, ++0x10,0xa,0xff,0x0,0x7e,0x43,0x42,0x7e,0x0,0x7e,0x4,0x8,0xfe,0x8,0x29,0x12,0x40,0x40,0x44,0x7e,0x88,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x11,0x14,0xfe,0x11,0x55,0x55,0x55,0x55,0x7d,0x55,0x11,0x14,0x18,0x10,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x49,0x49,0x49,0x4f,0x49,0x41,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0x24,0x24,0xe4,0x4,0x14,0xf4,0x4,0xfc,0x4, ++0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0xfd,0x11,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x48,0x48,0x8f,0x8,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x47,0x24,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x29,0x21,0x50,0x8f,0x0,0x38,0xc0,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x6,0xfc,0x0, ++0x20,0x2f,0x24,0x25,0xfa,0x25,0x28,0x20,0x3f,0xe0,0x28,0x25,0x22,0x25,0xa8,0x50,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84, ++0x0,0x8,0x7c,0x49,0x4a,0x48,0x48,0x49,0x4e,0x48,0x49,0x7a,0x48,0x0,0x1,0x6,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x7e,0x84,0x88,0x50,0x20,0x40,0x80,0x0, ++0x2,0x2,0x7,0x8,0x18,0x25,0x2,0xc,0x71,0x2,0xc,0x12,0x21,0x1,0xe,0x70,0x0,0x0,0xf0,0x20,0x40,0x80,0x80,0x80,0xfc,0x8,0x10,0x20,0xc0,0x0,0x0,0x0, ++0x1,0x1,0x7f,0x2,0x4,0x8,0x30,0xc0,0x0,0x7f,0x4,0x2,0x2,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x24,0x20,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x16,0x10,0x1f,0x10,0x1c,0xf1,0x42,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0xc0,0xe0,0x50,0x48,0x46,0x44,0x40, ++0x8,0x10,0x3c,0x24,0x3c,0x24,0x3d,0x24,0xff,0x14,0x14,0x24,0x24,0x45,0x96,0x8,0x8,0xfc,0x88,0x88,0x88,0x88,0x26,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x26,0x24,0x20, ++0x0,0xf,0x8,0x8,0x8,0x8,0x31,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x20,0xf0,0x20,0x20,0x20,0x20,0x1c,0x0,0xfe,0x0,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x8,0x7d,0x49,0x49,0x49,0x49,0x7a,0x10,0x17,0x58,0x50,0x51,0x5d,0xe2,0x44,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xc,0x40,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40, ++0x8,0x10,0x3c,0x25,0x35,0x2e,0x24,0xfc,0x24,0x34,0x2c,0x24,0x24,0x44,0x94,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xa0,0xc0,0x80,0x84,0x84,0x7c,0x0, ++0x2,0x3f,0x22,0x22,0x22,0x22,0x49,0x9,0xff,0x8,0x1c,0x2b,0x49,0x88,0x8,0x8,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x10,0x10,0x17,0x11,0x59,0x56,0x53,0x94,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x84,0xfe,0x0,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x0,0x7b,0x48,0x49,0x52,0x4c,0x48,0x68,0x50,0x41,0x41,0x3f,0x1,0x1,0xff,0x0,0x44,0xfe,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x98,0x0,0xf8,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xf2,0x41,0x10,0xd4,0x92,0x90,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2, ++0x10,0x10,0x13,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x5c,0x74,0x42,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2, ++0x8,0x38,0xec,0x2a,0x28,0xfe,0x28,0x28,0x38,0xea,0x2c,0x28,0x35,0x24,0xa5,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8, ++0x8,0x9,0xf,0x11,0x11,0x3f,0x51,0x91,0x11,0x13,0x1d,0x11,0x11,0x11,0x15,0x12,0x20,0xa8,0x24,0x20,0x24,0xfe,0x20,0x20,0xa4,0x18,0x10,0x30,0x48,0x8a,0x6,0x2, ++0x10,0x8,0x7f,0x41,0x92,0x1e,0x22,0x54,0x8,0x14,0x22,0x7f,0xa2,0x22,0x3e,0x20,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82, ++0x1,0x41,0x31,0x11,0x1,0x3,0xf5,0x19,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0x2c,0x30,0x20,0x60,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x27,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x44,0x86,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2, ++0x0,0x7f,0x4,0x24,0x14,0x14,0x4,0x4,0xff,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x8,0xfc,0x40,0x48,0x58,0x60,0x40,0x44,0xfe,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0, ++0x0,0x3f,0x20,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x43,0x80,0x8,0xfc,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x58,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x2c,0x34,0x25,0x24,0x27,0x50,0x8f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x88,0x88,0x48,0x28,0xd0,0x6,0xfc,0x0, ++0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x10,0x22,0x3f,0x2,0x2,0x12,0xc,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x20,0x23,0x3c,0x24,0x4b,0x40,0xa0,0x20,0x21,0x22,0x20,0x28,0x30,0x22,0x1,0x10,0xd0,0x94,0x92,0x90,0xfe,0x90,0x90,0xd4,0x98,0x90,0xa8,0xc8,0x8a,0x86,0x2, ++0x0,0x3f,0x21,0x21,0x2f,0x21,0x22,0x24,0x28,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0x68,0x28,0xf8,0x8,0x0,0x84,0x92,0x12,0xf0, ++0x0,0xff,0x2,0x2,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x4,0xfe,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x8, ++0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0, ++0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20, ++0x8,0xc,0x8,0x1f,0x20,0x41,0x81,0x1,0x9,0x9,0x11,0x11,0x21,0x1,0x5,0x2,0x0,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x40,0x20,0x10,0x18,0x8,0x0,0x0,0x0, ++0x20,0x23,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x27,0x20,0x28,0x30,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8, ++0x0,0x47,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe2,0x2f,0x20,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8, ++0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x0,0x0,0xff,0x0,0x3f,0x0,0x7f,0x0,0x3f,0x20,0x24,0x24,0x24,0xa,0x11,0x60,0x28,0x24,0xfe,0x20,0xa0,0x20,0xe0,0x20,0xa0,0x90,0x90,0x90,0x92,0xa,0x8a,0x84, ++0x1,0x11,0x11,0x21,0x7f,0x2,0x2,0x7,0x6,0xa,0x9,0x10,0x21,0x42,0x8c,0x30,0x0,0x20,0x10,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4, ++0x0,0x7f,0x44,0x44,0x7f,0x20,0x18,0x8,0x0,0xf0,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10, ++0x10,0x1f,0x28,0x45,0x0,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x13,0x10,0x40,0x7c,0xa0,0x10,0x80,0x90,0x88,0xfe,0x80,0x50,0x50,0x20,0x60,0x92,0xa,0x6, ++0x8,0x8,0x8,0x10,0x10,0x30,0x57,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0xa0,0x98,0x88,0x80,0xfc,0x80,0x88,0x88,0x50,0x60,0x40,0xa0,0x12,0xa,0x6, ++0x0,0x0,0x7f,0x4,0x3,0x1,0x3f,0x0,0x0,0x1,0x6,0x8,0x30,0x48,0x7,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x0,0x0,0x6,0xfc,0x0, ++0x20,0x17,0x10,0x45,0x45,0x49,0x49,0x5f,0x69,0x48,0x48,0x49,0x4a,0x48,0x48,0x40,0x4,0xfe,0x4,0x44,0x24,0x4,0xf4,0x4,0x24,0xc4,0x84,0x44,0x54,0x34,0x4,0xc, ++0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x0,0x10,0xf8,0x20,0x27,0x20,0x20,0xf8,0x2f,0x20,0x20,0x20,0x39,0xe2,0x47,0x0,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x8,0x4,0xfe,0x2, ++0x8,0xff,0x8,0x4f,0x24,0x22,0x8f,0x62,0x2a,0x14,0x2f,0xe4,0x27,0x24,0x27,0x24,0x24,0xfe,0x20,0xf8,0x90,0xa0,0xfc,0xa0,0x90,0x8e,0xf4,0x90,0xf0,0x90,0xf0,0x10, ++0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0, ++0x0,0x3f,0x11,0xd,0x5,0xff,0x9,0x11,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x78,0x80,0x10,0x30,0x44,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0xe,0xf1,0x54,0x38,0xfe,0x11,0x54,0x92,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7d,0x44,0x4,0xde,0x44,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x44,0x44,0x44,0x54,0x88, ++0x10,0x14,0x12,0xfd,0x12,0x38,0x56,0x91,0x12,0x14,0x1,0xff,0x2,0x4,0x18,0x60,0x10,0x50,0x94,0x7e,0x90,0x38,0xd4,0x12,0x90,0x50,0x4,0xfe,0x80,0x40,0x3c,0x8, ++0x8,0xfd,0x11,0x11,0x21,0x29,0x7d,0xa9,0x29,0x29,0x29,0x29,0x3a,0x2a,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x10,0x11,0x3d,0x21,0x41,0xfd,0x11,0x11,0xfd,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x22,0x3f,0x40,0xbe,0x2a,0xff,0x2a,0x3e,0x2,0x1f,0x1,0x6,0x3f,0x9,0x19,0x22,0x20,0x24,0x7e,0xc4,0x28,0x90,0x2e,0xc4,0x20,0xc0,0x80,0x10,0xf8,0x20,0x18,0x8, ++0x0,0xf,0x8,0x8,0x8,0xa,0x9,0x9,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa0,0x20,0x20,0x22,0x22,0x22,0x1e,0x0, ++0x10,0x13,0x10,0x14,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x24,0x44,0x81,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x80,0x90,0xc,0x4, ++0x0,0x0,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x22,0x21,0x20,0x41,0x42,0x84,0x18,0x10,0x78,0x80,0x0,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4, ++0x0,0x40,0x33,0x12,0x2,0x2,0xf2,0x12,0x12,0x12,0x12,0x14,0x15,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0xf8,0x8,0x90,0x50,0x20,0x50,0x8c,0x4,0x0,0x6,0xfc, ++0x8,0x8,0xff,0x8,0x20,0x1b,0x4a,0x22,0x22,0xa,0xf2,0x22,0x22,0x22,0x21,0x20,0x20,0x24,0xfe,0x20,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x2,0x2,0xfe,0x0, ++0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x44,0x81,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4, ++0x2,0x44,0x29,0x11,0x29,0x49,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x50,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x9,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x48,0x48,0x50,0x30,0x20,0x50,0x48,0x8e,0x4, ++0x0,0x40,0x37,0x10,0x80,0x40,0x47,0x10,0x10,0x20,0xe0,0x21,0x26,0x29,0x20,0x20,0x10,0x38,0xc0,0x80,0x40,0x40,0xfc,0x8,0x30,0x40,0x80,0x0,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x1c,0xf0,0x41,0x1,0x2,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x8,0x8,0xff,0x8,0xa,0x1,0xff,0x4,0x4,0x7,0x4,0x4,0x8,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x4,0x3,0x1,0x0,0xff,0x4,0x4,0x7,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x25,0x25,0x4e,0x84,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x2,0x1,0x3f,0x20,0x3f,0x21,0x20,0x3f,0x22,0x22,0x23,0x22,0x44,0x44,0x88,0x10,0x0,0x8,0xfc,0x8,0xf8,0x0,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40, ++0x0,0x7c,0x44,0x48,0x4f,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x10,0x10,0x10,0x10,0xff,0x24,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x0,0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x10,0x10,0x20,0x20,0x47,0xfc,0x10,0x20,0x40,0xfc,0x40,0x0,0x1d,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x20,0x10,0x10,0x0,0xff,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x54,0x89,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x8,0x8,0xff,0x8,0x4,0x4,0x7c,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0x20,0x24,0xfe,0x20,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40,0x40, ++0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x40,0x40,0x44,0x7e,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40, ++0x0,0x8,0x7c,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x4f,0x0,0x0,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x94,0x9e,0x90,0x90,0x90, ++0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x24,0x2c,0x30,0x20,0x30,0x2c,0x24,0x20,0x20,0x10,0x12,0xa,0x4, ++0x4,0x7f,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x54,0x88,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0x2,0xfe,0x0, ++0x0,0x7f,0x42,0x42,0x5e,0x42,0x42,0x5e,0x42,0x42,0x7e,0x42,0x42,0x42,0x7f,0x0,0x4,0xfe,0x40,0x50,0x78,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x10,0x10,0x7,0x0,0xf0,0x10,0x13,0x10,0x10,0x10,0x17,0x14,0x18,0x10,0x0,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x9c,0x90,0x90,0x94,0x9e,0x90,0x90,0x90,0x90, ++0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x50,0x48,0x48,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x24,0x54,0x88,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20,0x20, ++0x1,0x0,0x3f,0x20,0x24,0x24,0x2f,0x21,0x23,0x22,0x25,0x24,0x28,0x30,0x43,0x8c,0x0,0x88,0xfc,0x80,0x90,0x88,0xfe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x1,0x41,0x2f,0x21,0x1,0x8f,0x49,0x9,0x1f,0x29,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20,0x20, ++0x4,0x7f,0x4,0x7f,0x44,0x7f,0x4,0x8,0x3f,0xd0,0x11,0x11,0x11,0x2,0xc,0x30,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x42,0x4a,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x8,0x8,0xff,0x8,0x4,0x4,0x8,0x10,0x20,0xcf,0x4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x80,0x80,0x40,0x30,0xe,0xe4,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x1,0x8,0x48,0x48,0x48,0x84,0x84,0x2,0xfc,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8, ++0x0,0x8,0x7c,0x48,0x48,0x49,0x49,0x4a,0x4d,0x48,0x48,0x78,0x49,0x1,0x2,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0x1,0x9,0x8,0x10,0x3f,0x48,0x8,0x8,0x12,0x21,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0x8,0x88,0x48,0xb8,0xa8,0x88,0x8a,0x8a,0x4, ++0x0,0x4,0x4,0x8,0x8,0x10,0x20,0x4f,0x84,0x4,0x4,0x4,0x4,0x8,0x11,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x8,0xee,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x80, ++0x10,0x10,0x20,0x20,0x48,0xf9,0x11,0x22,0x45,0xf8,0x40,0x0,0x19,0xe1,0x42,0x4,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x10,0x10,0x1c,0xf0,0x40,0x1,0x6,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x8,0x8,0xfe,0x18,0x2c,0x4b,0x8,0x1,0x11,0x9,0xa,0x4,0x8,0x30,0xc0,0x20,0x20,0x24,0xfe,0x60,0xb8,0x24,0x20,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4, ++0x0,0x41,0x31,0x11,0x82,0x64,0x28,0x7,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x10,0x10,0x10,0x54,0x38,0x11,0xfd,0x12,0x39,0x34,0x50,0x90,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0x90,0x90,0x8,0xe,0x4,0xf8,0x88,0x88,0x88,0x8,0x8,0x28,0x10, ++0x1,0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x8,0x9,0x9,0x11,0x12,0x32,0x54,0x9b,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x10,0x20,0x20,0x20,0x10,0x10,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x0,0x4,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x80,0x80,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc0,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0, ++0x10,0x10,0x13,0x10,0x59,0x57,0x51,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x54,0xfe,0x10,0xf8,0x8,0x48,0x48,0x48,0x48,0xa0,0x18,0x8, ++0x11,0xd,0x5,0x7f,0x3,0x5,0x19,0x4,0x4,0x3f,0x4,0x4,0xff,0x8,0x18,0x20,0x10,0x30,0x40,0xfc,0x80,0x40,0x3c,0x48,0x40,0xf8,0x40,0x44,0xfe,0x20,0x18,0x8, ++0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x3b,0x36,0x52,0x52,0x92,0x13,0x12,0x14,0x14,0x18,0x0,0x8,0xfc,0x8,0x8,0x8,0x18,0xa8,0x48,0x48,0xa8,0x18,0x8,0xa,0xa,0x6, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7c,0x51,0x14,0x1d,0xe4,0x40,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20, ++0x10,0x10,0x10,0x11,0x56,0x54,0x54,0x57,0x54,0x54,0x55,0x5c,0x65,0x0,0x0,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20, ++0x10,0x10,0x10,0x1d,0x22,0x20,0x7c,0x93,0x10,0xfc,0x11,0x10,0x15,0x18,0x10,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20, ++0x0,0x3f,0x20,0x28,0x24,0x22,0x22,0x21,0x21,0x22,0x22,0x24,0x28,0x30,0x40,0x80,0x10,0xf8,0x10,0x50,0x50,0x90,0x90,0x10,0x10,0x90,0x90,0x50,0x50,0x12,0xa,0x6, ++0x1,0x0,0x1f,0x10,0x97,0x54,0x56,0x15,0x34,0x54,0xd4,0x14,0x25,0x2a,0x48,0x10,0x0,0x84,0xfe,0x8,0xfc,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x1a,0xa,0x6, ++0x10,0x10,0x10,0x15,0x5a,0x50,0x50,0x93,0x10,0x10,0x29,0x24,0x45,0x40,0x80,0x0,0x80,0x80,0xfc,0x88,0x50,0x20,0xde,0x24,0xf8,0x20,0xfc,0x20,0xfc,0x20,0x20,0x20, ++0x0,0x41,0x23,0x24,0x0,0x1,0xee,0x20,0x27,0x20,0x23,0x20,0x27,0x20,0x50,0x8f,0x80,0xfc,0x8,0xb0,0x40,0xb0,0x4e,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc, ++0x0,0x47,0x30,0x12,0x2,0xa,0x12,0x12,0x23,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10, ++0x10,0x10,0x24,0x23,0x4a,0xf8,0x17,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x45,0x8,0x40,0x7c,0x88,0x50,0x20,0xd8,0x26,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x20,0x26,0xfc, ++0x0,0x47,0x24,0x24,0x6,0x5,0xe4,0x24,0x24,0x24,0x25,0x2e,0x34,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x18,0xa8,0x48,0x48,0xa8,0x18,0x18,0x8,0xa,0xa,0x6, ++0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x31,0xcf,0x1,0x1f,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1e,0xe4,0x0,0xf0,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x20,0x2f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x20,0x40,0x80,0x10,0xf8,0x10,0x10,0xf0,0x50,0x50,0x90,0x90,0x10,0x90,0xd0,0x50,0x12,0xa,0x6, ++0x10,0x12,0x12,0x2f,0x22,0x62,0xaf,0x2a,0x2a,0x2f,0x22,0x22,0x22,0x24,0x28,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40, ++0x0,0xff,0x0,0x1,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x6,0x12,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4, ++0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x49,0x8,0xff,0x10,0x1e,0x12,0x22,0x47,0x20,0xa0,0x20,0x24,0x7e,0x84,0x44,0x44,0x28,0x28,0x90,0x10,0x28,0x48,0x86,0x4, ++0x4,0x3e,0x24,0x25,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x20,0x57,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x14,0x24,0x24,0x44,0x84,0xc,0xf0,0x2,0x54,0x54,0x0,0x7c,0x8,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20, ++0x10,0x10,0x10,0x11,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x11,0x11,0x17,0xf9,0x11,0x17,0x1d,0x35,0xd7,0x11,0x11,0x11,0x12,0x54,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20, ++0x10,0x17,0x20,0xfb,0x22,0x52,0x53,0xf8,0x17,0x14,0xfc,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x10,0x11,0x14,0x7e,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x8,0xfc,0x0,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0xa,0x7f,0xa,0x7f,0x4a,0x7f,0xa,0xa,0x12,0x62,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0xaa,0x4a,0x4, ++0x10,0x12,0x1f,0x28,0x45,0x88,0x8,0x17,0x30,0x52,0x91,0x11,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x50,0x4c,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x10,0x10,0x17,0x20,0x22,0x62,0xa0,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4a,0x84,0x8,0xfc,0x88,0x88,0x88,0x98,0x80,0xfc,0xa4,0xa4,0xa8,0x90,0xa8,0xa8,0xc6,0x84, ++0x40,0x30,0x17,0x0,0x82,0x62,0x20,0xb,0x10,0x20,0xef,0x20,0x20,0x20,0x21,0x20,0x8,0x3c,0xc0,0x8,0x48,0x50,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x40,0x30,0x17,0x0,0x81,0x60,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x17,0x10,0x3,0xfa,0xa,0x13,0x38,0x57,0x94,0x14,0x17,0x14,0x14,0x17,0x14,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x20,0x10,0x10,0x1,0xfd,0xb,0x15,0x31,0x55,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x90,0x90,0x94,0x12,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0, ++0x4,0x4,0x4,0x7f,0x4,0x4,0x7f,0x44,0x44,0x7f,0x44,0x4,0x8,0x30,0xc0,0x0,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40, ++0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x20,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x10,0x10,0x17,0x24,0x24,0x64,0xa5,0x25,0x27,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0x80,0x88,0x88,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10, ++0x4,0x8,0x14,0x62,0x1,0xe,0x30,0xdf,0x1,0x1,0x3f,0x1,0x9,0x5,0x7f,0x0,0x40,0x20,0x50,0x8c,0x0,0xe0,0x1e,0xf4,0x0,0x10,0xf8,0x0,0x20,0x48,0xfc,0x0, ++0x4,0x8,0x34,0x3,0xc,0x30,0xc0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x40,0x0,0x40,0x20,0x58,0x80,0x60,0x1e,0xe4,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x80, ++0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x25,0x45,0x8d,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x5a,0x84,0x8,0x40,0x24,0xfe,0x40,0x44,0x44,0x84,0xfe,0x84,0xa4,0x94,0x94,0x84,0x84,0x94,0x88, ++0x2,0x1,0x3f,0x22,0x22,0x22,0x24,0x27,0x2c,0x35,0x24,0x24,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20, ++0x1,0x0,0x3f,0x22,0x22,0x25,0x2c,0x34,0x24,0x2f,0x29,0x2a,0x48,0x49,0x8a,0x8,0x0,0x84,0xfe,0x10,0x14,0xfe,0x90,0x10,0xb4,0xfe,0x44,0xa4,0x84,0x44,0x34,0x8, ++0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x88,0x7,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x6,0xfc, ++0x0,0xff,0x0,0x3f,0x20,0x20,0x3f,0x0,0x7f,0x44,0x44,0x7f,0x44,0x44,0x7f,0x40,0x44,0xe4,0x84,0xd4,0x94,0x94,0x94,0x54,0xf4,0x54,0x54,0xd4,0x44,0x44,0xd4,0x48, ++0xff,0x4,0x3f,0x24,0x3f,0x12,0x23,0x4a,0x17,0x32,0x53,0x91,0x13,0x1d,0x10,0x17,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x10,0xe2,0x1c, ++0x4,0x7e,0x44,0x55,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x27,0x45,0x80,0x8,0x8,0x2c,0xfa,0x8,0x8,0xfe,0x48,0x48,0x78,0x48,0x48,0x78,0xca,0xa,0x4, ++0x10,0x1f,0x20,0x2f,0x48,0x8f,0x8,0xf,0x4,0xf,0xc,0x12,0x21,0x42,0x4,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe, ++0x8,0x8,0xf,0x10,0x17,0x34,0x57,0x94,0x17,0x14,0x10,0x1f,0x12,0x11,0x10,0x10,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x8,0x8,0x8,0x10,0x10,0x37,0x50,0x90,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x50,0x20, ++0x1,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x4,0x8,0x10,0x20,0x40,0x8,0x4,0x4,0x2,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x20,0x10,0xc,0x24,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4, ++0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x48,0x49,0x9e,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x4,0xf,0x10,0x20,0x5f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x18,0x8, ++0x2,0x1,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0xf4,0x0,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x20,0x18,0x8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x7c,0x44,0x49,0x49,0x53,0x4d,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x25,0x48,0x28,0x10,0x28,0x47,0x84,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x10,0x10,0x27,0x20,0x43,0xfa,0x13,0x22,0x43,0xfa,0x40,0x7,0x1a,0xe1,0x40,0x0,0x50,0x48,0xfc,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x48,0x10,0xfe,0x10,0x10,0x10,0x20, ++0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10, ++0x1,0xf,0x79,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x4a,0x7c,0x4a,0x2,0x3,0x0,0x10,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x64,0x94,0x4,0xe4,0xc, ++0x7,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x49,0x7f,0x48,0x0,0x1,0xe,0xfc,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x3e,0xc0,0xa0,0x42,0xb2,0xe, ++0x1,0x40,0x2f,0x0,0x1,0x1,0xe2,0x27,0x20,0x20,0x20,0x25,0x2a,0x30,0x23,0xc,0x0,0x84,0xfe,0x80,0x0,0x10,0x10,0xe0,0x48,0x48,0x90,0x20,0x50,0x88,0x4,0x4, ++0x0,0x4,0xfe,0x4,0x4,0x5,0x7e,0x44,0x40,0x40,0x40,0x40,0x4c,0x70,0x41,0x6,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x10,0x17,0x14,0xfc,0x17,0x34,0x3c,0x57,0x54,0x95,0x15,0x16,0x14,0x10,0x10,0x0,0x84,0xfe,0x88,0x88,0xa8,0xa8,0xbe,0x88,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0, ++0x10,0x13,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x20,0x28,0x3c,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x41,0x2f,0x29,0x9,0x8f,0x49,0x49,0x1f,0x28,0x28,0xca,0x4b,0x4d,0x48,0x40,0x41,0x4,0xfe,0x10,0x10,0x50,0x50,0x54,0x7e,0x10,0x10,0x20,0x30,0x52,0x52,0x8e,0x0, ++0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xf,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0xe0,0x20, ++0x10,0x10,0x11,0x10,0xfc,0x10,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x11,0x11,0x11,0x11,0xff,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3d,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x8,0x8,0x9,0x7e,0x8,0x8,0xfe,0x9,0x28,0x28,0x2e,0x28,0x28,0x38,0x48,0x87,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc, ++0x0,0x0,0x7f,0x40,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x90,0x2,0x29,0x28,0x48,0x7,0x50,0x48,0xfc,0x40,0xc0,0x48,0x48,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0, ++0x8,0x1d,0xf0,0x10,0x10,0xfc,0x10,0x3b,0x34,0x50,0x50,0x90,0x10,0x10,0x10,0x10,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x7c,0x4,0x8,0xff,0x24,0x24,0x3c,0x24,0x3c,0x24,0x24,0xfe,0x4,0x5,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x10,0xfe,0x44,0x29,0xfe,0x1,0x7c,0x44,0x7d,0x44,0x7c,0x10,0xfe,0x10,0x10,0x11,0x40,0x78,0xd0,0x20,0x58,0x86,0xf8,0x20,0xfc,0x0,0xf8,0x88,0xa8,0xa8,0x58,0x84, ++0x0,0x7f,0x40,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0x64,0x84,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8, ++0x1,0x7f,0x41,0x41,0x63,0x63,0x55,0x55,0x49,0x55,0x53,0x63,0x41,0x41,0x45,0x42,0x4,0x84,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x10,0x13,0x12,0x1e,0x23,0x22,0x7e,0x92,0x12,0x7e,0x12,0x13,0x16,0x1a,0x12,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8, ++0x20,0x22,0x3f,0x48,0x48,0x88,0x9,0xff,0x8,0x2a,0x2a,0x2a,0x2a,0x3e,0x23,0x2,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x3e,0x25,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x27,0x44,0x8c,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x20,0x23,0x22,0x4a,0x4b,0xf2,0x12,0x22,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x42,0x2,0x4,0xfe,0x4,0x4,0xc,0x8c,0x54,0x24,0x24,0x54,0x8c,0xc,0x4,0x4,0x14,0x8, ++0x1,0x41,0x41,0x7f,0x0,0x7f,0x40,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x0,0x4,0x4,0xfc,0x4,0xfe,0x4,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x8, ++0x41,0x31,0x17,0x81,0x61,0x2f,0x1,0x12,0x27,0xea,0x22,0x23,0x22,0x22,0x21,0x20,0x10,0x10,0xfc,0x10,0x14,0xfe,0x20,0x10,0xfe,0x14,0x10,0xf0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x10,0x11,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x13,0x10,0x10,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x20,0x3e,0x50,0x81,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x7c,0x90,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0xc, ++0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x20,0x50,0xee,0x4,0x0,0x0, ++0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0xc, ++0x1,0x7f,0x8,0xf,0x0,0x7f,0x48,0x8f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x8,0xfc,0x20,0xe0,0x0,0xfe,0x22,0xe4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x10,0xc,0x4,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x20,0x24,0x22,0x40,0x10,0x30,0x40,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0x88,0x44,0x4, ++0x11,0x10,0x92,0x55,0x38,0x10,0xfe,0x11,0x38,0x34,0x54,0x53,0x90,0x12,0x12,0x14,0x4,0x88,0x50,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x92,0x2, ++0x10,0x10,0x1f,0x10,0xfb,0x12,0x12,0x1b,0x30,0xd7,0x14,0x15,0x15,0x15,0x54,0x24,0x80,0x44,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xc, ++0x10,0x10,0x1f,0x20,0x21,0x7d,0x91,0x11,0x7c,0x13,0x12,0x12,0x16,0x1a,0x12,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc, ++0x8,0x1c,0xf3,0x10,0x11,0xfd,0x11,0x39,0x34,0x53,0x52,0x92,0x12,0x12,0x12,0x12,0x40,0x24,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xc, ++0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x10,0x90,0x90,0x90,0x90,0x14,0xfe,0x10,0x90,0x90,0x90,0x90,0x10,0x50,0x20, ++0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7b,0x2,0xff,0x2,0x7a,0x4a,0x4a,0x7a,0x4a,0x5,0x20,0x20,0x20,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4, ++0x10,0x14,0x12,0x10,0xfc,0x15,0x16,0x1c,0x34,0xd7,0x15,0x15,0x15,0x15,0x55,0x24,0x0,0x4,0xfe,0x44,0xf4,0x14,0xa4,0x44,0xa4,0x1c,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x2,0x2,0x1,0x2,0xc,0x70,0x0,0x0,0x80,0x40,0x4,0xfe,0x0,0x0,0x20,0x30,0x40,0x80,0x0,0x80,0x44,0x34,0xc, ++0x10,0x10,0x29,0x29,0x25,0x43,0x89,0x7d,0x1,0x7d,0x44,0x44,0x47,0x44,0x7c,0x40,0x20,0x48,0xfc,0x8,0x48,0x28,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x26,0x24,0x24,0x44,0x94,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88, ++0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x37,0x50,0xd0,0x13,0x24,0x24,0x44,0x3,0x0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x2,0x2,0xfe, ++0x8,0x4,0x7f,0x44,0xbf,0x4,0x3f,0x4,0x7f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x4,0x4,0xe4,0x54,0x94,0x14,0x94,0x14,0xd4,0x94,0xd4,0x94,0x84,0x84,0x94,0x88, ++0x8,0x8,0x7f,0x8,0xf,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x28,0xfc,0x20,0xe0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xf,0x11,0x22,0x54,0x10,0x1f,0x0,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x84,0x44,0x4,0xd4,0x8, ++0x11,0x11,0x11,0x12,0xff,0x14,0x38,0x34,0x51,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x14,0x7e,0x55,0x56,0x55,0x54,0x7c,0x51,0x11,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x50,0x88,0x6,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x1b,0x4a,0x42,0x47,0x4c,0x52,0x41,0x46,0x58,0x60,0x4f,0x48,0x48,0x4f,0x40,0x4,0xfe,0x4,0x4,0xe4,0x44,0x84,0x4,0xc4,0x3c,0x14,0xe4,0x24,0x24,0xf4,0x8, ++0x0,0x7f,0x48,0x53,0x52,0x62,0x53,0x48,0x4f,0x4d,0x6c,0x57,0x44,0x44,0x44,0x44,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8, ++0x10,0x10,0x1c,0x11,0x21,0x3e,0x50,0x90,0x7c,0x13,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x1,0x2,0x4,0x8,0x11,0x21,0xc1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x4,0x7,0x8,0x14,0x22,0x1,0x6,0x18,0xe0,0xf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x20,0x20,0x49,0xfa,0x14,0x23,0x40,0xf8,0x43,0x2,0x1a,0xe2,0x43,0x2,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x39,0x35,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x0,0x7d,0x45,0x45,0x45,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x10,0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x13,0x38,0x34,0x54,0x51,0x91,0x12,0x10,0x88,0x88,0x88,0x88,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8, ++0x0,0xff,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0xe0,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe, ++0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x21,0x41,0x42,0x84,0x18,0x0,0x84,0xfe,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x88,0x40,0x40,0x30,0xe,0x4, ++0x4,0x7f,0x1,0x3f,0x1,0xff,0x28,0x42,0x3f,0x1,0x1f,0x1,0xff,0x2,0xc,0x30,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x28,0x84,0xf8,0x0,0xf0,0x4,0xfe,0x80,0x78,0x10, ++0x20,0x2f,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x27,0x3c,0xe3,0x40,0x1,0x6,0x18,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x80,0x60,0x1e,0x4, ++0x2,0xff,0x24,0x24,0x3c,0x24,0x24,0x3d,0x24,0x24,0x24,0x3e,0xe4,0x44,0x7,0x4,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x20,0x20,0x50,0x50,0x8e,0x4,0x0, ++0x10,0x1f,0x10,0x13,0xfe,0x12,0x33,0x3a,0x52,0x53,0x92,0x11,0x10,0x11,0x12,0x1c,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x40,0x80,0x60,0x1e,0x4, ++0x0,0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x0,0x0,0x8,0xfd,0x11,0x12,0x14,0x11,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x80,0x80,0x80,0x8,0xfc,0x10,0x10,0x10,0x20,0x20,0xc0,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x0,0x8,0xfc,0x10,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10, ++0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x9,0x11,0x21,0xc9,0x9,0x11,0x21,0x5,0x2,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x8,0x0,0x0, ++0x2,0x2,0xff,0x5,0x5,0x9,0x32,0xc8,0x8,0x3f,0x8,0x8,0xff,0x8,0x18,0x20,0x20,0x14,0xfe,0x0,0x64,0x84,0xfc,0x20,0x20,0xf8,0x20,0x24,0xfe,0x20,0x18,0x8, ++0x12,0x12,0x12,0x22,0x2f,0x62,0xa2,0x22,0x22,0x3f,0x20,0x22,0x22,0x24,0x28,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0, ++0x8,0x12,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xfe,0x6,0xa,0x12,0x22,0x4a,0x4,0x0,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x0,0x4,0x4,0x8,0x8,0x11,0x21,0xc2,0x2,0x4,0x8,0x10,0x1f,0x0,0x0,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x40,0x20,0xf0,0x10,0x0, ++0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x90,0x50,0x20, ++0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0xa,0xa,0x6,0x0, ++0x0,0x3f,0x1,0x1,0xff,0x0,0x1,0x1,0x7d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x11,0x11,0x11,0x11,0xfb,0x11,0x11,0x19,0x31,0xdf,0x10,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0xc,0x4,0x0, ++0x0,0x3f,0x1,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x4,0xc,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8, ++0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7c,0x11,0x10,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0xf4,0x14,0x4,0x4,0x28,0x10, ++0x8,0x8,0x8,0xf,0x10,0x22,0x42,0x84,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0xc4,0x44,0x4,0x28,0x10, ++0x2,0x42,0x32,0x13,0x84,0x68,0x20,0x1,0x9,0x12,0xe4,0x27,0x20,0x20,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x84,0x84,0x4,0x4,0x44,0x24,0xe4,0x24,0x4,0x28,0x10, ++0x8,0x8,0xff,0x8,0x10,0x1f,0x20,0x20,0x5f,0x90,0x10,0x10,0x1f,0x10,0x0,0x0,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0x50,0x20, ++0x4,0x44,0x28,0x11,0x29,0x4a,0x8,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x50,0x20,0x80,0x80,0x84,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x28,0x10, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0xe4,0x44,0x8,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x11,0x11,0x10,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10, ++0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x55,0x55,0x10,0x28,0x44,0x84,0x80,0x80,0x84,0xfe,0x4,0x4,0x44,0x44,0x84,0xa4,0x14,0xf4,0x14,0x4,0x28,0x10, ++0x20,0x20,0x22,0x3f,0x42,0x83,0x7a,0x4a,0x4a,0x4b,0x4a,0x7a,0x42,0xa,0x4,0x0,0x20,0x20,0x7c,0x44,0x88,0x50,0x20,0x50,0x9e,0x22,0x44,0xa8,0x10,0x20,0x40,0x80, ++0x1,0xff,0x1,0x3f,0x20,0x3f,0x1,0x3f,0x8,0x4,0xff,0x1,0x3f,0x1,0x1,0x1,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf8,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x12,0x12,0x22,0x22,0x14,0x8,0x14,0x22,0x40,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x1f,0x28,0x45,0x90,0x13,0x12,0xfe,0x12,0x1a,0x32,0xd2,0x12,0x12,0x53,0x20,0x40,0x7e,0xa0,0x10,0x0,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xb8,0x20,0xfe,0x0, ++0x8,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7c,0x7,0xa,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x15,0x58,0x20,0x8,0x3c,0xc0,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xa8,0xee,0x24,0x0, ++0x10,0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x45,0x25,0x19,0x11,0x29,0x45,0x81,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x14,0xfe,0x11,0x7c,0x0,0x7d,0x44,0x44,0x7c,0x0,0x44,0x28,0xfe,0x40,0x3,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x88,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x3f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x1f,0x10,0x1f,0x11,0x11,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x8,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x30,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x30,0x18,0x8,0x0,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x25,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xfc,0x84,0x88,0x48,0x70,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x10,0x14,0xfe,0x11,0x12,0x10,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x3,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x88,0x50,0x20,0x20,0x50,0x8e,0x4, ++0x4,0x7f,0x40,0x40,0x5e,0x52,0x52,0x52,0x5a,0x54,0x50,0x52,0x54,0x58,0x80,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x30,0x4c,0x86,0x2, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0xfc,0x4, ++0x2,0x1,0x3f,0x20,0x3f,0x22,0x22,0x27,0x24,0x2f,0x34,0x27,0x24,0x24,0x47,0x84,0x0,0x4,0xfe,0x4,0xfc,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x0, ++0x1,0x7e,0x8,0x8,0x9,0xff,0x8,0x8,0x9,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x84,0x4,0x4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x1,0x3e,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x42,0x83,0x0,0x38,0xc0,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x88,0x68,0xa6,0x4,0x0, ++0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x4,0x7f,0x44,0x44,0x4a,0x51,0x40,0x41,0x40,0x84,0xc4,0x84,0x94,0x94,0x94,0x94,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0x54,0x88, ++0x1,0x7f,0x40,0x9f,0x2,0xf,0xa,0x9,0x8,0x7f,0x4,0xf,0x32,0xc2,0x4,0x18,0x0,0xfe,0x22,0xf4,0x0,0xe0,0x20,0x20,0xa8,0xfc,0x40,0xe0,0x5e,0x44,0x40,0xc0, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x41,0x21,0x21,0x7,0xf1,0x11,0x2f,0x71,0xa1,0x37,0x21,0x21,0x21,0x2f,0x24,0x20,0x10,0x10,0x10,0xd0,0x10,0x10,0xf8,0x16,0x12,0xd0,0x10,0x10,0xf0,0x10,0x10,0x10, ++0x0,0x1f,0x1,0x1,0xff,0x1,0x9,0x9,0x79,0x9,0x9,0x39,0xc9,0x1,0x1,0x1,0x70,0x80,0x0,0x4,0xfe,0x0,0x24,0x2c,0x30,0x20,0x22,0x22,0x1e,0x0,0x0,0x0, ++0x10,0x11,0x11,0xfd,0x11,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x80,0x84,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8, ++0x10,0x17,0x12,0x11,0x58,0x54,0x50,0x93,0x1c,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x40,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x13,0x12,0xfc,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x40,0x20,0xfe,0x2,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0x4,0xfc,0x0, ++0x10,0x8,0x4,0x4,0x7f,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x10,0x18,0x20,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x2,0x1,0x7f,0x40,0x80,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0, ++0x0,0x7f,0x40,0x84,0x3e,0x0,0x2,0x7f,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0xfe,0x2,0xc,0x8,0x8,0xfe,0x8,0x48,0x28,0x8,0x28,0x12,0x2,0xfe,0x0, ++0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x25,0x44,0x80,0x1,0x6,0x18,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e, ++0x10,0x1f,0x28,0x45,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x7c,0x90,0x8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x0,0xf0,0x10,0x10,0xf0,0x0, ++0x20,0x20,0x23,0x3a,0x4c,0x51,0x81,0x21,0x21,0x21,0x21,0x25,0x29,0x31,0x21,0x1,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x0, ++0x20,0x23,0x3c,0x51,0x91,0x11,0xfe,0x10,0x55,0x56,0x54,0x54,0x54,0x7c,0x44,0x0,0x88,0xfe,0x88,0xdc,0x54,0xdc,0x90,0xfc,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80, ++0x10,0x13,0x12,0x1f,0x5a,0x57,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x8,0xfc,0x48,0xfe,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x1,0x4f,0x31,0x17,0x84,0x67,0x22,0x3,0x16,0x2b,0xc2,0x43,0x42,0x42,0x43,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x0,0x1f,0x11,0x11,0xff,0x11,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x10,0xf8,0x10,0x14,0xfe,0x10,0xf0,0x0,0xf0,0x10,0x10,0x10,0x10,0x60,0x18,0x8, ++0x1,0x21,0x11,0x9,0x9,0x1,0xff,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x8,0xc,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x1,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x40,0x29,0x27,0x2,0x6,0xea,0x22,0x26,0x2a,0x32,0x22,0x2b,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0, ++0x0,0x11,0xfb,0x22,0x22,0x23,0xfa,0x22,0x23,0x22,0x20,0x39,0xe1,0x42,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xd0,0x68,0x78,0x42,0x42,0x3e, ++0x10,0x10,0x11,0x11,0x7d,0x11,0x15,0xff,0x11,0x11,0x10,0x28,0x24,0x41,0x82,0x4,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0x90,0x90,0x12,0x12,0xe, ++0x1,0x1,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x24,0x25,0x24,0x24,0x3c,0x27,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x4,0x25,0x24,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x4,0x8,0x13,0x60,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0xa,0x2,0x2,0xfe, ++0x20,0x1b,0x49,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x24,0xf4,0x4,0xc, ++0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7e,0x8,0x8,0x8,0xfe,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8a,0x8a,0x6,0x0, ++0x2,0x4,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x88,0x80,0x90,0xa8,0xba,0x82,0x7e, ++0x1,0x41,0x21,0x22,0x4,0xb,0xe2,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x24,0x8,0x0,0x0,0xf0,0x20,0x44,0xfe,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0, ++0x0,0x3e,0x2,0x24,0x18,0x10,0x20,0x4f,0x81,0x1,0x3f,0x1,0x2,0x4,0x18,0x60,0x80,0x90,0xa0,0x48,0x50,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x18,0x8, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x50,0x93,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0, ++0x4,0x7e,0x44,0x45,0x46,0x7d,0x51,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x8,0x80,0x80,0xf8,0x10,0x24,0xfe,0x8,0x7c,0x48,0x48,0x68,0x50,0x42,0x42,0x3e,0x0, ++0x1,0x1,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x8,0x8,0x14,0x22,0x41,0xbe,0x0,0x2,0x7f,0x8,0x8,0x10,0x22,0x7f,0x1,0x0,0x4,0x4,0x4,0x24,0xa4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x20,0x23,0x22,0xfe,0x43,0x42,0x92,0xff,0x12,0x12,0x1f,0xf2,0x52,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0, ++0x0,0x40,0x37,0x11,0x83,0x64,0x20,0x9,0x13,0x20,0xe1,0x23,0x25,0x29,0x21,0x21,0x80,0x48,0xfc,0x10,0x4c,0x44,0x80,0x10,0xf8,0x80,0x44,0x28,0x10,0x4e,0x84,0x0, ++0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x24,0x2c,0xb0,0x20,0x22,0xa2,0x1e,0x0, ++0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x90,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x64,0x9c,0xc,0x4,0x14,0x8, ++0x8,0x4,0xff,0x0,0x3f,0x21,0x21,0x3f,0x0,0x7f,0x2,0x4,0xff,0x4,0x14,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x41,0x5f,0x40,0x7f,0x40,0x4,0xfe,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x44,0x24,0x4,0xf4,0x4,0xfc,0x4, ++0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x1,0x7f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x9,0x35,0xc,0x14,0x65,0x6,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x18,0xa0,0x40,0x3c,0x8, ++0x0,0x40,0x20,0x17,0x0,0x0,0xf1,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20,0x6,0xfc,0x0, ++0x0,0x0,0x8,0x7c,0x49,0x49,0x4a,0x4d,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x7e,0x44,0x77,0x54,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x45,0x7c,0x44,0x54,0x4b,0x40,0x20,0x4,0xfe,0x20,0x20,0x44,0xfc,0x10,0x24,0x44,0x88,0x10,0x28,0xc6,0x2, ++0x0,0xfc,0x4,0xb,0x10,0x10,0x15,0x1b,0x31,0xd0,0x10,0x11,0x16,0x10,0x51,0x26,0x80,0x40,0x4,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4, ++0x2,0x42,0x33,0x14,0x8b,0x62,0x22,0xa,0x1f,0x24,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x88,0x48,0x8,0xfe,0x88,0x48,0x8,0xfc,0x8,0x28,0x10, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0x2,0x3f,0x4,0x8,0x3f,0x2,0xc,0x31,0x46,0x18,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x8,0x8,0x88,0x8a,0x6a,0x24, ++0x2,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x1f,0x2,0x4,0x8,0x31,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x20,0x60,0x80,0x10,0x30,0x40,0xc0,0x20,0x10,0xc,0x4, ++0x2,0x1,0x7f,0x41,0x9f,0x1,0x1f,0x1,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x0,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x8,0xfc,0x8,0x4f,0x48,0x48,0x49,0x4b,0x7d,0x4,0x4,0x1d,0xe6,0x44,0x15,0xa,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x58,0x8c,0x4, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x63,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x44,0xc4,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44, ++0x3e,0x4,0xff,0x22,0x3f,0x22,0x3e,0x22,0xff,0x2,0xa,0x29,0x28,0x48,0x7,0x0,0x40,0x44,0x7e,0x84,0x44,0x48,0x28,0x10,0x2e,0xc4,0x0,0x88,0xa4,0x24,0xe0,0x0, ++0x22,0x22,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0xa,0xff,0x8,0x8,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x8,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0xaa,0x24,0x20,0x20, ++0x1,0x1,0x2,0x4,0xa,0x11,0x20,0xdf,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x90,0x8e,0xe4,0x40,0x90,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x40,0x37,0x10,0x0,0x84,0x44,0x46,0xd,0x14,0x25,0xe6,0x24,0x25,0x24,0x27,0x24,0x0,0xfc,0x8,0x10,0x64,0x44,0x4c,0x54,0xe4,0x54,0x4c,0x44,0x44,0x84,0xfc,0x4, ++0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x4,0xb,0x10,0x20,0xc6,0x1,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x20,0x90,0x4e,0x4,0x80,0x40, ++0x0,0x1f,0x0,0x0,0x41,0x51,0x49,0x45,0x41,0x45,0x49,0x51,0x45,0x42,0x7f,0x40,0x0,0xf0,0x20,0x40,0x84,0x14,0x34,0x44,0x4,0x44,0x34,0x14,0x4,0x4,0xfc,0x4, ++0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x75,0x45,0x8,0x11,0x20,0x10,0x18,0x14,0xfe,0x10,0xf0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x28,0x4a,0x8a,0x4, ++0x0,0x7f,0x40,0x84,0x8,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x44,0x20,0x0,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x14,0xfe,0x11,0x7e,0x45,0x7c,0x45,0x7c,0x10,0xfe,0x11,0x10,0x11,0x10,0x20,0x20,0x50,0x88,0x6,0x4,0xdc,0x44,0x54,0xcc,0x44,0xcc,0x54,0x44,0x54,0x88, ++0x10,0x10,0x10,0x17,0xfc,0x17,0x14,0x1d,0x35,0xd5,0x15,0x14,0x19,0x13,0x55,0x20,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8, ++0x13,0x12,0x12,0x13,0xfa,0x12,0x13,0x18,0x37,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x17,0x5c,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x19,0x13,0x15,0x10,0x10,0x14,0x10,0xfe,0x10,0xf0,0x14,0xd4,0x58,0x52,0xea,0x6,0x40,0x24,0xa,0xf8, ++0x13,0x12,0x12,0x13,0x5a,0x56,0x53,0x90,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x11,0x11,0x11,0x15,0x59,0x51,0x51,0x90,0x13,0x10,0x10,0x2b,0x24,0x44,0x80,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x47,0x30,0x10,0x80,0x60,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x40,0x37,0x10,0x82,0x62,0x22,0x9,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x8,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x10,0x20,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4, ++0x1,0x1,0x1,0x7f,0x2,0x4,0xa,0x32,0xc2,0x1f,0x2,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x80,0x40,0x48,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x8,0x10,0x3e,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x22,0x4a,0x85,0x40,0x30,0x14,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x86,0x0, ++0x20,0x23,0x20,0x21,0xf9,0x27,0x24,0x2b,0x20,0x23,0x20,0x3b,0xe0,0x47,0x0,0x0,0x40,0xfc,0x0,0xf8,0x8,0xfe,0x2,0xfc,0xc0,0x68,0xb0,0x28,0xe6,0x24,0xa0,0x40, ++0x0,0x17,0xf8,0x91,0x91,0x97,0x94,0x9b,0x90,0x91,0x96,0xf1,0x96,0x1,0x6,0x0,0x48,0xfc,0x0,0xf0,0x10,0xfe,0x2,0xfc,0x80,0x48,0xf0,0x50,0xce,0x44,0x40,0xc0, ++0x1,0x7f,0x0,0xf,0x8,0x7f,0x40,0x9f,0x6,0xb,0x35,0x9,0x33,0x5,0x39,0x3,0x8,0xfc,0x0,0xe0,0x20,0xfe,0x2,0xf4,0x10,0x20,0x40,0x80,0x60,0x1c,0x8,0x0, ++0x1,0x7f,0x0,0xf,0x8,0xf,0x0,0x7f,0x40,0x9f,0x1,0xf,0x1,0x3f,0x1,0x0,0x8,0xfc,0x20,0xf0,0x20,0xe0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x0,0xf4,0x4,0xfc, ++0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x14,0x14,0x56,0x55,0x95,0x24,0x24,0x4c,0x80,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x10,0x11,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x15,0xfe,0x10,0x7c,0x11,0xfe,0x10,0x38,0x35,0x54,0x50,0x90,0x10,0x10,0x8,0x3c,0xc0,0x40,0x50,0x78,0xc0,0x40,0x48,0x7c,0xc0,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x0,0xff,0x4,0x8,0x1f,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xa0,0x40, ++0x40,0x32,0x12,0x3,0x84,0x68,0x20,0xf,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x48,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10, ++0x0,0xb,0x7e,0x4b,0x4a,0x4b,0x48,0x49,0x4a,0x4c,0x4a,0x7a,0x4a,0x3,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8, ++0x8,0x8,0xff,0x8,0x10,0x1f,0x10,0x30,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x8,0x8,0xff,0x8,0x40,0x3f,0x10,0x80,0x63,0x22,0xa,0x12,0xe3,0x22,0x20,0x20,0x20,0x24,0xfe,0x20,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x39,0x37,0x55,0x50,0x90,0x11,0x16,0x10,0x11,0x16,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4, ++0x0,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0, ++0x2,0x7,0x78,0x8,0xa,0xff,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0, ++0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x2,0x4,0xf,0x10,0x2f,0xc8,0x8,0xf,0x0,0x1f,0x12,0x12,0x12,0xff,0x0,0x0,0x80,0x40,0xe0,0x10,0xee,0x24,0x20,0xe0,0x10,0xf8,0x90,0x90,0x94,0xfe,0x0, ++0x8,0x10,0x24,0x54,0x89,0x52,0x28,0x4c,0x94,0x27,0x4c,0x94,0x24,0x44,0x14,0x8,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0xfc,0x88,0x88,0x88,0xf8,0x88, ++0x20,0x1b,0x48,0x42,0x41,0x5f,0x41,0x42,0x44,0x4f,0x42,0x44,0x49,0x52,0x44,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x44,0x84,0x24,0x44,0x84,0x84,0x64,0x24,0xc, ++0x40,0x3f,0x10,0x0,0x80,0x67,0x24,0xc,0x14,0x24,0xe7,0x24,0x20,0x20,0x20,0x20,0x4,0xfe,0x8,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x48,0x8,0x8,0x28,0x10, ++0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0x54,0xfc,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4, ++0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x14,0x36,0x75,0x94,0x14,0x14,0x14,0x24,0x4d,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0xd8,0x56,0x52,0x50,0x50,0x50,0x90,0x30, ++0x40,0x23,0x22,0x3,0xfa,0x13,0x21,0x6b,0xb4,0x28,0x22,0x22,0x22,0x23,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x4,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8, ++0x8,0x8,0x7f,0x52,0x90,0x28,0x7e,0xa8,0x3e,0x28,0x3e,0x28,0x29,0x3e,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x4,0x7e,0x44,0x44,0x7c,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x4b,0x48,0x4f,0x78,0x4a,0x2,0x4,0x8,0xfc,0x48,0x58,0xe8,0x48,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0,0xa8,0xa4,0x4, ++0x0,0x3f,0x21,0x31,0x2d,0x25,0x21,0x3f,0x1,0x7f,0x1,0xff,0x0,0x28,0x24,0x44,0x8,0xfc,0x8,0x28,0x38,0x48,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x90,0x4c,0x44, ++0x1,0x0,0x1f,0x10,0x97,0x54,0x57,0x14,0x37,0x54,0xd4,0x14,0x24,0x25,0x46,0x4,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0xe,0x4, ++0x8,0xb,0x12,0x12,0x23,0x4a,0x8a,0x13,0x32,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4, ++0x0,0x8b,0x5a,0x22,0x53,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x53,0x22,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4, ++0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x93,0x12,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x8c,0x50,0x20,0x10,0x88,0xe,0x4, ++0x0,0x8,0x7f,0x48,0x49,0x49,0x49,0x49,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x24,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x8,0x30,0x20,0x20,0xa0,0x40, ++0x2,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x1,0x1,0x5,0x3,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x11,0x11,0x17,0x11,0xfd,0x17,0x30,0x3b,0x56,0x53,0x92,0x13,0x10,0x11,0x13,0x14,0x10,0x10,0xfc,0x10,0x14,0xfe,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4, ++0x12,0x13,0x24,0x49,0x9f,0x19,0x2f,0x69,0xaf,0x21,0x21,0x3f,0x22,0x24,0x28,0x20,0x0,0xc4,0x9e,0x0,0xe0,0x20,0xfe,0x24,0xe4,0x4,0x24,0xf4,0x84,0x44,0x54,0x8, ++0x10,0x17,0x10,0x10,0x5b,0x56,0x52,0x93,0x12,0x12,0x13,0x10,0x10,0x1f,0x10,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0, ++0x2,0x7f,0x8,0x11,0x3f,0x1,0xff,0x1,0x1,0x7e,0x22,0x14,0x8,0x14,0x22,0xc1,0x8,0xfc,0x0,0x0,0xf8,0x0,0xfe,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0x1,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4, ++0x10,0x10,0x10,0x10,0x57,0x58,0x50,0x90,0x10,0x10,0x17,0x28,0x24,0x44,0x81,0x2,0x90,0x90,0x90,0x90,0xfc,0x90,0x90,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0xc,0x4, ++0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x10,0x14,0x1e,0xe2,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x40,0x30,0x10,0x2,0x9f,0x64,0x24,0x4,0x14,0x14,0xe7,0x3c,0x29,0x20,0x20,0x20,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x42,0x32,0x12,0x2,0x8f,0x62,0x22,0xa,0x12,0x3f,0xe0,0x22,0x22,0x24,0x24,0x28,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0x8,0xc,0x4, ++0x2,0x1,0x7f,0x40,0x82,0x2,0xff,0x4,0x4,0x8,0x9,0x11,0x12,0x24,0x4f,0x0,0x0,0x0,0xfc,0x4,0x8,0x0,0xfe,0x0,0x80,0x80,0x0,0x0,0x20,0x10,0xf8,0x8, ++0x4,0xfe,0x4,0x4,0x4,0x7c,0x40,0x40,0x44,0x7e,0x4,0x4,0x5,0x45,0x2b,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x90,0x8,0x4,0xfc,0x4, ++0x10,0x10,0x23,0x20,0x44,0xf8,0x10,0x20,0x40,0xfc,0x40,0x0,0x1c,0xe0,0x47,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x1,0x9,0x7d,0x4a,0x4a,0x4e,0x4a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x2,0x8,0x7c,0x8,0x8,0xfe,0x0,0x40,0x7e,0x90,0x14,0xfe,0x10,0x20,0x28,0x46,0x82, ++0x8,0xb,0x8,0x10,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x11,0x16,0x10,0xf8,0x10,0x10,0xfc,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x5,0x89,0x51,0x22,0x53,0x96,0x1a,0x12,0x33,0x52,0x93,0x12,0x12,0x12,0x52,0x23,0x8,0xfc,0x8,0x8,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4, ++0x0,0x7,0x78,0x48,0x49,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x49,0x1,0x5,0x2,0x10,0xd0,0x50,0x90,0x10,0x10,0x10,0x50,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x40,0x82,0x1,0x8,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x40,0x84,0xfe,0x80,0x80,0x0, ++0x10,0x13,0x20,0x28,0x6f,0xa9,0x29,0x2b,0x2c,0x28,0x2f,0x28,0x28,0x21,0x22,0x24,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x44,0x44,0x87,0x4,0x10,0x78,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x8,0x7f,0x48,0x4a,0x49,0x49,0x48,0x4f,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0x1c,0xe0,0x40,0x48,0x58,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x3f,0x1,0x1,0x11,0xd,0x5,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x78,0x80,0x0,0x0,0x10,0x30,0x40,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x9,0x12,0x2,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x28,0x10,0x0,0x88,0xa4,0x24,0xe0,0x0, ++0x1,0x11,0xf9,0x27,0x21,0x21,0xf9,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8, ++0x1,0x1,0x7f,0x1,0x3f,0x1,0x7f,0x44,0x84,0x24,0x14,0xc,0x4,0x4,0x7f,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x44,0x40,0x48,0x58,0x60,0x40,0x48,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x8,0x9,0x7f,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x44,0x94,0x8, ++0x8,0x8,0x8,0x9,0xff,0x8,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x1,0x4,0x7e,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x94,0x8, ++0x21,0x21,0x21,0x21,0xf9,0xaf,0xa9,0xa9,0xab,0xfa,0xa2,0x2a,0x3b,0xea,0x0,0x1,0x4,0x3e,0x24,0x24,0x24,0xfc,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8, ++0x0,0x88,0x53,0x22,0x52,0x92,0x12,0x12,0x32,0x52,0x92,0x12,0x14,0x15,0x58,0x20,0x8,0x1c,0xe0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4,0x0, ++0x11,0x11,0x55,0x39,0x17,0x11,0xfd,0x33,0x3a,0x56,0x52,0x93,0x12,0x10,0x10,0x11,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0x24,0x44,0x94,0x8, ++0x42,0x32,0x12,0x2,0x9f,0x62,0x22,0xf,0x18,0x28,0xc8,0x48,0x48,0x4f,0x48,0x40,0x4,0x3e,0x24,0x24,0xe4,0x3c,0xa4,0xe4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0x54,0x88, ++0x0,0xf8,0xb,0xa,0xa,0x7a,0x42,0x42,0x42,0x7a,0xa,0xa,0xa,0xa,0x54,0x28,0x8,0x1c,0xe8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa8,0x94,0xf6,0x4, ++0x1,0x1,0x1,0x3f,0x22,0x22,0x3f,0x22,0x21,0x20,0x27,0x24,0x24,0x24,0x48,0x90,0x20,0xf0,0x0,0xfc,0x4,0x68,0x80,0x8,0xf8,0x40,0xe0,0x40,0x40,0x44,0x44,0x3c, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x6,0x48,0x7c,0x40,0xfe,0x42,0x5c,0xe0,0x44,0x3c,0x10,0xf8,0x90,0x90,0x92,0x12,0xe, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x40,0x30,0x13,0x82,0x62,0x22,0xb,0x12,0x12,0xe2,0x22,0x22,0x24,0x24,0x28,0x80,0x60,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x20,0x24,0xfe,0x20,0x20,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x60,0x22,0x22,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x4,0x4,0x8,0x8,0x18,0x29,0x4a,0x8,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x48,0x58,0x60,0xc0,0x40,0x44,0x44,0x3c,0x0,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x83,0x4a,0x2b,0x12,0x32,0x57,0x94,0x1b,0x32,0x53,0x92,0x13,0x12,0x12,0xa2,0x42,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x43,0x32,0x13,0x2,0x82,0x4f,0x48,0x13,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0xf8,0x8,0xc8,0x48,0x48,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x7f,0x0,0x1f,0x11,0x51,0x51,0x5f,0x51,0x51,0x51,0x5f,0x50,0x40,0x7f,0x40,0x8,0xfc,0x10,0xf8,0x10,0x14,0x14,0xf4,0x14,0x14,0x14,0xf4,0x14,0x4,0xfc,0x4, ++0x10,0x14,0x12,0x10,0x13,0xfc,0x10,0x10,0x11,0xb,0xc,0x8,0x14,0x24,0x42,0x1,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x94,0x88, ++0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x90,0x11,0x11,0x12,0x14,0x18,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e, ++0x8,0x8,0x13,0x12,0x22,0x4a,0x8a,0x12,0x32,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0xfc,0x4,0x0, ++0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40, ++0x41,0x31,0x11,0x3,0x86,0x6a,0x23,0xa,0x12,0x23,0xe2,0x22,0x22,0x23,0x22,0x22,0x40,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x20,0x20,0x2f,0x20,0xf8,0x20,0x20,0x20,0x21,0x2a,0x34,0xe8,0x40,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40, ++0x0,0x0,0xfc,0x4,0x45,0x46,0x28,0x28,0x10,0x28,0x24,0x44,0x81,0x1,0x2,0xc,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x10,0xf8,0x27,0x20,0x20,0x20,0xf8,0x20,0x21,0x22,0x24,0x20,0x38,0xe0,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0xd0,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x17,0x10,0xff,0x12,0x3a,0x36,0x53,0x52,0x92,0x12,0x13,0x10,0x1f,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x4,0xfe,0x0, ++0x0,0x40,0x2f,0x20,0x0,0xe0,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x50,0x8f,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x6,0xfc,0x0, ++0x10,0x13,0x22,0x21,0x44,0xfb,0x10,0x27,0x40,0xfc,0x1,0x1,0x1a,0xe4,0x49,0x2,0xc,0xf0,0x48,0x50,0x20,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1e,0x32,0xd2,0x1f,0x10,0x10,0x11,0x52,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x7f,0x41,0x2,0x29,0x28,0x48,0x7,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x0,0x90,0xac,0x24,0xe0, ++0x0,0x8,0x7c,0x49,0x4a,0x49,0x49,0x49,0x49,0x49,0x4f,0x78,0x48,0x0,0x1,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4, ++0x1,0x0,0x1f,0x11,0x51,0x32,0x14,0x33,0x52,0xd2,0x12,0x1f,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0xfe,0xa0,0x10,0xe,0x4, ++0x9,0x5,0x7f,0x2,0xff,0x4,0xf,0x12,0x25,0xda,0x4,0x19,0x62,0xc,0x72,0x1,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0x1e,0xa4,0xc0,0xa0,0x98,0x88,0x80,0x0, ++0x10,0x10,0x10,0x15,0x5a,0x51,0x51,0x91,0x11,0x11,0x17,0x28,0x24,0x40,0x81,0x6,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x88,0x6,0x4, ++0x40,0x30,0x11,0x2,0x84,0x63,0x22,0xa,0x12,0x12,0xef,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0xf0,0x20,0x48,0xfc,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x2,0x1,0x7f,0x40,0x9f,0x11,0x11,0x1f,0x10,0x10,0x1f,0x11,0x11,0x11,0x1f,0x10,0x0,0x0,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0, ++0x8,0x8,0xb,0x10,0x10,0x20,0x42,0xfe,0x4,0x8,0x10,0x20,0x42,0xff,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x4,0x4,0x7f,0x4,0x1,0xff,0x10,0x10,0x1f,0x0,0x11,0x11,0x11,0x11,0x21,0x41,0x40,0x48,0xfc,0x40,0x4,0xfe,0x0,0x20,0xf0,0x0,0x10,0x10,0x10,0x12,0x12,0xe, ++0x11,0x11,0x1f,0x11,0x58,0x57,0x52,0x92,0x13,0x10,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46, ++0x4,0x4,0x3f,0x4,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x4,0x18,0x60,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x60,0x18,0x4, ++0x0,0x8,0xfd,0x10,0x10,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x1,0x6,0x88,0x88,0xfc,0x88,0x88,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x57,0x7c,0x50,0x15,0x1c,0xf4,0x43,0x0,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x1f,0x28,0x45,0x4,0x7f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0xc,0x30,0x40,0x7c,0xa0,0x50,0x40,0xfc,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x60,0x18, ++0x2,0x4,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x0,0x3f,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x21,0x27,0x21,0x5f,0x40,0x80,0x8,0xfc,0x8,0xe8,0x28,0xe8,0x28,0xe8,0x8,0xe8,0x8,0xc8,0xa,0xfa,0xa,0x4, ++0x10,0x10,0x13,0x12,0x5b,0x56,0x53,0x90,0x17,0x10,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x13,0x16,0x5b,0x52,0x53,0x90,0x17,0x10,0x10,0x13,0x28,0x44,0x8f,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x11,0x9,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x10,0x24,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e, ++0x10,0x11,0x15,0x7f,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x5c,0x10,0x11,0x11,0x16,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xac,0x30,0xfe,0x90,0x90,0x12,0x12,0xe, ++0x10,0x10,0x12,0x11,0x59,0x54,0x57,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x12,0x1c,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x1,0x41,0x2f,0x21,0x0,0xf,0xe2,0x22,0x23,0x20,0x22,0x22,0x2a,0x32,0x24,0x8,0x10,0x14,0xfe,0x10,0x44,0xfe,0x0,0x8,0xfc,0x0,0x48,0x48,0x48,0x4a,0x4a,0x46, ++0x4,0x4,0x4,0xff,0x4,0x8,0x8,0xc,0x12,0x10,0x21,0x41,0x82,0x2,0x4,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0x98,0xa0,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x10,0x13,0x12,0x14,0xfb,0x10,0x11,0x1a,0x33,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xfe,0x44,0x48,0xfc,0x80,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x10,0x11,0x95,0x56,0x38,0x11,0xfe,0x29,0x29,0x28,0x28,0x2b,0x4c,0x48,0x80,0x0,0x0,0xfe,0x4,0x40,0x48,0xfc,0x80,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x12,0x12,0x2a,0x2a,0x4f,0x90,0x1f,0x24,0x6f,0xa2,0x25,0x2f,0x22,0x2a,0x32,0x26,0x10,0x10,0x90,0x90,0xbe,0x44,0x84,0xa4,0x24,0x24,0x28,0x98,0x10,0xa8,0x46,0x84, ++0x10,0x10,0x10,0x17,0x58,0x55,0x51,0x91,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x13,0x80,0x80,0x84,0xfe,0x80,0x20,0x20,0x24,0xac,0x70,0x20,0x20,0x50,0x50,0x8e,0x4, ++0x10,0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x7d,0x11,0x11,0x15,0xfd,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0xfc,0x4,0x0, ++0x10,0x66,0x42,0x42,0x66,0x42,0x43,0x7e,0x1,0x7e,0x8,0x8,0xe,0xf8,0x40,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10, ++0x8,0x7e,0x8,0x3e,0x8,0x7e,0x8,0x3f,0x0,0xff,0x0,0x3f,0x9,0x28,0x48,0x7,0x20,0xfc,0x20,0xf8,0x20,0xfc,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0xa8,0x24,0xe0, ++0x1,0x1,0x1,0x7f,0x1,0x9,0x9,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x8,0xfc,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x7f,0x2,0x29,0x28,0x48,0x7,0x0,0x4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x4,0x90,0x8c,0x24,0xe0, ++0x1,0x1,0x79,0x4a,0x4d,0x49,0x49,0x79,0x4f,0x4a,0x4a,0x4a,0x7b,0x48,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x50,0x20, ++0x4,0x7e,0x44,0x57,0x54,0x54,0x55,0x56,0x54,0x54,0x54,0x54,0x28,0x24,0x44,0x80,0x20,0x20,0x24,0xfe,0x40,0x84,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x94,0x88, ++0x8,0x1c,0xf1,0x11,0x11,0xfd,0x11,0x38,0x34,0x51,0x52,0x90,0x10,0x10,0x10,0x17,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfe,0x4,0x84,0x48,0x30,0x20,0xc0,0x0, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x0,0x3f,0x2,0x2,0x4,0x8,0x1f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x40,0x20,0xf0,0x10, ++0x10,0x10,0x10,0x14,0x59,0x52,0x55,0x90,0x10,0x17,0x10,0x28,0x24,0x41,0x83,0x0,0x40,0x40,0xa0,0x90,0x8,0x26,0xf4,0x0,0x4,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4, ++0x0,0x40,0x37,0x14,0x4,0x84,0x64,0x24,0xc,0x14,0xe4,0x24,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40, ++0x1,0x41,0x31,0x12,0x5,0x1,0xf1,0x11,0x17,0x12,0x12,0x12,0x17,0x18,0x10,0x0,0x0,0x8,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10, ++0x10,0x10,0x20,0x20,0x49,0xfa,0x15,0x20,0x40,0xfb,0x0,0x0,0x18,0xe1,0x43,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x8,0xfc,0x40,0x40,0x90,0x8,0xfc,0x4, ++0x4,0x4,0x7f,0x4,0x7f,0x42,0x82,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x1,0x40,0x48,0xfc,0x40,0xfe,0x4,0x8,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x0,0x3f,0x21,0x21,0x3f,0x20,0x28,0x30,0x20,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x78,0x80,0x0,0x10,0xf8,0x80,0x42,0x32,0xe,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0xc,0xf0,0x20,0x24,0xfe,0x10,0x50,0x8a,0x6,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc, ++0x0,0x11,0x7b,0x2,0xa,0xff,0x22,0x22,0x23,0x42,0x48,0xfd,0x5,0x2,0x4,0x8,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5c,0x42,0x3e, ++0x40,0x27,0x24,0x8,0x81,0x67,0x21,0xa,0x14,0x27,0xe0,0x20,0x2f,0x20,0x20,0x20,0x0,0xfe,0x84,0x88,0x0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40, ++0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x24,0xe7,0x24,0x24,0x24,0x25,0x26,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x58,0x60,0x40,0xc2,0x42,0x3e, ++0x20,0x10,0xfe,0x92,0x7d,0x10,0x7c,0x10,0xfe,0x11,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x50,0x48,0x84,0x20,0x20,0x50,0x48,0x86,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x40,0x30,0x17,0x0,0x80,0x60,0x2f,0x8,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x38,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x10,0x12,0x32,0x52,0x94,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x21,0x42,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x4,0x4,0xff,0x4,0x24,0x18,0x10,0x2b,0x48,0x8,0x18,0x28,0xc8,0x8,0x29,0x12,0x40,0x44,0xfe,0x40,0x28,0x24,0x20,0xfe,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x0,0x0,0x0,0xff,0x0,0x2,0x3f,0x22,0x22,0x22,0x3e,0x20,0x7,0x78,0x0,0x3,0x50,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x48,0x50,0x50,0x20,0x22,0x52,0x8a,0x4, ++0x0,0x0,0xff,0x0,0x3e,0x22,0x3e,0x20,0xe,0x70,0x0,0x2,0x29,0x28,0x48,0x7,0xa0,0x94,0xfe,0x80,0x88,0x88,0x50,0x50,0x22,0x52,0x8e,0x0,0x90,0xac,0x24,0xe0, ++0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x1f,0x30,0x57,0x90,0x17,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0, ++0x8,0x8,0x10,0x30,0x57,0x90,0x10,0x10,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x40,0x23,0x22,0x2,0xfa,0x13,0x20,0x70,0xaf,0x24,0x24,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0xb4,0x14,0x4,0x14,0x8, ++0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x17,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1e,0xf2,0x44,0x4,0x9,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x90,0xe,0x4, ++0x8,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x4,0x9,0x31,0xcf,0x1,0x1,0x3f,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x4,0x7f,0x54,0x54,0x54,0x7f,0x54,0x55,0x55,0x7d,0x45,0x1,0x1,0x0,0x0,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x8,0x1c,0xf3,0x10,0x10,0xfd,0x13,0x31,0x39,0x55,0x50,0x91,0x11,0x11,0x11,0x11,0x50,0x48,0xfc,0xa0,0xa2,0x3e,0x0,0xf0,0x4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x9,0xa,0x8,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x88,0xc4,0x6,0x2,0x0, ++0x12,0x1f,0x28,0x45,0x88,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x8,0x18,0x20,0x44,0x7e,0xa0,0x10,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x0,0x20,0x18,0x8, ++0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x24,0x4d,0x86,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x6,0x0, ++0x20,0x20,0x21,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x32,0x24,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x1,0x40,0x20,0x2f,0x1,0x1,0xe5,0x25,0x25,0x29,0x21,0x21,0x22,0x50,0x8f,0x0,0x0,0xc0,0x48,0xfc,0x20,0x20,0x28,0x24,0x24,0x24,0x20,0x20,0x60,0x6,0xfc,0x0, ++0x2,0x44,0x2f,0x28,0xf,0x88,0x4f,0x42,0x1f,0x24,0xc7,0x44,0x44,0x48,0x4a,0x51,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xa8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84, ++0x0,0x20,0x11,0x11,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x0,0x1,0xfd,0x5,0x49,0x29,0x11,0x11,0x29,0x24,0x40,0x87,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x10,0x10,0x14,0x7e,0x44,0x44,0x44,0x44,0x7c,0x10,0x10,0x14,0xfe,0x0, ++0x10,0x10,0x27,0x20,0x49,0xf8,0x17,0x20,0x43,0xfa,0x2,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x40,0xf0,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x90,0xc,0x4, ++0x10,0x11,0x21,0x21,0x49,0xf8,0x17,0x21,0x41,0xf9,0x1,0x1,0x19,0xe7,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8, ++0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x17,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x92,0x12,0x12,0x14,0x19,0x12,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x14,0xfe,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x38,0x54,0x93,0x12,0x10,0x10,0x20,0x24,0xfe,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0x70,0xa8,0x26,0x24,0x20,0x20, ++0x10,0x11,0x11,0xfd,0x21,0x28,0x4b,0x7d,0x9,0x9,0xf,0xf9,0x49,0xf,0x8,0x8,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8, ++0x10,0x14,0x3e,0x49,0x90,0x7d,0x10,0x7c,0x13,0xfe,0x11,0x39,0x55,0x91,0x11,0x11,0x40,0x48,0xfc,0x20,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x9,0x8,0x1f,0x31,0x5f,0x91,0x1f,0x11,0x1f,0x11,0xff,0x5,0x9,0x11,0x61,0x1,0x0,0x90,0xf8,0x0,0xf0,0x0,0xf0,0x0,0xf8,0x0,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x11,0x20,0x21,0x42,0x84,0x8,0x0,0xf0,0x20,0x20,0x40,0x40,0xf8,0x8,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4, ++0x4,0x4,0xf,0x8,0x10,0x3f,0x40,0x1f,0x0,0x3f,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x1,0x0,0x1f,0x12,0x92,0x53,0x54,0x18,0x30,0x5f,0xd0,0x10,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x40,0x37,0x11,0x1,0x81,0x61,0x25,0x9,0x11,0x21,0xe2,0x22,0x22,0x24,0x29,0x22,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4, ++0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x40,0x44,0x44,0x4a,0x72,0x40,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80,0x80, ++0x20,0x20,0x21,0x21,0xf9,0x4d,0x4b,0x49,0x49,0x8b,0x55,0x51,0x22,0x52,0x8c,0x8,0x20,0x14,0xfe,0x40,0x48,0x7c,0x50,0x90,0x14,0xfe,0x10,0x10,0x20,0x28,0x46,0x82, ++0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x21,0x41,0xf9,0x2,0x2,0x1a,0xe4,0x49,0x2,0x8,0xfc,0x8,0x8,0x10,0x10,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x10,0x17,0x10,0xfd,0x10,0x14,0x19,0x36,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x8,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x40,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x1,0x21,0x11,0xa,0x12,0x24,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x8,0x0,0x8,0x10,0xa0,0x98,0x48,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0x20,0xa0,0x40, ++0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x8,0x1f,0x22,0x7f,0x24,0x3f,0x24,0x3f,0x20,0x3,0x7c,0x0,0x40,0x44,0xfe,0x40,0x4,0x24,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0x4,0x84,0x14,0x8, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x13,0x1a,0x31,0xd1,0x10,0x10,0x10,0x51,0x26,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x2,0x7e,0x2,0xfe,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x4,0x3f,0x4,0xff,0x10,0x60,0x80,0xf8,0x82,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xf8,0x40,0xfe,0x10,0xc, ++0x0,0x1f,0x1,0x1,0x7f,0x5,0x9,0x11,0x6f,0x0,0x0,0xff,0x1,0x1,0x5,0x2,0xe0,0x0,0x0,0x8,0xfc,0x40,0x20,0x1c,0xe8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x93,0x12,0x11,0x11,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x10,0x10,0x1e,0x22,0x52,0xcc,0x28,0x17,0x20,0xc0,0x1f,0x1,0x9,0x11,0x25,0x2,0x0,0x0,0xfc,0x88,0x50,0x20,0x20,0xd0,0xe,0x24,0xf0,0x0,0x40,0x30,0x10,0x0, ++0x8,0x4,0x7f,0x11,0xa,0x4,0xa,0x31,0xd1,0x11,0x11,0x11,0x11,0x21,0x41,0x0,0x4,0x84,0xc4,0x24,0x24,0x24,0x24,0xa4,0x64,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x10,0x13,0x10,0x18,0x57,0x50,0x51,0x92,0x15,0x10,0x10,0x1f,0x10,0x10,0x11,0x10,0x38,0xc0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf4,0x20,0x44,0xfe,0x40,0x40,0x40,0x80, ++0x0,0x40,0x37,0x11,0x80,0x60,0x21,0xe,0x11,0x21,0xe1,0x21,0x21,0x22,0x24,0x20,0x80,0x44,0xfe,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x2,0x1,0x7f,0x41,0x81,0x1f,0x2,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x80,0x44,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20, ++0x2,0x1,0x7f,0x40,0x88,0xe,0x8,0x8,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x13,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x8e,0x4, ++0x0,0x20,0x10,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x20,0x17,0x10,0x0,0x0,0xf0,0x13,0x12,0x12,0x12,0x12,0x16,0x1a,0x11,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x2,0x2,0x2,0xfe,0x0, ++0x0,0x7d,0x44,0x44,0x7d,0x45,0x45,0x45,0x7c,0x40,0x48,0x44,0x5c,0x60,0x41,0x6,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x92,0x92,0xe,0x0, ++0x0,0x7f,0x0,0x0,0x3f,0x20,0x20,0x20,0x1f,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0x4,0xfc,0x0,0x4,0x82,0x92,0x12,0xf0,0x0, ++0x0,0x7d,0x44,0x48,0x48,0x50,0x4b,0x48,0x44,0x44,0x44,0x69,0x52,0x40,0x40,0x40,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa4,0x22,0x22,0x20,0xa0,0x40, ++0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x25,0x25,0x44,0x28,0x10,0x28,0x44,0x84,0x3,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x12,0x22,0x23,0x4a,0xfa,0x12,0x23,0x42,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x0,0x20,0x20,0x20,0x24,0xac,0x70,0x20,0xfc,0x20,0x70,0xac,0x24,0x20,0x24,0xfe,0x0, ++0x8,0x8,0x13,0x10,0x24,0xfc,0x8,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x10,0x7e,0x12,0x12,0x2a,0x44,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88, ++0x12,0x12,0x12,0x12,0xfe,0x17,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x15,0x18,0x10,0x0,0x0,0x0,0x4,0x1e,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x94,0x0, ++0x1,0x1,0x1,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x1a,0x63,0x5,0x19,0x63,0x5,0x19,0x65,0x2,0x0,0x0,0xfe,0x2,0x4,0xf8,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4,0x0, ++0x10,0x10,0x10,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x22,0x22,0x4a,0x84,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0, ++0x4,0x4,0xff,0x4,0x1,0x7f,0x1,0x9,0x5,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x80,0x40,0x30,0xe,0x4, ++0x10,0x13,0x10,0xfe,0x11,0x55,0x39,0x11,0xff,0x11,0x11,0x29,0x25,0x44,0x81,0x2,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x44,0x54,0x8c,0x4,0x2, ++0x0,0xff,0x4,0x7f,0x44,0x44,0x7f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x4,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x60,0x18,0x8, ++0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20, ++0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x26,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0x84,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x1c,0xf3,0x12,0x10,0xfd,0x10,0x39,0x36,0x54,0x51,0x92,0x14,0x11,0x12,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40, ++0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xa0,0x10,0x8,0x6,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x10,0x7e,0x12,0x12,0x12,0x2a,0x44,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x10,0x10,0x7f,0x11,0x11,0x25,0x42,0x9f,0x0,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x4,0x7e,0x44,0x44,0x7c,0x44,0xe0,0x20,0x20,0x24,0xfe,0x4,0xc4,0x14,0x8, ++0x10,0x10,0x13,0x12,0xfc,0x25,0x24,0x25,0x26,0x44,0x29,0x12,0x28,0x45,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x80,0x44,0x6c,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40, ++0x4,0x7e,0x11,0x10,0x10,0x3e,0x22,0x63,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x4,0x4,0x24,0x24,0x24,0x25,0x24,0x24,0x4,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x48,0x7c,0xa0,0x18,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x27,0x5,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0xf8,0x8,0x90,0x90,0x60,0x20,0xd0,0xe,0x4,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x1,0x1,0x9,0xd,0x11,0x21,0x0,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x20,0x10,0x18,0x8,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x10,0x14,0x3e,0x48,0x2,0x2,0x7f,0x2,0x1,0x7f,0x1,0x1,0x0,0x7,0x38,0x0,0x40,0x48,0xfc,0x20,0x80,0x50,0xf8,0x0,0x4,0xfe,0x10,0x20,0xc0,0x44,0x24,0x1c, ++0x20,0x1b,0x8,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8, ++0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x0,0x24,0x22,0x40,0x20,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18,0x0,0x90,0x4c,0x4, ++0x10,0x8,0x7f,0x4,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x20,0x48,0xfc,0x90,0xf8,0x90,0x94,0xfe,0x90,0x90,0xf0,0xc0,0xb0,0x8e,0x84,0x80, ++0x2,0x1,0x1f,0x10,0x10,0x1f,0x10,0x17,0x14,0x17,0x14,0x27,0x24,0x44,0x84,0x4,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x1,0x7d,0x5,0x45,0x29,0x29,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x4c,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x10,0x11,0x10,0x14,0xfe,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x20,0x27,0x44,0xfc,0x15,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe5,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82, ++0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x7f,0x0,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0xf8,0x4,0x4, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x30,0x58,0x56,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0, ++0x1,0x1,0xff,0x1,0x3f,0x21,0x29,0x25,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x8,0xfc,0x8,0x28,0x48,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0, ++0x0,0x10,0xf8,0x27,0x24,0x44,0x55,0x7c,0xd5,0x55,0x55,0x55,0x55,0x75,0x48,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82, ++0x0,0x8,0xfc,0x10,0x11,0x22,0x2d,0x78,0xa8,0x2a,0x29,0x29,0x29,0x38,0x27,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x13,0x11,0x1e,0x33,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x40,0x44,0xfe,0x80,0x80,0xe0,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0xa2,0x40, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x18,0x30,0xd2,0x11,0x11,0x11,0x10,0x57,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0x90,0x2b,0x20,0x27,0x24,0x24,0x27,0x24,0x24,0x27,0x20,0x20,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x48,0x48,0xc8,0x28,0x10, ++0x8,0x8,0x8,0x10,0x11,0x32,0x55,0x98,0x10,0x12,0x11,0x11,0x11,0x10,0x1f,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x4,0x40,0x48,0x4c,0x48,0x50,0x4,0xfe,0x0, ++0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x26,0x7f,0x4,0x4,0x18,0x60,0x20,0x44,0xfe,0x0,0x48,0x48,0x48,0x48,0x48,0x18,0x8,0xfc,0x8,0x8,0x28,0x10, ++0x0,0x40,0x30,0x17,0x4,0x4,0xd,0x14,0x25,0xe5,0x25,0x25,0x25,0x25,0x8,0x10,0x10,0x18,0x14,0xfe,0x10,0x10,0xd0,0x14,0xd4,0x54,0x54,0x58,0xd0,0x2a,0x46,0x82, ++0x8,0x8,0xff,0xa,0x2,0x7f,0x4,0xb,0x10,0x10,0x3f,0x50,0x90,0x10,0x11,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x10,0x10,0x12,0x12,0xfe,0x12,0x32,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x1f,0x10,0x80,0x90,0x94,0xbe,0xd0,0x8c,0x84,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x4,0x24,0x24,0x25,0x26,0x25,0x1,0x6,0x18,0x6f,0x81,0x1f,0x9,0x5,0x7f,0x0,0x40,0x48,0xfc,0x40,0x30,0x10,0x0,0xc0,0x30,0xee,0x4,0xf0,0x20,0x48,0xfc,0x0, ++0x4,0x7e,0x44,0x44,0x44,0x7d,0x10,0x10,0x53,0x5c,0x50,0x50,0x5c,0x70,0xc3,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x4,0x7e,0x44,0x54,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x10,0x28,0x47,0x84,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x12,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e,0x0, ++0x20,0x27,0x39,0x41,0x82,0x7a,0x24,0x27,0xf9,0x21,0x25,0x22,0x2a,0x35,0x28,0x0,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c, ++0x10,0x1e,0x28,0x45,0x8,0x4,0xff,0x2,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x2a,0x24,0x40,0x7c,0x90,0x8,0x20,0x44,0xfe,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x8,0x18, ++0x10,0x10,0x12,0x22,0x23,0x64,0xa4,0x28,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x2e,0x23,0x62,0xa4,0x28,0x2f,0x22,0x32,0x2d,0x24,0x2a,0x31,0x20,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc, ++0x8,0x10,0x3e,0x22,0x22,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x4a,0x85,0x0,0x4,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0x20,0x50,0x50,0x52,0x92,0xe, ++0x4,0x4,0xa,0x11,0x20,0x42,0xbf,0x0,0x24,0x14,0x15,0x15,0x3,0x7c,0x20,0x0,0x4,0x4,0x4,0x24,0xa4,0x64,0x24,0x24,0xa4,0xa4,0x24,0x24,0x84,0x4,0x14,0x8, ++0x20,0x20,0x20,0x3c,0x24,0x4b,0x40,0xa0,0x23,0x20,0x20,0x24,0x28,0x30,0x23,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x48,0x7c,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x2,0x42,0x22,0x2f,0x4,0x85,0x69,0x2f,0x11,0x21,0xe1,0x3f,0x29,0x21,0x21,0x21,0x0,0xc,0x30,0xe0,0x20,0x24,0x3e,0xe8,0x28,0x28,0xe8,0x28,0x28,0x48,0x88,0x8, ++0x0,0x40,0x2f,0x28,0xa,0x8a,0x4a,0x4a,0x1a,0x2a,0xca,0x4a,0x42,0x45,0x48,0x50,0x20,0x20,0xa4,0xae,0xf0,0xa0,0xae,0xf0,0xa4,0xa4,0xa8,0x90,0x30,0x4a,0x8a,0x6, ++0x2,0x41,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x24,0x24,0x24,0x4,0xbe,0x84,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8, ++0x0,0x0,0xfb,0x8,0x17,0x10,0x3b,0x8,0x8b,0x50,0x50,0x37,0x20,0x50,0x88,0x7,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0xf8,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc, ++0x10,0x1f,0x10,0x27,0x24,0x67,0xa4,0x2f,0x20,0x27,0x24,0x27,0x24,0x27,0x20,0x2f,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe, ++0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x20,0x20,0xc0,0x80,0x60,0x10, ++0x10,0x10,0x11,0x91,0x73,0x34,0x10,0x10,0x1f,0x30,0x52,0xd1,0x10,0x10,0x10,0x10,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0x94,0xfe,0x10,0x10,0x90,0x90,0x10,0x50,0x20, ++0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0x7d,0x5,0x9,0x9,0x11,0x65,0x2,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x8,0x98,0x60,0x20,0x10,0xe,0x4,0x0, ++0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x2f,0x20,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0, ++0x0,0xff,0x4,0x5,0x7d,0x45,0x41,0x43,0x7c,0x25,0x75,0x25,0x35,0xc5,0x14,0xb,0x4,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe, ++0x4,0x4,0xff,0x4,0x4,0x8,0x49,0x2a,0x28,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x40,0xf8,0x8,0xb0,0x50,0x94,0xfe,0x10,0x10,0x90,0x10,0x30, ++0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x5,0x1,0xff,0x5,0x9,0x11,0x21,0xc1,0x1,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x40,0x20,0x10,0xe,0x4,0x0, ++0x4,0x44,0x24,0x4,0x15,0x24,0x64,0x4,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x40,0x40,0x7c,0x84,0x48,0x30,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4, ++0x1,0x21,0x11,0x17,0x1,0x1,0xf1,0x11,0x1f,0x11,0x11,0x15,0x19,0x11,0x2,0x0,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x7f,0x40,0x40,0x4f,0x48,0x48,0x4f,0x48,0x48,0x48,0x50,0x60,0x40,0x7f,0x0,0x8,0xfc,0x20,0x70,0x80,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x4,0x44,0x24,0xd,0x16,0x64,0x4,0xff,0x4,0x3f,0x24,0x38,0x27,0x20,0x3f,0x20,0x80,0xf8,0x88,0x90,0x60,0x40,0x84,0xfe,0x40,0xf8,0x48,0x38,0xc8,0x8,0xf8,0x8, ++0x0,0x7c,0x45,0x4a,0x48,0x50,0x49,0x4a,0x44,0x45,0x45,0x69,0x53,0x40,0x40,0x40,0x80,0x80,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x44,0xf0,0x40,0x48,0xfc,0x40,0x40,0x40, ++0x8,0x8,0xff,0x9,0x8,0x1f,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x24,0x22,0x40,0x20,0x24,0xfe,0x20,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0x48,0x26,0x2, ++0x22,0x22,0x22,0x23,0xfa,0x22,0x7f,0x6a,0xa2,0x27,0x2a,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x7c,0xc4,0x44,0x24,0x28,0x28,0x28,0x10,0x90,0x28,0x28,0x46,0x84,0x0, ++0x1,0x9,0xfd,0x11,0x13,0x25,0x21,0x79,0xa9,0x29,0x29,0x29,0x29,0x3a,0x22,0x4,0x20,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa4,0x92,0x2, ++0x9,0x8,0xf,0x10,0x10,0x3f,0x50,0x90,0x1f,0x10,0x10,0x1f,0x10,0x24,0x22,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0,0x90,0x4c,0x4, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x26,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x2,0x1,0x1,0xff,0x8,0x8,0x10,0x28,0x44,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x20,0x10,0xc,0x24,0x40,0x80,0x0,0x80,0x40,0x30,0xe,0x4, ++0x10,0x8,0x9,0xff,0x0,0x14,0x22,0x41,0xa2,0x14,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x41,0x31,0x10,0x7,0x80,0x60,0x20,0xb,0x10,0x27,0xe1,0x21,0x21,0x21,0x22,0x2c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e, ++0x8,0xfd,0x8,0x48,0x4b,0x48,0x48,0x49,0x7e,0x4,0x1c,0xe4,0x44,0x14,0x9,0x2,0xc,0xf0,0x20,0x24,0xfe,0x50,0x88,0x6,0x8c,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x10,0x13,0x10,0x10,0xfc,0x27,0x24,0x25,0x27,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0xf,0x2,0xef,0xa9,0xaf,0xa0,0xaf,0xa8,0xaf,0xa8,0xaf,0xe8,0x89,0xf,0x0,0x1c,0xe0,0x48,0xfc,0x24,0xfc,0x0,0x88,0x88,0xfe,0x88,0xa8,0x28,0x8,0xa8,0x10, ++0x12,0x11,0x11,0x17,0xfc,0x14,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x44,0x24,0x28,0xfe,0x2,0x4,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0xa2,0x22,0x1e, ++0x10,0x10,0x10,0x1f,0x20,0x20,0x7d,0x92,0x10,0x7c,0x10,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x20,0x23,0x28,0x3c,0x50,0x97,0x10,0xfd,0x13,0x15,0x11,0x29,0x25,0x41,0x82,0x4,0x18,0xe0,0x40,0x40,0x44,0xfe,0xa0,0x10,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x9,0x9,0x8,0x17,0x10,0x30,0x50,0x93,0x10,0x17,0x11,0x11,0x11,0x11,0x12,0x1c,0x0,0x8,0xfc,0x80,0xa0,0x44,0xa4,0x1c,0x0,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e, ++0x9,0x7d,0x49,0x4f,0x49,0x79,0x49,0x4f,0x49,0x79,0x4a,0x4a,0x4f,0x48,0x88,0x18,0x0,0x4,0x3e,0xe4,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0xb4,0xe8,0x60,0x20,0x20, ++0x8,0x88,0x50,0x27,0x50,0x89,0xa,0x1c,0x29,0x48,0x88,0x8,0x8,0x9,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x4,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x8,0xf,0x10,0x20,0x5f,0x91,0x11,0x1f,0x11,0x11,0x1f,0x11,0x11,0x21,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10, ++0x20,0x20,0x20,0x3f,0x24,0x48,0x41,0xa2,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4, ++0x22,0x24,0x2f,0x48,0x4f,0xf8,0x1f,0x22,0x5f,0x84,0xf7,0x4,0x34,0xc8,0x49,0x10,0x10,0x90,0xd0,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0xc6,0x84, ++0x10,0x10,0x20,0x23,0x44,0xf8,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x41,0x2,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0x6,0x4, ++0x24,0x24,0x49,0x24,0x3f,0x24,0x3f,0x24,0x3f,0x4,0xff,0x15,0x14,0x24,0x44,0x4,0x84,0x84,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0xe4,0x24,0x84,0x84,0x14,0x8, ++0x8,0x8,0x7f,0x9,0xa,0xff,0x8,0x1f,0x22,0xcc,0x8,0xe,0x78,0x8,0x29,0x12,0x40,0x40,0x40,0x44,0x7e,0x88,0x8,0x48,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x2,0xff,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xc7,0x82,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfc,0x28,0x28,0xfe,0x10,0x20,0xfc,0x88,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x10,0x13,0x20,0xfc,0x20,0x57,0x50,0xfd,0x13,0x15,0x1d,0xf1,0x51,0x11,0x12,0x14,0xc,0xf0,0x40,0x40,0x44,0xfe,0x90,0x18,0x1e,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x10,0x20,0xff,0x20,0x50,0x51,0xfe,0x10,0x10,0x1e,0xf0,0x50,0x10,0x11,0x12,0x40,0x20,0x24,0xfe,0x0,0x88,0x6,0x2,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x4,0x4,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x9c,0xe4,0x84,0x4,0x4,0x4, ++0x2,0x1,0x7f,0x48,0x91,0x9,0xf,0x11,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xfe,0x22,0x14,0x0,0xf0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd4,0x1c,0x14,0x15,0x17,0x50,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x14,0xe4,0x28,0x10, ++0x10,0x10,0x17,0x10,0xfd,0x10,0x17,0x18,0x30,0xdf,0x10,0x11,0x10,0x10,0x50,0x23,0x80,0x48,0xfc,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x90,0x10,0xa0,0x60,0x98,0x8, ++0x20,0x24,0x3e,0x20,0x20,0x26,0x78,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x80,0x88,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x4,0xe,0x78,0xb,0x8,0xfe,0x8,0x19,0x1c,0x2a,0x29,0x49,0x89,0x9,0x9,0x9,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x12,0x12,0x22,0x4f,0x82,0x12,0x1f,0x22,0x62,0xaf,0x22,0x22,0x23,0x3e,0x28,0x20,0x0,0x8,0x7c,0x80,0x0,0x4,0xfe,0x8,0x8,0x88,0x8,0x8,0xc8,0x8,0x28,0x10, ++0x0,0x78,0x48,0x50,0x51,0x62,0x55,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x40,0x40,0xa0,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x4,0x4,0x7f,0x4,0xff,0x10,0x15,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0x24,0x28,0x30,0x20,0x52,0x92,0x8a,0x4, ++0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x10,0x10,0x20,0x24,0x42,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x4,0x4,0xff,0x4,0x4,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x48,0x28,0x10,0x0,0x0,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x0,0x24,0x22,0x22,0x40,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x90,0x48,0x44,0x4, ++0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x18,0x33,0xd0,0x12,0x12,0x12,0x13,0x54,0x28,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c, ++0x0,0x0,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x78,0x4a,0x4a,0x4a,0x7b,0x44,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c, ++0x20,0x13,0x12,0xff,0x2,0x4b,0x48,0x49,0x4a,0x54,0x12,0x1e,0xe2,0x43,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x28,0x10, ++0x0,0x40,0x30,0x17,0x0,0x80,0x67,0x20,0x8,0x13,0xe2,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x10,0x23,0x44,0x78,0x9,0x10,0x20,0x7d,0x1,0x1,0xd,0x71,0x21,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x11,0x3e,0x24,0x48,0xbe,0x2b,0x2a,0x3e,0x2a,0x2a,0x3f,0x2a,0x2a,0x42,0x86,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0x50,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x10, ++0x10,0x11,0x11,0x15,0xff,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x0,0x0,0x0,0xff,0x0,0x12,0x12,0x12,0x7f,0x12,0x12,0x12,0x12,0x22,0x41,0x2,0x40,0x50,0x48,0xfe,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x62,0x92,0xa,0x4, ++0x4,0xff,0x4,0x10,0x7f,0x10,0x7c,0x13,0x7c,0x11,0x39,0x35,0x51,0x91,0x11,0x11,0x44,0xfe,0x40,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x8,0x8,0xff,0x8,0x9,0x2,0x4,0x8,0x14,0x24,0xc4,0x4,0x4,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x80,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40, ++0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x4,0xc,0x34,0xc4,0x4,0x8,0x10,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x80,0x60,0x50,0x4e,0x44,0x40,0x40,0x40, ++0x9,0x9,0x9,0x17,0x11,0x31,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0xfc,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x2,0x4,0x8,0x10,0x24,0xc4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x0,0x1f,0x10,0x90,0x50,0x51,0x12,0x3d,0x51,0xd1,0x11,0x22,0x22,0x44,0x0,0x80,0x44,0xfe,0x40,0x40,0xa0,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x40,0x20,0x2f,0x0,0xe5,0x25,0x25,0x2f,0x25,0x25,0x2d,0x35,0x24,0x9,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0x24,0x24,0xe8,0x28,0x30,0x20,0x60,0x92,0xa,0x4, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0, ++0x10,0x14,0x3e,0x49,0x80,0x3e,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x4a,0x85,0x40,0x48,0xfc,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x94,0x8, ++0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1f,0x1,0x11,0x9,0x5,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0xf0,0x0,0x10,0x20,0x48,0xfc,0x0, ++0x1,0x1,0x2,0x4,0x8,0x12,0x21,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0x8e,0x84,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0, ++0x0,0x40,0x37,0x10,0xf,0x80,0x67,0x20,0x8,0x17,0xe0,0x20,0x2f,0x20,0x20,0x20,0x80,0x88,0xfc,0x88,0xfe,0x88,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80, ++0x41,0x31,0x17,0x1,0xfb,0xd,0x11,0x29,0x73,0xa8,0x2f,0x20,0x21,0x22,0x24,0x20,0x10,0x10,0xfc,0x10,0xb8,0x56,0x10,0x10,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0xc0, ++0x4,0x25,0x25,0x24,0x24,0x24,0x7,0x4,0x1f,0x1,0x2,0x7f,0x1,0x9,0x11,0x63,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8, ++0x20,0x20,0x3b,0x42,0x83,0x7a,0x23,0x20,0xff,0x24,0x24,0x24,0x2c,0x30,0x20,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x44,0x44,0x44,0x54,0x48,0x40,0x40, ++0x8,0x8,0xb,0x10,0x11,0x31,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x0,0x4,0xfe,0x4,0x4,0x4,0x8,0x8,0x88,0x90,0x50,0x20,0x50,0x88,0x6,0x4, ++0x41,0x21,0x2f,0x1,0x1,0xe0,0x27,0x24,0x27,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0, ++0x2,0x42,0x22,0x2f,0x2,0x2,0xe2,0x22,0x2f,0x22,0x22,0x22,0x24,0x50,0x8f,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x26,0xfc,0x0, ++0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x2,0x6,0xf8,0x40,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x88,0x8,0x8, ++0x0,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x8,0x8,0x7e,0x18,0x2c,0x4b,0x88,0x0,0x3f,0x0,0xff,0x1,0x9,0x11,0x25,0x2,0x20,0x28,0xfc,0x70,0xa8,0x24,0x22,0x0,0xf8,0x0,0xfe,0x0,0x20,0x18,0x8,0x0, ++0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x14,0x10,0x28,0x44,0x3,0x8,0x1c,0xe0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6,0xfc, ++0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x92,0x12,0x14,0x10,0x10,0x28,0x44,0x84,0x0,0x8,0xfc,0x8,0x8,0xf8,0x28,0x20,0x10,0xe,0xc4,0x20,0x10,0xc0,0x30,0x8,0x0, ++0x40,0x33,0x10,0x1,0x80,0x63,0x20,0x7,0x14,0x29,0xe1,0x20,0x20,0x20,0x23,0x2c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x1f,0x10,0x10,0x1f,0x11,0x10,0x10,0x10,0x16,0x21,0x40,0x86,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x20,0x90,0xe,0x4,0x80,0xc0,0x40, ++0x0,0xff,0x2,0x4,0xc,0x12,0x21,0x40,0xfe,0x8,0x8,0x8,0xf,0x71,0x22,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10, ++0x12,0x12,0xff,0x12,0x0,0x7f,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x42,0x2,0x4,0x84,0xc4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x14,0x8, ++0x8,0x8,0x8,0xfe,0x8,0x7e,0x42,0x42,0x42,0x7e,0x14,0x15,0x16,0x24,0x41,0x82,0x20,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0x84,0xfc,0x50,0x50,0x50,0x92,0x12,0xe, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0xe,0x70,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0xc0,0x38,0x6,0xf0,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x8,0x7f,0x48,0x4b,0x48,0x7f,0x48,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4a,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7e,0x42,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x24,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x10,0x10,0x1e,0x25,0x48,0xbe,0x2a,0x2a,0x3e,0x2a,0x2a,0x3e,0x0,0xf,0x70,0x20,0x40,0x20,0x24,0xfe,0x8,0xfc,0x88,0x88,0x88,0xf8,0x20,0x70,0xac,0x24,0xa0,0x40, ++0x2,0x1,0x1,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x1,0x9,0x9,0x11,0x25,0x2,0x0,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x40,0x30,0x18,0x8,0x0, ++0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x92,0x12,0x13,0x10,0x11,0x12,0x14,0x11,0x10,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x10,0x10,0x93,0x54,0x19,0xfc,0x13,0x10,0x39,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc, ++0x10,0x13,0x92,0x54,0x19,0xfd,0x11,0x31,0x39,0x55,0x90,0x10,0x10,0x10,0x11,0x16,0x4,0xfe,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x24,0xa0,0x40,0x60,0x90,0xe,0x4, ++0x10,0x13,0x20,0x20,0x44,0xfc,0x8,0x13,0x20,0x41,0xfc,0x0,0x1c,0xe0,0x47,0x0,0x0,0xfc,0x8,0x10,0x30,0x48,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x8,0x8,0x8,0x8,0x7f,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20, ++0x14,0x7f,0x10,0x3f,0x55,0x1d,0x3,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x40,0x7c,0xc8,0x28,0x10,0x6e,0x4,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0, ++0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x9,0x11,0x65,0x2,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x20,0x18,0x8,0x0, ++0x0,0xfd,0x4,0x8,0x18,0x26,0xc2,0x0,0x7c,0x10,0x10,0x10,0x1e,0xe0,0x40,0x3,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x58,0x84,0x2, ++0x8,0x8,0x7e,0x9,0x3e,0x8,0xff,0x0,0x3f,0x22,0x3e,0x22,0x3e,0x22,0x22,0x26,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40, ++0x20,0x20,0x27,0x21,0x20,0xff,0x20,0x23,0x22,0x23,0x22,0x3b,0xe1,0x41,0x2,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e, ++0x12,0x12,0xff,0x12,0x20,0x3f,0x41,0xbd,0x25,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84, ++0x20,0x20,0x27,0x79,0x40,0x87,0x78,0x23,0x22,0xfb,0x22,0x23,0x29,0x31,0x22,0xc,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x20,0x22,0x22,0x1e, ++0x8,0xb,0x10,0x20,0x40,0x8,0x11,0x36,0x50,0x93,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x10,0x20,0x60,0x98,0xe,0x2,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x57,0x30,0x10,0x13,0x3c,0x50,0x97,0x10,0x20,0x20,0x4f,0x80,0x80,0x44,0xfe,0x0,0xf8,0x30,0xc0,0x38,0x6,0x0,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x10,0x13,0xfc,0x3,0x48,0x4f,0x48,0x4b,0x12,0x13,0x1e,0xe3,0x42,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x50,0x42,0x42,0x3e, ++0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x70,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x50,0x40,0x42,0x42,0x3e, ++0x1,0x1,0x83,0x64,0x28,0x7,0x10,0x20,0x3f,0xe0,0x20,0x2f,0x20,0x20,0x22,0x21,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x80,0x80,0x0, ++0x10,0x10,0x13,0x12,0x56,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x2a,0x46,0x82,0x2,0x0,0x4,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x2,0x1,0x7f,0x44,0x88,0x3f,0x4,0xff,0x4,0x3f,0x8,0xf,0x18,0x28,0xcf,0x8,0x0,0x0,0xfe,0x42,0x24,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x17,0x11,0xf9,0x17,0x11,0x1b,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x10,0xd0,0x10,0x12,0x54,0xb8,0x10,0x10,0x90,0x50,0x10,0x10,0x28,0x46,0x84,0x0, ++0x2,0x1,0x7f,0x44,0x88,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x42,0x34,0x10,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x20,0x21,0x45,0xfd,0x9,0x11,0x21,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x78,0x88,0x8,0x8,0x8,0x8,0x8, ++0x0,0x4,0xfe,0x10,0x11,0x11,0xfe,0x10,0x10,0x10,0x1e,0xf0,0x40,0x1,0x2,0xc,0x40,0x40,0x88,0xfc,0x8,0x8,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0, ++0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0x7c,0x4,0x4,0x4,0xff,0x0,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0, ++0x4,0x4,0x7,0x8,0x8,0x10,0x20,0x0,0x1,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x40,0xe0,0x40,0x40,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0, ++0x4,0x7,0x8,0x10,0x21,0x2,0xc,0x11,0x69,0x9,0x9,0x11,0x2,0x4,0x18,0xe0,0x20,0xf0,0x20,0x40,0x80,0x60,0x10,0xc,0x24,0x30,0x20,0x40,0x0,0x40,0x30,0xe, ++0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x40,0x2f,0x20,0x0,0x87,0x64,0x24,0xc,0x15,0x26,0xe4,0x25,0x24,0x24,0x27,0x24,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xf4,0x4,0x4,0xfc,0x4, ++0x0,0x3f,0x20,0x2f,0x29,0x29,0x2f,0x29,0x29,0x2f,0x2a,0x29,0x2e,0x48,0x41,0x82,0x4,0xfe,0x0,0x7c,0x10,0x50,0x50,0x54,0x7e,0x20,0x30,0x50,0xd2,0x92,0xe,0x0, ++0x10,0x14,0x12,0x10,0xfe,0x11,0x92,0x54,0x18,0x30,0x54,0xd2,0x10,0x10,0x50,0x23,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x90,0x50,0x50,0x20,0x50,0x50,0x8e,0x4, ++0x0,0x20,0x23,0x22,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x22,0x23,0x22,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x0,0x1,0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x3e,0x20,0x3c,0x20,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x2,0xc,0x70,0x78,0x8,0x78,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x48,0x30, ++0x10,0x10,0x1f,0x21,0x62,0x14,0x8,0x14,0x23,0xc0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x50,0x4c,0x44,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x8,0x2,0xff,0x0,0x3f,0x22,0x22,0x22,0x3e,0x8,0x2a,0x49,0x88,0x29,0x12,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x50,0x52,0x92,0xe,0x0, ++0x1,0x0,0x1f,0x11,0x91,0x51,0x52,0x14,0x30,0x50,0xd0,0x11,0x22,0x24,0x48,0x10,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x20,0x40,0xc0,0x20,0x10,0x8,0xe,0x4, ++0x28,0x28,0xfe,0x29,0x3a,0x11,0x7c,0x54,0x57,0x7c,0x10,0xfe,0x11,0x12,0x10,0x10,0x80,0x84,0xfe,0x4,0x44,0x54,0xe4,0x44,0xfc,0x44,0xe4,0xd4,0x54,0x44,0x54,0x48, ++0x10,0x10,0x11,0x11,0xfe,0x14,0x11,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8, ++0x0,0x45,0x2d,0x11,0x29,0x49,0x89,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x57,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x1,0x0,0x1f,0x10,0x93,0x52,0x12,0x13,0x32,0x52,0xd3,0x12,0x12,0x22,0x2f,0x40,0x0,0x84,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x8,0xfc,0x9,0x49,0x4a,0x4c,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x4,0x28,0x10,0x80,0x80,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8, ++0x8,0x8,0xff,0x8,0x10,0x1f,0x22,0x52,0x8a,0x7f,0x6,0xb,0xa,0x12,0x22,0x2,0x20,0x24,0xfe,0x20,0x4,0xfe,0x4,0x44,0x84,0xf4,0x4,0x84,0xc4,0x44,0x14,0x8, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x27,0x24,0x24,0x27,0x24,0x40,0x80,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x4,0x14,0x8, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x20,0x23,0x2a,0x3e,0x52,0x93,0x12,0xfe,0x12,0x12,0x13,0x2a,0x26,0x42,0x83,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0, ++0x22,0x19,0x9,0x0,0xff,0x4,0x9,0x11,0x2f,0xc1,0x1,0x3f,0x1,0x1,0x1,0x1,0x8,0x18,0x20,0x44,0xfe,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x0,0x0,0x0, ++0x40,0x33,0x12,0x2,0x82,0x63,0x22,0xa,0x12,0x23,0xe2,0x22,0x22,0x22,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x14,0xfe,0x0, ++0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x3f,0x5,0x9,0x33,0x5,0x9,0x71,0x1,0x80,0xfe,0x44,0x28,0x10,0x28,0xc6,0x70,0x88,0x18,0xa0,0x40,0x30,0xe,0x4,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0, ++0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x3f,0x0,0x10,0xf8,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x8,0xfc,0x0, ++0x0,0xf,0x8,0x8,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0xc,0x10,0x20,0x20,0xf0,0x20,0x20,0xe0,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x20,0x18,0x8, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x51,0x5d,0x51,0x52,0x5e,0xe4,0x48,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x20,0x21,0x3d,0x41,0x81,0x7d,0x21,0x21,0xfd,0x21,0x25,0x2a,0x32,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x8,0xb,0xa,0x12,0x13,0x32,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4, ++0x4,0x4,0x8,0xf,0x10,0x20,0x4f,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0x44,0x44,0xc4,0x44,0x4,0x28,0x10, ++0x10,0x13,0x12,0x12,0x5b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x11,0x13,0x14,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x11,0x11,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x24,0x25,0x3f,0x24,0x24,0x3f,0x50,0x50,0x50,0x9f,0x10,0x84,0xc4,0xa4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x94,0x88, ++0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xc, ++0x2,0x7f,0x42,0x42,0x7e,0x0,0x7e,0x42,0x42,0x7e,0x42,0x42,0x7f,0x42,0x4a,0x44,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8, ++0x10,0x11,0x11,0x11,0xfd,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8, ++0x8,0xa,0x9,0x10,0x17,0x30,0x5f,0x91,0x12,0x15,0x19,0x11,0x11,0x11,0x11,0x10,0x40,0x48,0x50,0x40,0xfc,0xa0,0xfe,0x10,0x8,0xf6,0x14,0x10,0x50,0x24,0x4,0xfc, ++0x1,0x11,0x9,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0xf,0x8,0x0,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0xe4,0x20,0xe0,0x20,0xe0,0x20, ++0x1,0x11,0x9,0x1,0x7f,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x9,0x8,0x8,0x7,0x0,0x10,0x20,0x8,0xfc,0x80,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0xc8,0x8,0xf8, ++0x8,0x9,0x11,0x21,0x45,0xfc,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8, ++0x20,0x2f,0x28,0x2a,0xf9,0x2f,0x38,0x6a,0xaa,0x2a,0x2b,0x2a,0x28,0x31,0xa1,0x42,0x4,0xfe,0x8,0x28,0x4e,0xf2,0xa0,0xa8,0xa8,0xa8,0xe8,0x94,0x94,0x24,0x22,0x40, ++0x27,0x26,0x25,0x24,0xff,0x20,0x23,0x26,0x3b,0xe2,0x22,0x20,0x23,0x20,0xa0,0x47,0xbc,0xb4,0xac,0xa4,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x90,0x60,0x9e, ++0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4, ++0x20,0x27,0x24,0x24,0xff,0x24,0x25,0x2d,0x35,0xe5,0x24,0x25,0x25,0x29,0xb1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x17,0x14,0x24,0x27,0x64,0xa5,0x25,0x25,0x25,0x24,0x25,0x25,0x29,0x31,0x21,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0xfc,0x4, ++0x0,0x7f,0x11,0x9,0x7f,0x44,0x7f,0x0,0x7e,0x43,0x7e,0x42,0x7e,0x44,0x7e,0x2,0x38,0xd0,0x10,0x24,0xfe,0x44,0xfc,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0x28,0x10, ++0x12,0x9,0x9,0x7f,0x40,0x80,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x70,0x10,0x10,0x20,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x84,0x84,0x7c, ++0x0,0x40,0x30,0x10,0x7,0x8,0x10,0x10,0x20,0xef,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4, ++0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x10,0x1f,0x10,0x15,0x19,0x12,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4, ++0x10,0x10,0x10,0x20,0x45,0xff,0x9,0x11,0x21,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe, ++0x10,0x10,0x10,0x10,0x11,0xfd,0x12,0x10,0x10,0x10,0x10,0x1d,0xf0,0x40,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10, ++0x8,0x8,0xff,0x8,0x7f,0x40,0x41,0x4f,0x41,0x7f,0x45,0x49,0x51,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0xfc,0x44,0xe4,0x4,0x24,0xf4,0x44,0x34,0x14,0x4,0xfc,0x4, ++0x10,0x10,0x14,0x1e,0x21,0x41,0xbe,0x10,0x10,0x7c,0x10,0x11,0x14,0x18,0x10,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x14,0x24,0x44,0x84,0x84,0x4,0x28,0x10, ++0x0,0x7f,0x42,0x82,0x3f,0x4,0x9,0x11,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0xfe,0x2,0x14,0xf8,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0x1f,0x18,0x28,0x48,0x8f,0x8,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x11,0x57,0x54,0x55,0x56,0x54,0x55,0x56,0x7c,0x44,0x0,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x8,0x8,0x11,0x17,0x31,0x52,0x95,0x11,0x12,0x13,0x14,0x18,0x10,0x11,0x16,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x40,0x30,0x10,0xff,0x0,0x49,0x4a,0x48,0x49,0x51,0x12,0x1c,0xe0,0x40,0x3,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x40,0x30,0x10,0x1,0x87,0x61,0x22,0x5,0x11,0x22,0xe3,0x24,0x28,0x20,0x21,0x26,0x40,0x40,0x90,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x7f,0x11,0x11,0xff,0x11,0x11,0x7f,0x20,0x41,0xbf,0x21,0x21,0x21,0x3f,0x21,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40, ++0x8,0xfc,0x8,0x48,0x4b,0x48,0x49,0x4a,0x48,0x7d,0x6,0x4,0x34,0xc4,0x14,0xb,0x20,0x20,0x48,0x84,0xfe,0x88,0x6,0x82,0xf8,0x8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x0,0xf7,0x94,0x98,0x91,0x92,0x90,0x91,0x9e,0x93,0xf2,0x92,0x2,0x3,0x2,0x80,0x40,0xfe,0x82,0xf4,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0x74,0x54,0x5f,0x54,0x54,0x54,0x54,0x54,0x54,0x74,0x48,0xa,0x11,0x20,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24,0x0, ++0x2,0x2,0x3,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0, ++0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x48,0x49,0x4e,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x12,0x12,0x13,0xfe,0x12,0x17,0x1a,0x30,0xd3,0x12,0x12,0x13,0x12,0x52,0x23,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x1e,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x10,0x12,0x12,0x13,0xfe,0x12,0x3b,0x36,0x50,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x20,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x8,0x49,0x49,0x49,0x7f,0x2,0xff,0x2,0x2,0x7e,0x42,0x40,0x46,0x58,0x61,0x2,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8a,0x8a,0x6,0x0, ++0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0x27,0x24,0x24,0x25,0x24,0x27,0x24,0x20,0x21,0x4,0xbe,0x88,0xa8,0xa8,0xa8,0xa8,0xbe,0x8,0x10,0x18,0xa8,0xaa,0x4a,0x86,0x0, ++0x1,0x3f,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x11,0x11,0x17,0x11,0xfd,0x11,0x11,0x11,0x11,0x1f,0x12,0x1e,0xf3,0x42,0x3,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0, ++0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x62,0x40,0x7e,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xa4,0x24,0x44,0x44,0x84,0x14,0x8, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x10,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x4,0xfe,0x10,0x11,0x22,0x24,0x7e,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x8,0x80,0x80,0x80,0xfc,0x4,0x8,0x40,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x7f,0x2,0x7f,0x4,0xff,0x8,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x10,0x1f,0x10,0x70,0x80,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x28,0x24,0x22,0x44,0x48,0x92,0x1,0x0,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xc4,0xa8,0x90,0x8e,0x84,0x0, ++0x20,0x20,0x27,0x24,0xb7,0xac,0xa7,0xa4,0x27,0x24,0x25,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0, ++0x20,0x20,0x27,0xac,0x77,0x24,0xff,0x24,0x77,0x6c,0xa5,0x24,0x25,0x2a,0x30,0x20,0x80,0x44,0xfe,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x48,0x50,0xe0,0x50,0x4e,0x44,0xc0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x1f,0x50,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x52,0x24,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x2,0x1,0x1,0xff,0x0,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x4,0xfe,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x10,0x17,0x54,0x58,0x51,0x91,0x11,0x11,0x11,0x29,0x25,0x42,0x82,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x12,0x27,0x40,0x80,0x2,0x1,0x0,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0x20,0x20,0xc0, ++0x10,0x10,0x13,0x10,0xfc,0x17,0x10,0x19,0x33,0xd4,0x19,0x10,0x10,0x11,0x50,0x20,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60, ++0x10,0x10,0x13,0x54,0x58,0x53,0x90,0x11,0x13,0x14,0x19,0x28,0x24,0x45,0x80,0x0,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x80,0x8,0xfc,0x80,0xf8,0x8,0x8,0x10,0x90,0x60, ++0x11,0x1f,0x21,0xff,0x0,0x1f,0x10,0x1f,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x2,0x20,0xf0,0x4,0xfe,0x0,0xf0,0x10,0xf0,0x80,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x80, ++0x10,0x10,0x17,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10, ++0x8,0x8,0x7f,0x8,0x0,0xff,0x0,0x1,0x1f,0x11,0x11,0x11,0x1f,0x11,0x0,0x0,0x20,0x28,0xfc,0x20,0x4,0xfe,0x20,0x20,0xa0,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x17,0x10,0xfc,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x28,0x10, ++0x10,0x13,0x12,0x12,0xff,0x12,0x3a,0x37,0x50,0x5f,0x90,0x10,0x11,0x12,0x1c,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x0,0x4,0xff,0x10,0x10,0x21,0x20,0x7c,0xa5,0x24,0x25,0x25,0x25,0x3d,0x23,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x88,0xfc,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0, ++0x0,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x11,0xff,0x31,0x39,0x55,0x54,0x90,0x13,0x4,0xfe,0x40,0x84,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4, ++0x4,0xe,0xf8,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x29,0x28,0x48,0x88,0x8,0x8,0x8,0x10,0x10,0x90,0x50,0x10,0x90,0x50,0x14,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10, ++0x1,0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x22,0xf4,0x20,0x20,0x20,0x24,0x24,0x1c,0x0, ++0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x79,0x4e,0x0,0x1,0x6,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0xf8,0x10,0x24,0x4c,0x90,0x20,0x50,0x8c,0x4, ++0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20, ++0x0,0x47,0x34,0x17,0x84,0x67,0x22,0x3,0x14,0x24,0xe8,0x35,0x24,0x27,0x20,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xa4,0x14,0x4,0xe4,0x14,0x8, ++0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x42,0x42,0x3e, ++0x8,0x4,0x4,0xff,0x4,0x8,0x10,0x7f,0x2,0x4,0x9,0x72,0x6,0x19,0xe0,0x0,0x4,0x4,0x84,0xc4,0x4,0xa4,0xa4,0x24,0x24,0xa4,0x24,0x24,0x4,0x84,0x94,0x8, ++0x2,0x1,0x7f,0x48,0x8f,0x8,0x14,0x23,0xc,0x30,0xcf,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0xf4,0x20,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0x20,0xe0,0x20, ++0x0,0x43,0x22,0x22,0x3,0x2,0xe2,0x23,0x20,0x2f,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x1,0x9,0x9,0x9,0x9,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0xf8,0x0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x0,0x9,0x7d,0x49,0x49,0x4f,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x2,0x40,0x48,0x7c,0x40,0x44,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x1,0x7f,0x1,0x1,0xff,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x22,0x21,0x24,0x38,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x8,0x7c,0x4f,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x2,0x1,0x7f,0x40,0x84,0xc,0x10,0x20,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x2,0x44,0x30,0x18,0x8,0x0,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x4,0xfe,0x10,0x10,0x10,0x10,0x1e,0xf1,0x42,0x0,0x52,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x90,0x90,0xd0,0xb0,0x92,0x12,0xe,0x0,0x4,0x82,0x92,0x12,0xf0,0x0, ++0x0,0x7f,0x21,0x2,0xc,0x8,0x8,0xb,0x1c,0xe8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x13,0x12,0xfc,0x10,0x15,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x13,0x12,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x12,0x53,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x98,0x8,0x0,0x4,0xfe,0x0, ++0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0, ++0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0xa,0xc,0x18,0xe8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x0, ++0x2,0x1,0x7f,0x40,0x84,0x3e,0x0,0x1,0x7f,0x14,0x14,0x14,0x25,0x26,0x44,0x83,0x0,0x0,0xfe,0x42,0x74,0x40,0x40,0xf0,0x10,0xa0,0x40,0xa0,0x18,0xa,0x2,0xfe, ++0x10,0x10,0x10,0x10,0xff,0x10,0x38,0x34,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x1,0x1,0xff,0x1,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x88,0x40,0x24,0xfe,0x0,0x80,0x40,0x30,0xe,0x4, ++0x2,0x1,0x7f,0x44,0x88,0x1f,0x10,0x1f,0x10,0x14,0x17,0x10,0x28,0x28,0x4f,0x88,0x0,0x0,0xfe,0x42,0x24,0xf8,0x8,0xf8,0x80,0x90,0xf0,0x80,0x88,0x88,0xf8,0x8, ++0x8,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x10,0xfe,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44, ++0x1,0x0,0x3f,0x21,0x21,0x3f,0x22,0x24,0x28,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x88,0xfc,0x0,0x8,0xfc,0x0,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80, ++0x40,0x30,0x13,0x2,0xfe,0xb,0x12,0x37,0x5b,0x96,0x12,0x13,0x12,0x14,0x18,0x10,0x40,0x24,0xfe,0x40,0x48,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x1,0x1,0x7f,0x2,0x4,0x18,0xe7,0x0,0x3f,0x4,0xf,0x0,0x0,0x4,0x2,0x1,0x0,0x8,0xfc,0x80,0x40,0x30,0xce,0x4,0xf8,0x0,0xe0,0x20,0x20,0x20,0x40,0x80, ++0x20,0x20,0x20,0x27,0xf8,0x21,0x22,0x25,0x28,0x23,0x38,0xe1,0x40,0x0,0x0,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60, ++0x10,0x10,0x10,0x17,0xf8,0x11,0x1a,0x35,0xd0,0x17,0x10,0x11,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60, ++0x4,0x7e,0x44,0x47,0x44,0x7d,0x12,0x15,0x5c,0x53,0x50,0x51,0x5c,0xf0,0x40,0x0,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60, ++0x0,0x78,0x48,0x4f,0x48,0x79,0x4a,0x4d,0x48,0x7b,0x48,0x49,0x48,0x48,0x48,0x98,0x40,0x40,0x48,0xfc,0xa0,0x10,0xe,0xf4,0x0,0xfc,0x80,0xf8,0x8,0x8,0x90,0x60, ++0x10,0x10,0x10,0x10,0x13,0xfc,0x10,0x10,0x10,0x17,0x1c,0xf1,0x41,0x2,0x4,0x8,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4, ++0x12,0x1f,0x28,0x45,0x90,0x10,0x13,0x58,0x54,0x50,0x97,0x10,0x10,0x11,0x12,0x1c,0x44,0x7e,0xa0,0x10,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x10,0x10,0x11,0x21,0x22,0x64,0xa8,0x33,0x20,0x20,0x2f,0x21,0x21,0x22,0x27,0x20,0x80,0x80,0x40,0x40,0x20,0x10,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x10,0xf8,0x8, ++0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x10,0x1f,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xfe,0x80,0x40,0x20,0x10,0xe,0x4, ++0x2,0x1,0x7f,0x44,0x84,0x7f,0x4,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x70,0x0,0x0,0xfe,0x42,0x44,0xfc,0x50,0xf8,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e, ++0x8,0x9,0xff,0x8,0xa,0x7f,0x0,0x7f,0x0,0xff,0x8,0x2a,0x49,0x88,0x29,0x12,0x20,0x20,0xa0,0x7e,0x82,0x4,0x28,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x7f,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0xf0,0x0,0x0,0x40,0xe0,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0xbf,0x20,0x2f,0x20,0x20,0x27,0x20,0x20,0x2f,0x20,0x3f,0x0,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x80,0xa0,0xf0,0x80,0x90,0xf8,0x0,0xfc,0x0, ++0x82,0x47,0x28,0x10,0x28,0x48,0x88,0x9,0x18,0x28,0x48,0x88,0x8,0x8,0x57,0x20,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x3a,0x36,0x52,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0, ++0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x3d,0x22,0x4,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4b,0x7a,0x4b,0x0,0x8,0xfc,0x0,0xf8,0x20,0x20,0x20,0xf8,0x20,0x20,0x20,0x28,0xfc,0x0,0xfe,0x0, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x47,0x34,0x14,0x4,0x4,0xf,0x12,0x22,0xe2,0x22,0x22,0x24,0x24,0x28,0x30,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x8,0xf,0x0,0x0,0x0,0x2,0x1,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x20,0xc0, ++0x2,0x2,0xff,0x4,0x4,0xa,0x9,0x11,0x22,0x44,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x4,0xfe,0x80,0x90,0xa0,0x40,0x20,0x1c,0x8,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x1,0x21,0x21,0x3f,0x20,0x8,0x4f,0x48,0x48,0x4b,0x48,0x50,0x10,0x27,0x40,0x80,0x0,0x8,0x8,0xf8,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x2,0x1,0x7f,0x44,0x88,0x8,0x3e,0x8,0x8,0x7e,0x8,0x8,0x14,0x12,0x20,0x43,0x0,0x0,0xfe,0x42,0x24,0xf8,0x88,0xa8,0xa8,0xa8,0xa8,0x30,0x52,0x52,0x8e,0x0, ++0x8,0x8,0xff,0x8,0x3e,0x22,0x14,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x2,0xc,0x30,0x20,0x24,0xfe,0x20,0xa0,0x48,0x30,0x10,0xee,0x4,0x10,0xf8,0x0,0xc0,0x30,0x8, ++0x1,0x1,0xff,0x4,0x9,0x11,0x2f,0xc1,0x3f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xee,0x4,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0, ++0x10,0x20,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x49,0xc,0x15,0x15,0x27,0x44,0x83,0x0,0x8,0x48,0x28,0x8,0x48,0x28,0x8,0xe,0xf8,0x8,0x8,0x48,0xc8,0x2,0xfe, ++0x10,0x11,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x24,0x20,0x21,0x21,0x22,0x24,0x28,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x88,0x90,0x50,0x68,0x7a,0x42,0x3e, ++0x20,0x20,0x23,0x3a,0x4b,0x50,0x8f,0x20,0x23,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x10,0x11,0x13,0x12,0x5a,0x57,0x52,0x92,0x13,0x12,0x10,0x11,0x11,0x12,0x14,0x18,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x48,0x54,0x5e,0x42,0x3e, ++0x0,0x40,0x33,0x12,0x83,0x60,0x2f,0x8,0x13,0x22,0xe2,0x22,0x22,0x20,0x21,0x26,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x20,0x20,0x20,0x27,0xfc,0x24,0x24,0x27,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x0,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x84,0x98,0xe0,0x80,0x82,0x82,0x7e, ++0x10,0x17,0x14,0x14,0xfc,0x17,0x14,0x1c,0x34,0xd5,0x16,0x14,0x14,0x14,0x57,0x24,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4, ++0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x43,0x43,0x45,0x49,0x51,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x22,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x21,0x22,0x5f,0x42,0x8a,0x4,0x84,0xfe,0x0,0xc0,0x3e,0xa2,0xa4,0xa8,0x24,0xa2,0x22,0x32,0xac,0x20,0x20,0x20, ++0x10,0xd,0x44,0x50,0x4b,0x40,0x60,0x57,0x40,0x48,0x53,0x72,0x52,0x53,0x52,0x40,0x4,0xfe,0x4,0x64,0x84,0x84,0xa4,0xf4,0x84,0xa4,0xf4,0x24,0x24,0xe4,0x14,0x8, ++0x10,0x10,0x10,0x13,0x10,0xfd,0x11,0x11,0x10,0x10,0x10,0x1c,0xe0,0x40,0x7,0x0,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x11,0x15,0x19,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0xa0,0x20,0x44,0xfe,0x0, ++0x1,0x11,0x7f,0x51,0x51,0x57,0x55,0x55,0x55,0x57,0x51,0x73,0x45,0x9,0x1,0x1,0x4,0x44,0xe4,0x4,0x54,0xf4,0x54,0x54,0x54,0xd4,0x14,0x84,0x44,0x4,0x14,0x8, ++0x10,0x10,0x10,0x13,0x7c,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x49,0x49,0x49,0x49,0x89,0x19,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x20,0x10,0x13,0xfe,0x44,0x29,0x29,0xff,0x11,0x15,0xfe,0x10,0x11,0x12,0x20,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x2e,0x24,0x20,0x20, ++0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x53,0x52,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x20,0x10,0x14,0xfe,0x0,0x44,0xc4,0x44,0x44,0x48,0x28,0x28,0x28,0x0,0xfe,0x0, ++0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x20,0x44,0xfe,0x80,0x40,0x30,0xe,0x4,0x0, ++0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0xff,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x10,0x30,0x44,0xfe,0x80,0x40,0x30,0x1e,0x4,0x0,0x0, ++0x10,0x14,0xfe,0x10,0x7d,0x56,0x54,0x54,0x7c,0x10,0x38,0x34,0x54,0x90,0x10,0x13,0x20,0x20,0x7c,0x88,0x14,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x2, ++0x8,0x8,0xff,0x8,0x4,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x20,0x24,0xfe,0x20,0x90,0xf8,0x0,0x40,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0, ++0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0xa,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x18,0x20,0x28,0xfc,0x20,0x70,0xac,0x24,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x10,0x12,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x10,0x12,0x11,0x10,0xff,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x5f,0x20,0x0,0x8,0x10,0xa4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0x84,0x24,0x25,0x26,0x24,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0x48,0x7c,0xa0,0x10,0x80,0xfc,0x40,0x20,0x20,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0, ++0x20,0x1b,0x49,0x41,0x7f,0x41,0x5f,0x59,0x55,0x51,0x5f,0x43,0x45,0x49,0x51,0x41,0x4,0xfe,0x4,0x14,0xfc,0x4,0xf4,0x34,0x54,0x14,0xf4,0x84,0x44,0x34,0x14,0xc, ++0x10,0x8,0x4,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x10,0x20,0x48,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x42,0x31,0x15,0x4,0x87,0x64,0x25,0xd,0x15,0x25,0xe5,0x24,0x25,0x26,0x24,0x24,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc, ++0x2,0x41,0x25,0x24,0x7,0x4,0xe5,0x25,0x25,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0x7e,0x4,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0xc, ++0x10,0x12,0x12,0x12,0xfe,0x12,0x14,0x1b,0x32,0xd2,0x12,0x12,0x12,0x10,0x51,0x26,0x90,0x94,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa8,0xa2,0x22,0x1e, ++0x8,0x48,0x48,0x49,0x4a,0x48,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x4,0x18,0xe0,0x80,0x84,0xfe,0x20,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x90,0x90,0x82,0x82,0x7e, ++0x22,0x22,0x3f,0x22,0xaf,0xaa,0xaa,0xaa,0x2f,0x22,0x27,0x2a,0x32,0x22,0x22,0x22,0x10,0x10,0xdc,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x2a,0x8,0x14,0x62, ++0x10,0x12,0x22,0x22,0x42,0xfe,0x8,0x13,0x22,0xfe,0x2,0x2,0x1c,0xe0,0x41,0xe,0x90,0x90,0x9e,0xa8,0xc4,0x84,0x88,0xfc,0x8,0x48,0x48,0x68,0xa0,0xa2,0x22,0x1e, ++0x10,0x11,0x10,0x54,0x58,0x57,0x50,0x90,0x10,0x13,0x10,0x28,0x24,0x40,0x8f,0x0,0x0,0x8,0x90,0xa0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x1,0x41,0x35,0x15,0x85,0x65,0x25,0x1,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0x0,0x8,0xfc,0x28,0x28,0x28,0x28,0xfe,0x0, ++0x0,0x8,0xff,0x12,0x12,0x13,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x43,0x2,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0, ++0x22,0x21,0x20,0x27,0xfc,0x24,0x77,0x6c,0xa4,0x27,0x24,0x25,0x25,0x26,0x24,0x20,0x0,0x0,0x3e,0xa2,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20, ++0x0,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x2a,0x4a,0x8a,0xa,0xa,0x53,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0, ++0x0,0x3f,0x24,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x28,0x29,0x2b,0x4c,0x48,0x80,0x0,0x84,0xfe,0x0,0x0,0xbe,0xa2,0xa4,0xa8,0xa4,0x22,0x22,0xa2,0xb4,0x28,0x20,0x20, ++0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x20,0x0,0x0,0x0,0xfc,0x44,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40, ++0x8,0x5,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x20,0x24,0x26,0x79,0x21,0x2,0x4,0x7e,0xc4,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x14,0x8, ++0x0,0x40,0x33,0x12,0x82,0x63,0x26,0xa,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0, ++0x11,0x11,0x17,0x11,0xf8,0x17,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x11,0x51,0x2e,0x10,0x10,0xfc,0x10,0x0,0xfe,0x82,0x84,0xf8,0x88,0x88,0x88,0x88,0x8,0x28,0x10, ++0x4,0x4,0x7f,0x4,0x4,0x7f,0x42,0x82,0x1f,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x2,0x1,0x7f,0x41,0x91,0x11,0x1f,0x11,0x21,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x2,0x3f,0x2,0x2,0xff,0x1,0x2,0x4,0xc,0x14,0x27,0x44,0x84,0x3,0x0,0x0,0x88,0xd8,0x20,0x44,0xfe,0x0,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x11,0x13,0x15,0x19,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0, ++0x20,0x20,0x20,0x27,0xf8,0x48,0x48,0x4f,0x49,0x8b,0x55,0x21,0x51,0x49,0x80,0x0,0x80,0x80,0x84,0xec,0x90,0xa0,0xc4,0xfe,0x0,0x8,0x30,0xc0,0x4,0x4,0xfc,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x7f,0x41,0x20,0xa0,0x3c,0x44,0xc4,0x28,0x10,0x28,0xc6,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44, ++0x10,0x10,0x10,0x15,0x59,0x52,0x50,0x90,0x11,0x16,0x11,0x11,0x29,0x25,0x41,0x81,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x41,0x31,0x17,0x81,0x60,0x2f,0x8,0x10,0x10,0x27,0xe0,0x21,0x21,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x0,0xfe,0x2,0x84,0x88,0xfc,0x88,0x8,0x8,0x8,0x50,0x20, ++0x22,0x22,0xff,0x22,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x9,0xa,0x20,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0xc4,0x84,0x14,0x8, ++0x0,0x0,0x1f,0x10,0x11,0x11,0x21,0x7f,0x1,0x1,0x9,0x9,0x11,0x21,0x45,0x2,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x10,0x8,0xc,0x4,0x0, ++0x0,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x20,0x23,0x38,0x47,0x84,0x7b,0x20,0x23,0xf8,0x27,0x24,0x24,0x2f,0x34,0x24,0x7,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc, ++0x4,0x7f,0x4,0x3f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0x74,0x0,0x70,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x3f,0x4,0x8,0x1f,0x28,0x48,0x8f,0x4,0xfe,0x10,0x20,0x7e,0xa3,0x22,0x3e,0x20,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x4,0xfe,0x20,0x44,0xfe,0x44,0x44,0x7c,0x40, ++0x0,0x3f,0x21,0x3f,0x21,0x3f,0x22,0x4,0x3f,0x2,0x4,0x3f,0x9,0x11,0x65,0x2,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x20,0xc0,0x10,0x8,0xf8,0x20,0x18,0x8,0x0, ++0x13,0x12,0x12,0x23,0x22,0x62,0xa3,0x20,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2f,0x28,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xbe,0xaa,0xaa,0xbe,0xaa,0xaa,0xbe,0xa2, ++0x1,0x2,0x4,0x8,0x3f,0x8,0x10,0x24,0x7e,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x0,0x20,0x10,0xf8,0x10,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x20,0x23,0x20,0x27,0xfc,0x2b,0x20,0x2b,0x30,0xe7,0x24,0x24,0x27,0x24,0xa4,0x47,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc, ++0x2,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x22,0x4b,0x84,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x28,0x10, ++0x1,0x11,0x9,0x1,0x7f,0x1,0x5,0x9,0x11,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x10,0x20,0x8,0xfc,0x0,0x40,0x30,0x10,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8, ++0x0,0x47,0x34,0x14,0x4,0x87,0x64,0x24,0xc,0x17,0xe4,0x24,0x24,0x24,0x27,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x10,0xfc,0x17,0x39,0x36,0x54,0x51,0x91,0x12,0x14,0x10,0x11,0x16,0x40,0x50,0xf8,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x57,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0x94,0x94,0x94,0xfc,0x40,0x24,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10, ++0x0,0x40,0x31,0x12,0x4,0x9,0x10,0x10,0x27,0xe0,0x20,0x20,0x22,0x21,0x20,0x0,0x80,0x80,0x40,0x20,0x10,0x8,0x8e,0x84,0xf0,0x10,0x20,0x40,0x80,0x0,0xc0,0x40, ++0x0,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x28,0x2f,0x20,0x2f,0x20,0x20,0x5f,0x80,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x80,0xf8,0x80,0x84,0xfe,0x0, ++0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x64,0x5,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x8,0x18,0x4,0xfe,0x80,0x40,0x3c,0x8,0x0, ++0x3,0x3c,0x4,0x7f,0x4,0xe,0x15,0x65,0x11,0x1f,0x21,0x1,0xff,0x1,0x1,0x1,0x8,0x8,0x48,0xc8,0x48,0x48,0x48,0x18,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x6,0x78,0x8,0xfe,0x9,0x1c,0x2a,0x49,0x2,0xc,0x31,0xc9,0x5,0x9,0x11,0x3,0x40,0x44,0x7e,0xa4,0x24,0x44,0x94,0x8,0x80,0x60,0x1e,0x24,0x40,0x30,0x10,0x0, ++0x12,0x1f,0x28,0x45,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x3f,0x22,0x27,0x20,0x20,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x50,0x90,0x50,0xf0,0x8,0xfc,0x48,0xe8,0x28,0x10, ++0x4,0x44,0x2b,0x12,0x2a,0x4b,0x8a,0xa,0x1b,0x28,0x48,0x8b,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x2,0x1,0xff,0x4,0x12,0x11,0x12,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x0,0x4,0xfe,0x40,0x90,0x10,0x90,0x50,0xf0,0x4,0xfe,0x4,0x44,0xe4,0x14,0x8, ++0x0,0x40,0x2f,0x10,0x85,0x64,0x25,0x7,0x10,0x2f,0xe8,0x29,0x2b,0x28,0x28,0x28,0x80,0x48,0xfc,0x0,0x28,0xc8,0x28,0xf8,0x84,0xfe,0x84,0x24,0xf4,0x4,0x14,0x8, ++0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x20,0x20,0x23,0x3c,0xe0,0x40,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x1,0x1,0x7f,0x1,0x5,0x9,0x31,0xc1,0xf,0x0,0x1,0x7f,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x40,0x30,0xe,0x4,0xe0,0x40,0x88,0xfc,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x20,0x20,0x3d,0x49,0x95,0x7f,0x55,0x55,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x20,0x18,0x8,0x0,0xfe,0x4,0x8,0x1c,0x2a,0x4a,0x88,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x8,0xff,0x8,0x6,0x78,0x8,0x8,0xff,0x8,0x1c,0x1a,0x2a,0x48,0x88,0x8,0x20,0x24,0xfe,0x20,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x28,0x10, ++0x8,0xff,0xa,0x2,0x1f,0x4,0x4,0x8,0x10,0x10,0x7e,0x12,0x12,0x22,0x4a,0x85,0x20,0xfe,0x20,0x0,0xf0,0x10,0x90,0x60,0x20,0x24,0xfe,0x24,0x24,0x44,0x94,0x8, ++0x1,0x1,0x1,0xff,0x1,0x3f,0x21,0x21,0x21,0x3f,0x29,0x5,0x2,0x5,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x80,0x70,0xe, ++0x0,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x1,0xff,0x3,0x3,0x5,0x19,0x61,0x1,0x4,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0, ++0x0,0xff,0x0,0x0,0x3e,0x22,0x22,0x22,0x32,0x2a,0x22,0x22,0x22,0x22,0x2a,0x24,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x88,0x88,0x88,0x88,0xa8,0x90, ++0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x23,0x22,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20, ++0x1,0x7f,0x40,0x41,0x7f,0x48,0x49,0x4f,0x49,0x49,0x49,0x49,0x55,0x52,0xa0,0x1,0x20,0xa0,0x20,0x20,0xa4,0x7e,0x24,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0xa8,0x10, ++0x0,0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa4,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x0,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x1,0x7,0x7c,0x4,0x4,0x5,0xff,0xc,0xe,0x15,0x14,0x24,0x44,0x4,0x4,0x4,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x4,0x4,0x14,0x8, ++0x10,0x1f,0x10,0x27,0x24,0x64,0xa4,0x27,0x20,0x20,0x2f,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x10,0x10,0x1f,0x22,0x22,0x67,0xa4,0x28,0x34,0x22,0x21,0x22,0x24,0x28,0x20,0x20,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x4,0x14,0x8, ++0x10,0x11,0x1f,0x21,0x21,0x7f,0xa1,0x23,0x23,0x25,0x25,0x29,0x31,0x21,0x21,0x21,0x84,0xc4,0x4,0x4,0x14,0xf4,0x14,0x14,0x94,0x54,0x54,0x4,0x4,0x4,0x14,0x8, ++0x1,0x0,0x1f,0x10,0x97,0x51,0x51,0x1f,0x31,0x53,0xd3,0x15,0x29,0x21,0x41,0x1,0x0,0x84,0xfe,0x44,0x84,0x14,0x54,0xf4,0x14,0x94,0x54,0x54,0x4,0x4,0x14,0x8, ++0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x10,0x8,0x8,0x4,0x4,0x4,0x0,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x54,0x3b,0x10,0xfd,0x11,0x38,0x34,0x54,0x90,0x10,0x10,0x17,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x90,0x90,0x90,0xa0,0xa0,0x24,0xfe,0x0, ++0x0,0x47,0x34,0x14,0x4,0x84,0x67,0x24,0xc,0x14,0xe4,0x24,0x24,0x28,0x29,0x32,0x4,0xfe,0x40,0x40,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x14,0x8, ++0x1,0x3f,0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x11,0xd,0x9,0x31,0xc1,0x5,0x2,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x8,0x98,0x60,0x20,0x18,0xe,0x4,0x0, ++0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x70,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20, ++0x0,0x10,0xff,0x20,0x22,0x22,0xfb,0x23,0x20,0x27,0x24,0x3c,0xe5,0x44,0x4,0x4,0x40,0x24,0xfe,0x90,0x64,0x94,0xc,0xfc,0x40,0xfe,0x42,0x92,0xfa,0x2,0xa,0x4, ++0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x1f,0x21,0x21,0x6f,0xa9,0x29,0x29,0x29,0x2a,0x2c,0x28,0x28,0x28,0x28,0x0,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xd4,0x8c,0x4,0x4,0x14,0x8, ++0x1,0xfe,0x24,0x24,0x3d,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3e,0xe4,0x5,0x6,0x4,0xcc,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4, ++0x4,0x4,0xff,0x24,0x10,0x17,0x1,0x71,0x13,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0x90,0xf8,0x0,0x50,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0, ++0x0,0x40,0x2f,0x21,0x1,0x2,0xe7,0x20,0x20,0x20,0x2f,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x46,0xfc,0x0, ++0x20,0x27,0x25,0x3f,0x44,0x85,0x7c,0x27,0x24,0xfd,0x24,0x25,0x2d,0x36,0x28,0x0,0x44,0xfe,0x8,0xfe,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x94,0x98,0x98,0x96,0x90,0x90, ++0x1,0x3f,0x24,0x22,0x3f,0x22,0x2f,0x22,0x3f,0x22,0x2f,0x26,0x4a,0x52,0xa2,0x2,0x8,0xfc,0x20,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x68,0x50,0x4e,0x44,0x40, ++0x10,0x10,0x10,0x18,0x55,0x52,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x0,0x88,0x65,0x24,0x0,0x81,0x6d,0x24,0xc,0x14,0xe7,0x24,0x24,0x2a,0x31,0x20,0x20,0x28,0xfc,0x40,0xa0,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x26,0xfc,0x0, ++0x2,0x1,0x7f,0x40,0x89,0x11,0x21,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x1,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0, ++0x8,0x8,0x14,0x13,0x21,0x40,0xbe,0x0,0x11,0x49,0x2a,0x2a,0x2a,0x7,0x78,0x21,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84, ++0x8,0x7c,0x48,0x48,0x49,0x7a,0x4d,0x48,0x4a,0x7a,0x49,0x49,0x49,0x48,0x4f,0x98,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x88,0x48,0x48,0x50,0x50,0x24,0xfe,0x0, ++0x20,0x24,0x3a,0x42,0x40,0xf8,0x26,0x22,0xfa,0x22,0x23,0x2a,0x32,0x25,0x8,0x0,0x10,0x14,0xfe,0x20,0x50,0x94,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0, ++0x2,0x1,0xff,0x4,0xc,0xc,0x14,0x24,0x44,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x40,0x60,0x58,0x4c,0x44,0x40,0x0,0x10,0x28,0x24,0x24,0xe0,0x0, ++0x10,0x10,0x17,0x14,0x58,0x57,0x51,0x91,0x12,0x13,0x10,0x28,0x25,0x42,0x84,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x27,0x40,0x48,0xfb,0x11,0x21,0x42,0xfb,0x0,0x0,0x39,0xc2,0x44,0x0,0x40,0x48,0xfc,0x80,0xa0,0xf0,0x20,0x20,0x24,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x57,0x3a,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x48,0x30,0x10,0x8e,0x4,0x0, ++0x0,0x40,0x2f,0x10,0x3,0x2,0xa,0x12,0x23,0xe2,0x20,0x21,0x22,0x24,0x29,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x48,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x10,0xb,0x40,0x22,0xa,0x54,0x21,0x22,0x25,0x1,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x88,0x8,0x28,0x10,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x10,0xb,0x40,0x22,0xa,0x55,0x22,0x21,0x9,0x5,0xff,0x5,0x9,0x11,0x61,0x1,0x8,0xfc,0x88,0x8c,0x8a,0x28,0x10,0x0,0x20,0x44,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x28,0x30,0x20,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8, ++0x0,0xff,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x44,0x4a,0x51,0x62,0x40,0x40,0x40,0x4,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0xa4,0x1c,0xc,0x4,0x14,0x8, ++0x10,0x13,0xfc,0x20,0x33,0x52,0x52,0xfe,0x12,0x12,0x1f,0xf2,0x52,0x12,0x12,0x12,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x54,0x2c,0x4,0x4,0x14,0x8, ++0x0,0x1f,0x10,0x1f,0x10,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x1f,0x1,0x7f,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x0,0xfc, ++0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x49,0x7a,0x44,0x9,0x0,0x80,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x1,0x7f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x8,0x10,0x60,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x0,0xfe,0x22,0xf4,0x20,0x20,0x22,0x22,0x1e, ++0x0,0x40,0x2f,0x20,0x3,0x2,0xe2,0x22,0x23,0x20,0x24,0x29,0x32,0x24,0x9,0x0,0x80,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x50,0x4c,0x46,0x42,0x80, ++0x10,0x10,0x1f,0x10,0xfd,0x12,0x17,0x1a,0x33,0xd2,0x13,0x10,0x11,0x12,0x55,0x20,0x40,0x44,0xfe,0xa0,0x14,0x8,0xfe,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x8,0xfd,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x4a,0xfc,0x8,0x9,0xa,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20, ++0x10,0x10,0x1f,0x21,0x2a,0x64,0xaf,0x34,0x27,0x24,0x27,0x20,0x22,0x24,0x2a,0x21,0x80,0x88,0xfc,0x40,0x28,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x80,0xa0,0x98,0x88,0x0, ++0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x22,0x41,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x10,0x10,0x17,0x10,0x56,0x59,0x53,0x96,0x1b,0x12,0x13,0x28,0x25,0x42,0x84,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0xc0, ++0x1,0x7f,0x40,0xbc,0x24,0x14,0x25,0x6,0x8,0x33,0xcc,0x1,0xe,0x0,0x3,0x1c,0x0,0xfe,0x2,0xfc,0x48,0x28,0x48,0x88,0x40,0x30,0x4e,0x84,0x20,0xc0,0x0,0x0, ++0x40,0x37,0x10,0x0,0x0,0x70,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x0,0xfc,0x8,0x10,0x60,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0, ++0x0,0x40,0x2f,0x10,0x82,0x61,0x23,0xe,0x13,0x22,0xe3,0x20,0x21,0x22,0x25,0x20,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x0,0x7f,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x13,0x12,0x13,0xfe,0x13,0x14,0x19,0x33,0xd0,0x13,0x1f,0x12,0x12,0x53,0x22,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x80,0xf8,0x10,0xe0,0x18,0xfe,0x8,0x8,0xf8,0x8, ++0x20,0x20,0x3f,0x40,0x82,0x79,0x23,0x26,0xfb,0x22,0x23,0x20,0x29,0x32,0x25,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x0,0x3f,0x20,0x3f,0x29,0x25,0x29,0x23,0x2c,0x31,0x26,0x21,0x46,0x40,0x83,0xc,0x88,0xfc,0x0,0x78,0x48,0x28,0xc8,0x60,0x5e,0x84,0x40,0x90,0x20,0xc0,0x0,0x0, ++0x8,0x49,0x2a,0x2c,0x8,0xff,0x8,0x18,0x1c,0x2b,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8, ++0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0x8a,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x1,0xff,0x10,0x1f,0x31,0x4a,0x4,0x39,0x1,0xff,0x2,0x4,0xc,0x15,0x66,0x4,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0xc,0x4,0xfe,0x8,0x90,0x60,0x30,0xe,0x4, ++0x1,0x7f,0x10,0x10,0x1f,0x21,0x21,0x52,0xc,0x8,0x30,0x40,0x28,0x24,0x44,0x80,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0xc,0x0,0x90,0x4c,0x46,0x2, ++0x1,0x9,0x9,0x11,0x21,0x41,0x6,0x19,0xe1,0x1f,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x20,0x18,0xc,0x34,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20, ++0x0,0x44,0x2c,0x13,0x28,0x48,0x8f,0x8,0x19,0x29,0x49,0x89,0x9,0x9,0x51,0x21,0x90,0x90,0x90,0xfc,0x90,0x94,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x2,0x12,0xfa,0x22,0x2f,0x22,0xfa,0x27,0x26,0x2a,0x3a,0xe2,0x42,0x2,0x2,0x2,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10, ++0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x20,0x20,0x20,0x24,0xfe,0x20,0x60,0x70,0xa8,0xae,0x24,0x20,0x20,0x20,0x20,0x20, ++0x8,0xfd,0x10,0x13,0x20,0x20,0x7d,0xa6,0x24,0x25,0x26,0x25,0x24,0x3d,0x22,0x0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0xa4,0xde,0x54,0x54,0xbe,0x4,0x4,0x4, ++0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20, ++0x10,0x10,0x51,0x51,0x52,0x54,0x58,0x50,0x57,0x54,0x54,0x54,0x54,0x14,0x17,0x14,0x80,0x80,0x4,0xfe,0x0,0x80,0x60,0x24,0xfe,0x44,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x8,0x8,0x14,0x12,0x21,0x50,0x88,0x0,0x7f,0x1,0x2,0x14,0x8,0x4,0x4,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x21,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x55,0x56,0x7d,0x0,0x1d,0xe2,0x40,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xa4,0x84,0xde,0x54,0x54,0xbe,0x4,0x4,0x4, ++0x2,0x42,0x22,0x22,0x1f,0x82,0x42,0x47,0x16,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x38,0xb8,0x54,0x54,0x92,0x10,0x10,0x10,0x10, ++0x0,0x9f,0x60,0x2f,0xa,0xb,0x1a,0x1f,0x20,0xe7,0x20,0x3f,0x24,0x28,0x32,0x1,0x80,0xfc,0x8,0xfc,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0x90,0x8c,0x84,0x0, ++0x8,0x17,0x30,0x5f,0x90,0x17,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x30,0x18,0xe0,0x44,0xfe,0x40,0xfc,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x2,0x1,0x7f,0x4,0x2,0x1,0x6,0x18,0xe0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x80,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x0,0x10,0xf8,0x20,0x21,0x22,0xfc,0x28,0x20,0x23,0x20,0x38,0xc0,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x8,0xff,0x9,0x1,0x3f,0x1,0xff,0x8,0xa,0x13,0x24,0xc,0x12,0x1,0xe,0x70,0x24,0xfe,0x20,0x0,0xf8,0x0,0xfe,0x20,0x18,0xe8,0x20,0x20,0x40,0x80,0x70,0xe, ++0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x2,0xc,0x32,0xc1,0xf,0x0,0x2,0x1,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x80,0x60,0x18,0x6,0xe0,0x40,0x80,0x0,0x80, ++0x8,0x28,0x28,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x41,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10, ++0x10,0x10,0x10,0x1c,0x21,0x22,0x7c,0x90,0x10,0x7d,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x88,0x4e,0x44,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x0,0x44,0x28,0xfe,0x11,0x12,0x7c,0x10,0x10,0x13,0xfc,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x0,0x40,0x37,0x10,0x0,0xf,0x9,0x12,0x24,0xe1,0x23,0x24,0x28,0x20,0x23,0xc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x8c,0xf4,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4, ++0x0,0x7f,0x0,0x3f,0x0,0x7f,0x1,0x1,0x21,0x19,0xa,0x2,0x4,0x8,0x30,0xc0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x0,0x8,0x18,0xa0,0x80,0x40,0x30,0xe,0x4, ++0x0,0x7c,0x45,0x48,0x48,0x53,0x48,0x49,0x46,0x44,0x45,0x6a,0x50,0x40,0x41,0x46,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x44,0x7a,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x10,0x10,0x54,0x55,0x56,0x54,0x54,0x55,0x54,0x5c,0x74,0x44,0x0,0x0,0x20,0x20,0x50,0x50,0x88,0x4e,0x24,0x20,0x0,0xfc,0x4,0x8,0x50,0x20,0x10,0x10, ++0x10,0x13,0x28,0x24,0x43,0xa1,0x11,0x1,0xff,0x3,0x5,0x29,0x10,0x8,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x12,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20, ++0x1,0x1,0x2,0x4,0xa,0x11,0x21,0xc0,0x1f,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x80,0x80, ++0x0,0x47,0x34,0x15,0x84,0x65,0x26,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x0,0x8,0xff,0x10,0x10,0x11,0x7f,0x10,0x11,0x11,0x1d,0xf1,0x41,0x1,0x2,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40, ++0x20,0x27,0x24,0x25,0xfc,0x25,0x66,0x70,0xaf,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x0,0x8,0xff,0x10,0x10,0x21,0x23,0x3c,0x65,0xa5,0x25,0x25,0x25,0x3d,0x22,0x4,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40, ++0x20,0x27,0x24,0x3d,0x4c,0x55,0x86,0x20,0x27,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0xa4,0x24,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x2,0x7c,0x40,0x48,0x46,0x4a,0xf0,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x20,0x18,0x9,0xff,0x2,0x42,0x22,0x14,0x14,0x8,0x8,0x14,0x22,0x43,0x81,0x0,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x1f,0x10,0x97,0x54,0x55,0x15,0x16,0x30,0x57,0xd4,0x14,0x27,0x24,0x44,0x7,0x84,0xfe,0x80,0x7c,0x24,0x24,0xa4,0x4c,0x80,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc, ++0x0,0x40,0x37,0x10,0x80,0x61,0x27,0x8,0x11,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x40,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x40, ++0x20,0x27,0x24,0x24,0xfc,0x24,0x64,0x74,0xac,0x25,0x26,0x24,0x20,0x21,0x22,0x24,0x84,0x3e,0x24,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20, ++0x0,0x4,0x2,0x3,0x1,0xff,0x0,0x0,0x4,0xc,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0x18,0xc,0xc,0x4,0x0, ++0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x4,0x8,0x8,0x11,0x16,0x20,0x40,0x0,0x40,0x20,0x4,0xfe,0x80,0x88,0x88,0x90,0xa0,0xc0,0x82,0x82,0x82,0x7e,0x0, ++0x2,0x2,0xff,0x2,0x4,0x18,0x23,0x7f,0x8,0xf,0x8,0xf,0x8,0xff,0x0,0x0,0x40,0x24,0xfe,0xa0,0xc4,0xfc,0x0,0xfc,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x20,0x20, ++0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x49,0x49,0x49,0x7a,0x42,0x4,0xb,0x10,0x80,0xa0,0x90,0x84,0xfe,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0, ++0x10,0x1f,0x28,0x45,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x7c,0xa0,0x10,0x40,0x24,0xfe,0x80,0x90,0x90,0xa0,0xc2,0x82,0x82,0x7e,0x0, ++0x1,0x7f,0x48,0x91,0x79,0x4a,0x54,0x61,0x56,0x49,0x4a,0x6b,0x54,0x43,0x40,0x4f,0x0,0xfe,0x22,0x14,0xf0,0xa0,0x40,0xb0,0xe,0xf4,0x40,0xf8,0x40,0xf8,0x40,0xfc, ++0x0,0x7c,0x45,0x4a,0x48,0x50,0x4b,0x48,0x44,0x45,0x45,0x6a,0x51,0x40,0x47,0x40,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6,0xf8,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x2,0x2,0xff,0x5,0x5,0x9,0x11,0x27,0xc0,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x80,0x44,0xfe,0x0,0x10,0x20,0xc4,0x4,0xfc,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x31,0xd1,0x11,0x12,0x12,0x14,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0, ++0x0,0x7c,0x44,0x48,0x48,0x57,0x48,0x48,0x45,0x45,0x65,0x5a,0x42,0x44,0x44,0x48,0x80,0xa0,0x90,0x90,0x84,0xfe,0xa0,0xa0,0x24,0x24,0x28,0x32,0x22,0x62,0x9e,0x0, ++0x10,0x12,0x11,0x10,0xff,0x11,0x3a,0x34,0x50,0x5f,0x91,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8, ++0x11,0xd,0x5,0x7f,0x5,0xd,0x11,0x21,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x10,0x30,0x40,0xfc,0x40,0x20,0x1c,0x8,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x10,0x12,0x11,0x10,0xff,0x11,0x12,0x1c,0x30,0xd7,0x11,0x12,0x11,0x10,0x51,0x26,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8, ++0x10,0x1f,0x28,0x45,0x9,0x5,0x7f,0x5,0x9,0x11,0xff,0x4,0xc,0x3,0x4,0x38,0x40,0x7c,0xa0,0x10,0x20,0x48,0xfc,0x40,0x20,0x14,0xfe,0x20,0x40,0x80,0x60,0x10, ++0x40,0x2f,0x28,0x8,0x8f,0x68,0x2f,0x8,0x2f,0x4c,0xd5,0x54,0x55,0x64,0x44,0x44,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x4,0xfe,0x44,0x54,0x44,0x54,0x44,0x54,0x48, ++0x0,0x7b,0x48,0x50,0x52,0x62,0x52,0x4a,0x4a,0x4a,0x6a,0x52,0x42,0x42,0x43,0x40,0x4,0xfe,0x20,0x24,0xfe,0xa4,0xa4,0xa4,0xd4,0xcc,0x84,0x94,0x88,0x0,0xfe,0x0, ++0x8,0x8,0xff,0x8,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x20,0x24,0xfe,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x40,0x80,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0, ++0x10,0x15,0x1e,0x10,0x12,0x7f,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x50,0x48,0x86,0x2, ++0x1,0x0,0x3f,0x21,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x88,0x10,0x0,0x84,0xfe,0x0,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x12,0x15,0x59,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x29,0x45,0x82,0x4,0x40,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x14,0x54,0x29,0x48,0x7c,0x40,0xfe,0x44,0x70,0xc4,0x7c,0x0,0x44,0xfe,0x44,0x44,0x84,0x94,0x8, ++0x1,0x1,0x1,0x1,0x3f,0x20,0x28,0x24,0x22,0x21,0x21,0x22,0x24,0x28,0x3f,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x28,0x68,0x88,0x8,0x88,0x48,0x28,0x18,0xf8,0x8, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x21,0x2f,0x21,0x41,0x41,0x82,0x1c,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0x28,0x10, ++0x4,0xf,0x10,0x3f,0xe1,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xe0,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0, ++0x8,0x8,0xff,0x1c,0x2a,0x49,0x3f,0x22,0x3f,0x22,0x3f,0x28,0x2f,0x28,0x4f,0x88,0x20,0x24,0xfe,0x70,0xae,0x24,0xfc,0x40,0xf8,0x48,0xf8,0x48,0x50,0x62,0x42,0x3e, ++0x8,0xff,0x10,0x11,0x20,0x23,0x3c,0x64,0xa5,0x24,0x24,0x24,0x25,0x3e,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x20,0x24,0x2c,0xb0,0x20,0xb0,0x2e,0x24,0xa0,0x40, ++0x3f,0x1,0x7f,0x49,0x85,0x9,0x3e,0x22,0x22,0x3f,0x8,0x2e,0x29,0x2e,0x70,0x20,0xf8,0x0,0xfe,0x22,0x44,0x20,0x40,0x78,0x88,0x50,0x20,0x50,0xfe,0x88,0x88,0xf8, ++0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x50,0x13,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x1,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x7e,0x44,0x55,0x56,0x54,0x54,0x54,0x57,0x55,0x55,0x55,0x29,0x25,0x45,0x81,0x40,0x40,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x28,0x28,0x2f,0x48,0x49,0x8a,0xc,0x0,0x84,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0x58,0x60,0x42,0x42,0x3e, ++0x40,0x2f,0x28,0x8,0x88,0x4f,0x4a,0x2,0x1a,0x2b,0xca,0x4a,0x4a,0x4b,0x5c,0x8,0x20,0xa0,0xbc,0xc4,0xc4,0xa8,0x90,0x28,0x46,0x84,0x7c,0x44,0x44,0xc4,0x7c,0x44, ++0x20,0x13,0x10,0x1,0xf8,0xb,0x10,0x38,0x56,0x91,0x10,0x11,0x12,0x14,0x11,0x10,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x70,0xd0,0x48,0x4e,0x44,0x40,0x80, ++0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0xff,0x1,0x11,0x9,0x5,0x9,0x11,0x65,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x8,0x10,0xa0,0x40,0x20,0x1e,0x4,0x0, ++0x0,0x7c,0x44,0x49,0x48,0x50,0x48,0x4b,0x44,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x1,0xf7,0x11,0x55,0x33,0x55,0x9,0x14,0x2b,0xd1,0x24,0x48,0x12,0x24,0x9,0x10,0x20,0xa8,0x24,0x20,0x3e,0xe0,0x20,0x24,0x24,0x28,0x10,0x30,0x52,0x8a,0xa,0x4, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x2a,0x14,0x40,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x10,0x7c,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x90,0x17,0x14,0x14,0x14,0x14,0x14,0x17,0x14,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x10,0x10,0xfd,0x22,0x20,0x3d,0x25,0x25,0x25,0x25,0x25,0x25,0x45,0x95,0x9,0x80,0x80,0x88,0xfc,0x10,0x60,0x84,0x4c,0x50,0x20,0x20,0x10,0x10,0x4e,0x84,0x0, ++0x3f,0x20,0x3f,0x25,0x29,0x32,0x25,0x29,0x39,0x29,0x29,0x29,0x4b,0x4c,0x88,0xb,0xfc,0x4,0xfc,0x0,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x9c, ++0x3f,0x20,0x3f,0x24,0x22,0x3f,0x22,0x24,0x28,0x21,0x3f,0x22,0x46,0x41,0x82,0xc,0xfc,0x4,0xfc,0x90,0xa4,0xfe,0xa0,0x98,0x88,0x0,0xfe,0x10,0x20,0xc0,0x30,0x8, ++0x10,0x12,0x21,0x20,0x47,0xf9,0x12,0x24,0x40,0xff,0x1,0x2,0x19,0xe0,0x41,0x6,0x40,0x48,0x50,0x40,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x8,0x8,0xb0,0x40,0xb0,0x8, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x2f,0x21,0x20,0x20,0x20,0x2a,0x4a,0x52,0x81,0x0,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x0,0x8,0xf8,0x0,0x80,0x48,0x46,0x12,0xf0,0x0, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x0,0x1f,0x0,0xff,0x12,0xa,0x32,0x6,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x48,0xe8,0x48,0xc8,0x48,0xf8,0x48,0x8a,0x6a,0x4, ++0x8,0x8,0x13,0x10,0x27,0x48,0x8b,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40, ++0x2,0x1,0x7f,0x1,0x42,0x27,0x11,0x22,0x4f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x44,0x88,0x10,0x48,0xe4,0x20,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x0,0x40,0x20,0x2f,0x8,0x88,0x5f,0x48,0x18,0x28,0xc9,0x4b,0x4d,0x51,0x50,0x60,0x90,0xf8,0x80,0xfe,0x82,0xf4,0x80,0x88,0x78,0x0,0x40,0x24,0x2a,0xa,0xf8,0x0, ++0x10,0x13,0x20,0x21,0x44,0xff,0x10,0x22,0x41,0xf9,0x0,0x1,0x1a,0xe4,0x41,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x4c,0x50,0xe0,0x50,0x48,0x4e,0x44,0x80, ++0x2,0x1,0xff,0x4,0x14,0x14,0x24,0x24,0x44,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x0,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x74,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x2,0x1,0xff,0x4,0x14,0x24,0x44,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x1,0x40,0x3f,0x22,0x6,0x8a,0x52,0x42,0x10,0x2f,0xc1,0x42,0x44,0x48,0x50,0x40,0x0,0x84,0xfe,0x20,0x30,0x2c,0x24,0xa0,0x84,0xfe,0xc0,0xa0,0x90,0x8e,0x84,0x80, ++0xc,0x70,0x44,0x44,0x64,0x54,0x54,0x44,0x44,0x5c,0xe4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80,0x80,0x80, ++0x2,0x7,0x78,0x8,0x8,0x9,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x22,0x3e,0x22,0x40,0x40,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x13,0x16,0x1a,0x32,0xd3,0x10,0x11,0x12,0x14,0x51,0x20,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x0,0x4,0x7e,0x55,0x56,0x54,0x7c,0x54,0x55,0x57,0x55,0x7d,0x41,0x1,0x1,0x1,0x80,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x12,0x1d,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x20,0xfc,0x21,0x51,0x52,0xfd,0x11,0x11,0x1d,0xf1,0x51,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x1,0x1,0x2,0x2,0x4,0x8,0x30,0xc8,0x8,0x9,0xe,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0x80,0x40,0x30,0x1e,0x24,0x60,0x80,0x0,0x0,0x8,0x8,0xf8,0x0, ++0x0,0x40,0x30,0x10,0x1,0x82,0x64,0x29,0x11,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x10,0x20,0x25,0x7e,0x4,0x9,0x11,0x7d,0x1,0x1,0xd,0x71,0x20,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x0,0x40,0x30,0x10,0x1,0x2,0xf4,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0x0,0x10,0x30,0xc0,0x0,0x4,0x4,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x2,0x7,0x18,0x64,0x2,0x1,0x6,0x78,0x40,0x44,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x0,0xf8,0x8,0x10,0x60,0x80,0x0,0x0, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7c,0x51,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40, ++0x0,0x7f,0x44,0x44,0x44,0x7f,0x42,0x2,0x7,0x8,0x14,0x62,0x1,0x6,0x18,0xe0,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0xf0,0x10,0x20,0xc0,0x0,0x0,0x0,0x0, ++0x0,0x4f,0x29,0x29,0xf,0x8,0xe1,0x23,0x26,0x29,0x20,0x20,0x27,0x50,0x8f,0x0,0x4,0xfe,0x24,0x24,0xfc,0x84,0x0,0xf8,0x8,0x10,0xa0,0xc0,0x0,0x6,0xfc,0x0, ++0x10,0x13,0x22,0x3e,0x42,0x83,0x7e,0x10,0x10,0x7d,0x13,0x10,0x14,0x18,0x11,0x6,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x80,0xfc,0x4,0x8,0x90,0x60,0x40,0x80,0x0, ++0x22,0x3f,0x50,0x89,0x7f,0x44,0x44,0x7f,0x44,0xf,0x10,0x28,0x4,0x3,0xe,0x70,0x44,0x7e,0xa0,0x14,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x10,0x20,0x40,0x80,0x0,0x0, ++0x8,0xfd,0x9,0x49,0x49,0x49,0x48,0x48,0x7d,0x4,0x5,0x1c,0xe4,0x45,0x16,0x8,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x20,0x48,0xf0,0x24,0xfc,0x20,0xa8,0x26,0xa2,0x40, ++0x40,0x33,0x12,0x2,0xfb,0xa,0x12,0x33,0x58,0x97,0x18,0x11,0x12,0x1c,0x10,0x10,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40, ++0x8,0x8,0xff,0x9,0x41,0x23,0x24,0x80,0x49,0x12,0x2f,0xe2,0x22,0x22,0x23,0x22,0x20,0x24,0xfe,0x20,0xf8,0x10,0xa0,0x40,0xb0,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x41,0x31,0x13,0x84,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0xfc,0x8,0x49,0x4a,0x48,0x48,0x48,0x7d,0x7,0x5,0x1d,0xe5,0x45,0x15,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x20,0x21,0x4a,0xf8,0x10,0x20,0x41,0xfb,0x5,0x1,0x19,0xe1,0x41,0x1,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x84,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10, ++0x2,0x1,0x7f,0x44,0x44,0x44,0x7f,0x44,0x4e,0x4d,0x54,0x54,0x65,0x44,0x84,0x4,0x0,0x8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0xa4,0x20,0x20,0x20,0x20, ++0x0,0xb,0xfc,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8, ++0x8,0xff,0x10,0x11,0x21,0x25,0x3f,0x65,0xa5,0x24,0x24,0x27,0x24,0x3c,0x24,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8, ++0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x7c,0x10,0x17,0x1c,0xe4,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xfc,0x4,0x24,0xf4,0x4,0x4,0x14,0x8, ++0x0,0x3f,0x0,0x8,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10, ++0x7e,0x42,0x42,0x7e,0x0,0x3f,0x0,0x8,0x8,0x8,0xf,0x0,0x0,0xff,0x0,0x0,0xfc,0x84,0x84,0xfc,0x20,0xf0,0x20,0x20,0x20,0x24,0xfe,0x4,0x24,0xf4,0x14,0x8, ++0x0,0x20,0xff,0xa9,0xa9,0xa9,0xaf,0xa9,0xab,0xab,0xad,0xe9,0x89,0x11,0x21,0x1,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x56,0x54,0x90,0x10,0x10,0x10, ++0x0,0xb,0x7c,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8, ++0x20,0x27,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x20,0x38,0xe7,0x40,0x0,0x1f,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x0,0x7f,0x0,0x8,0x6,0x2,0x20,0x19,0x9,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0xfc,0x84,0x88,0x80,0x80,0x80,0x0,0x4,0xfe,0x0,0xc0,0x30,0x18,0xc,0x4, ++0x1,0x1,0x7f,0x1,0x3f,0x1,0x1,0xff,0x4,0xf,0xa,0x11,0x20,0x43,0xc,0x30,0x0,0x8,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x0,0xf0,0x20,0x40,0x80,0x40,0x30,0xe, ++0x1,0x1,0x3f,0x1,0x1,0x7f,0x8,0x6,0x22,0x18,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0x0,0xfc,0x4,0x88,0x80,0x80,0x84,0xfe,0x40,0x30,0x18,0x8, ++0x0,0x47,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x12,0x14,0x10,0x28,0x47,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20,0x6,0xfc,0x0, ++0x8,0x7c,0x48,0x4b,0x48,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4c,0x48,0x49,0x98,0x80,0x40,0x0,0xc4,0x4c,0x50,0xe0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80, ++0x1,0x79,0x4f,0x49,0x48,0x7f,0x48,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x10,0x14,0xfe,0x10,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x6c,0x4,0x4,0x14,0x8, ++0x23,0x22,0x23,0x3a,0x2b,0x48,0x57,0x84,0x27,0x20,0x23,0x21,0x28,0x30,0x21,0x6,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x92,0xfe,0x0,0xfc,0x8,0x90,0x60,0x9e,0x4, ++0x2,0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8, ++0x41,0x31,0x1f,0x1,0x80,0x6f,0x21,0x1,0x1f,0x29,0xe9,0x2a,0x2c,0x28,0x28,0x28,0x20,0x24,0xfe,0x20,0x8,0xfc,0x20,0x24,0xfe,0x24,0x24,0xd4,0xc,0x4,0x14,0x8, ++0x8,0xff,0x8,0x1f,0x11,0x1f,0x0,0x7f,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0x24,0xfe,0x20,0xf0,0x10,0xf0,0x4,0xfe,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c, ++0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x44,0x44,0x7f,0x40,0x1f,0x4,0x3,0xc,0x70,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x44,0x44,0xfc,0x4,0xf0,0x40,0x80,0x60,0x1c, ++0x13,0x12,0x13,0x5a,0x57,0x50,0x97,0x14,0x14,0x17,0x10,0x13,0x11,0x10,0x11,0x16,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6, ++0x47,0x34,0x17,0x4,0x87,0x60,0x2f,0x9,0x19,0x2f,0xe0,0x27,0x22,0x21,0x26,0x38,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xf0,0x20,0xc0,0x30,0xe, ++0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x29,0x2f,0x28,0x23,0x22,0x29,0x30,0x23,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x24,0xfc,0x4,0xf0,0x10,0x20,0xc0,0x30,0xe, ++0x8,0x8,0xff,0x8,0x8,0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0, ++0x8,0x8,0xff,0x8,0x20,0x10,0x90,0x47,0x41,0x9,0x11,0xe1,0x21,0x21,0x21,0x20,0x20,0x24,0xfe,0x20,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x2,0x1,0xff,0x10,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x20,0x13,0x12,0x2,0xfe,0x43,0x42,0x42,0x43,0x42,0x42,0x4a,0x7e,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6, ++0x10,0x10,0x10,0x10,0x5f,0x5a,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x80,0x60,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0, ++0x4,0x4,0xff,0x4,0x5,0x2,0xff,0x4,0x8,0x34,0xc4,0x3f,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x50,0x8,0xfe,0x40,0x30,0x4e,0x44,0xf8,0x40,0x40,0x40,0x40, ++0x1,0x89,0x51,0x2f,0x51,0x91,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x57,0x24,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x4,0x4,0xff,0x4,0x1f,0x0,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x22,0x1,0x40,0x44,0xfe,0x40,0xf0,0x20,0x40,0x80,0xfe,0x82,0x84,0x80,0x80,0x80,0x80,0x0, ++0x21,0x21,0x39,0x27,0x41,0x79,0xa7,0x24,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x0,0x0,0x3f,0x2,0x2,0x3,0x3e,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x1,0x0,0x10,0x78,0x80,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x1f,0x0,0x2,0x1,0x0,0xff,0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x2,0x1,0x0,0xf0,0x20,0x40,0x80,0x80,0xfe,0x84,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x0, ++0x21,0x26,0x3c,0x44,0x84,0x7c,0x24,0x24,0xfd,0x26,0x24,0x20,0x29,0x31,0x22,0x4,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0xa0,0x20,0x20,0x20,0x20, ++0x4,0xe,0x30,0x22,0x22,0x22,0x22,0x22,0x22,0x2e,0x32,0x2,0x4,0x18,0x60,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40,0x40, ++0x8,0x8,0xff,0x8,0x9,0x1,0x3f,0x21,0x20,0x20,0x20,0x20,0x20,0x23,0x4c,0x80,0x40,0x44,0xfe,0x40,0x20,0x10,0xfc,0x0,0x88,0x88,0x50,0x60,0xa0,0x12,0xa,0x6, ++0x0,0x7f,0x40,0x5f,0x40,0x5f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x20,0x23,0x22,0xfa,0xaa,0xaa,0xa8,0xa9,0xa9,0xa9,0xa9,0xb9,0x21,0x21,0x21,0x21,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0x8,0x35,0xd5,0x49,0x39,0x25,0xcd,0x15,0x65,0xc,0x14,0x64,0x4,0x29,0x12,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0, ++0x6,0x78,0x40,0x48,0x4e,0x72,0xc1,0x1f,0x10,0x11,0x11,0x11,0x11,0x2,0xc,0x70,0x4,0xfe,0x44,0x44,0x54,0x88,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x38,0x8, ++0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x21,0x41,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0, ++0x0,0x8,0xfc,0x10,0x10,0x11,0x12,0x7c,0x10,0x10,0x10,0x10,0x1c,0xe0,0x41,0x6,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x10,0x10,0x10,0xfc,0x11,0x32,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x12,0x12,0x13,0x14,0xff,0x12,0x32,0x3a,0x57,0x52,0x94,0x14,0x17,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x8,0x88,0x48,0xfe,0x8,0x88,0x48,0xfc,0x8,0x28,0x10, ++0x2,0xff,0x28,0x2a,0xff,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xfe,0x82,0x40,0x44,0x7e,0x80,0x4,0x7e,0x44,0x64,0x54,0xfe,0x84,0xa4,0x94,0xfc,0x4,0x18, ++0x1f,0x1,0x7f,0x49,0x85,0x9,0x10,0x1f,0x20,0x5f,0x12,0xff,0x20,0x3f,0x0,0x0,0xf0,0x0,0xfe,0x22,0x44,0x20,0x0,0xf8,0x0,0xf0,0x14,0xfe,0x90,0xf8,0x10,0x30, ++0x11,0x11,0x11,0x17,0x55,0x59,0x51,0x91,0x10,0x1f,0x10,0x10,0x29,0x46,0x84,0x0,0x10,0x10,0x14,0xfe,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x40,0x31,0x11,0x1,0x81,0x62,0x24,0x3,0x12,0x21,0xe1,0x20,0x20,0x20,0x23,0x2c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x8, ++0x0,0x3f,0x21,0x21,0x3f,0x20,0x2f,0x28,0x28,0x2f,0x28,0x2f,0x28,0x48,0x8f,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x21,0x21,0x21,0x27,0xf9,0x49,0x49,0x49,0x48,0x8f,0x50,0x20,0x51,0x4a,0x84,0x0,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x21,0x20,0x3f,0x20,0x43,0x78,0xa0,0x27,0xf8,0x20,0x2f,0x20,0x28,0x31,0x22,0xc,0x10,0xa0,0xfc,0x40,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x10,0x10,0x1f,0x20,0x5f,0x12,0x11,0x10,0xff,0x12,0x21,0x20,0x3f,0x0,0x0,0x0,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf8,0x20,0xa0,0x40, ++0x8,0x6,0x2,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x7f,0x1,0x2,0x4,0x18,0xe0,0x20,0x60,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x0,0x80,0x60,0x1e,0x4, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x7f,0x48,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40, ++0x2,0x1,0x7f,0x40,0xa4,0x24,0x25,0x3c,0x4,0xff,0x24,0x24,0x24,0x25,0x46,0x4,0x0,0x0,0xfe,0x2,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20, ++0x20,0x20,0x20,0x23,0xf8,0x48,0x48,0x4f,0x48,0x88,0x50,0x21,0x52,0x4c,0x88,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x46,0x84,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x7c,0x44,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44, ++0x20,0x1b,0x48,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x20,0x1b,0x48,0x42,0x41,0x44,0x54,0x54,0x64,0x44,0x44,0x43,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x84,0x94,0xc,0xc,0x24,0x24,0xe4,0x4,0x4,0x14,0x8, ++0x10,0x12,0x11,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x8,0x8,0xff,0x8,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7d,0x41,0x2,0xc,0x20,0x24,0xfe,0x28,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x8,0x8,0x28,0x10, ++0x4,0x7f,0x4,0x7f,0x40,0x8f,0x0,0x7f,0x6,0x3b,0x5,0x1a,0x64,0x18,0x62,0x1,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x0,0xfc,0x10,0x30,0xc0,0xa0,0x90,0x8e,0x84,0x0, ++0x10,0x10,0x17,0x10,0xff,0x14,0x39,0x34,0x53,0x50,0x97,0x10,0x13,0x10,0x17,0x10,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfc,0xc0,0x68,0xb0,0x68,0xae,0x24,0x60, ++0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x21,0x2,0x4,0x3f,0x24,0x24,0x24,0xff,0x0,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x8,0x28,0x10,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x20,0x23,0x38,0x40,0x80,0x7b,0x20,0x21,0xf8,0x23,0x22,0x22,0x2a,0x32,0x2f,0x0,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x0,0x8b,0x50,0x20,0x50,0x97,0x10,0x11,0x30,0x53,0x92,0x12,0x12,0x12,0xaf,0x40,0x0,0xf8,0x10,0x60,0x48,0xfc,0x40,0x40,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x8,0x8,0xff,0x8,0x1c,0x2a,0x49,0x8c,0x7,0xc,0x14,0x22,0x1,0x1,0xe,0x70,0x20,0x24,0xfe,0x20,0x70,0xae,0x24,0x20,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x1f,0x0,0x0,0x1,0xff,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0xf0,0x20,0xc0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x8,0x7c,0x4a,0x49,0x49,0x78,0x4f,0x48,0x78,0x48,0x49,0x49,0x7a,0x44,0x0,0x0,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x2,0xff,0x28,0x29,0xfe,0xaa,0xaa,0xaf,0xc2,0x82,0x82,0xfe,0x82,0x82,0xff,0x82,0x10,0x10,0x52,0x34,0xb8,0x10,0x7e,0x90,0xb0,0xb8,0xd6,0x92,0x90,0x90,0x46,0x3c, ++0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x81,0x1,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x40,0x7c,0x40,0x78,0x40,0x7c,0x40,0x40, ++0x1,0x0,0x7f,0x44,0x5f,0x4e,0x55,0x64,0x44,0x42,0x7f,0x41,0x42,0x4c,0xb0,0x0,0x0,0x84,0xfe,0x10,0x7c,0x38,0x54,0x92,0x90,0xa4,0xfe,0xc0,0xb0,0x8e,0x84,0x80, ++0x0,0x40,0x32,0x11,0x0,0x0,0xf7,0x10,0x11,0x11,0x12,0x14,0x10,0x28,0x44,0x83,0x40,0x40,0x48,0x50,0x40,0x44,0xfe,0x40,0x60,0x50,0x48,0x48,0x40,0x40,0x6,0xfc, ++0x0,0x40,0x29,0x24,0x4,0x0,0xe3,0x2c,0x24,0x24,0x24,0x2d,0x34,0x24,0xa,0x11,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x70,0x68,0xa4,0x24,0x20,0x20,0x6,0xfc, ++0x8,0xfc,0x8,0x8,0x9,0x79,0x4a,0x40,0x48,0x7c,0x9,0xa,0x8,0x8,0x50,0x20,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x26,0x22,0x20,0x20,0xa0,0x40, ++0x1,0x21,0x19,0xd,0x5,0x1,0xff,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x8,0x18,0x20,0x40,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x55,0x55,0x99,0x13,0x15,0x18,0x10,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0, ++0x0,0x7f,0x11,0x9,0x0,0x1f,0x10,0x11,0x11,0x11,0x11,0x12,0x2,0x4,0x18,0x60,0xfc,0x0,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x90,0x80,0x82,0x82,0x7e, ++0x40,0x30,0x10,0x0,0x81,0x61,0x21,0x9,0x15,0x25,0xe5,0x29,0x23,0x25,0x28,0x20,0x0,0x80,0x60,0x2c,0x8,0x10,0x10,0x20,0x28,0x44,0x86,0x2,0x8,0x8,0xf8,0x0, ++0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0xf8,0x8,0xf8,0x4,0xfc,0x4, ++0x2,0x1,0x7f,0x42,0x89,0x28,0x4b,0xc,0x77,0x1,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x24,0xc8,0x4,0x10,0xf0,0x0,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x9,0x1f,0x29,0xc9,0x9,0x1,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x2e,0x24,0x60,0x0, ++0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x54,0x94,0x14,0x14,0x14,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40, ++0x0,0x7b,0x4a,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6, ++0x10,0x10,0x23,0x22,0x4b,0xfa,0x13,0x20,0x47,0xfc,0x4,0x4,0x1c,0xe4,0x40,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40,0x40, ++0x7f,0x40,0x5f,0x40,0x5f,0x8,0xf,0x10,0x1f,0x31,0x51,0x9f,0x12,0x4,0x18,0x60,0xfc,0x4,0xf4,0x4,0xf4,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x88,0x82,0x82,0x7e, ++0x8,0x8,0x1f,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x80,0x82,0x82,0x7e, ++0x10,0x10,0x3e,0x24,0x48,0xff,0x49,0x49,0x7f,0x55,0x14,0x24,0x25,0x44,0x83,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0xa,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x11,0xfe,0x25,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x54,0x50,0x90,0x92,0x12,0xe,0x0, ++0x10,0x17,0x20,0x20,0x4b,0xfa,0x12,0x22,0x42,0xfa,0x2,0x2,0x1a,0xe2,0x43,0x2,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0x94,0xfc,0x4, ++0x0,0xff,0x2,0x4,0x7f,0x44,0x44,0x47,0x44,0x44,0x44,0x47,0x44,0x44,0x7f,0x40,0x4,0xfe,0x0,0x4,0xfe,0x44,0x44,0xc4,0x44,0x44,0x44,0xc4,0x44,0x44,0xfc,0x4, ++0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x21,0x21,0x21,0x2f,0xf9,0x21,0x27,0x2c,0x34,0xe4,0x27,0x24,0x24,0x24,0xa7,0x44,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x9,0x7d,0x49,0x4f,0x49,0x79,0x4b,0x4a,0x4a,0x7a,0x4b,0x4a,0x4a,0x7a,0x4b,0x2,0x10,0x10,0x14,0xfe,0x10,0x14,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x8,0xff,0xa,0xc,0x12,0x6b,0x2d,0x31,0xc9,0x15,0x24,0xcc,0x14,0xe4,0x29,0x12,0x24,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x90,0x90,0x92,0x92,0xe,0x0, ++0x4,0xe,0x78,0x8,0x8,0xfe,0x8,0x1d,0x1a,0x28,0x28,0x48,0x88,0x8,0x8,0xb,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0, ++0x80,0x61,0x2f,0x9,0x9,0x8f,0x69,0x29,0x9,0x1f,0x29,0xc9,0x4f,0x48,0x41,0x46,0x10,0x10,0x90,0x10,0x10,0x54,0x52,0x52,0x90,0x14,0x14,0x8,0x10,0x60,0x80,0x0, ++0x1,0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x84,0xfe,0x0,0x80,0x88,0xfc,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x8, ++0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x80,0x3,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x24,0x28,0x10,0x20,0x40,0x80,0x0, ++0x4,0xff,0x4,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x21,0x28,0x24,0x40,0x41,0x8e,0x44,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x20,0xfc,0x0,0x8,0x90,0xa0,0x42,0xa2,0x1e, ++0x0,0xff,0x1,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x0,0x0,0x8,0x18,0x20,0x40,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0, ++0x0,0x7f,0x40,0x40,0x40,0x7f,0x42,0x42,0x7f,0x42,0x41,0x41,0x48,0x50,0x60,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x80,0x42,0x32,0xe, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x16,0x1a,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x20,0x20,0x10,0x92,0xa,0x6, ++0x0,0x0,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0,0x0, ++0x10,0x11,0x3f,0x20,0x7f,0xa9,0x25,0x21,0xff,0x29,0x45,0x41,0x7f,0x1,0xa,0x4,0x20,0x20,0xa0,0x24,0x7e,0x84,0x44,0x44,0xc8,0x28,0x28,0x10,0xa8,0x28,0x46,0x84, ++0x12,0x11,0x10,0x12,0x5a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x4,0x7e,0x4,0x44,0x24,0xfc,0x94,0x54,0x54,0x24,0x54,0x8c,0x4,0x4,0x14,0x8, ++0x20,0x1b,0x48,0x41,0x41,0x4f,0x49,0x49,0x49,0x4f,0x49,0x41,0x41,0x5f,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x24,0xf4,0x14,0x14,0x8, ++0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x1,0x1,0x2,0x4,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8, ++0x10,0x13,0x12,0x14,0x7d,0x55,0x55,0x55,0x7d,0x54,0x10,0x17,0x1c,0xe4,0x41,0x2,0x0,0xfe,0x2,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0xfe,0x0,0x88,0x6,0x2, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x78,0x48,0x7,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x1e,0x20,0x21,0x7e,0x90,0x10,0x7c,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x40,0x40,0xfc,0x84,0x88,0x50,0x20,0x40,0x84,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x2,0x2,0x7,0x4,0xc,0x12,0x1,0x6,0x18,0xef,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x2,0x4,0x8,0x3f,0xc0,0x3e,0x22,0x22,0x22,0x22,0x3e,0x22,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xfe,0x8,0xfc,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80, ++0x0,0x4f,0x24,0x22,0x4,0xe0,0x21,0x22,0x2c,0x21,0x22,0x20,0x2b,0x30,0x20,0x3,0x84,0xfe,0xa4,0x94,0xa4,0xc4,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0, ++0x11,0x11,0x1f,0x11,0xfd,0x13,0x16,0x1b,0x32,0xd3,0x10,0x1f,0x10,0x10,0x51,0x26,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xa0,0x1c,0x8, ++0x8,0xff,0x8,0x3f,0x21,0x3f,0x2,0xff,0x4,0x1f,0x21,0xdf,0x1,0x3f,0x1,0x3,0x24,0xfe,0x20,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf0,0x8,0xf6,0x0,0xf8,0x0,0x0, ++0x8,0xff,0x9,0x7f,0x44,0x7f,0x4c,0x56,0x65,0x7f,0x42,0x44,0x4f,0x74,0x84,0x7,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x70,0xae,0x24,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8, ++0x11,0x11,0x1f,0x11,0xfd,0x13,0x32,0x3b,0x56,0x53,0x90,0x1f,0x10,0x10,0x11,0x16,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4, ++0x1,0x79,0x4f,0x49,0x49,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4f,0x48,0x48,0x49,0x9e,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4, ++0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x7f,0x42,0x44,0x4f,0x54,0x64,0x87,0x4,0x4,0xfe,0x20,0x24,0xfe,0x70,0xa8,0x24,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8, ++0x1,0x7f,0x44,0x44,0x7f,0x4e,0x55,0x64,0x5f,0x41,0x4f,0x41,0x7f,0x41,0x85,0x2,0x8,0xfc,0x20,0x20,0xfc,0x70,0xae,0x24,0xf0,0x0,0xf0,0x0,0xfc,0x0,0x0,0x0, ++0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x2f,0x28,0x2f,0x28,0x2f,0x49,0x42,0x8c,0x30,0x84,0xfe,0x20,0xfc,0x30,0x6e,0xa4,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x13,0x1c,0x30,0xd0,0x11,0x12,0x14,0x10,0x50,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40, ++0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x7f,0x3,0x3,0x5,0x9,0x11,0x61,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x80,0x40,0x20,0x18,0xe,0x4,0x0,0x0, ++0x4,0x4,0x7f,0x4,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x40,0x48,0xfc,0x40,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c, ++0x0,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x81,0x3f,0x1,0x1,0x7f,0x8,0xfc,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x26,0x12,0xf8,0x0,0x8,0xfc, ++0x1,0x7f,0x49,0x6b,0x5d,0x7f,0x8,0x7f,0x8,0xf,0x78,0x5,0x55,0x54,0x91,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x40,0x30,0x1f,0x80,0x60,0x27,0x8,0x10,0x20,0xe1,0x22,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40, ++0x1,0x41,0x2f,0x11,0x81,0x63,0x22,0xb,0x12,0x23,0xe0,0x3f,0x20,0x20,0x23,0x2c,0x10,0x14,0xfe,0x10,0x18,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0xb0,0xe,0x4, ++0x1,0x7f,0x44,0x84,0x3f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x2,0xc,0x30,0x0,0xfe,0x42,0x54,0xf8,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c, ++0x0,0x7f,0x44,0x48,0x48,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x42,0x3f,0x12,0x3,0x2,0xf2,0x13,0x10,0x1f,0x10,0x10,0x15,0x1a,0x14,0x0,0x8,0x8,0xfe,0x8,0xf8,0x8,0x8,0xf8,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x1,0x2,0x4,0x8,0x3f,0x1,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x8,0x8,0x7f,0x8,0xf,0x8,0x8,0xf,0x1,0xff,0x1,0x3,0x5,0x19,0x61,0x1,0x20,0x28,0xfc,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x12,0x1f,0x34,0xd4,0x14,0x14,0x17,0x10,0x50,0x20,0x8,0xfc,0x8,0x88,0x48,0x8,0x8,0xfe,0x8,0x88,0x48,0x8,0xfc,0x8,0x50,0x20, ++0x8,0x8,0x48,0x4a,0x7f,0x48,0x89,0x8,0x8,0xe,0x18,0xe8,0x8,0x8,0xb,0x8,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x2,0x1,0xff,0x0,0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0xfc,0x24,0x24,0x27,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x4,0xfe,0x84,0xa4,0x94,0x84,0x84,0xfe,0x4,0x24,0x14,0x4,0xfe,0x4,0x28,0x10, ++0x0,0x1f,0x10,0x12,0x11,0x10,0x10,0xff,0x20,0x22,0x21,0x20,0x3f,0x0,0x0,0x0,0x10,0xf8,0x10,0x10,0x90,0x90,0x14,0xfe,0x10,0x10,0x90,0x90,0xf8,0x10,0xa0,0x40, ++0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0x9,0x37,0xc1,0x1,0x1f,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xce,0x4,0x20,0xf0, ++0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x8,0xf,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0xf0,0x28,0xe6,0x20,0xe0, ++0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x11,0x3f,0xd1,0x11,0x11,0x1,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xfe,0x14,0x50,0x20,0x0, ++0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xdf,0x4,0x8,0x30,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0xe4,0x20,0xa0,0x40, ++0x4,0x7f,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x4,0xff,0x12,0x22,0xcb,0x12,0x22,0x6,0x48,0xfc,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xe,0x24,0x90,0x90,0x0, ++0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0x8,0xe,0x4,0x0,0x0,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x0, ++0x8,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x49,0x4a,0x7c,0x4b,0x48,0x48,0x78,0x4f,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x4c,0x44,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x8,0x8,0x48,0x48,0x7e,0x49,0x8a,0x8,0xe,0x18,0xe8,0x8,0x8,0x8,0x9,0xe,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x1c,0xf3,0x12,0x13,0xfe,0x33,0x39,0x52,0x54,0x53,0x90,0x13,0x10,0x10,0x17,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x50,0x64,0x42,0x90,0x20,0xc8,0x10,0x60,0x80, ++0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1f,0x1,0x7f,0x1,0x3,0x0,0x80,0x60,0xde,0x4,0xf0,0x10,0xf0,0x30,0xc0,0x0,0xf0,0x0,0xfc,0x0,0x0, ++0x0,0xf,0x72,0x52,0x5f,0x52,0x52,0x52,0x5f,0x52,0x52,0x74,0x54,0x9,0x10,0x0,0x0,0xde,0x52,0x54,0xd4,0x54,0x58,0x54,0xd2,0x52,0x52,0x52,0x5a,0x54,0x90,0x10, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x4a,0x2,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8, ++0x20,0x20,0x38,0x23,0x42,0x7a,0xa2,0x22,0xfa,0x22,0x23,0x22,0x2a,0x32,0x22,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8, ++0x0,0x7f,0x9,0x9,0x7f,0x9,0x9,0x9,0x7f,0x9,0x9,0x11,0x11,0x25,0x42,0x0,0x4,0x7e,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x27,0x22,0x22,0xfa,0x4f,0x4a,0x4a,0x8a,0x57,0x22,0x52,0x4d,0x84,0x8,0x0,0x0,0xde,0x52,0x52,0x54,0xd4,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x90,0x10,0x10, ++0x10,0x10,0x20,0x23,0x4a,0xfa,0x12,0x22,0x42,0xfa,0x3,0x2,0x1a,0xe2,0x42,0x2,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0x4,0x14,0x8, ++0x10,0x1f,0x10,0x2f,0x40,0x9f,0x0,0x7f,0x8,0x8,0x9,0x8,0x10,0x10,0x21,0x40,0x8,0xfc,0x0,0xf8,0x0,0xf8,0x88,0xc8,0x88,0x88,0xe8,0x28,0x2a,0x2a,0x4a,0x84, ++0x0,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x40,0x80,0x0,0x10,0xf8,0x10,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x24,0x24,0x49,0x29,0x11,0x2a,0x4a,0x84,0x8,0x8,0xfc,0x88,0x88,0x88,0x90,0x94,0xbe,0x84,0x4,0x4,0x4,0x4,0x4,0x28,0x10, ++0x1,0xff,0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x88,0x68,0x28,0x8,0x8,0x8,0x8,0x28,0x10, ++0x1,0x1,0x7f,0x2,0x4,0x8,0x10,0xef,0x0,0x0,0x3f,0x1,0x9,0x11,0x65,0x2,0x0,0x8,0xfc,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0xf8,0x0,0x20,0x18,0x8,0x0, ++0x1,0x1,0xff,0x1,0x1,0x7f,0x48,0x44,0x5f,0x41,0x41,0x5f,0x41,0x41,0x41,0x40,0x0,0x4,0xfe,0x0,0x4,0xfe,0x24,0x44,0xf4,0x4,0x4,0xf4,0x4,0x4,0x14,0x8, ++0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10, ++0x0,0x4,0xfe,0x4,0x44,0x45,0x2a,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x1,0x3f,0x9,0x7f,0x52,0x9e,0x4,0x7f,0x4,0x3f,0x4,0x7f,0xc,0x14,0x65,0x6,0x10,0xf8,0x20,0xfe,0x92,0xf4,0x40,0xfc,0x40,0xf8,0x40,0xfc,0x90,0x60,0x1c,0x8, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x1f,0x30,0xd7,0x11,0x11,0x11,0x11,0x52,0x2c,0x80,0x88,0xfc,0x80,0x48,0x32,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x8,0x7c,0x48,0x4f,0x48,0x7a,0x4b,0x4a,0x4a,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x9a,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x17,0x58,0x52,0x53,0x92,0x12,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x80,0x40,0x4,0xfe,0x0,0x14,0x14,0xa4,0xa4,0x44,0xa4,0x1c,0xc,0x4,0xfc,0x4, ++0x40,0x37,0x10,0x42,0x41,0x5f,0x41,0x41,0x4f,0x49,0x49,0x49,0x49,0x41,0x41,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x64,0x4,0x14,0x8, ++0x40,0x30,0x10,0x0,0x87,0x64,0x27,0xc,0x17,0x20,0xe0,0x3f,0x20,0x20,0x20,0x20,0x88,0xfc,0x80,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7c,0x44,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0, ++0x20,0x27,0x20,0x3a,0x49,0x51,0x80,0x20,0x2f,0x21,0x22,0x21,0x28,0x30,0x21,0x6,0x1c,0xe0,0x0,0x44,0x24,0x28,0x80,0x84,0xfe,0x8,0x8,0x10,0xa0,0xe0,0x18,0x8, ++0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x40,0x40,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x84,0x64,0x34,0x14,0x4,0x4,0x14,0x8, ++0x21,0x21,0x2f,0x21,0xf1,0x57,0x55,0x55,0x55,0x97,0x53,0x23,0x55,0x49,0x81,0x1,0x10,0x50,0xf4,0x1e,0x24,0xd4,0x54,0x54,0x54,0xd4,0x14,0x88,0x54,0x14,0x24,0x42, ++0x10,0x10,0x24,0x44,0xfe,0x2,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x49,0x29,0x12,0x2a,0x46,0x84,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x42,0x42,0x3e,0x0, ++0x1f,0x1,0x7f,0x49,0x85,0x9,0x2,0x3c,0x20,0x3e,0x20,0x3f,0x24,0x4,0x18,0x60,0xf0,0x0,0xfe,0x22,0x44,0x20,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x42,0x42,0x3e, ++0x8,0x8,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x12,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0xfc,0x94,0x90,0x90,0x12,0x12,0xe,0x0, ++0x40,0x37,0x14,0x4,0x84,0x67,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x8,0x18,0x20,0x40,0x80,0x2,0x2,0xfe,0x0, ++0x0,0x3f,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x43,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x10,0x30,0xc0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x50,0x20,0x0,0x8,0x88,0x48,0x68,0x28,0x8,0x8,0x8,0x8,0x48,0x88,0x14,0x22,0x42,0x80, ++0x11,0x11,0x11,0x23,0x22,0x64,0xa8,0x20,0x21,0x21,0x22,0x24,0x20,0x20,0x21,0x20,0x0,0x0,0x0,0xfc,0x4,0x8,0x40,0x40,0x50,0x48,0x4c,0x44,0x40,0x40,0x40,0x80, ++0x0,0x7f,0x44,0x44,0x7f,0x44,0x41,0x7f,0x42,0x47,0x4c,0x54,0x47,0x40,0x7f,0x0,0x8,0xfc,0x40,0x50,0xf8,0x40,0x8,0xfc,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x0, ++0x0,0x78,0x4f,0x48,0x4b,0x78,0x4f,0x48,0x4b,0x7a,0x4a,0x4a,0x4a,0x4a,0x49,0x9a,0x14,0x10,0xfe,0x10,0xd0,0x10,0xf0,0x10,0xe8,0x28,0xa8,0xa8,0xaa,0xaa,0x4a,0x24, ++0x2,0x41,0x30,0x17,0x0,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x10,0x29,0x47,0x0,0x8,0x10,0xa0,0xfc,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x80,0x6,0xfc,0x0, ++0x0,0x47,0x30,0x10,0x87,0x64,0x24,0xf,0x10,0x24,0xe2,0x22,0x24,0x20,0x22,0x21,0x0,0xbc,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8, ++0x8,0xff,0x8,0x3f,0x1,0x9,0x9,0xff,0x10,0x1f,0x10,0x1f,0x29,0x24,0x44,0x0,0x24,0xfe,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0,0xfc,0x24,0x94,0x94,0xc, ++0x10,0x10,0x10,0x10,0xfc,0x10,0x14,0x18,0x33,0xd2,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x1f,0x11,0x21,0x41,0x1f,0x11,0x11,0x11,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x0,0xb,0xfe,0x12,0x13,0x22,0x2b,0x7e,0xaa,0x2b,0x2a,0x2a,0x3c,0x24,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x50,0xfc,0x50,0x54,0xfe,0xc4,0xa8,0x90,0x8e,0xc4,0x80, ++0x21,0x21,0x27,0x21,0xff,0x21,0x22,0x3c,0x67,0xa1,0x22,0x27,0x20,0x3f,0xa0,0x40,0x10,0x10,0xfc,0x10,0xfe,0x10,0xae,0x84,0xf8,0x0,0x40,0xf8,0x40,0xfe,0x40,0x40, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x14,0x18,0x33,0xd0,0x10,0x12,0x16,0x1a,0x52,0x21,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x0,0xf8,0x10,0x20,0x80,0x64,0x22,0x8,0xf8, ++0x1,0x2,0x4,0x8,0x12,0x21,0xc1,0x1f,0x0,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0xf8,0x20,0x40,0x0,0x0,0x14,0x12,0xf2,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x10,0x4e,0x84,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x57,0x61,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x94,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x60,0x52,0x54,0x48,0x48,0x64,0x42, ++0x2,0x4,0x1f,0x10,0x14,0x12,0x12,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2e,0x22,0x22,0x24,0x24,0x48,0x50,0x82,0x1,0x4,0xfe,0x4,0x4,0xfc,0x84,0x80,0xa4,0xa8,0xb0,0xa0,0x90,0x8e,0x84,0x80,0x0, ++0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x7e,0x2,0x24,0x14,0x8,0x16,0x62,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0xfc,0x4,0x48,0x28,0x10,0x2e,0xc4, ++0x4,0xff,0x10,0x7e,0x42,0x7e,0x41,0x7e,0x42,0x7e,0x40,0xf,0x0,0x7f,0x1,0x3,0x44,0xfe,0x20,0xf8,0x50,0x50,0xfc,0x20,0xf8,0x20,0x20,0xe0,0x88,0xfc,0x0,0x0, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x4f,0x48,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x2,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0,0x44,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4, ++0x23,0x21,0x39,0x41,0x81,0x79,0x27,0x20,0xff,0x24,0x22,0x22,0x29,0x32,0x22,0xc,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xfe,0x62,0x94,0x94,0x8,0x98,0xa4,0x42, ++0x20,0x21,0x3b,0x42,0x83,0x7a,0x23,0x22,0xfb,0x20,0x2f,0x20,0x29,0x32,0x24,0x0,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x40,0x37,0x14,0x4,0x87,0x64,0x24,0xf,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x9,0x9,0x13,0x12,0x34,0x59,0x91,0x12,0x14,0x11,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x0,0xfc,0x4,0x48,0x40,0x50,0x4c,0x44,0x40,0x80,0x0,0x84,0x92,0x12,0xf0, ++0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x44,0x2c,0x13,0x2a,0x4c,0x88,0xb,0x18,0x28,0x48,0x88,0x8,0x8,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x8,0x89,0x6e,0x28,0x8,0x7,0x28,0x2f,0x32,0xc2,0x5f,0x42,0x45,0x44,0x48,0x11,0x0,0x7c,0x4,0x28,0x90,0x88,0x7e,0x82,0x14,0x50,0xdc,0x50,0x70,0xd0,0x8e,0x4, ++0x2,0x1,0x7f,0x40,0x80,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x4,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x13,0xfa,0x14,0x10,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x40,0x30,0x10,0x7,0x84,0x68,0x20,0xf,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x80,0x40,0x40,0xfe,0x2,0x4,0x0,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x1,0x11,0x11,0x1f,0x21,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x13,0x10,0x10,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0, ++0x20,0x27,0x39,0x41,0x81,0x79,0x21,0x27,0xf9,0x21,0x21,0x29,0x31,0x21,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x10,0x17,0x21,0x21,0x49,0xf9,0x11,0x27,0x41,0xf9,0x1,0x1,0x19,0xe1,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x8,0x7c,0x4b,0x4a,0x4c,0x78,0x48,0x49,0x4b,0x7d,0x49,0x49,0x49,0x49,0x49,0x99,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0, ++0x40,0x30,0x17,0x4,0x88,0x60,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x40,0x40,0xfc,0x44,0x48,0x80,0x84,0x4c,0x50,0x20,0x20,0x10,0xe,0x44,0x80,0x0, ++0x1,0x1,0x7f,0x41,0x81,0x2,0x2,0x5,0x9,0x18,0x28,0x48,0x88,0xa,0xc,0x8,0x0,0x0,0xfe,0x2,0x4,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x30,0xe,0x4,0x0, ++0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x60,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x11,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x41,0x6,0x0,0x0,0xfc,0x4,0x84,0x84,0x88,0x88,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x2,0x3f,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0xf0,0x10,0x10,0x10,0x50,0x20, ++0x10,0x10,0xfe,0x22,0x24,0x64,0x18,0x14,0x62,0x0,0x12,0x51,0x50,0x90,0xf,0x0,0x0,0x0,0xfc,0x84,0x48,0x30,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x2,0x2,0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0xc,0x2,0x1,0x6,0x18,0x60,0x0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x60,0x18,0x8, ++0x0,0xb,0x7c,0x4a,0x49,0x4b,0x48,0x7f,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x3,0xc,0xf0,0x84,0x4c,0x50,0xfc,0x80,0xfe,0x80,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x20,0x20,0x27,0x24,0x3f,0x24,0x47,0x80,0x10,0xf8,0x0,0xfc,0x4,0xe8,0x0,0x8,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf8,0x0, ++0x1,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x32,0x5f,0xd2,0x12,0x22,0x22,0x43,0x0,0x0,0x84,0xfe,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x10,0x17,0x12,0x12,0xfa,0x17,0x12,0x1a,0x32,0xd7,0x12,0x12,0x14,0x19,0x50,0x20,0x0,0xde,0x52,0x54,0x54,0xd4,0x58,0x58,0x54,0xd2,0x52,0x52,0x5a,0x54,0x90,0x10, ++0x20,0x27,0x20,0x2f,0xba,0xa9,0xa2,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x80,0xfc,0xa4,0xa4,0xa4,0xa4,0xc, ++0x10,0x11,0x54,0x3b,0x12,0xfc,0x10,0x30,0x3b,0x54,0x53,0x92,0x12,0x12,0x12,0x12,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfe,0x40,0xfe,0x52,0x52,0x52,0x52,0x6, ++0x1,0x41,0x37,0x11,0x1,0x0,0xef,0x20,0x21,0x23,0x2d,0x21,0x29,0x31,0x21,0x1,0x10,0x10,0xfc,0x10,0x50,0x44,0xfe,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x8,0x7f,0x49,0x49,0x4f,0x49,0x49,0x49,0x49,0x4f,0x49,0x79,0x41,0x5,0x2,0x20,0xb0,0x28,0x20,0x24,0xfe,0x20,0x20,0x20,0xd4,0x18,0x10,0x30,0x4a,0x8a,0x6, ++0x4,0x7e,0x40,0x42,0x62,0x55,0x54,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x1,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0, ++0x4,0x7e,0x40,0x42,0x62,0x54,0x54,0x48,0x54,0x52,0x62,0x40,0x45,0x7e,0x0,0x0,0x10,0x24,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0x14,0x8, ++0x4,0x7e,0x40,0x42,0x62,0x54,0x55,0x48,0x55,0x52,0x62,0x40,0x44,0x7e,0x0,0x3,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x4,0xff,0x14,0x11,0x7d,0x11,0x7d,0x11,0xfc,0x13,0x3a,0x56,0x92,0x12,0x12,0x40,0x44,0xfe,0x40,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0xa,0x4, ++0x0,0xb,0x7e,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x3,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0, ++0x10,0x17,0x14,0x24,0x27,0x64,0xa4,0x27,0x20,0x2f,0x28,0x28,0x2b,0x28,0x28,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0xfe,0x42,0x4a,0xfa,0x2,0xa,0x4, ++0x0,0x43,0x32,0x13,0x82,0x62,0x22,0xa,0x12,0x22,0xe2,0x22,0x23,0x22,0x23,0x20,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x50,0x88,0x8,0x4,0xfe,0x0, ++0x2,0x12,0x7a,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xa,0x4,0x10,0x10,0x24,0xfe,0x44,0x44,0x44,0xc4,0x7c,0x44,0x44,0x44,0x44,0x44,0x7c,0x44, ++0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0x5c,0x51,0x51,0x51,0x5e,0xe2,0x44,0x8,0x10,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x8,0xe,0x4,0x0, ++0x7,0x78,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x52,0x52,0x51,0x90,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x0,0x2,0x2,0xfe,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x7e,0x8,0x3e,0x8,0x7e,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x1f,0x0,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x17,0xfc,0x10,0x14,0x1b,0x30,0xd0,0x10,0x1f,0x10,0x10,0x50,0x20,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0, ++0x8,0x48,0x49,0x49,0x49,0x7d,0x41,0x41,0x79,0x48,0x49,0x4f,0x48,0x48,0x88,0x8,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x8,0x8,0x10,0x2f,0x40,0x88,0x8,0x17,0x30,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0, ++0x40,0x3f,0x12,0x2,0x82,0x6f,0x22,0xa,0x12,0x22,0xef,0x22,0x22,0x24,0x24,0x28,0x88,0x7c,0x10,0x10,0x7c,0x90,0x10,0x7c,0x10,0x10,0x94,0xfe,0x10,0x10,0x10,0x10, ++0x40,0x37,0x14,0x4,0x85,0x65,0x25,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x11,0x1c,0xe0,0x8,0x3c,0xc0,0x40,0x40,0x24,0x2c,0x30,0x20,0x10,0x10,0x4e,0x84,0x0, ++0x22,0x21,0xfa,0x22,0x71,0xaa,0x22,0xff,0x4,0xf,0x31,0xcf,0x1,0x3f,0x1,0x3,0x88,0x8,0xbe,0x88,0x1c,0xaa,0x8,0xfe,0x40,0xe0,0x18,0xe6,0x0,0xf8,0x0,0x0, ++0x0,0x47,0x32,0x11,0x8f,0x61,0x22,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x3c,0xc0,0x48,0x50,0xfe,0x50,0x48,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x2,0x1f,0x10,0x12,0x11,0xff,0x10,0x12,0x21,0x40,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0x10,0x14,0xfe,0x10,0x10,0x50,0x20,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x10,0x3e,0x22,0x2a,0xff,0x22,0x2a,0x22,0x46,0xff,0x4,0xf,0x18,0x68,0xf,0x8,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4e,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x0,0x8,0x7c,0x49,0x49,0x7a,0x4a,0x4d,0x48,0x78,0x48,0x48,0x49,0x79,0x42,0x4,0x20,0xa0,0xa0,0x10,0x10,0x8,0xe,0xf4,0x90,0x90,0x90,0x90,0x10,0x10,0x50,0x20, ++0x0,0x4,0x7f,0x54,0x54,0x54,0x55,0x7c,0x54,0x54,0x57,0x54,0x7c,0x44,0x0,0x0,0x20,0x20,0x24,0xa8,0xa8,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x4,0x44,0x34,0x15,0x4,0x7f,0x4,0x4,0x5,0xff,0x4,0x8,0x8,0x10,0x20,0x0,0x4,0x44,0xc4,0x24,0x24,0xa4,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x4,0x14,0x8, ++0x10,0x10,0x93,0x55,0x39,0x11,0x7d,0x11,0x11,0xfd,0x11,0x11,0x22,0x22,0x44,0x89,0x8,0x1c,0xe0,0x0,0x0,0x0,0xf8,0x8,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x0,0x0,0x0,0x0,0x30,0xc0,0x0,0x0,0x10,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0,0x40,0x30,0x18,0x8, ++0x2,0x1,0x7f,0x42,0x42,0x42,0x7f,0x42,0x42,0x44,0x44,0x44,0x48,0x4b,0x90,0x20,0x0,0x4,0xfe,0x0,0x40,0x28,0xfc,0x80,0x80,0x88,0x90,0xa0,0xc2,0x82,0x82,0x7e, ++0x2,0x1,0x7f,0x8,0x4,0x7f,0x42,0x81,0x7f,0x4,0x7,0x4,0x8,0x8,0x10,0x60,0x0,0x8,0xfc,0x20,0x40,0xfe,0x2,0x4,0xfc,0x0,0xf0,0x10,0x10,0x10,0xa0,0x40, ++0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x13,0x38,0x34,0x50,0x90,0x11,0x12,0x14,0x40,0x24,0xfe,0x88,0x50,0xfe,0x42,0x24,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10, ++0x0,0x78,0x4c,0x4a,0x49,0x78,0x4f,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x48,0x98,0x40,0x40,0x44,0x48,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x12,0x12,0x12,0x12,0xfe,0x17,0x12,0x1a,0x32,0xd2,0x12,0x12,0x12,0x12,0x54,0x28,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xd4,0x8a,0x82,0x7e,0x0, ++0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x1f,0x21,0x21,0x7d,0xa5,0x25,0x25,0x3d,0x25,0x22,0x20,0x20,0x1f,0x0,0x4,0x4,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x84,0x84,0x94,0x8, ++0x10,0x10,0x10,0x15,0x59,0x53,0x55,0x91,0x11,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x20,0x10,0x10,0x1,0xf9,0xb,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x4,0x7e,0x44,0x45,0x45,0x7f,0x15,0x11,0x5d,0x51,0x51,0x51,0x5d,0xe1,0x40,0x0,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x1,0x41,0x31,0x12,0x82,0x67,0x2a,0x2,0xa,0x13,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x0,0x7,0x78,0x48,0x48,0x48,0x48,0x49,0x49,0x4a,0x4c,0x78,0x48,0x0,0xf,0x0,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0, ++0x8,0x7f,0x48,0x48,0x48,0x78,0x48,0x49,0x49,0x7a,0x4c,0x48,0x48,0x48,0x4f,0x98,0x8,0xfc,0x20,0x20,0x40,0xc0,0xc0,0x50,0x4c,0x46,0x42,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x20,0x27,0x20,0x21,0xf8,0x20,0x2f,0x20,0x23,0x22,0x22,0x3a,0xe2,0x43,0x2,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x2,0x4,0xc,0x35,0xc6,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x80,0x88,0x50,0x30,0xe,0x4, ++0x0,0x7c,0x45,0x54,0x54,0x54,0x54,0x57,0x54,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x20,0xfc,0x0,0x88,0x50,0x4,0xfe,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x78,0x4f,0x50,0x51,0x50,0x60,0x57,0x48,0x4b,0x6a,0x52,0x42,0x42,0x43,0x42,0x80,0x48,0xfc,0x0,0x10,0xa0,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x7c,0x44,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x1f,0x28,0x2f,0x68,0xa8,0x2b,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x28,0x30,0x20,0x8,0xfc,0x8,0xf8,0x88,0xa8,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xea,0x8a,0x86,0x80, ++0x0,0x40,0x20,0x2f,0x80,0x60,0x27,0xc,0x14,0x24,0xe4,0x24,0x24,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40, ++0x0,0xb,0x7c,0x49,0x4f,0x49,0x48,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x48,0xfc,0x40,0x14,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x90,0xc,0x4, ++0x0,0x4,0x8,0x10,0x2f,0xc4,0x4,0x9,0x30,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x80,0x80,0x40,0x20,0xd0,0x4e,0x44,0x40,0x80,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0, ++0x4,0xff,0x10,0x10,0x21,0x24,0x3e,0x64,0xa7,0x24,0x24,0x24,0x24,0x3c,0x24,0x0,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x11,0x10,0x10,0xfd,0x10,0x14,0x18,0x33,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x8,0xfc,0x20,0x20,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x0,0x1,0x5,0x3,0x48,0x44,0x84,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf0,0x40,0x80,0x0,0x0,0x48,0x24,0x24, ++0x41,0x21,0x2f,0x1,0x87,0x60,0x27,0xc,0x14,0x27,0xe0,0x24,0x22,0x20,0x2f,0x0,0x0,0x42,0xe6,0x8,0xd0,0x2,0xc6,0x48,0x50,0xc0,0x2,0x46,0x88,0xf0,0x20,0x40, ++0x8,0x9,0xff,0x8,0x7f,0x0,0x7f,0x41,0x41,0x7f,0x0,0x22,0x14,0xf,0xf0,0x40,0x4,0xc,0x90,0x20,0x40,0x4,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80, ++0x4,0xff,0x5,0x41,0x33,0x14,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x44,0xfe,0x40,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc, ++0x20,0x27,0x24,0x24,0xfc,0x27,0x64,0x74,0xac,0x27,0x24,0x24,0x24,0x24,0x25,0x28,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c, ++0x10,0xff,0x24,0x24,0x44,0x47,0x74,0xd4,0x54,0x57,0x54,0x54,0x54,0x74,0x45,0x8,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xa4,0x4c, ++0x10,0x3e,0x49,0x81,0x43,0x24,0x1,0xf6,0x1b,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x40,0xfc,0x20,0xf8,0x10,0xe0,0x18,0x46,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x46,0xfc, ++0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x4a,0x49,0x4f,0x48,0x98,0x80,0xa2,0xf2,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x4a,0x44,0x81,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x84,0x94,0x8, ++0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x8b,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0xa,0xfe,0x2,0xa,0x4, ++0x10,0x10,0x17,0xfc,0x13,0x10,0x17,0x18,0x31,0xd2,0x1d,0x10,0x17,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x50,0x4e,0xf4,0x40,0xfc,0x40,0x40,0x40, ++0x1,0x8,0xfc,0x20,0x23,0x40,0x48,0x7c,0xca,0x4a,0x4a,0x48,0x48,0x78,0x47,0x0,0x8,0x88,0x90,0x8,0xfc,0x90,0x90,0x92,0x96,0x94,0x98,0x90,0x90,0x94,0xfe,0x0, ++0x10,0x10,0x13,0x10,0x10,0xfc,0x10,0x10,0x10,0x11,0x12,0x1c,0xf0,0x40,0x7,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x68,0xa4,0x22,0x22,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x5,0xff,0x11,0x11,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3d,0x25,0x0,0x10,0x10,0x10,0x10,0x12,0x16,0xd8,0x10,0x10,0x10,0x10,0x10,0x12,0x52,0x8e,0x0, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0xfc,0x88,0x50,0xfe,0x20,0xfc,0x20,0x20,0x20, ++0x12,0x12,0x12,0x12,0xfe,0x12,0x13,0x1a,0x32,0xd2,0x12,0x12,0x12,0x13,0x52,0x20,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x20,0xa4,0x24,0x1c,0x0, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x12,0x14,0x54,0x29,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x0,0x3e,0x23,0x22,0x3e,0x21,0x3e,0x62,0xa2,0x3e,0x0,0x7f,0x4,0x4,0x8,0x30,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x8,0xfc,0x8,0x8,0x50,0x20, ++0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x0,0x20,0x24,0x3e,0x20,0x20,0x2e,0x30,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x80,0x98,0xe0,0x80,0x82,0x82,0x7e, ++0x0,0x5,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x0,0x10,0x10,0x10,0x10,0x10,0x12,0xdc,0x10,0x10,0x10,0x10,0x10,0x52,0x92,0xe,0x0, ++0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3c,0x24,0x27,0x24,0x24,0x54,0x88,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0xa4,0xfe,0x20,0x20,0x20,0x20, ++0x1,0x0,0x1f,0x90,0x50,0x57,0x14,0x14,0x37,0x54,0xd5,0x14,0x24,0x24,0x49,0x12,0x0,0x84,0xfe,0x40,0x40,0xfc,0x44,0x40,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x2f,0x20,0x24,0x22,0x21,0x20,0x41,0x46,0x98,0x80,0x80,0x80,0xfc,0x84,0x88,0x80,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4, ++0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0,0x4,0xfe,0x0, ++0x1,0x0,0x1f,0x90,0x57,0x50,0x10,0x10,0x31,0x56,0xdb,0x12,0x22,0x22,0x43,0x2,0x0,0x84,0xfe,0x8,0xfc,0x20,0x40,0xd8,0x46,0x42,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x1f,0x29,0x29,0x69,0xaf,0x28,0x28,0x2f,0x29,0x39,0x29,0x2f,0x28,0x20,0x20,0x10,0x14,0xfe,0x44,0x28,0x10,0xfe,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,0x10, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x2a,0x2f,0x28,0x28,0x29,0x4e,0x48,0x80,0x8,0xfc,0x8,0x8,0xf8,0x48,0x40,0x40,0x4c,0x70,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x3f,0x21,0x3f,0x20,0x7f,0xa1,0x3f,0x21,0x7f,0x0,0x3f,0x0,0x0,0x1f,0x10,0x1f,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x14,0xfe,0x0,0x0,0xf8,0x0,0xf0,0x10,0xf0, ++0x12,0x1f,0x28,0x45,0x80,0x3f,0x20,0x3f,0x20,0x3f,0x32,0x52,0x5f,0x52,0x92,0x10,0x44,0x7e,0xa0,0x10,0x80,0xf8,0x8,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x34,0x8, ++0x10,0x10,0x17,0x24,0x24,0x67,0xa4,0x24,0x27,0x26,0x2a,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc, ++0x0,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0xf8,0x13,0x52,0x52,0x53,0x52,0x52,0x7b,0xa,0xa,0x3b,0xce,0xa,0x2a,0x12,0x40,0x28,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0xc, ++0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x58,0x55,0x92,0x34,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xd8,0xd8,0x88,0x8a,0xa,0x6,0x0, ++0x40,0x3f,0x10,0x7,0x84,0x64,0x27,0x8,0x13,0x20,0xef,0x20,0x22,0x24,0x29,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x50,0x4c,0x44,0x80, ++0x4,0xfe,0x28,0xfe,0xaa,0xaa,0xfe,0x0,0x7c,0x0,0xfe,0x10,0x59,0x55,0x92,0x30,0x4,0xf8,0x80,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x24,0x52,0x78,0x0, ++0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x0,0x1f,0x0,0xff,0x1,0x11,0x21,0x45,0x2,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0, ++0x22,0x22,0x2a,0x27,0xf2,0x2f,0x2a,0x2a,0x3a,0xef,0x2e,0x2a,0x2a,0x29,0xa8,0x40,0x10,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84, ++0x8,0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x20,0x20,0x7e,0xc4,0x28,0x10,0x2e,0x44,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x12,0x11,0x10,0x13,0xfd,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x11,0x52,0x24,0x8,0x18,0xa0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x13,0x54,0x5e,0x51,0x55,0xff,0x11,0x55,0x55,0x55,0x95,0x8,0x10,0x20,0x43,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x50,0x8c,0x4, ++0x0,0x4,0x8,0x1f,0x24,0xc4,0x9,0x30,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x40,0x20,0xd0,0x4e,0x44,0x40,0x90,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x8,0xfc,0x4b,0x4a,0x7b,0x4a,0x4b,0x78,0x4f,0x48,0x5c,0xe9,0x48,0x8,0x8,0x8,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x80,0x80,0xf8,0x8,0x8,0x50,0x20, ++0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x2,0x6,0x8,0x10,0x30,0xc0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x10,0x17,0x10,0x10,0x12,0xfd,0x11,0x11,0x10,0x1f,0x10,0x1c,0xe0,0x40,0x0,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x1,0x11,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x20,0x17,0x80,0x4a,0x11,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x7f,0x1,0x11,0x11,0x9,0x9,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0x10,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0xb,0x10,0x10,0x37,0x50,0x90,0x13,0x10,0x7,0x4,0x4,0x4,0x4,0x8,0x30,0x30,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x42,0x25,0x28,0xfe,0x24,0x24,0x24,0x24,0xff,0x24,0x24,0x25,0x25,0x45,0x85,0x4,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x8,0x28,0xca,0xa,0x6, ++0x0,0x47,0x30,0x10,0x4,0x3,0xf1,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x44,0x4c,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x3f,0x20,0x20,0x3f,0x22,0x21,0x2f,0x22,0x22,0x3f,0x22,0x22,0x42,0x84,0x8,0x8,0xfc,0x8,0x8,0xf8,0x20,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x12,0x13,0x12,0x12,0x1e,0xe2,0x42,0x4,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x42,0x32,0x14,0x87,0x60,0x20,0x9,0x11,0x23,0xe2,0x24,0x28,0x20,0x21,0x26,0x40,0x50,0x48,0x40,0xfe,0x80,0x80,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4, ++0x8,0x9,0x8,0x7f,0x49,0x4a,0x48,0x7e,0x42,0x54,0x54,0x48,0x54,0x52,0xa2,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x20,0x50,0x8c,0x4, ++0x20,0x1b,0x4a,0x22,0x3,0x12,0x22,0x64,0x28,0x22,0xff,0x8,0x4,0x3,0xc,0x30,0x20,0xfe,0x22,0x24,0xf8,0x88,0x50,0x20,0x50,0x8c,0xfe,0x20,0x40,0x80,0x60,0x10, ++0x0,0x8,0xfc,0x13,0x12,0x22,0x22,0x7b,0xaa,0x2a,0x2a,0x2a,0x3c,0x24,0x8,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x10,0x23,0x7a,0x4a,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x49,0x79,0x42,0x4,0x8,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x88,0xf8,0x80,0xd0,0x54,0x7c,0x42,0x42,0x3e, ++0x0,0x40,0x33,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x54,0x39,0x11,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x4,0x7f,0x21,0x11,0x12,0xff,0x1,0x3f,0x21,0x21,0x21,0x21,0x3f,0x21,0x0,0x4,0x4,0x84,0x24,0x24,0x24,0xe4,0x24,0xa4,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x8,0x8,0x8,0xa,0x7f,0x8,0xa,0xc,0x18,0x68,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x50,0x4c,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x1c,0x23,0x20,0x7d,0x91,0x11,0x7d,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x28,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28, ++0x4,0x4,0x4,0x8,0x8,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x4,0x4,0x7f,0x4,0x5,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x40,0x48,0xfc,0x40,0x50,0x8,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x8,0x8,0xff,0x8,0x1f,0x21,0x7f,0x81,0x1f,0x11,0x1f,0x11,0x1f,0x11,0x11,0x11,0x20,0x24,0xfe,0x20,0xfc,0x44,0xfc,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x34,0xc, ++0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x4,0x4,0xff,0x4,0x40,0x2f,0x0,0x87,0x54,0x17,0x24,0xe7,0x24,0x24,0x24,0x24,0x40,0x44,0xfe,0x50,0x48,0xfe,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x20,0x20,0x20,0x2f,0xf8,0x27,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x4,0x4,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x60,0x58,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x49,0x4f,0x49,0x4f,0x49,0x49,0x40,0x7f,0x40,0x4,0xfe,0x4,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x4,0xfc,0x4, ++0x8,0x4,0x7f,0x4,0x24,0x14,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x20,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0, ++0x0,0x40,0x30,0x1f,0x80,0x67,0x24,0x4,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x40,0x50,0x48,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x1,0x40,0x27,0x20,0x2,0x1,0xef,0x20,0x23,0x22,0x22,0x23,0x2a,0x32,0x23,0x2,0x10,0xa0,0xfc,0xa0,0xa8,0xb0,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x3,0xa,0x7f,0x4a,0x4b,0x49,0x7b,0x49,0x4f,0x49,0x4a,0x7d,0x48,0x1,0x2,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0, ++0x3,0x42,0x33,0x12,0x83,0x61,0x27,0x1,0x1f,0x21,0xe2,0x25,0x28,0x21,0x22,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x10,0xfc,0x10,0xfe,0x10,0x48,0x56,0xe0,0x58,0x48,0xc0, ++0x22,0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x4,0x7e,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7c,0xc4,0x44,0x44,0x84,0x14,0x8, ++0x22,0x22,0x22,0x7f,0x22,0x3e,0x23,0x3e,0x22,0x22,0xff,0x0,0x24,0x22,0x41,0x82,0x40,0x40,0x40,0x7c,0x44,0x88,0x20,0x20,0x20,0x20,0xd0,0x50,0x50,0x88,0xe,0x4, ++0x20,0x20,0x2f,0x20,0xf8,0x27,0x64,0x74,0xac,0x24,0x24,0x25,0x26,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x0,0x3f,0x22,0x23,0x22,0x22,0x3f,0x22,0x2b,0x2a,0x32,0x42,0x8a,0x4,0x20,0x28,0x24,0xfe,0x20,0xa0,0x24,0xa4,0xe8,0x28,0x10,0x90,0x30,0x4a,0x8a,0x6, ++0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x18,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x2,0x2,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0, ++0x0,0x8f,0x60,0x27,0x0,0x1f,0x0,0x17,0x20,0xe1,0x3f,0x22,0x26,0x21,0x22,0xc,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0x4,0xfe,0x20,0x20,0xc0,0x30,0x8, ++0x0,0x40,0x37,0x11,0x81,0x62,0x24,0x1,0x12,0x2c,0xe2,0x21,0x22,0x24,0x21,0x20,0x40,0x48,0xfc,0x50,0x4c,0x44,0xa0,0x10,0x4e,0x44,0x48,0x50,0x4c,0x44,0x40,0x80, ++0x20,0x10,0x40,0x20,0xf,0x10,0x60,0x20,0x21,0xff,0x5,0x5,0x9,0x11,0x61,0x1,0x80,0x80,0x88,0xfc,0x80,0x88,0x88,0x78,0x4,0xfe,0x40,0x20,0x10,0x1c,0x8,0x0, ++0x44,0x34,0x14,0x4,0x85,0x5f,0x44,0x4,0x14,0x24,0xe5,0x26,0x24,0x20,0x21,0x22,0x0,0x4,0xfe,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x14,0x8, ++0x8,0x8,0x3f,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x8,0x18,0x20,0x20,0x20,0xf8,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x18,0x8, ++0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x17,0x10,0x11,0x13,0x14,0x8,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x8,0x6,0x2, ++0x1,0x1,0x3f,0x2,0x4,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x10,0xf8,0x80,0x60,0x24,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x50,0x20, ++0x10,0x10,0x10,0x17,0x50,0x5c,0x53,0x52,0x51,0x51,0x50,0x5c,0xe0,0x41,0x6,0x18,0x40,0x40,0x48,0xfc,0x40,0x40,0xf8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x4,0x7e,0x55,0x54,0x54,0x54,0x7f,0x54,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe, ++0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x54,0x55,0x55,0x55,0x55,0x7d,0x45,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x0,0x78,0x4f,0x49,0x48,0x78,0x48,0x49,0x4e,0x79,0x49,0x49,0x49,0x4a,0x8c,0x18,0x80,0x48,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x2,0x1,0x7f,0x8,0x4,0x2,0x1,0x6,0x18,0x20,0xc8,0x8,0x8,0x8,0x10,0x20,0x0,0x8,0xfc,0x20,0x40,0x80,0x0,0xc0,0x30,0x2e,0x24,0x20,0x20,0x20,0x20,0x20, ++0x20,0x10,0x10,0xff,0x22,0x21,0x3c,0x24,0x24,0x24,0x24,0x27,0x24,0x34,0x49,0x82,0x80,0x84,0xfe,0x0,0x88,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xfe,0x0,0x88,0x86,0x2, ++0x20,0x10,0x11,0xfd,0x5,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x0,0xc,0xf0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0x1c,0x2a,0x48,0x88,0x8,0x8,0x8,0x8,0x8,0x0,0xf8,0x88,0x88,0x90,0x90,0xa0,0x90,0x88,0x84,0x84,0xc4,0xa8,0x90,0x80,0x80, ++0x8,0xfc,0xb,0x48,0x48,0x49,0x4f,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x14,0x8,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x8,0x8,0x8,0x7e,0x8,0x8,0xfe,0x8,0x28,0x2e,0x28,0x28,0x28,0x58,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x80,0x84,0x84,0x7c,0x0,0x6,0xfc,0x0, ++0x1,0x21,0x21,0x21,0x3f,0x0,0x7f,0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x8,0x8,0x8,0xf8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x2,0x2,0xfe, ++0x8,0x8,0x10,0x1f,0x20,0x40,0x9f,0x0,0x1,0x6,0x8,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x8,0xfc,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x2,0x2,0xfe, ++0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xc9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x1,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x1f,0x18,0x28,0x28,0x48,0x8f,0x8,0x0,0x84,0xfe,0x4,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xa,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x9,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0xfe,0x0,0x80,0x60,0x1c,0x8, ++0x1,0x9,0xfd,0x11,0x11,0x21,0x27,0x79,0xa9,0x29,0x29,0x29,0x29,0x38,0x20,0x1,0x0,0x4,0x7e,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x64,0xa4,0x24,0x44,0x94,0x8, ++0x3e,0x22,0x22,0x22,0x3e,0x1,0x1,0xff,0x2,0xc,0x30,0xfe,0x22,0x22,0x22,0x3e,0xf8,0x88,0x88,0x88,0xf8,0x20,0x14,0xfe,0x80,0x60,0x18,0xfe,0x88,0x88,0x88,0xf8, ++0x10,0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0xf0,0x0,0xe0,0x20,0x20,0x20,0x20,0x20,0x22,0x12,0xa,0x4, ++0x1,0x41,0x31,0x12,0x4,0x1,0xf0,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0x4,0x4,0xfc,0x0,0x6,0xfc, ++0x2,0x1,0x7f,0x2,0x4,0x8,0x1f,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x30,0x0,0x0,0x8,0xfc,0x0,0x40,0x20,0xf0,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x2,0x42,0x33,0x14,0x87,0x68,0x27,0x0,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0xa,0xa,0x6, ++0x0,0x40,0x30,0x17,0x0,0x82,0x42,0x4a,0x12,0x21,0xe1,0x21,0x21,0x20,0x2f,0x20,0x80,0x40,0x48,0xfc,0x0,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x0, ++0x1,0x41,0x21,0x22,0x2,0x4,0xeb,0x20,0x20,0x20,0x20,0x21,0x2a,0x32,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x11,0x12,0xfc,0x10,0x17,0x1a,0x32,0xd2,0x13,0x12,0x12,0x12,0x53,0x22,0x80,0x80,0xfc,0x8,0x10,0xa4,0x1e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x9b,0x10,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x10,0x81,0x62,0x2c,0x3,0x10,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x3f,0x2,0x4,0x8,0x7f,0x49,0x89,0x1f,0x21,0x1,0x7f,0x1,0x1,0x1,0x0,0x10,0xf8,0x80,0x60,0x20,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x1f,0x30,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x11,0x1c,0x20,0x40,0xbc,0x13,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x10,0x1c,0x20,0x40,0xbd,0x12,0x10,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0xf0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x6,0xfc,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x2,0x4,0x8,0x30,0xcf,0x0,0x12,0x9,0x9,0x0,0x3f,0x40,0x48,0x7c,0xa0,0x10,0x80,0x40,0x30,0x4e,0xe4,0x0,0x10,0x10,0x20,0x40,0xf8, ++0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x38,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x42,0x21,0x2f,0x1,0x7,0xe1,0x21,0x3f,0x21,0x21,0x27,0x29,0x33,0x25,0x9,0x1,0x10,0x20,0xfc,0x20,0xf8,0x28,0x28,0xfe,0x28,0x28,0xf8,0x20,0x30,0x2e,0x24,0x20, ++0x10,0x14,0xfe,0x10,0x10,0x7d,0x46,0x7c,0x44,0x7c,0x10,0x14,0xfe,0x10,0x10,0x10,0x40,0x40,0x44,0x7e,0x80,0x0,0xf8,0x10,0x20,0x40,0x40,0x80,0x82,0x82,0x7e,0x0, ++0x1,0x7f,0x49,0x6b,0x5d,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x0,0x55,0x55,0x94,0x0,0x10,0x90,0x28,0x28,0x44,0x86,0x20,0x10,0x0,0x7c,0x4,0x4,0x8,0x8,0x90,0x0, ++0x10,0x10,0x10,0x3c,0x43,0x80,0x3c,0x10,0x13,0xfc,0x10,0x10,0x14,0x18,0x11,0x0,0x40,0x50,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x44,0x4c,0x30,0x20,0x52,0x8a,0x6, ++0x10,0x10,0x10,0x1c,0x23,0x40,0xbc,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x10,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x10,0xc,0x4,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x10,0x30,0x44,0xfe,0x0,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10, ++0x42,0x22,0x2f,0x82,0x62,0x2f,0x2,0x15,0x28,0xe7,0x24,0x24,0x27,0x24,0x24,0x27,0x10,0x10,0xbc,0x10,0x10,0xfe,0x10,0x28,0xc6,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x13,0x12,0x13,0x12,0x13,0x2a,0x47,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xf8,0x6,0xfc, ++0x40,0x30,0x10,0x0,0x87,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x23,0x2c,0x20,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0xfc,0x80,0x90,0xa0,0x40,0xc0,0x24,0x14,0xc, ++0x40,0x21,0x29,0x5,0x0,0xef,0x24,0x25,0x25,0x25,0x25,0x2d,0x35,0x25,0xa,0x11,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x0,0xfe, ++0x10,0xfe,0x20,0x28,0x7e,0x8,0xf,0xf9,0x4a,0x9,0x1,0x3f,0x1,0x1,0xff,0x0,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0, ++0x1,0x21,0x21,0x3f,0x22,0x22,0xff,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x21,0x0,0x8,0x8,0xf8,0x28,0x20,0x7c,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4, ++0x8,0x8,0x8,0x1f,0x10,0x21,0x41,0x81,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x0,0x0,0x0,0xfc,0x4,0x8,0x10,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x22,0x14,0xff,0x14,0x7f,0x15,0x15,0xff,0x15,0x15,0x7f,0x14,0x36,0x55,0x94,0x15,0x20,0x20,0xa0,0x3e,0x42,0x94,0x10,0xd0,0x10,0x10,0x28,0x28,0x48,0x4c,0x86,0x4, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x0,0x8,0x7c,0x48,0x49,0x4a,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x4a,0x4c,0x48,0x7b,0x48,0x48,0x48,0x48,0x4f,0x98,0x80,0x40,0xfe,0x2,0x4,0x10,0x8,0x4,0x0,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x8,0x10,0x60,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e, ++0x20,0x20,0x27,0x20,0xfa,0x21,0x2f,0x20,0x23,0x22,0x3a,0xe2,0x42,0x2,0x3,0x2,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x8,0xfc,0x8,0xe8,0xa8,0xe8,0x8,0xf8,0x8, ++0x8,0x7f,0x9,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x17,0x14,0x17,0x10,0x1f,0x28,0xfc,0x20,0x8,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0xd0,0x50,0xd0,0x10,0xf0, ++0x8,0xfd,0x9,0x9,0x9,0x79,0x48,0x43,0x42,0x7a,0xb,0xa,0x8,0x88,0x53,0x20,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0xfe,0x22,0x20,0x24,0xfe,0x2, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x50,0x20,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x13,0x10,0x11,0x10,0xff,0x10,0x30,0x38,0x57,0x51,0x97,0x11,0x1f,0x11,0x11,0x11,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e, ++0x20,0x27,0x39,0x41,0x41,0xff,0x21,0x23,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x44,0x82,0x0, ++0x10,0x9,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x45,0x42,0x10,0x10,0x94,0x1e,0x10,0x10,0xfc,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x4e,0x84, ++0x10,0x12,0x11,0x11,0x58,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x44,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x10,0x13,0x10,0x10,0xfc,0x17,0x31,0x39,0x56,0x55,0x99,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x9,0x7d,0x49,0x4b,0x4d,0x79,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x7a,0x42,0x4,0x40,0x28,0xfc,0x20,0x20,0xf8,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0xa8,0xa6,0x2, ++0x0,0x1f,0x2,0x2,0xff,0x4,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x8,0x10,0x0,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x50,0x4e,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x8,0xb,0x8,0x10,0x10,0x3f,0x51,0x91,0x12,0x15,0x19,0x11,0x11,0x12,0x14,0x10,0x38,0xc0,0x40,0x40,0x84,0xfe,0x20,0x10,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0xb,0xfc,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x44,0x45,0xfe,0x44,0x7c,0x11,0x7d,0x55,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x13,0x10,0x11,0x10,0xff,0x10,0x14,0x18,0x37,0xd1,0x17,0x11,0x1f,0x11,0x51,0x21,0xf8,0x40,0xf0,0x40,0xf8,0x42,0x7e,0x0,0xbc,0x10,0xbc,0x10,0xbe,0x10,0x52,0x8e, ++0x20,0x21,0xfe,0x28,0x11,0x2a,0xc6,0x0,0xfd,0x2a,0x28,0x29,0x28,0x28,0x47,0x80,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x54,0x88,0x2,0xfe,0x0, ++0x10,0x11,0x10,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x45,0x1,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8, ++0x8,0x9,0x8,0x10,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8, ++0x2,0x1,0x7f,0x44,0x88,0x10,0x3,0x7e,0x8,0x9,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x0,0xfe,0x42,0x34,0x10,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20, ++0x10,0x10,0x11,0x10,0x14,0x1e,0xf0,0x10,0x10,0x12,0x14,0x18,0x10,0x1,0x2,0xc,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10, ++0x4,0x4,0xff,0x4,0x14,0x12,0xff,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x40,0x44,0xfe,0x40,0x40,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x7c,0x44, ++0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0xf0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x80,0x80,0x10,0x8,0xfc,0x4, ++0x2,0x1,0x7f,0x44,0x88,0x10,0x0,0x11,0x14,0xfe,0x10,0x10,0x14,0x18,0x11,0x2,0x0,0x0,0xfe,0x42,0x34,0x10,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x10,0x10,0x10,0x1c,0x20,0x21,0x7e,0x90,0x10,0xfc,0x10,0x12,0x14,0x18,0x11,0x2,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0, ++0x8,0xb,0x8,0x13,0x10,0x33,0x50,0x97,0x14,0x19,0x11,0x10,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x2,0x1,0x7f,0x8,0x4,0x2,0xff,0x1,0x1,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x8,0xfc,0x20,0x40,0x84,0xfe,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0, ++0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0xe0,0x1e,0x24,0xf0,0x0,0x60,0x18,0x8,0x0, ++0x4,0x7e,0x8,0x3e,0x8,0x7e,0x1,0x2,0xc,0x32,0xc1,0xf,0x0,0x0,0x0,0x1,0x8,0xfc,0x20,0xf8,0x20,0xfc,0x0,0x80,0x60,0x1e,0x4,0xe0,0x20,0x40,0x80,0x0, ++0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xff,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8, ++0x8,0x8,0xff,0x8,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x20,0x20,0xfe,0x20,0x18,0xe0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x11,0x12,0xfd,0x10,0x12,0x1a,0x33,0xd0,0x17,0x14,0x14,0x15,0x54,0x24,0x40,0xa0,0x10,0x48,0xf6,0xa4,0x48,0xa8,0xf8,0x44,0xfe,0x84,0xa4,0xf4,0x4,0xc, ++0x1,0x2,0x6,0x8,0x3f,0xc4,0x13,0x14,0x1f,0x1,0x3f,0x22,0x24,0x2f,0x20,0x20,0x0,0x80,0x40,0x30,0xfe,0x44,0x90,0x50,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x18, ++0x1,0x7f,0x40,0x97,0x10,0x97,0x50,0x57,0x10,0x37,0x58,0x93,0x11,0x10,0x11,0x16,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf0,0x20,0xc0,0x20,0x1c, ++0x20,0x18,0x8,0x80,0x61,0x21,0x1,0x15,0x25,0x25,0xe9,0x29,0x21,0x21,0x20,0x20,0x0,0x80,0x40,0x60,0x20,0x20,0x0,0x8,0x4,0x6,0x2,0x8,0x8,0x8,0xf8,0x0, ++0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x10,0x11,0x14,0xfe,0x20,0x28,0x4b,0x7c,0x8,0x9,0xe,0xf8,0x48,0x8,0xb,0x8,0x0,0xfc,0x8,0x10,0x38,0xcc,0x2,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0x0,0x3f,0x2,0xd,0x70,0x1f,0x2,0x2,0x7f,0x0,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x70,0xd0,0x10,0x52,0xea,0x6, ++0x10,0x13,0x10,0x28,0x29,0x69,0xaf,0x29,0x29,0x29,0x2b,0x2d,0x28,0x20,0x20,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x4c,0x86,0x2, ++0x8,0x77,0x44,0x54,0x54,0x57,0x54,0x54,0x54,0x57,0x74,0x55,0x14,0x25,0x46,0x80,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x34,0xa8,0xa0,0x20,0x20, ++0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x8,0x13,0x22,0xe3,0x22,0x23,0x22,0x22,0x22,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x24,0xff,0x24,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x20,0x24,0x3e,0x44,0xa8,0x10,0x2e,0x44,0x70,0x80,0x0,0xf0,0x4,0xfe,0x0,0x0, ++0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x4a,0x7b,0x4a,0x2,0x2,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x10,0x1f,0x10,0x2f,0x40,0xbf,0x4,0x3f,0x4,0x3f,0x4,0x7f,0x0,0x9,0x6,0x2,0x8,0xfc,0x0,0xf8,0x10,0xf8,0x10,0x90,0x10,0x90,0x10,0xd0,0x90,0x12,0xa,0x6, ++0x10,0x17,0x10,0x13,0x58,0x57,0x50,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x12,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x4f,0x40,0x40,0x53,0x7a,0x42,0x42,0x42,0x4a,0x52,0x62,0x40,0x1,0x2,0xc,0x4,0xfe,0x40,0x88,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x88,0xa0,0x18,0xc,0x4, ++0x0,0x47,0x20,0x23,0x0,0xef,0x20,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x1,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4, ++0x0,0x10,0xf8,0x27,0x20,0x23,0xfa,0x22,0x22,0x23,0x20,0x39,0xe3,0x44,0x1,0x0,0x80,0x40,0x4,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x2,0x1,0x7f,0x40,0x84,0xc,0x12,0x2,0x3f,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x0,0x0,0xfe,0x2,0x44,0x30,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x88,0x50,0x20, ++0x8,0x1c,0xf0,0x10,0x11,0xfd,0x11,0x32,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x18,0x40,0x40,0x40,0x40,0x44,0x4c,0x50,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0, ++0x0,0x0,0x1,0xe,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0xff,0x0,0x20,0x70,0x80,0x0,0x0,0x0,0x10,0xf8,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x2,0x6,0x38,0x20,0x20,0x21,0x3f,0x22,0x22,0x22,0x22,0x22,0x3f,0xe0,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40, ++0x0,0x8,0xfc,0x13,0x10,0x12,0x7d,0x11,0x10,0x10,0x11,0x1e,0xe4,0x0,0x1,0x0,0x40,0x50,0x48,0xfe,0x40,0x44,0x4c,0x50,0x60,0xd0,0x50,0x4e,0x44,0x40,0x40,0x80, ++0x1,0x1,0x1,0x7f,0x1,0x21,0x19,0x9,0x3,0x5,0x9,0x11,0x61,0x1,0x5,0x2,0x0,0x40,0x28,0xfc,0x0,0x8,0x18,0xa0,0x40,0x40,0x30,0xe,0x4,0x0,0x0,0x0, ++0x0,0x7f,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x84,0x84,0x44,0x24,0x3c,0x14,0x4,0xfc,0x4, ++0x10,0xc,0x4,0xff,0x4,0x4,0x3f,0x24,0x24,0x38,0x20,0x2f,0x20,0x20,0x3f,0x20,0x10,0x30,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0xe8,0x8,0x8,0xf8,0x8, ++0x40,0x37,0x14,0x4,0x84,0x44,0x54,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x4,0x44,0x44,0x44,0x44,0xa4,0xa4,0xa4,0x94,0x1c,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x8,0x7e,0x9,0x8,0xff,0x8,0x28,0x2e,0x28,0x28,0x29,0x58,0x88,0x7,0x40,0x40,0x78,0x88,0x10,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x0,0x6,0xfc, ++0x0,0x3f,0x20,0x28,0x24,0x22,0x21,0x20,0x21,0x22,0x24,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x0,0x8,0x18,0x20,0x40,0x80,0x40,0x30,0x18,0x8,0x0,0x4,0xfe,0x0, ++0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x4,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x7f,0x44,0x44,0x44,0x44,0x7f,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x8,0x11,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0xfd,0x15,0x25,0x45,0x85,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x28,0x28,0x28,0x2f,0x20,0x30,0x50,0x50,0x9f,0x10,0x4,0xfe,0x4,0x4,0xfc,0x80,0x88,0x88,0x88,0xf8,0x80,0x84,0x84,0x84,0xfc,0x4, ++0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x45,0x15,0x8,0x4,0xfe,0x0,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0xfe,0x0, ++0x23,0x12,0x43,0x22,0xa,0x13,0x62,0x23,0x20,0x0,0xff,0x5,0x9,0x11,0x61,0x1,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x40,0x20,0x1c,0x8,0x0, ++0x1,0xff,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0xe2,0x42,0x3,0x2,0x0,0x80,0x0,0xfc,0x4,0x84,0x88,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4,0x0, ++0x0,0x7f,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x1,0xff,0x4,0xc,0x2,0x1,0xe,0x0,0x0,0xfc,0x44,0x48,0x28,0x10,0x2e,0x44,0x0,0xfe,0x20,0x20,0x40,0x80,0x70, ++0x10,0x13,0x10,0x5d,0x51,0x51,0xfd,0x0,0x55,0x55,0x55,0x6d,0x45,0x7d,0x45,0x1,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x20,0xfc,0x24,0x24,0x54,0x74,0x4,0x14,0x8, ++0x10,0x17,0x12,0x7e,0x13,0x12,0xfe,0x13,0x52,0x5e,0x52,0x57,0x70,0x50,0x8f,0x0,0x40,0xe0,0x40,0x7c,0xc4,0x54,0x54,0xd4,0x48,0x54,0x52,0xe2,0x40,0x46,0xfc,0x0, ++0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0x10,0xf8,0x8, ++0x0,0x7f,0x49,0x45,0x5f,0x42,0x7f,0x44,0x4f,0x74,0x45,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x24,0x44,0xf4,0x4,0xfc,0x44,0xe4,0x5c,0x84,0x24,0xe4,0x4,0xfc,0x4, ++0x22,0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x3f,0x20,0x4,0xfe,0x90,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x10,0x28,0x46,0x82, ++0x10,0x10,0x13,0x10,0xfe,0x12,0x31,0x39,0x55,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x0,0x0,0xf8,0x8,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4,0x0, ++0x4,0xfe,0x2b,0x28,0xfe,0xaa,0xaa,0xab,0xc6,0x82,0xfe,0x82,0x82,0xfe,0x83,0x0,0x88,0x88,0xfe,0x88,0x20,0x50,0x8e,0x4,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x0, ++0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x7d,0x5,0x9,0x11,0x21,0xc5,0x2,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0x8c,0x50,0x20,0x10,0xe,0x4,0x0, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x1,0xf,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x0,0x40,0xe0,0x0,0x0,0x8,0xfc,0x0, ++0x0,0x0,0x1f,0x10,0x90,0x51,0x52,0x1d,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0xa0,0x10,0xe,0xf4,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x9,0x1f,0x21,0xcf,0x1,0x3f,0x1,0x5,0x2,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0xe0,0x10,0xe,0xe4,0x0,0xf8,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4,0x0, ++0x1,0x9,0x5,0x7f,0x2,0xff,0x4,0x8,0x1f,0x22,0xc2,0x4,0x4,0x8,0x10,0x20,0x0,0x20,0x48,0xfc,0x0,0xfe,0x40,0x20,0xf0,0x2e,0x24,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x0,0x7e,0x2,0x23,0x22,0x14,0x14,0x8,0x14,0x14,0x22,0x42,0x81,0x2,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10, ++0x20,0x20,0x24,0x3e,0x51,0x90,0x14,0xfe,0x13,0x54,0x54,0x54,0x54,0x7d,0x46,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x10,0x10,0x12,0x56,0x59,0x50,0x90,0x10,0x17,0x28,0x28,0x24,0x44,0x41,0x82,0x4,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x0,0x1f,0x12,0x9f,0x52,0x52,0x12,0x15,0x38,0x57,0xd4,0x15,0x24,0x24,0x45,0x4,0x84,0xfe,0x0,0xbc,0xa4,0xa4,0xa4,0xbc,0x44,0xfe,0x44,0xb4,0x44,0xa4,0x14,0x8, ++0x8,0x8,0xa,0x7f,0x8,0x8,0x9,0xff,0x8,0x10,0x10,0x24,0x22,0x7f,0x1,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x64,0x54,0x48,0x40,0x40,0x40, ++0x24,0x24,0x24,0x7e,0x24,0x24,0xff,0x0,0x7e,0x42,0x42,0x7e,0x43,0x42,0x7e,0x42,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x14,0xfc,0x4,0x14,0x8, ++0x10,0x10,0x13,0x12,0xfc,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xfe,0xa2,0xa4,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x0,0x4,0xfe,0x10,0x11,0x23,0x25,0x7d,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x1,0x9,0xd,0x11,0x21,0x3,0xc,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x20,0x18,0x4c,0x84,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x0, ++0x20,0x11,0x10,0x0,0xfb,0x8,0x10,0x35,0x58,0x95,0x11,0x12,0x14,0x10,0x10,0x10,0x4,0xfe,0x84,0x84,0xfe,0x84,0x84,0xfc,0x80,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x2,0x7f,0x22,0x22,0xff,0x22,0x22,0x7e,0x20,0x42,0xbf,0x22,0x22,0x22,0x3e,0x22,0x82,0x44,0x28,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10, ++0x10,0x10,0x10,0x1e,0x22,0x33,0x4a,0xa4,0x14,0x8,0x11,0x22,0x40,0x24,0x24,0x40,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x50,0x50,0x88,0xe,0x4,0x0,0x48,0x46,0x2, ++0x11,0x11,0x11,0x15,0x5a,0x53,0x54,0x9a,0x11,0x12,0x20,0x28,0x44,0x42,0x82,0x4,0x10,0x18,0xd4,0x50,0x7e,0x50,0x90,0x90,0x28,0x28,0x46,0x84,0x0,0xa8,0xa4,0x4, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x28,0x10, ++0x20,0x10,0x43,0x20,0x8,0x51,0x22,0x25,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x80,0x90,0xf8,0x90,0x90,0x12,0x12,0xe,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x10,0xfe,0x0,0xee,0xaa,0xee,0x28,0xfe,0x28,0x7c,0x28,0xfe,0x24,0x68,0xa5,0x32,0x8,0x1c,0xe0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xaa,0x38,0x0, ++0x20,0x27,0x20,0x23,0xfa,0x23,0x21,0x27,0x21,0x23,0x39,0xef,0x41,0x3,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84, ++0x10,0x17,0x10,0x13,0xfe,0x13,0x11,0x1f,0x31,0xd3,0x11,0x1f,0x11,0x13,0x55,0x21,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84, ++0x0,0xf,0x70,0x53,0x52,0x53,0x51,0x57,0x51,0x53,0x51,0x5f,0x71,0x43,0xd,0x1,0x44,0xfe,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0xe,0x84, ++0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x18,0x17,0x0,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x20,0x20,0x38,0x4f,0x50,0x80,0x20,0x27,0x20,0x27,0x21,0x29,0x31,0x22,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x14,0x18,0x30,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x20,0x20,0x47,0xf8,0x10,0x20,0x47,0xf8,0x7,0x1,0x19,0xe1,0x42,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e, ++0x8,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x18,0x28,0xcf,0x2,0x29,0x28,0x48,0x7,0x20,0x28,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x0,0x88,0x84,0x14,0xf0, ++0x8,0x8,0x8,0x7f,0x8,0xa,0x1c,0x68,0x8,0x8,0x29,0x12,0x0,0x48,0x44,0x84,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0xa,0x4,0x0,0x88,0x46,0x42, ++0x0,0x0,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x10,0x78,0x80,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x10,0xf8,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x0,0x7f,0x2,0x12,0x12,0x22,0x4,0x18,0x60,0x0,0x4,0x13,0x51,0x50,0x8f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x14,0x12,0xf2,0x0, ++0x10,0x10,0x15,0xfe,0x10,0x10,0x7c,0x10,0x11,0xfe,0x12,0x12,0x1a,0x14,0x10,0x13,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x94,0x8, ++0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x18,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0, ++0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x10,0x10,0x8,0x8,0x6,0x4, ++0x0,0x7f,0x1,0x1,0x1,0x9,0x9,0x11,0x21,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x85,0x0,0x8,0x3c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x0, ++0x10,0x10,0x23,0x20,0x44,0xf9,0x11,0x22,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x30,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x0,0x8,0xfc,0x88,0x88,0x90,0x94,0xbe,0x84,0x84,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x1f,0x21,0x21,0x61,0xa1,0x21,0x21,0x21,0x22,0x22,0x22,0x24,0x28,0x30,0x0,0x8,0xfc,0x8,0x8,0x8,0x10,0x14,0x3e,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0, ++0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x8,0x7e,0x8,0x8,0x10,0x11,0x22,0x4c,0x0,0x80,0xa0,0x94,0xfe,0x80,0x80,0x88,0x88,0x90,0x60,0x40,0xc0,0x20,0x12,0xa,0x6, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xe0,0x20,0xe0,0x28,0x3c,0xe0,0x20,0x20,0x20, ++0x8,0x8,0xff,0x8,0x1,0x7f,0x40,0x89,0x12,0x4,0x1f,0x28,0xc8,0x8,0xf,0x8,0x20,0x24,0xfe,0x20,0x0,0xfe,0x2,0x24,0x90,0x40,0xf0,0x2e,0x24,0x20,0xe0,0x20, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x0,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x2,0x7f,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7f,0x63,0x55,0x7f,0x49,0x49,0x49,0x43,0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x54,0x10,0x10,0x14,0xfe,0x2, ++0x10,0x10,0x17,0x14,0x59,0x52,0x54,0x91,0x12,0x14,0x1b,0x12,0x2a,0x26,0x43,0x82,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x40,0x30,0x17,0x4,0x89,0x62,0x24,0x1,0x12,0x24,0xeb,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x14,0x48,0xa4,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x1,0x7f,0x40,0x84,0x9,0x12,0x4,0x8,0x10,0x2f,0xc8,0x8,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x44,0x30,0x90,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0xe0,0x20, ++0x10,0x10,0x20,0x27,0x44,0xf9,0x11,0x21,0x47,0xf9,0x1,0x1,0x1a,0xe2,0x45,0x0,0x20,0x30,0x28,0xfe,0x20,0x24,0x24,0x28,0xe8,0x28,0x30,0x20,0x50,0x92,0xa,0x6, ++0x0,0x0,0x7f,0x40,0x80,0xf,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x44,0xe0,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0x44,0x3c,0x0, ++0x10,0x13,0x10,0x10,0xfb,0x10,0x11,0x1a,0x30,0xd7,0x10,0x11,0x11,0x12,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xa8,0x20,0x60,0x44,0xfe,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x0,0x1f,0x2,0x1,0x7f,0x2,0x4,0x19,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0xe0,0x40,0x80,0xfc,0x88,0x90,0x80,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x1,0x1,0x1,0x7f,0x41,0x41,0x42,0x44,0x49,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x84,0x64,0x24,0x4,0x14,0x8, ++0x4,0x4,0xff,0x4,0x14,0x10,0xfe,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x62,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0, ++0x20,0x23,0x20,0x27,0xfd,0xac,0xa9,0xa8,0xaf,0xf8,0xa3,0x22,0x2a,0xfa,0x4a,0x2,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x88,0xfc,0xa8,0xa8,0xa8,0xa8,0x18, ++0x10,0x13,0x10,0x27,0x25,0x68,0xa1,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x24,0x24,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc, ++0x0,0xfb,0x8,0x17,0x25,0x28,0x21,0x28,0x37,0xe0,0x27,0x24,0x24,0x24,0xa4,0x44,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x44,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc, ++0x10,0x10,0x10,0x10,0xfe,0x22,0x22,0x22,0x22,0x42,0x24,0x14,0x8,0x14,0x22,0x40,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0, ++0x0,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x28,0x4a,0x8c,0x0,0xff,0x4,0x2,0x0,0x0,0x10,0xf8,0x0,0xf0,0x0,0xfc,0x10,0xa0,0x60,0x1c,0x20,0xfe,0x20,0x20,0xa0,0x40, ++0x2,0xf,0x70,0x29,0x2a,0x7f,0x2,0xc,0x8,0xb,0xc,0x38,0xc8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0, ++0x20,0x18,0x8,0x80,0x60,0x2f,0x1,0x9,0x12,0x24,0xe2,0x21,0x20,0x21,0x22,0x2c,0x80,0x80,0x80,0x80,0x84,0xfe,0x8,0x8,0x8,0x10,0x10,0x20,0xc0,0x20,0x18,0x8, ++0x4,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4, ++0x20,0x13,0x12,0x3,0xfe,0xb,0x12,0x36,0x5a,0x94,0x10,0x17,0x11,0x10,0x10,0x10,0x8,0xfc,0x0,0xfc,0x0,0xfe,0xc4,0xa8,0x90,0xce,0x8,0xfe,0x8,0x88,0x28,0x10, ++0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x40,0x40,0x40,0x7c,0x84,0x8,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x0,0x7d,0x44,0x48,0x48,0x53,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x8,0x8,0xff,0x8,0x2,0x29,0x29,0x48,0x7,0x10,0x8,0x20,0x66,0xa5,0x3c,0x0,0x20,0x24,0xfe,0x20,0x0,0x8,0x24,0x24,0xe0,0x20,0x10,0x40,0xcc,0x4a,0x78,0x0, ++0x0,0x14,0xfc,0x24,0x24,0x27,0x20,0xff,0x20,0x27,0x24,0x24,0x3c,0xe4,0x44,0x4,0x40,0x44,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc, ++0x11,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x4,0x88,0x50,0x4,0xfe,0x4,0x4,0x4,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x20,0x1b,0x8,0x40,0x5f,0x41,0x41,0x41,0x4f,0x41,0x41,0x41,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x4,0x43,0x31,0x14,0x85,0x44,0x44,0x14,0x15,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x4,0x7e,0x4,0x24,0xf4,0x44,0x44,0x44,0xf4,0x44,0x44,0x44,0xf4,0x4,0x14,0x8, ++0x8,0x8,0x7f,0x8,0xa,0x2,0xff,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0xf,0x8,0x20,0x28,0xfc,0x20,0x20,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x7e,0x2,0x2,0x7e,0x40,0x40,0x7e,0x22,0x12,0x6,0x1a,0x62,0x22,0x2,0x4,0x4,0xfe,0x4,0x4,0xfc,0x80,0x84,0xfe,0x44,0x24,0xc,0x34,0xc4,0x44,0x14,0x8, ++0x22,0x22,0x27,0x22,0xfa,0x2f,0x20,0x2f,0x34,0xe7,0x24,0x27,0x24,0x24,0xa5,0x44,0x90,0x90,0xd4,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xd4,0x48,0xc8,0x54,0x54,0x62,0x80, ++0x0,0x40,0x3f,0x10,0x0,0x87,0x44,0x4c,0x14,0x24,0xe5,0x26,0x24,0x24,0x27,0x24,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0x1c,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x4,0xff,0x4,0x7c,0x45,0x48,0x50,0x49,0x45,0x45,0x65,0x59,0x41,0x42,0x44,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x49,0x78,0x48,0x4a,0x4a,0x4c,0x48,0x98,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78, ++0x20,0x21,0x7d,0x89,0x11,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7e,0x2,0x1c,0xe0,0x40,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x0,0x40,0xa4,0xa2,0x8a,0x88,0x78, ++0x2,0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x5,0x19,0x67,0x81,0x1,0x7f,0x0,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x40,0x30,0xce,0x4,0x10,0xf8,0x0, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0x7f,0x8,0x1f,0x28,0xc9,0x9,0x1,0x6,0x18,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x40,0xfc,0x20,0xf0,0x2e,0x24,0x20,0x0,0xc0,0x30, ++0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x2,0x4,0x8,0x3f,0x2,0x2,0xff,0x4,0xf,0x10,0x20,0xcf,0x0,0x0,0x3f,0x0,0x0,0x40,0x20,0xf0,0x10,0x4,0xfe,0x40,0xe0,0x10,0x4e,0xe4,0x0,0x10,0xf8,0x0, ++0x1,0x1,0x2,0x4,0x9,0x11,0x21,0xd1,0xd,0x5,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x14,0x30,0x44,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x24,0x24,0x7e,0x24,0x24,0xff,0x2,0x7f,0x42,0x7e,0x42,0x7e,0x42,0x42,0x4a,0x45,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x1f,0x8,0x4,0x3,0x4,0x8,0x7f,0x24,0x18,0x66,0x1,0xff,0x5,0x19,0x61,0x1,0xf0,0x20,0x40,0x80,0x40,0x20,0xfc,0x48,0x30,0xcc,0x0,0xfe,0x40,0x30,0xc,0x0, ++0x3,0x11,0xf8,0x91,0x92,0x97,0x94,0x93,0x94,0x90,0x9f,0x90,0xf1,0x92,0xc,0x0,0xf8,0x10,0xe0,0x10,0x8,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x1,0x1,0x3f,0x1,0x11,0xd,0x5,0xff,0x10,0x12,0x11,0x10,0x10,0x14,0x18,0x10,0x0,0x10,0xf8,0x0,0x10,0x30,0x44,0xfe,0x10,0x20,0x40,0x80,0x40,0x30,0xe,0x4, ++0x10,0x17,0x10,0x11,0xfc,0x11,0x16,0x18,0x33,0xd2,0x12,0x13,0x12,0x10,0x57,0x20,0x0,0xfc,0x48,0x10,0xe0,0x10,0x4e,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4, ++0x8,0xff,0x9,0x48,0x48,0x48,0x4b,0x48,0x7d,0x5,0x1d,0xe5,0x45,0x4,0x15,0x8,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x28,0xfc,0x4, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x14,0x19,0x30,0xd0,0x10,0x10,0x10,0x13,0x50,0x20,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x3,0xa0,0x2c,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x7e,0x8,0x8,0x3e,0x8,0x8,0x7e,0x2,0x1,0x11,0x50,0x51,0x96,0x18,0x6f,0x8,0xfc,0x20,0x20,0xf8,0x20,0x28,0xfc,0x0,0x20,0x40,0x84,0x2,0xa,0x8,0xf8, ++0x4,0x4,0x7,0x8,0x8,0x1f,0x28,0x48,0x8,0xf,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0, ++0x20,0x1b,0x8,0x81,0x62,0x20,0x9,0x12,0x24,0xe2,0x22,0x22,0x22,0x22,0x2f,0x20,0x4,0xfe,0x44,0x44,0x44,0x84,0x14,0x8,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x0, ++0x1,0x1,0x3f,0x3,0x5,0x19,0x61,0x9,0x8,0x7e,0x8,0x1c,0x2a,0xc9,0x8,0x8,0x0,0x8,0xfc,0x80,0x60,0x1c,0x8,0x20,0x28,0xfc,0x20,0x70,0xae,0x24,0x20,0x20, ++0x12,0x11,0x17,0x24,0x25,0x64,0xa7,0x20,0x23,0x22,0x22,0x23,0x22,0x22,0x23,0x22,0x8,0x14,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0xff,0x8,0x20,0x10,0x81,0x49,0x12,0x24,0xe0,0x20,0x20,0x20,0x23,0x2c,0x20,0x24,0xfe,0x20,0x40,0x40,0x48,0x46,0x42,0x48,0x50,0x20,0x40,0x80,0x0,0x0, ++0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x3d,0x64,0xa4,0x24,0x24,0x24,0x3c,0x23,0xc,0x20,0x20,0x20,0x20,0xa8,0xa6,0xa2,0x20,0x24,0x28,0x10,0x20,0x40,0x80,0x0,0x0, ++0x10,0x8,0x6,0x1,0x2,0xc,0x31,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x5,0x2,0x10,0x30,0xc0,0x0,0xc0,0x30,0x8,0x0,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0,0x0, ++0x20,0x11,0xa,0x4,0xa,0x11,0x64,0x4,0xff,0x4,0x15,0x14,0x24,0x44,0x14,0x8,0x84,0x84,0x24,0x24,0x24,0xa4,0xa4,0x24,0xe4,0x24,0x24,0x84,0x84,0x4,0x14,0x8, ++0x0,0x20,0x18,0x8,0x81,0x61,0x22,0xa,0x14,0x20,0xe0,0x20,0x20,0x20,0x23,0x2c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0, ++0x10,0x10,0x20,0x20,0x49,0xf9,0x12,0x22,0x44,0xf8,0x0,0x0,0x18,0xe0,0x43,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x20,0x40,0x80,0x0,0x0, ++0x10,0x11,0x17,0x25,0x24,0x65,0xa7,0x22,0x25,0x29,0x23,0x24,0x28,0x20,0x23,0x2c,0x80,0x4,0xfe,0x14,0xe4,0x14,0xfc,0x8,0x6,0xfa,0x8,0x90,0x60,0x90,0xe,0x4, ++0x0,0x8,0x7c,0x49,0x4b,0x4c,0x48,0x4f,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x40,0xa0,0x10,0xfe,0x44,0x40,0xfc,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x1e,0x24,0x48,0xff,0x1,0x1,0x7f,0x1,0x1,0x7f,0x0,0x44,0x42,0x80,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84,0x0,0x88,0x46,0x2, ++0x12,0x1f,0x28,0x45,0x8,0x4b,0x48,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x48,0x7c,0xa0,0x10,0x4,0xfe,0x20,0xfc,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x0,0x7,0x78,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4b,0x7a,0x4a,0x3,0x2,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x17,0xfc,0x24,0x24,0x24,0xfc,0x2f,0x24,0x24,0x3c,0xe4,0x44,0x5,0x8,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x44,0x8c, ++0x8,0x8,0xff,0x8,0x9,0x1,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x2a,0x48,0x88,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80, ++0x1,0x1,0x1,0x1,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0xff,0x4a,0x4a,0x4a,0x4a,0x4a,0x5a,0x42,0x84,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0xc8, ++0x10,0x10,0x13,0x16,0x5a,0x53,0x52,0x92,0x13,0x12,0x13,0x2a,0x25,0x44,0x89,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x44,0xfe,0x44,0x54,0xcc,0x54,0x44,0x54,0x88, ++0x10,0x8,0x8,0xfe,0x2,0x4,0x8,0xa,0x1c,0x2a,0x48,0x8,0x8,0x8,0x8,0x9,0x4,0x8,0x10,0x20,0xc0,0x4,0x8,0x10,0x20,0xc0,0x2,0x4,0x8,0x10,0x60,0x80, ++0x20,0x1b,0x8,0x40,0x41,0x41,0x41,0x41,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x84,0x44,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x78,0x48,0x57,0x50,0x62,0x51,0x48,0x4f,0x48,0x68,0x50,0x41,0x42,0x44,0x48,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x10,0x17,0x10,0x13,0xfe,0x12,0x16,0x1b,0x30,0xd1,0x11,0x11,0x11,0x11,0x50,0x27,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe, ++0x0,0x7c,0x45,0x57,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x2a,0x44,0x88,0x80,0xfc,0x8,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x44,0x7c, ++0x2,0x79,0x4f,0x48,0x4b,0x78,0x4f,0x4a,0x49,0x7f,0x48,0x4b,0x4a,0x4a,0x4b,0x9a,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8, ++0x8,0x4,0x7f,0x1,0x3f,0x1,0x7f,0x9,0x5,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfc,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x0,0x40,0x30,0x10,0x84,0x64,0x24,0xc,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x21,0x29,0x25,0x29,0x51,0x85,0x2,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x7e,0x4,0x24,0x14,0x24,0x44,0x14,0x8, ++0x12,0x11,0x27,0x20,0x4b,0xf8,0x17,0x22,0x41,0xff,0x40,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x48,0x50,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x17,0x11,0xfc,0x13,0x12,0x12,0x13,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x24,0xfe,0x8,0x94,0xfe,0x4,0x94,0xc,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x97,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x50,0x20, ++0x2,0x1,0xff,0x8,0x4,0x3f,0x20,0x24,0x28,0x37,0x24,0x24,0x24,0x27,0x20,0x20,0x0,0x4,0xfe,0x20,0x48,0xfc,0x8,0x48,0x28,0xd8,0x48,0x48,0x48,0xc8,0x28,0x10, ++0x1,0x11,0x9,0x7f,0x40,0x8f,0x8,0xf,0x0,0x1f,0x10,0x11,0x11,0x2,0xc,0x30,0x0,0x10,0x20,0xfe,0x2,0xe4,0x20,0xe0,0x10,0xf8,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x1,0x21,0x19,0x9,0x1,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x0,0x8,0x18,0x20,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x14,0x8, ++0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0xf,0x1,0x7f,0x5,0xc,0x14,0x25,0x46,0x4,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0xe0,0x8,0xfc,0x10,0xa0,0x40,0x20,0x1c,0x8, ++0x10,0x11,0x10,0x10,0xfc,0x11,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x10,0x11,0x10,0x10,0xfc,0x11,0x15,0x19,0x11,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x8,0x1d,0xf0,0x10,0x10,0xfd,0x11,0x39,0x35,0x51,0x51,0x91,0x11,0x11,0x11,0x11,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x10,0x10,0x10,0x14,0x5f,0x50,0x50,0x90,0x17,0x10,0x17,0x29,0x25,0x45,0x82,0xc,0x80,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x8,0xfc,0x20,0x20,0x22,0x22,0x1e, ++0x4,0x4,0xff,0x4,0x10,0x1f,0x10,0x20,0x24,0x43,0x81,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x50,0x20, ++0x10,0x10,0x10,0x3f,0x20,0x40,0x80,0x4,0x2,0x3,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x4,0xfe,0x24,0x24,0x24,0x44,0x54,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x1,0x1,0x1,0x9,0x9,0x11,0x11,0x21,0x41,0x1,0x1,0x0,0x1,0x2,0xc,0x70,0x0,0x0,0x0,0x20,0x10,0xc,0x4,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x0,0x9,0x7c,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x2,0xff,0x22,0x22,0x22,0x42,0x4a,0x84,0x2,0x7f,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0xfc,0x84,0x84,0x88,0x88,0x90,0x88,0x84,0x82,0xc2,0xa2,0x94,0x88,0x80,0x80, ++0x10,0x13,0x20,0x20,0x44,0xf9,0x11,0x22,0x44,0xfc,0x1,0x1,0x1d,0xe1,0x41,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x4,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x2,0xff,0x4,0xa,0x32,0xcf,0x2,0x7f,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0x0,0x8,0xfc,0x40,0x20,0x5e,0xe4,0x80,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x4,0x7e,0x44,0x54,0x55,0x56,0x54,0x54,0x57,0x54,0x54,0x10,0x29,0x26,0x44,0x80,0x20,0x20,0x50,0x88,0x6,0xf8,0x0,0x4,0xfe,0x20,0x20,0xa8,0xa6,0x22,0xa0,0x40, ++0x10,0x10,0x10,0x11,0x7d,0x56,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x0,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x1,0x2,0x4,0x8,0x37,0xc1,0x1,0x3f,0x1,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x80,0x40,0x30,0xce,0x4,0x10,0xf8,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x8,0x8,0xa,0x7f,0x8,0xa,0xff,0x14,0x14,0x56,0x55,0x94,0x14,0x24,0x44,0x8c,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84, ++0x10,0x13,0x11,0x11,0xfd,0x11,0x15,0x1b,0x30,0xd7,0x14,0x12,0x11,0x12,0x54,0x28,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4, ++0x8,0x12,0x3f,0x22,0x22,0x3f,0x22,0x3e,0x22,0x22,0xfe,0xa,0x12,0x22,0xca,0x4,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10, ++0x10,0x13,0x11,0x59,0x55,0x51,0x91,0x17,0x10,0x17,0x14,0x12,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbc,0xa4,0xa8,0x10,0xa8,0x46,0x4, ++0x0,0x40,0x32,0x12,0x82,0x62,0x2f,0x8,0x10,0x22,0xe2,0x24,0x20,0x20,0x23,0x2c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x48,0x50,0x20,0xc0,0x0,0x0, ++0x20,0x10,0x10,0x0,0xfc,0xb,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0, ++0x1,0x21,0x11,0x11,0x1,0x2,0xf4,0x13,0x11,0x11,0x10,0x10,0x14,0x18,0x13,0xc,0xf0,0x10,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x4,0xfe,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x3d,0x24,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0, ++0x0,0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x0,0x0,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x8,0x8,0x8,0x17,0x14,0x34,0x54,0x97,0x14,0x14,0x14,0x17,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40, ++0x1,0x2,0xf,0x8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x3,0x1c,0xe0,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf2,0x14,0x18,0xf0,0x50,0x90,0x10,0x10,0x50,0x20, ++0x0,0x47,0x34,0x18,0x81,0x62,0x20,0x8,0x17,0x20,0xe1,0x22,0x2c,0x20,0x20,0x20,0x0,0xfe,0x2,0xa4,0x10,0x48,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x12,0x2a,0x44,0x88,0x0,0x4,0xfe,0x0,0x8,0x7c,0x0,0x4,0xfe,0x54,0x58,0x50,0x48,0x48,0x56,0x64,0x40, ++0x10,0x10,0x20,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x20,0x10,0x10,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x0,0x40,0x30,0x17,0x84,0x68,0x20,0x9,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x80,0x80,0x80,0xfc,0x84,0x88,0xc0,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x2,0x1,0x7f,0x41,0x81,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0, ++0x10,0x10,0x13,0x12,0xfc,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x80,0x0,0x40,0x20,0xfe,0x22,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x8,0x8,0xff,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x10,0x12,0x14,0x10,0x1f,0x0,0x20,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0x0,0xf8,0x0, ++0x8,0x4b,0x49,0x48,0x48,0x48,0x49,0x4a,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0xf4,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x10,0x10,0x17,0x10,0x5b,0x56,0x53,0x92,0x13,0x12,0x13,0x12,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x40,0x31,0x12,0x7,0x80,0x6f,0x21,0xa,0x14,0x29,0xe2,0x20,0x23,0x20,0x21,0x26,0x80,0x20,0x10,0xf8,0x80,0xfc,0x20,0x50,0x8e,0x24,0x40,0x90,0x20,0x40,0x80,0x0, ++0x1,0x1,0xff,0x1,0x7f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x4,0xfe,0x0,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0, ++0x1,0x11,0x11,0x11,0x3f,0x21,0x41,0x41,0x81,0x3f,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x10,0x11,0x51,0x51,0x7d,0x91,0x11,0x11,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x40,0xfc,0x44,0x44,0x84,0x84,0x28,0x10, ++0x8,0x28,0x29,0x29,0x3f,0x4a,0x8c,0xa,0xd,0x38,0xc8,0x8,0x8,0xb,0x8,0x8,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x1,0x7,0x7c,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x20,0xa0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x13,0x22,0x22,0x4b,0xf8,0x17,0x24,0x44,0xff,0x44,0x4,0x1f,0xe4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e, ++0x1,0x9,0x9,0x11,0x11,0x20,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf,0x8,0x0,0x20,0x10,0xc,0x24,0xc0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x0,0x3f,0x20,0x20,0x3e,0x22,0x22,0x4a,0x44,0x80,0x1f,0x12,0x12,0xff,0x0,0xa0,0x90,0xfc,0x80,0x88,0x88,0x50,0x50,0x22,0xd2,0xe,0xf0,0x90,0x94,0xfe,0x0, ++0x3,0x3c,0x4,0xff,0x4,0x15,0x75,0x15,0x75,0xc,0x16,0x25,0x44,0x4,0x4,0x4,0x84,0x4,0x84,0xd4,0x14,0x14,0xd4,0x14,0xd4,0x14,0x14,0x94,0x84,0x4,0x14,0x8, ++0x8,0x7c,0x49,0x49,0x49,0x79,0x4a,0x4c,0x48,0x79,0x48,0x48,0x48,0x48,0x4b,0x98,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x3f,0x10,0xc,0x2,0x1,0x2,0xc,0x31,0xc1,0x1f,0x1,0x1,0x1,0xff,0x0,0x0,0xf8,0x10,0x60,0x80,0x0,0xc0,0x30,0xe,0x24,0xf0,0x0,0x0,0x4,0xfe,0x0, ++0x8,0xb,0x48,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x11,0x11,0x20,0x40,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x1,0x11,0x11,0x11,0x1f,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x1,0x89,0x51,0x25,0x55,0x95,0x15,0x15,0x35,0x55,0x95,0x15,0x11,0x12,0x54,0x20,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x10, ++0x20,0x10,0x14,0xfe,0x21,0x22,0x3d,0x25,0x25,0x27,0x25,0x25,0x25,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0, ++0x0,0x47,0x34,0x14,0x87,0x64,0x24,0xf,0x11,0x21,0xe9,0x25,0x23,0x21,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x20,0x24,0x28,0x30,0x24,0xfe,0x0, ++0x0,0x20,0x13,0x10,0x0,0x7,0xf0,0x10,0x17,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x10,0x90,0x10,0x10,0x50,0x20, ++0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x0,0x3,0x7c,0x4,0x3f,0x24,0x24,0x24,0x3f,0x4,0x4,0x7,0x7c,0x20,0x10,0xf8,0x90,0xd0,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x92,0xca,0x46,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x15,0x1c,0x30,0xd3,0x12,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x4,0x7e,0x44,0x47,0x44,0x44,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x48,0x28,0x10, ++0x8,0x8,0x8,0x10,0x10,0x30,0x5f,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x1,0x2,0x4,0xa,0x31,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x80,0x40,0x30,0xe,0xf4,0x10,0xf0,0x10,0xf8,0x10,0x20,0xc0,0x30,0x18,0x8, ++0x20,0x20,0x20,0x3d,0x25,0x49,0x41,0xa1,0x21,0x21,0x21,0x24,0x28,0x30,0x23,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3e,0xc2,0x0, ++0x2,0x1,0x7f,0x48,0x86,0x2,0x10,0xc,0x4,0xff,0x1,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x80,0x84,0xfe,0x0,0x40,0x20,0x10,0xc,0x4, ++0x20,0x13,0x12,0x2,0x2,0xf2,0x12,0x12,0x13,0x12,0x10,0x15,0x19,0x12,0x4,0x8,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x20,0x10,0x8,0x4,0x4, ++0x1,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x9,0x5,0x2,0x5,0x8,0x30,0xc0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x80,0x60,0x1e,0x4, ++0x10,0x10,0x10,0x1f,0x11,0x21,0x41,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x1c,0x8, ++0x10,0x10,0x1f,0x20,0x27,0x64,0xa4,0x24,0x27,0x24,0x22,0x21,0x20,0x21,0x26,0x28,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0x44,0xfc,0x44,0x40,0x80,0xc0,0x30,0xe,0x4, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x22,0x3f,0x20,0x21,0x22,0x44,0x48,0x90,0x0,0x4,0xfe,0x4,0x4,0xfc,0x84,0x90,0xa4,0xfe,0x80,0xc0,0xa0,0x90,0x8e,0x84,0x80, ++0x8,0xfc,0x8,0x49,0x49,0x49,0x49,0x49,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x15,0xa,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x20,0xa0,0x40,0x60,0x90,0xe,0x4, ++0x10,0x10,0x10,0x10,0xfc,0x25,0x27,0x24,0x24,0x49,0x29,0x11,0x29,0x45,0x85,0x1,0x40,0x40,0x40,0x80,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x3e,0x8,0x8,0x8,0x9,0xe,0x70,0x20,0x0,0x80,0xa0,0x90,0x84,0xfe,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x22,0x12,0xa,0x4, ++0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x1,0x1,0x9,0x19,0x21,0x41,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x20,0x18,0xc,0x4,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0, ++0x1,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x1f,0x0,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x8,0xfc,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x1,0x1,0xff,0x1,0x3f,0x21,0x3f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x5,0x2,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0, ++0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x1b,0x31,0xd1,0x11,0x11,0x11,0x17,0x52,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4, ++0x8,0x7e,0x8,0x1c,0x68,0xa,0x19,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x1f,0x8,0xf0,0x80,0xfc,0x90,0x90,0x14,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0xf0, ++0x2,0x42,0x22,0x2f,0x2,0x2,0xe3,0x26,0x2a,0x22,0x22,0x2b,0x24,0x50,0x8f,0x0,0x4,0x78,0x40,0xc0,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x6,0xfc,0x0, ++0x8,0x8,0x7d,0x8,0x1c,0xe9,0x8,0x29,0x12,0x2,0x7f,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0xfc,0x48,0x48,0x88,0xca,0x2a,0x6,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x0,0xff,0x1,0x9,0x9,0x9,0x15,0x23,0x40,0xe0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x0,0x0,0x6,0xfc, ++0x0,0x0,0x7b,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x48,0x4b,0x7a,0x4b,0x2,0x3,0x2,0x80,0x88,0xf0,0xa4,0xfe,0x80,0xf0,0x82,0x7e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x2,0x2,0x7b,0x4d,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x4a,0x7d,0x48,0x0,0xf,0x0,0x10,0x10,0xde,0x28,0x84,0x0,0xfc,0x40,0x48,0x48,0x48,0x54,0xe2,0x40,0xfe,0x0, ++0x0,0x47,0x30,0x10,0xf,0x0,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0, ++0x8,0x8,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20, ++0x4,0xf9,0x10,0x54,0x38,0x10,0xfe,0x13,0x30,0x39,0x54,0x50,0x93,0x10,0x10,0x10,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x20,0x20,0x20,0x3c,0x25,0x4a,0x41,0xa1,0x21,0x21,0x21,0x25,0x29,0x31,0x20,0x0,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x0,0x20,0x3f,0x21,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x24,0x28,0x30,0x60,0x0,0x20,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x40,0x40,0x22,0x12,0xa,0x6, ++0x2,0x1,0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0, ++0x10,0x10,0x10,0x13,0x58,0x54,0x57,0x90,0x10,0x17,0x10,0x12,0x11,0x11,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x50,0x20, ++0x2,0x1,0x7f,0x40,0x80,0x3f,0x4,0x8,0x1f,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0x20,0xf0,0x10,0x0,0xf0,0x0,0x8,0xfc,0x0, ++0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x32,0x5a,0x96,0x12,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa8,0xa0,0x22,0x22,0x1e,0x0, ++0x0,0x40,0x20,0x20,0xf,0x0,0xe0,0x27,0x21,0x21,0x21,0x21,0x29,0x37,0x22,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0xe0,0x20,0x10,0x10,0x10,0xd2,0x12,0xa,0x4, ++0x8,0x8,0x8,0x48,0x48,0x49,0x49,0x4a,0x48,0x58,0x68,0x48,0x8,0x8,0x9,0xe,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x0,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x4,0xff,0x1,0x2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x2,0x1,0x7f,0x40,0x80,0x0,0x0,0x7f,0x0,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x24,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x8,0x17,0x10,0x22,0x41,0x81,0x0,0x0,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20, ++0x10,0x13,0x10,0x11,0xfc,0x13,0x12,0x1c,0x31,0xd1,0x10,0x10,0x10,0x10,0x51,0x26,0xc,0xf0,0x0,0x24,0xa8,0xfe,0x2,0x4,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x9,0x8,0xf,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x3f,0x11,0x9,0x9,0x7f,0x40,0x80,0x1f,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0x78,0x80,0x10,0x10,0x20,0xfe,0x2,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8, ++0x1,0x0,0x3f,0x22,0xac,0x68,0x2e,0x28,0x2f,0x60,0xaf,0x22,0x21,0x40,0x83,0x1c,0x0,0x88,0xfc,0x80,0xb8,0x88,0xb8,0x88,0xf8,0x80,0xf0,0x20,0x40,0x80,0x60,0x1c, ++0x8,0x4,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x4,0x4,0xff,0x4,0x0,0xfd,0x8,0x10,0x51,0x5c,0x50,0x50,0x5e,0xf0,0x41,0x2,0x40,0x44,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xaa,0xaa,0x26,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x88,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x50,0x90,0x10,0x10,0x11,0x12,0x14,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20, ++0x0,0xa,0xfe,0x23,0x22,0x3c,0x48,0x4f,0x48,0xb0,0x11,0x22,0x44,0x88,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40,0x40,0x40, ++0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x10,0x10,0x10,0x10,0x51,0x20,0x0,0xf8,0x10,0xa0,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x20,0x20,0x28,0xfd,0x22,0x45,0x50,0x93,0xfa,0x13,0x3a,0xd3,0x12,0x12,0x12,0x12,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x44,0xcc, ++0x8,0xa,0xf,0x8,0x8,0xa,0xff,0x8,0x8,0x2c,0x2b,0x49,0x48,0x88,0x29,0x12,0x0,0x0,0x0,0xfc,0x84,0x84,0x48,0x48,0x48,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x8,0x8,0x14,0x22,0x41,0xbe,0x9,0x8,0x7f,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0xfc,0x4,0x48,0x28,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x2,0x42,0x33,0x12,0x82,0x62,0x2f,0xa,0x12,0x27,0xea,0x32,0x22,0x2a,0x24,0x21,0x0,0x0,0x80,0x7c,0x44,0x44,0xc4,0x44,0x28,0x28,0x90,0x10,0x28,0x46,0x84,0x0, ++0x0,0x0,0x3c,0xb,0x10,0x10,0x10,0x5d,0x50,0x50,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x20,0x24,0xfe,0x20,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0x2a,0x26,0x20, ++0x2,0x2,0x2,0x7f,0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x0,0x10,0xc,0xe4,0x20,0x20,0x20,0x20,0xfc,0x4,0x4,0x4,0x4,0x28,0x10,0x0, ++0x4,0x7e,0x45,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x54,0x55,0x28,0x24,0x44,0x83,0x20,0x28,0xfc,0x20,0x20,0xfe,0x82,0x54,0x10,0x90,0x14,0xfe,0x20,0x50,0x8c,0x4, ++0x10,0xa,0xff,0x0,0x7f,0x42,0x7e,0x0,0x7e,0x4,0x8,0x1e,0xe8,0x9,0x2a,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x68,0x58,0x88,0x89,0x9,0x3,0x0, ++0x8,0xff,0x0,0x7e,0x42,0x7e,0x0,0x7e,0x4,0x8,0x7c,0x9,0x1a,0x44,0x42,0x82,0x40,0x40,0x48,0xfc,0x48,0x48,0xc8,0x48,0xa8,0x8a,0x8a,0x6,0x0,0x88,0x46,0x42, ++0x4,0xff,0x4,0x3f,0x24,0x3f,0x2,0x3f,0x2,0xff,0xc,0x1f,0x30,0xdf,0x10,0x1f,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x20,0xf0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x1f,0x10,0x1f,0x10,0x1f,0x2,0x3f,0x2,0xff,0x4,0xf,0x38,0xcf,0x8,0xf,0x8,0xf0,0x10,0xf0,0x14,0xf8,0x20,0xf0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0xb,0x7e,0x4a,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x49,0x7b,0x4d,0x1,0x1,0x4,0xfe,0x94,0x94,0xfc,0x48,0xfc,0x50,0xfe,0x40,0xfc,0x4,0xfc,0x4,0xfc,0x4, ++0x3f,0x24,0x24,0x3f,0x2,0x3f,0x2,0xff,0x3,0xc,0x3f,0xc8,0xf,0x8,0xf,0x8,0xf8,0x48,0x48,0xf8,0x20,0xf0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x3f,0x24,0x24,0x3f,0x10,0x3f,0x42,0xbf,0x22,0x22,0x3f,0x2,0x3,0x7e,0x20,0x8,0xfc,0x48,0x48,0xf8,0x4,0xfe,0x4,0xe4,0x24,0x24,0xe4,0x24,0xf4,0x14,0x8, ++0x0,0x3f,0x1,0xff,0x5,0x9,0x32,0x4,0x9,0x39,0xc5,0x3,0xd,0x31,0x5,0x2,0xf0,0x0,0x4,0xfe,0x40,0x30,0x90,0x40,0x30,0x2e,0x44,0x80,0x60,0x18,0x8,0x0, ++0xc,0x71,0x40,0x7c,0x40,0x7f,0x2,0x52,0x4a,0x42,0x52,0x4a,0x42,0x73,0xc6,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x90,0x50,0x10,0x90,0x50,0x10,0x8a,0xa,0x6, ++0x3f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x20,0x3f,0x50,0x50,0x57,0x90,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x80,0xf8,0x88,0xf8,0x84,0xfe,0x84,0x94,0xf4,0x14,0x8, ++0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x1,0x0,0x40,0x30,0x10,0x4,0xfe,0x0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0, ++0x0,0x40,0x20,0x20,0xf,0x0,0xe1,0x22,0x24,0x28,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0xa0,0x90,0x80,0xfc,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80,0x6,0xfc,0x0, ++0x10,0x10,0x10,0x17,0xfc,0x14,0x32,0x3a,0x51,0x51,0x92,0x12,0x14,0x18,0x10,0x10,0x8,0x8,0x8,0xc8,0x7e,0x48,0x88,0xa8,0x18,0x8,0x88,0x48,0x48,0x8,0x28,0x10, ++0x1,0x1,0xff,0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x23,0x5,0x9,0x31,0xc1,0x1,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x88,0x40,0x30,0xe,0x4,0x0, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x28,0x26,0x22,0x20,0x20,0x20,0x21,0x42,0x84,0x80,0xa0,0x90,0xfc,0x80,0x80,0x88,0x48,0x50,0x50,0x20,0x60,0x90,0x12,0xa,0x6, ++0x4,0x25,0x25,0x24,0x24,0x24,0x24,0x24,0x7,0x1,0x3f,0x8,0x8,0x4,0xff,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x4,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0, ++0x7f,0x49,0x7f,0x49,0x7f,0x8,0x7f,0x8,0xf,0x79,0x1,0x3f,0x1,0x1,0xff,0x0,0x7c,0x4,0x28,0x10,0xfe,0x12,0x14,0x10,0x50,0x20,0x0,0xf8,0x0,0x4,0xfe,0x0, ++0x1,0x0,0x3f,0x20,0x22,0x22,0x3f,0x22,0x22,0x22,0x23,0x22,0x40,0x4a,0x89,0x11,0x0,0x84,0xfe,0x0,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x0,0x48,0x26,0x22, ++0x8,0x49,0x2a,0x8,0xff,0x19,0x2c,0x4a,0x10,0xfe,0x22,0x22,0x14,0x18,0x25,0x42,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x2,0x42,0x3f,0x22,0x82,0x4f,0x4a,0xa,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x22,0x23,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4, ++0x10,0x10,0x10,0xfe,0x22,0x22,0x14,0x8,0x14,0x62,0x0,0x2a,0x29,0x28,0x48,0x7,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x0,0x10,0x88,0xa4,0x24,0xe0, ++0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x3f,0x32,0x32,0x52,0x52,0x53,0x92,0x2,0x2,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x84,0x14,0x8, ++0x0,0x7f,0x2,0x3f,0x24,0x24,0x24,0x22,0x2,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x8,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x10,0x10,0x13,0x10,0xfc,0x12,0x15,0x1a,0x30,0xd0,0x17,0x10,0x10,0x10,0x50,0x20,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x2,0x1,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x4,0x9,0x18,0x28,0x4a,0x8c,0x8,0x0,0x8,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x28,0x12,0x2,0xfe, ++0x8,0x8,0x48,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x9,0x11,0x11,0x20,0x40,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x1c,0x30,0xd0,0x17,0x10,0x10,0x10,0x5f,0x20,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x8,0x8,0x7e,0x8,0x1c,0x2a,0x48,0x8,0x8,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84, ++0x0,0x0,0xfd,0x4,0x44,0x44,0x28,0x28,0x10,0x10,0x28,0x28,0x44,0x44,0x81,0x6,0x0,0x4,0xfe,0x84,0x84,0x84,0x88,0x48,0x48,0x50,0x20,0x30,0x50,0x88,0xe,0x4, ++0x1,0x1,0xff,0x1,0x29,0x11,0x29,0x1,0x29,0x11,0x29,0x2,0x4,0x8,0x30,0xc0,0x0,0x4,0xfe,0x0,0x28,0x10,0x28,0x0,0x28,0x10,0x28,0x80,0x40,0x30,0xe,0x4, ++0x0,0x20,0x11,0x11,0x3,0x5,0xf1,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x81,0x5,0x2,0x0,0x0,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0,0x0, ++0x0,0x8,0x7b,0x48,0x48,0x4f,0x79,0x49,0x4f,0x79,0x49,0x49,0x4f,0x78,0x48,0x3,0x0,0x18,0xe0,0x40,0x48,0xfc,0x50,0x54,0xfe,0x50,0x50,0x50,0xfc,0x40,0x50,0xf8, ++0x8,0x1d,0xf0,0x10,0x11,0xfd,0x11,0x39,0x35,0x51,0x90,0x10,0x10,0x10,0x11,0x12,0x0,0x4,0x88,0x50,0xfc,0x4,0x4,0x4,0xfc,0x54,0x50,0x50,0x92,0x92,0xe,0x0, ++0x0,0x8,0x7c,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x80,0x80,0x8,0xfc,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x8,0x7f,0x49,0x48,0x4b,0x7a,0x4d,0x49,0x7a,0x4d,0x48,0x48,0x79,0x4a,0x0,0x8,0x3c,0xc0,0x24,0xa8,0xfe,0x2,0x4,0xde,0x44,0x54,0x94,0xbe,0x4,0x4,0x4, ++0x0,0x47,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x44,0x84,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x0,0x3f,0x11,0x9,0x7f,0x48,0x88,0x1e,0x12,0x22,0x54,0xd,0x8,0x10,0x20,0x40,0x78,0x80,0x10,0x20,0xfe,0x22,0x24,0xf8,0x20,0xa0,0xa8,0xfc,0x20,0x20,0x20,0x20, ++0x0,0x22,0x11,0x10,0x3,0x2,0xf2,0x12,0x13,0x12,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x8,0x10,0xa0,0xf8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x8,0xfd,0x10,0x10,0x21,0x25,0x3f,0x65,0xa5,0x25,0x25,0x25,0x3c,0x24,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x41,0x22,0x14,0xff,0x8,0x49,0x49,0x49,0x49,0x49,0x7f,0x9,0x8,0x10,0x21,0x42,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x44,0x84,0x84,0x14,0x8, ++0x10,0x10,0x13,0x16,0x5a,0x52,0x52,0x93,0x10,0x10,0x10,0x29,0x26,0x44,0x80,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x22,0x22,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0xff,0x0,0x15,0x22,0x40,0x8,0x1c,0x60,0x40,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8,0x8, ++0x24,0x24,0x2f,0x24,0xfc,0x27,0x2c,0x34,0x27,0xe4,0x24,0x3f,0x20,0x24,0xa8,0x40,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8, ++0x4,0x14,0x7f,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x7f,0x50,0x4,0x8,0x0,0x80,0x8c,0xf0,0xa0,0xa0,0xa4,0xbe,0xa8,0xa8,0xa8,0xa8,0xe8,0x28,0xa8,0x48,0x8, ++0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x2,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x88,0x96,0x12,0xf0, ++0x4,0xe,0xf8,0x8,0xa,0xff,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xb,0x8,0x8,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x8,0x4,0xfe,0x2,0x0, ++0x0,0x3f,0x0,0x0,0xff,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x88,0x88,0x28,0x10, ++0x8,0x8,0x8,0x10,0x10,0x22,0x7e,0x4,0x8,0x10,0x20,0x7e,0x0,0x0,0xff,0x0,0x10,0x10,0x10,0x20,0x20,0x44,0xfc,0x8,0x10,0x20,0x40,0xfc,0x0,0x4,0xfe,0x0, ++0x0,0xff,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xc,0x4,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x4,0x3e,0x21,0x24,0x3f,0x20,0x25,0x3e,0x20,0x21,0xff,0x10,0x25,0x7e,0x2,0x0,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x0,0x0,0x7f,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x55,0x55,0x55,0x7f,0x55,0x55,0x55,0x55,0x43,0x4,0x7e,0x4,0x4,0xfc,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x14,0x8, ++0x0,0x0,0x7f,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x3c,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x93,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8, ++0x10,0x11,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x21,0x0,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x8,0x10,0x90,0x20,0x28,0x46,0x82,0x0, ++0x20,0x23,0x20,0x3c,0x27,0x48,0x40,0xa3,0x22,0x22,0x22,0x26,0x2b,0x32,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0xf4,0x24,0x24,0x24,0x24,0xe4,0x4,0x14,0x8, ++0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x3f,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x39,0x36,0x54,0x50,0x90,0x10,0x11,0x13,0x10,0x10,0x10,0x90,0x90,0x90,0x8,0x8,0x4,0x42,0x40,0x40,0x80,0x88,0x4,0xfc,0x4,0x0, ++0x8,0x8,0x18,0x24,0x43,0x82,0x7f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x20,0x20,0x50,0x88,0x6,0x0,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0x10,0x10, ++0x8,0x8,0x8,0x8,0x14,0x14,0x22,0x22,0x41,0x80,0x2a,0x29,0x28,0x48,0x7,0x0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4,0x0,0x10,0x88,0xa4,0x24,0xe0,0x0, ++0x0,0x2b,0x28,0x28,0x45,0x53,0x91,0x11,0x21,0x21,0x29,0x45,0x7c,0x4,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x2,0x41,0x30,0x17,0x0,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x11,0x2a,0x44,0x3,0x8,0x10,0xa0,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0xa0,0x18,0x8,0x6,0xfc, ++0x2,0x1,0x7f,0x40,0x81,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0xfe,0x2,0x4,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0x0,0x0,0x0, ++0x0,0x40,0x31,0x11,0x1,0x2,0xf2,0x14,0x18,0x10,0x10,0x10,0x15,0x1b,0x10,0x0,0x40,0x20,0x20,0x20,0x10,0x8,0xe,0x44,0x40,0x40,0x80,0x90,0x8,0xf8,0x8,0x0, ++0x0,0x47,0x20,0x20,0x0,0x7,0xe4,0x24,0x27,0x24,0x24,0x27,0x2c,0x34,0x24,0x4,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd3,0x10,0x10,0x10,0x10,0x50,0x23,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x10,0x3d,0x25,0x35,0x2d,0x25,0x25,0xfc,0x27,0x34,0x2c,0x44,0x44,0x94,0xb,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x22,0x2a,0x27,0x22,0xff,0x22,0x37,0x2a,0x62,0xbf,0x24,0x28,0x25,0x22,0xa5,0x48,0x10,0x90,0x10,0x14,0xbe,0x44,0x24,0xa4,0x28,0xe8,0x90,0x90,0x28,0x28,0x46,0x84, ++0x2,0x22,0xff,0xa2,0xa2,0xaf,0xaa,0xaa,0xaf,0xa2,0xa7,0xea,0x92,0x2,0x2,0x3,0x10,0x90,0xd0,0x10,0xbe,0xc2,0x94,0x90,0x90,0x10,0x10,0xa8,0x28,0x48,0x86,0x4, ++0x8,0x8,0xff,0x8,0xa,0x2,0x3f,0x2,0x2,0x22,0x24,0x44,0x8,0x10,0x20,0x40,0x20,0x24,0xfe,0x20,0x20,0x10,0xf8,0x10,0x10,0x18,0x16,0x12,0x10,0x10,0x50,0x20, ++0x4,0xfe,0x29,0x28,0xfe,0xaa,0xab,0xaa,0xae,0xc2,0x82,0xff,0x82,0xfe,0x82,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xae,0x24,0x20,0x20,0x20,0x20, ++0x10,0x11,0x11,0x22,0x24,0x60,0xa1,0x22,0x24,0x2b,0x22,0x22,0x22,0x22,0x23,0x22,0x0,0x10,0xc,0x44,0x40,0xa0,0x10,0xe,0x4,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x7f,0x1,0x3f,0x1,0xff,0x4,0x1f,0x1,0x2,0x1f,0x1,0x9,0x15,0x22,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xc0,0x0,0x20,0xf0,0x0,0x20,0x18,0x8, ++0x0,0x40,0x37,0x10,0x7,0x4,0xf4,0x17,0x14,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x44,0xfc,0x44,0xe0,0x58,0x48,0x40,0x46,0xfc,0x0, ++0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0x11,0x9,0xff,0x5,0x9,0x31,0xc1,0x1,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x10,0x24,0xfe,0x40,0x30,0xe,0x4,0x0, ++0x10,0x1f,0x10,0x27,0x24,0x64,0xa7,0x20,0x22,0x21,0x2f,0x21,0x22,0x24,0x28,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xa4,0xfc,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x44,0x40, ++0x22,0x14,0xff,0x8,0x2a,0x2a,0x2a,0x3e,0x8,0x11,0x21,0x7f,0x1,0x1,0xff,0x0,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x44,0x94,0x8,0x0,0xfc,0x0,0x4,0xfe,0x0, ++0x48,0x25,0x20,0x1f,0x82,0x4a,0x4a,0xa,0x1a,0x2a,0xef,0x22,0x22,0x24,0x28,0x21,0x84,0x3e,0x24,0xe4,0x24,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8, ++0x2,0x1,0x7f,0x40,0x88,0xf,0x8,0x10,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x12,0x0,0x0,0xfe,0x2,0x4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x43,0x32,0x12,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x8,0x0,0x1c,0xe0,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x60,0x30,0x2c,0x24,0x20,0x20, ++0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x21,0x41,0x81,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x48,0x28,0x28,0x8,0x8,0x8, ++0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x83,0xfe,0x82,0xfe,0x82,0x1,0x20,0x20,0x40,0x84,0xfe,0x48,0x86,0x42,0x78,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x8,0xff,0x8,0x4,0x7e,0x0,0x4,0xfe,0x8,0x2c,0x2a,0x48,0x89,0x28,0x10,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0x4,0xfe,0x10,0x58,0x56,0x92,0x10,0x50,0x20, ++0x20,0x3e,0x49,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xff,0x8,0x8,0x10,0x20,0x80,0xfc,0x20,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x1f,0x10,0x10,0x1f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x1,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x10,0xfc,0x4,0x0, ++0x0,0x78,0x4f,0x51,0x51,0x62,0x55,0x48,0x4b,0x4a,0x6b,0x52,0x43,0x42,0x42,0x42,0x80,0x84,0xfe,0x0,0xf8,0x40,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x0,0x78,0x4a,0x51,0x51,0x60,0x57,0x49,0x49,0x49,0x69,0x51,0x41,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0x44,0xfe,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x48,0x80,0x7e, ++0x10,0x17,0x20,0x22,0x41,0xf8,0x10,0x2f,0x41,0xf9,0x42,0x1,0x18,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0x20,0x84,0xfe,0x8,0x8,0x10,0x10,0xa0,0x40,0xb0,0x8, ++0x0,0x7d,0x44,0x76,0x55,0x55,0xfe,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x56,0x48,0x20,0xfe,0x40,0x7c,0x90,0x7c,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x4c,0x80,0x7e, ++0x0,0x8,0xfd,0x10,0x10,0x21,0x22,0x7c,0xa4,0x27,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0xfc,0x88,0x88,0x54,0x22,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20, ++0x1,0x21,0x21,0x21,0x3f,0x24,0x4,0xf,0x10,0x24,0x42,0x1,0x1,0x3,0x1c,0xe0,0x0,0x8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x0, ++0x8,0x1c,0xf3,0x10,0x11,0xff,0x11,0x31,0x39,0x54,0x51,0x90,0x12,0x12,0x14,0x10,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x28,0xfc,0x40,0xa4,0xa2,0x8a,0x78, ++0x2,0x81,0x60,0x2f,0x1,0x2,0xe4,0x29,0x22,0x24,0x29,0x22,0x25,0x50,0x8f,0x0,0x10,0x20,0x48,0xfc,0x0,0x88,0xd0,0x60,0x40,0xe0,0x58,0x48,0x40,0x86,0xfc,0x0, ++0x0,0x78,0x49,0x54,0x52,0x60,0x50,0x4e,0x4a,0x4a,0x6a,0x52,0x42,0x45,0x48,0x40,0x44,0x28,0xfe,0x20,0x40,0xa4,0x38,0x50,0x98,0x34,0x54,0x90,0x30,0x6,0xfc,0x0, ++0x1,0x21,0x21,0x3f,0x1,0x41,0x7f,0x0,0x3f,0x0,0x0,0xff,0x9,0x11,0x25,0x2,0x0,0x8,0x8,0xf8,0x0,0x4,0xfc,0x0,0xf8,0x0,0x4,0xfe,0x20,0x18,0x8,0x0, ++0x0,0x7e,0x2,0x4,0x8,0xa,0xc,0x39,0xc9,0xa,0xc,0x8,0x8,0x8,0x28,0x10,0x20,0x20,0x20,0x20,0x20,0xb0,0xa8,0x24,0x26,0x22,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x11,0x11,0x11,0xfd,0x10,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4, ++0x10,0x12,0x1f,0x28,0x45,0xbf,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0, ++0x8,0x8,0xff,0x9,0x7f,0x0,0x1f,0x10,0xff,0x10,0x1f,0x9,0x18,0x2a,0xcc,0x8,0x20,0x24,0xfe,0x20,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x8,0x90,0x60,0x1c,0x8, ++0x10,0x10,0x11,0x13,0xfc,0x10,0x31,0x3a,0x54,0x51,0x92,0x14,0x10,0x10,0x11,0x16,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x8,0x7d,0x4b,0x48,0x48,0x49,0x4a,0x48,0x49,0x4a,0x7c,0x48,0x0,0x1,0x6,0x40,0x90,0x8,0xfc,0x4,0x88,0x6,0x82,0xf8,0x8,0x90,0x50,0x20,0x50,0x8e,0x4, ++0x20,0x20,0x27,0x44,0x49,0xf1,0x12,0x26,0x4a,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x20,0xfe,0x2,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x0,0x9,0xfc,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0xf0,0x40,0x1,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x1,0x1,0x3f,0x1,0x7f,0x42,0x84,0xf,0x1,0x2,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0xf8,0x0,0xfe,0x2,0x24,0xc0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8,0x0, ++0x10,0x11,0x10,0x1c,0x20,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x14,0x18,0x11,0x6,0x20,0x24,0xa4,0xa8,0x24,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x2,0x7,0x38,0x20,0x20,0x3e,0x22,0x22,0x22,0x3e,0x22,0x20,0x21,0x42,0x84,0x0,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8, ++0x20,0x23,0x22,0x23,0x22,0xfb,0x20,0x27,0x20,0x24,0x22,0x39,0xe2,0x44,0x2,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0x94,0xa4,0x94,0x8, ++0x8,0x8,0x8,0x10,0x12,0x32,0x53,0x9e,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x40,0x42,0x2,0xfe,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x8,0x8,0x8,0x9,0xe,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x8,0x8,0xf8,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0xe4,0x24,0x24,0x34,0x28,0x20,0x22,0x2,0xfe,0x0, ++0x21,0x21,0x27,0x21,0x20,0xf8,0x21,0x22,0x2d,0x20,0x23,0x3a,0xe2,0x42,0x3,0x2,0x10,0x10,0xfc,0x10,0x40,0xa0,0x10,0xe,0xf4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x8a,0x52,0x2f,0x62,0xaf,0x2a,0x2a,0x6a,0xaf,0x22,0x27,0x2a,0x32,0x22,0xa2,0x42,0x10,0x10,0x9c,0x24,0xc8,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x8,0x14,0x22,0x42, ++0x10,0x12,0x11,0x11,0xfc,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x12,0x54,0x20,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x46,0x84,0x0,0x86,0x7c,0x0, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x10,0x13,0x5c,0x51,0x50,0x51,0x5e,0xf0,0x41,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xdc,0x44,0x54,0xcc,0x54,0x64,0x44,0x54,0x88, ++0x0,0x7d,0x44,0x44,0x44,0x7d,0x12,0x10,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x20,0x24,0xa8,0x70,0xa8,0x26,0x24,0x60,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0xff,0x8,0x2,0x4,0x8,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x20,0x24,0xfe,0x20,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x10,0xfc,0x11,0x17,0x18,0x30,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x2,0x4,0x8,0x10,0x20,0x7f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x9,0x39,0xc5,0x3,0xd,0x11,0x5,0x2,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x30,0x4e,0x84,0x60,0x10,0x0,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x10,0x14,0xfe,0x10,0x10,0x28,0x28,0x28,0x28,0x44,0x54,0x82,0x0, ++0x1,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x2,0x2,0x4,0x6,0x9,0x31,0xc0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x80,0x80,0x40,0x40,0x30,0xe,0x4,0x0, ++0x1,0x1,0xff,0x1,0x2,0x4,0xa,0x31,0xc0,0x2,0x29,0x29,0x28,0x48,0x7,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x10,0x8,0x24,0x24,0xe0,0x0, ++0x0,0x40,0x30,0x10,0x87,0x60,0x20,0x8,0x10,0x20,0xe1,0x21,0x22,0x24,0x28,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0x4e,0x4,0x0, ++0x20,0x23,0x22,0x22,0x22,0xfa,0x22,0x22,0x2f,0x22,0x22,0x3a,0xe2,0x44,0x4,0x8,0x8,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0xfe,0x8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x20,0x20,0x20,0x2e,0xf3,0x2a,0x2a,0x3a,0x6a,0xa4,0x2a,0x29,0x31,0x20,0xa0,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x1,0x2,0x6,0x9,0x37,0xc0,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x0,0x80,0x40,0x30,0xce,0x44,0x90,0xf8,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x19,0x35,0x52,0x92,0x15,0x25,0x28,0x40,0x0,0x80,0x44,0xfe,0x20,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x7e,0x40, ++0x0,0x40,0x30,0x1f,0x81,0x69,0x29,0x6,0x12,0x25,0xe9,0x30,0x20,0x20,0x20,0x20,0x20,0x28,0x20,0x7e,0x48,0xc8,0x7c,0x48,0x48,0x7c,0x48,0x48,0x48,0x7e,0x40,0x40, ++0x10,0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x10,0x10,0x10,0x1d,0xf1,0x43,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x80,0x90,0x8,0x4,0xfc,0x4,0x0, ++0x10,0x17,0x10,0x17,0xfd,0x15,0x3d,0x37,0x50,0x53,0x92,0x13,0x12,0x13,0x10,0x1f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe, ++0x1,0x0,0x1f,0x10,0x92,0x51,0x50,0x11,0x36,0x50,0x92,0x11,0x20,0x21,0x42,0xc,0x0,0x84,0xfe,0x40,0x48,0x50,0xa0,0x10,0x4c,0x40,0x48,0x50,0xa0,0x10,0xe,0x4, ++0x40,0x3f,0x10,0x7,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x20,0x2f,0x20,0x20,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40, ++0x40,0x2f,0x20,0x7,0x4,0xe7,0x20,0x23,0x22,0x23,0x22,0x23,0x28,0x37,0x20,0x0,0x4,0xfe,0xa0,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40, ++0x0,0x40,0x32,0x11,0x0,0x0,0xf1,0x16,0x10,0x12,0x11,0x10,0x14,0x19,0x12,0x4,0x40,0x40,0x48,0x50,0xa0,0x90,0xe,0x44,0x40,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4, ++0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0xf,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0, ++0x4,0xe,0xf0,0x11,0x10,0x7c,0x11,0x10,0xfe,0x10,0x11,0x10,0x10,0x13,0x10,0xf,0x20,0xa4,0xa8,0x30,0x50,0x8c,0x24,0x20,0xa8,0xb0,0x20,0x50,0x8c,0x6,0x2,0xfe, ++0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0, ++0x0,0x8,0xfd,0x11,0x11,0x20,0x23,0x7c,0xa4,0x25,0x25,0x26,0x24,0x3c,0x25,0x2,0x20,0x20,0x24,0x24,0xfc,0x80,0xfe,0x80,0xa0,0x24,0xa8,0x50,0x50,0x88,0xe,0x4, ++0x10,0x13,0x12,0x14,0xfc,0x11,0x14,0x18,0x33,0xd0,0x10,0x10,0x11,0x12,0x50,0x20,0x0,0xfe,0x2,0x54,0x88,0x4,0x20,0x24,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20,0x20, ++0x0,0x8,0x7f,0x4a,0x4a,0x49,0x49,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x4,0x18,0x0,0x0,0xf8,0x8,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x1,0x21,0x21,0x3f,0x8,0xff,0x9,0x9,0x15,0x15,0x2a,0x22,0x44,0x84,0x8,0x30,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0x30,0x40,0x80,0x80,0x40,0x20,0x1c,0x8, ++0x0,0x23,0x18,0x8,0x80,0x60,0x23,0x8,0x10,0x21,0xe1,0x22,0x24,0x29,0x22,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x84,0x4,0x28,0x10, ++0x10,0x10,0x13,0x12,0x13,0xfe,0x13,0x12,0x13,0x12,0x13,0x1d,0xf5,0x45,0x9,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x13,0x12,0xff,0x12,0x17,0x1a,0x33,0xd2,0x13,0x15,0x15,0x15,0x59,0x21,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x11,0x9,0x7f,0x40,0x9f,0x10,0x10,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x10,0x20,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x1,0x9,0x5,0x7f,0x40,0x8f,0x8,0x8,0xf,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x20,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x8,0x7d,0x48,0x4b,0x4a,0x7d,0x49,0x49,0x49,0x78,0x48,0x49,0x48,0x48,0x8b,0x18,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x1,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x48,0x48,0x8f,0x8,0x0,0x88,0xfc,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x57,0x3a,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x93,0x15,0x15,0x19,0x11,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xa,0x9,0x11,0x10,0x37,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x10,0x22,0x79,0x49,0x48,0x7b,0x4a,0x7a,0x4a,0x4a,0xfa,0x2a,0x4a,0x8a,0x2a,0x12,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x84,0x14,0x8, ++0x0,0x42,0x31,0x11,0x80,0x67,0x24,0xc,0x15,0x25,0xe5,0x25,0x25,0x25,0x24,0x24,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x10,0x12,0x11,0x7d,0x10,0x13,0xfe,0x12,0x52,0x5e,0x52,0x72,0x52,0x48,0x87,0x0,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0xc,0x6,0xfc,0x0, ++0x23,0x10,0x40,0x23,0x9,0x71,0x11,0x12,0x14,0x1,0x9,0xa,0x12,0x4,0x18,0x60,0xf0,0x40,0x84,0xfe,0x24,0x24,0x24,0x54,0x88,0x0,0x10,0xa0,0x80,0x60,0x1c,0x8, ++0x11,0x11,0x11,0x13,0xfc,0x12,0x13,0x1c,0x30,0xd3,0x10,0x12,0x12,0x13,0x50,0x20,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x84,0xa4,0xf4,0x84,0xa4,0xa4,0xe4,0x14,0x8, ++0x0,0x40,0x37,0x10,0x83,0x60,0x2f,0x9,0x11,0x23,0xe2,0x25,0x28,0x30,0x20,0x20,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x8,0x8,0xfe,0x8,0x8,0x88,0x88,0x28,0x10, ++0x40,0x30,0x17,0x0,0x82,0x61,0x20,0xf,0x14,0x24,0xe7,0x24,0x24,0x24,0x27,0x24,0x8,0x3c,0xc0,0x4,0x4c,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x21,0x23,0x4c,0xf8,0x10,0x21,0x46,0xf8,0x47,0x0,0x19,0xe2,0x45,0x0,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0x44,0xfc,0x40,0x50,0x4c,0x44,0x80, ++0x4,0x4,0xff,0x14,0x1f,0x28,0x4f,0x11,0x21,0xff,0x1,0x11,0x11,0x1f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x4,0xf4,0x4,0x14,0xfc,0x4,0x14,0x14,0xf4,0x14,0x8, ++0x10,0x10,0x10,0x10,0xfc,0x12,0x39,0x34,0x51,0x52,0x94,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0, ++0x1,0x41,0x29,0x25,0x5,0x1,0xe3,0x25,0x29,0x21,0x22,0x24,0x28,0x50,0x88,0x7,0x40,0x40,0x48,0x58,0x60,0x40,0x60,0x50,0x50,0x40,0x44,0x44,0x3c,0x0,0x6,0xfc, ++0x42,0x32,0x13,0x5,0x89,0x63,0x24,0x0,0x1f,0x20,0xe4,0x24,0x27,0x20,0x20,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x1,0x79,0x49,0x52,0x55,0x61,0x52,0x48,0x4f,0x48,0x69,0x51,0x41,0x40,0x40,0x40,0x0,0x4,0xfe,0x4,0x24,0xf4,0x44,0x54,0xfc,0x44,0x54,0x54,0xf4,0x4,0x14,0x8, ++0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x11,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x8,0x88,0x88,0x8,0x8,0x8,0x8,0x28,0x10, ++0x1,0x1,0xff,0x2,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xff,0x4,0x8,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0xe0,0x10,0xee,0x4,0xe0,0x4,0xfe,0x0,0x20,0xf0,0x10, ++0x10,0x10,0x50,0x53,0x7c,0x90,0x17,0x18,0x30,0xd7,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20, ++0x4,0x4,0xff,0x4,0x7a,0x49,0x4b,0x78,0x4f,0x49,0x7a,0x4d,0x48,0x49,0x8a,0x18,0x20,0x24,0xfe,0x20,0x48,0x50,0xfc,0x80,0xfe,0x10,0x4e,0x54,0xe0,0x58,0x48,0xc0, ++0x0,0x7a,0x49,0x4b,0x48,0x7f,0x49,0x4a,0x4d,0x78,0x49,0x49,0x48,0x4f,0x88,0x18,0x40,0x48,0x50,0xfc,0x80,0xfe,0x10,0xe,0xf4,0x10,0x14,0xfe,0x4,0xe4,0x14,0x8, ++0x1,0x0,0x1f,0x11,0x91,0x53,0x55,0x10,0x30,0x50,0x93,0x2c,0x20,0x40,0x80,0x0,0x0,0x84,0xfe,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x8e,0x64,0x20,0x80,0x60,0x20, ++0x11,0x9,0x7f,0x2,0xff,0x4,0x9,0x3f,0xc0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x20,0xfc,0x0,0xfe,0x40,0x20,0xfe,0x4,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0, ++0x12,0x11,0x10,0x13,0xfc,0x10,0x33,0x3a,0x56,0x53,0x90,0x11,0x12,0x14,0x18,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40, ++0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x10,0x3f,0x54,0x94,0x14,0x24,0x4a,0x11,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0xe4,0xa4,0x84,0x84,0x84,0x94,0x8, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x11,0x11,0x5c,0x51,0x52,0x54,0x5c,0xf1,0x42,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88, ++0x22,0x21,0x38,0x43,0x80,0x78,0x23,0x22,0xfa,0x23,0x20,0x29,0x32,0x24,0x8,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x30,0xd7,0x10,0x11,0x11,0x11,0x52,0x24,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x20,0x28,0x3c,0x20,0xa6,0x7c, ++0x3e,0x23,0x22,0x3e,0x22,0x22,0x3e,0x0,0xff,0x8,0x2a,0x2f,0x28,0x58,0x49,0x87,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x84,0x6,0xfc, ++0x0,0x7c,0x45,0x44,0x44,0x7f,0x12,0x14,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x40,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20, ++0x0,0x8,0x7d,0x48,0x48,0x4b,0x4a,0x4c,0x49,0x49,0x49,0x79,0x49,0x1,0x0,0x0,0x40,0x20,0xfc,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x24,0x24,0x2c,0x20,0x20, ++0x10,0x10,0x10,0x20,0x2f,0x62,0xa2,0x24,0x24,0x28,0x2b,0x30,0x20,0x20,0x20,0x20,0x80,0x80,0x80,0x88,0xfc,0xa0,0xa0,0x90,0x90,0x88,0xee,0x84,0x80,0x80,0x80,0x80, ++0x8,0x8,0x7e,0x8,0xfe,0x8,0x14,0x22,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x20,0x28,0xfc,0x20,0xfe,0x20,0x50,0x8e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x13,0x78,0x57,0x54,0x5b,0x52,0x53,0x52,0x53,0x50,0x77,0x52,0x3,0x4,0x8,0x50,0xf8,0x40,0xfe,0x2,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfc,0x44,0x70,0xc0,0x7e, ++0x10,0x11,0x11,0x11,0x59,0x55,0x51,0x91,0x10,0x11,0x12,0x14,0x10,0x11,0x12,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x54,0x88, ++0x2,0x41,0x30,0x17,0x80,0x60,0x27,0xc,0x14,0x27,0xe0,0x21,0x22,0x24,0x28,0x20,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40, ++0x41,0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x49,0x7f,0x19,0x29,0x4d,0x8a,0x8,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x24,0x24,0x24,0x4,0x14,0x8, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x24,0x24,0x3f,0x24,0x24,0x24,0x24,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0xf8,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x8,0xfc,0x0, ++0x0,0x7f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0xc0,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x40,0x37,0x10,0x0,0x8f,0x61,0x21,0xa,0x14,0x28,0xe2,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x80,0x84,0xfe,0x20,0x10,0x90,0x8e,0x84,0xd0,0xa8,0xa8,0x88,0x80,0x0, ++0x10,0x10,0x17,0x10,0x13,0xfe,0x13,0x12,0x13,0x12,0x1f,0xf2,0x4f,0x1,0x3,0x4,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x0,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x21,0x3f,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0, ++0x4,0xe,0xf8,0x8,0xb,0x8,0xff,0x8,0xa,0x3f,0x22,0x22,0x22,0x3e,0x22,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x10,0x10,0x17,0x10,0x58,0x54,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x78,0xc0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0xc,0xf3,0x10,0x10,0x13,0xfe,0x10,0x11,0x7d,0x46,0x45,0x45,0x46,0x7c,0x45,0x0,0x8,0xfc,0x40,0x44,0xfe,0x90,0x88,0x48,0x46,0x44,0x48,0x64,0x54,0x54,0x40,0x80, ++0x8,0x7c,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4f,0x48,0x49,0x8b,0x1c,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x10,0x10,0x10,0xfc,0x12,0x15,0x18,0x31,0xd2,0x14,0x11,0x11,0x12,0x54,0x28,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0, ++0x8,0xf,0x18,0x24,0x43,0xc,0x30,0xc1,0x1,0x3f,0x1,0x9,0x11,0x21,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0,0x0, ++0x0,0x47,0x31,0x11,0x1,0x2,0xf4,0x1b,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0, ++0x8,0x7c,0x48,0x48,0x48,0x7a,0x49,0x48,0x49,0x7a,0x4c,0x49,0x49,0x7a,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0, ++0x4,0x7e,0x44,0x44,0x44,0x7e,0x11,0x10,0x5d,0x52,0x54,0x51,0x5d,0xf2,0x44,0x8,0xa0,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xa8,0xa8,0x20,0x22,0x22,0x1e,0x0, ++0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x11,0x29,0x45,0x81,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4a,0x7a,0x44,0x8,0x0,0x10,0x38,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x13,0x10,0x14,0x58,0x50,0x51,0x96,0x10,0x11,0x10,0x28,0x24,0x40,0x87,0x0,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x40,0x30,0x17,0x0,0x80,0x60,0x20,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x21,0x20,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x0,0xfb,0x8,0x10,0x20,0x47,0x78,0x8,0x8,0x48,0x2b,0x10,0x28,0x47,0x80,0x10,0x38,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x17,0x20,0x23,0x62,0xa3,0x20,0x2f,0x28,0x33,0x20,0x20,0x20,0x21,0x20,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfe,0x2,0xf4,0x40,0x40,0x40,0x40,0x80, ++0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x9f,0x1,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0,0x0, ++0x1,0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x2f,0x21,0x21,0x2a,0x44,0x4a,0x91,0x20,0x0,0x88,0xfc,0x0,0x1c,0x70,0x10,0x14,0xfe,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc, ++0x20,0x20,0x2f,0x21,0xf2,0x24,0x28,0x2f,0x31,0xe1,0x29,0x25,0x22,0x25,0xa8,0x50,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x0,0x86,0x7c, ++0x10,0x20,0x7f,0x48,0x49,0x6a,0x5c,0x4f,0xf8,0x48,0x48,0x6c,0x5a,0x49,0x8a,0x1c,0x0,0xc,0xf0,0x90,0x10,0x14,0x7e,0x90,0x90,0x90,0x90,0xfc,0x80,0x0,0x86,0x7c, ++0x3,0x40,0x30,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x2a,0x44,0x3,0xf8,0x10,0xa0,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x68,0x50,0x6,0xfc, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x82,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x82,0x82,0xfe,0x82,0x82,0xba,0xaa,0xaa,0xaa,0xba,0x82,0x82,0x8a,0x84, ++0x0,0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x7b,0x4a,0x4b,0x48,0x7b,0x40,0xf,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe, ++0x0,0x7f,0x40,0x40,0x5f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x14,0x8, ++0x20,0x23,0x3e,0x42,0x82,0x7a,0x22,0x22,0xfa,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x2,0x3f,0x22,0x22,0x32,0x2a,0x2a,0x22,0xff,0x22,0x22,0x22,0x22,0x42,0x4a,0x85,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0xa0,0x42,0x6,0x8,0x10,0x20,0x40,0x80, ++0x2,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x7f,0x0,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0xfc, ++0x20,0x27,0x20,0x20,0xf8,0x27,0x74,0x6c,0xa7,0x24,0x24,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x20,0x27,0x20,0x20,0xf8,0x27,0x24,0x2c,0x37,0xe4,0x24,0x27,0x24,0x24,0xa4,0x44,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x10,0x14,0x3e,0x49,0x84,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x40,0x44,0xfe,0x20,0x10,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x28,0x10, ++0x10,0x10,0x20,0x27,0x48,0xf9,0x12,0x27,0x41,0xf9,0x41,0x1,0x1a,0xe2,0x44,0x8,0x80,0x40,0x48,0xfc,0x80,0x10,0x8,0xfc,0x24,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x17,0x34,0x57,0xd4,0x17,0x24,0x24,0x44,0x4,0x0,0x84,0xfe,0x0,0xf8,0xa0,0x44,0xfe,0x44,0xfc,0x44,0xfc,0x44,0x44,0x54,0x48, ++0x10,0x10,0x11,0x22,0x24,0x6b,0xb0,0x27,0x24,0x27,0x24,0x27,0x24,0x24,0x24,0x25,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x1a,0x33,0xd0,0x11,0x10,0x10,0x10,0x51,0x26,0x10,0xf8,0x10,0x10,0x10,0x14,0xe,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x0,0x8,0x6,0x22,0x18,0x8,0x0,0xff,0x0,0x1,0x1,0x2,0x4,0x18,0x60,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0xfe,0x80,0x0,0x60,0x10,0x8,0xc,0x4, ++0x0,0x43,0x30,0x17,0x0,0x1,0xf2,0x17,0x11,0x11,0x12,0x12,0x14,0x28,0x44,0x3,0x18,0xe0,0x40,0xfc,0xe0,0x50,0x4e,0xf4,0x10,0x38,0x8,0x8,0x50,0x20,0x6,0xfc, ++0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x78,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x24,0x3e,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x11,0x27,0x44,0x4,0x4,0x8,0x8,0x10,0x60,0xf0,0x0,0x0,0x4,0xfe,0x40,0x20,0x10,0xce,0x44,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x2,0x1,0x7f,0x44,0x88,0x11,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0xfe,0x42,0x34,0x10,0x40,0x24,0xfe,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x0,0x7f,0x44,0x47,0x4c,0x52,0x41,0x42,0x46,0x49,0x70,0x46,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x4,0x84,0x44,0x3c,0x94,0x4,0x4,0x84,0xfc,0x4, ++0x8,0x8,0x10,0x27,0x48,0x8,0x17,0x30,0x52,0x92,0x12,0x12,0x15,0x14,0x18,0x10,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x40,0x40,0xc6,0x7c,0x0, ++0x0,0x40,0x30,0x11,0x2,0x5,0xf0,0x10,0x17,0x10,0x11,0x12,0x14,0x29,0x44,0x3,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x86,0xfc, ++0x0,0x40,0x31,0x12,0x84,0x48,0x57,0x0,0x10,0x2f,0xe0,0x22,0x24,0x28,0x22,0x21,0x80,0x80,0x40,0x20,0x10,0x2e,0xf4,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x0, ++0x0,0x3f,0x20,0x3f,0x21,0x2f,0x21,0x3f,0x21,0x22,0x27,0x2c,0x57,0x64,0x87,0x4,0x8,0xfc,0x8,0xf8,0x10,0xe0,0x44,0xfe,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0xf,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x8,0xf,0x10,0x20,0x7f,0xa1,0x21,0x21,0x3f,0x22,0x2,0x4,0x4,0x8,0x10,0x60,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x88,0xa0,0x90,0x92,0x82,0x7e,0x0, ++0x0,0x44,0x34,0x14,0x87,0x40,0x4f,0x8,0x17,0x24,0xe4,0x24,0x24,0x24,0x24,0x24,0x40,0x44,0x44,0x44,0xfc,0x0,0xfe,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xc, ++0x0,0x7f,0x40,0x40,0x40,0x7f,0x41,0x42,0x44,0x48,0x50,0x60,0x42,0x41,0x7f,0x40,0x4,0xfe,0x84,0x84,0x94,0xfc,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xff,0x0,0x0, ++0xc,0xf1,0x10,0x14,0xfe,0x10,0x38,0x56,0x92,0x38,0x28,0x28,0x2a,0x4c,0x48,0x81,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0x20,0x58,0x44,0x82,0x2, ++0x0,0x78,0x4c,0x4a,0x48,0x78,0x4e,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4d,0x88,0x18,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x84,0xa8,0x90,0x8c,0xc4,0x80,0x86,0x7c, ++0x10,0x11,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1d,0xf5,0x42,0x4,0x0,0x8,0x90,0x8,0xfc,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x40,0x34,0x13,0x1,0xfc,0x8,0x17,0x39,0x55,0x91,0x11,0x11,0x11,0x12,0x14,0x10,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x42,0x54,0x48,0x66,0x42,0x80,0x46,0x3c, ++0x3,0x42,0x32,0x13,0x2,0x2,0xf3,0x12,0x12,0x12,0x12,0x13,0x12,0x28,0x44,0x3,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfc,0x8,0xd0,0x20,0x90,0xc,0x4,0x0,0x6,0xfc, ++0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x10,0x2f,0x48,0x88,0x8,0x8,0xf,0x8,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x20,0x10,0xee,0x24,0x20,0x20,0x20,0xe0,0x20, ++0x1,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe,0x0, ++0x7f,0x41,0x7f,0x52,0x7f,0x52,0x7f,0x52,0xa1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x78,0x48,0x4c,0x80,0xfc,0x48,0x30,0x4e,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x11,0x1d,0x31,0xd7,0x11,0x11,0x11,0x11,0x50,0x20,0x80,0x80,0x84,0xfe,0x20,0x20,0x24,0x3e,0xe4,0x24,0x34,0x28,0x22,0x2,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x14,0x18,0x37,0xd0,0x10,0x10,0x10,0x10,0x50,0x20,0x10,0x38,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4a,0x4a,0x4b,0x7a,0x48,0x48,0x49,0x49,0x8a,0x1c,0x0,0x10,0xa0,0x8,0xfc,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e, ++0x10,0x20,0x7c,0x45,0x55,0x46,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x7c,0x44,0x49,0x49,0x52,0x48,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x4,0x7e,0x4,0x24,0x24,0x27,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x15,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x50,0x50,0x90,0x88,0xe,0x4, ++0x4,0x7e,0x4,0x25,0x25,0x26,0x24,0x24,0x3e,0x2,0x2,0x1a,0xe2,0x42,0x14,0x8,0x40,0x20,0x0,0xfe,0x2,0x4,0x80,0x88,0x90,0xe0,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x20,0x27,0x24,0x25,0xfd,0x26,0x75,0x6d,0xa4,0x24,0x26,0x25,0x24,0x24,0x24,0x24,0x10,0x90,0x94,0x7e,0x10,0x24,0x7e,0xa4,0xa4,0xbc,0xa4,0x24,0x3c,0x24,0x24,0x2c, ++0x0,0x3f,0x2,0x11,0xd,0x4,0x2,0x2,0xff,0x4,0x8,0x18,0x6,0x1,0x6,0x18,0x78,0x80,0x8,0x18,0x20,0x40,0x0,0x4,0xfe,0x10,0x10,0x20,0x40,0x80,0x60,0x10, ++0x10,0x10,0x13,0x10,0xfc,0x11,0x15,0x19,0x33,0xd5,0x19,0x11,0x11,0x11,0x51,0x21,0x0,0x4,0xfe,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0xb,0x7c,0x48,0x4f,0x49,0x49,0x49,0x4f,0x49,0x49,0x79,0x4f,0x0,0x0,0x7,0x38,0xc0,0x40,0x44,0xfe,0x50,0x50,0x54,0xfe,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc, ++0x10,0x10,0x10,0x13,0xfa,0x14,0x11,0x1a,0x31,0xd0,0x10,0x11,0x12,0x12,0x52,0x21,0x40,0x20,0x0,0xfe,0x2,0x94,0x8,0x4,0xf8,0x10,0x60,0x80,0x0,0x2,0x2,0xfe, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x48,0x48,0x4f,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x11,0x7c,0x54,0x57,0x54,0x54,0x7c,0x51,0x14,0x1c,0xf4,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x40,0x30,0x17,0x80,0x60,0x2f,0x8,0x10,0x20,0xe7,0x20,0x20,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x11,0xfc,0x24,0x27,0x24,0x24,0x44,0x29,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x7f,0x8,0x8,0xf,0x8,0x8,0xa,0x11,0x11,0x10,0x24,0x28,0x30,0x60,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x22,0x1e,0x0, ++0x40,0x30,0x10,0x7,0xfc,0x8,0x10,0x37,0x58,0x94,0x11,0x11,0x12,0x14,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0xe0,0xd0,0x48,0x4e,0x44,0x40,0x40,0x40, ++0x0,0x7f,0x3,0x5,0x19,0x61,0x1,0x7f,0x1,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x8,0xfc,0x0,0x60,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0, ++0x8,0x8,0x8,0x10,0x1f,0x21,0x21,0x62,0x92,0xa,0x4,0x8,0x10,0x20,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x46,0x42,0x40,0x40,0x40,0x40,0x40,0x40, ++0x8,0xfc,0x3,0x2,0x7d,0x49,0x49,0x49,0x7a,0x2,0x4d,0x48,0x10,0xf9,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0, ++0x1,0xff,0x4,0x14,0x34,0x44,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x40,0x3f,0x10,0x2,0x86,0x68,0x27,0x8,0x17,0x24,0xe7,0x20,0x20,0x20,0x20,0x20,0x44,0xfe,0xa0,0xa8,0xa6,0xa2,0xf8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x44,0x28,0x10, ++0x8,0xfd,0x10,0x10,0x10,0x13,0x7c,0x10,0x10,0x10,0x10,0x1c,0xf1,0x41,0x2,0x4,0x8,0xfc,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x8,0x7d,0x0,0x0,0x4,0xfe,0x28,0x28,0x28,0x28,0x28,0x2a,0x2c,0x48,0x80,0x1,0x4,0xfe,0x10,0x24,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x44,0x82,0x2, ++0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0xe,0x2,0x5,0x4,0x4,0x8,0x8,0x30,0xc0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa0,0xa2,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x13,0x16,0x5a,0x51,0x50,0x90,0x13,0x10,0x10,0x28,0x25,0x45,0x82,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0x7f,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x8,0xff,0x12,0x15,0x21,0x21,0x79,0xaa,0x2a,0x2d,0x28,0x28,0x39,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0, ++0x10,0x10,0x11,0x12,0xfc,0x13,0x12,0x1a,0x32,0xd3,0x12,0x10,0x10,0x11,0x52,0x24,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0, ++0x0,0x8,0x7d,0x4a,0x4c,0x4b,0x4a,0x7a,0x4a,0x4b,0x4a,0x48,0x78,0x49,0x2,0x4,0x80,0x80,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0x64,0xa0,0xa2,0x22,0x1e,0x0, ++0x10,0x10,0x21,0x7d,0x46,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7d,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x20,0x20,0x27,0x34,0xaa,0xa2,0xa3,0xa4,0x24,0x24,0x2a,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x4,0x0,0xbc,0xa4,0xa4,0xb4,0xa8,0x20,0x22,0x22,0x1e,0x0, ++0x2,0x1,0x7f,0x40,0x90,0x1e,0x12,0x12,0x22,0x32,0x4a,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0xf8,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0, ++0x20,0x20,0x23,0x22,0xfd,0x49,0x49,0x49,0x4a,0x92,0x55,0x20,0x50,0x49,0x82,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0x5c,0x54,0x90,0x92,0x12,0xe,0x0, ++0x0,0x0,0xff,0x2,0x2,0x2,0x3,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x8,0x7c,0x4b,0x4a,0x4d,0x79,0x49,0x49,0x4a,0x7a,0x4d,0x48,0x48,0x49,0x4a,0x9c,0x40,0x20,0xfe,0x2,0x4,0xdc,0x54,0x54,0x54,0x54,0x5c,0x94,0x90,0x12,0xe,0x0, ++0x0,0x40,0x37,0x10,0x80,0x60,0x20,0xb,0x10,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x2,0x1,0x1,0x0,0xff,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x7f,0x40,0x42,0x62,0x54,0x54,0x48,0x48,0x54,0x52,0x62,0x61,0x42,0x40,0x40,0x4,0xfe,0x4,0xc,0x8c,0x54,0x54,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8, ++0x8,0x8,0x10,0x27,0x40,0x8,0x8,0x10,0x37,0x50,0x90,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x8,0xfc,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x0,0x7,0x78,0x48,0x48,0x48,0x78,0x4f,0x48,0x48,0x48,0x78,0x40,0xf,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x10,0xa,0xff,0x20,0x20,0x26,0x38,0x20,0x0,0x3f,0x1,0x1f,0x1,0x1,0xff,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x8c,0x0,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0, ++0x2,0x1,0xff,0x10,0x10,0x10,0x10,0x1f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x2,0x1,0x7f,0x10,0x10,0x10,0x1f,0x2,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x0,0x8,0xfc,0x0,0x0,0x20,0xf0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x0,0x0,0x0,0x3f,0x20,0x3f,0x24,0x24,0x3f,0x29,0x31,0x2a,0x24,0x4a,0x91,0x2,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0xc8,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x1,0x21,0x3f,0x0,0x7c,0x11,0xff,0x39,0x55,0x11,0xfd,0x24,0x48,0x30,0x29,0x46,0x0,0x8,0xf8,0x20,0x44,0xfe,0x24,0xfc,0x24,0xfc,0x44,0x60,0xa8,0xa2,0x22,0x1e, ++0x12,0x12,0x2a,0x4a,0x8a,0x1f,0x20,0x7f,0xa0,0x2f,0x29,0x29,0x29,0x29,0x30,0x20,0x10,0x10,0x90,0xa4,0xbe,0xc4,0x24,0xa8,0x28,0x28,0x10,0x50,0xa8,0x28,0x46,0x84, ++0x8,0xf,0x10,0x20,0x5f,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0xe0,0x40,0x88,0xfc,0x0,0x10,0xf8,0x10,0x10,0x50,0x20,0x2,0x2,0xfe,0x0, ++0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x28,0x10,0x0, ++0x0,0x40,0x2f,0x20,0x0,0x7,0xe0,0x20,0x2f,0x20,0x20,0x20,0x20,0x50,0x8f,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x86,0xfc,0x0, ++0x10,0x10,0x11,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x12,0x14,0x14,0x18,0x80,0xf8,0x10,0x24,0xfe,0x0,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xe4,0x4,0xf4,0x14,0x14,0x54,0x24,0x4,0xfc,0x4, ++0x0,0x8,0x7c,0x49,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x10,0x10,0x10,0x11,0x59,0x57,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x0,0x10,0xc,0x4,0x0,0xff,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x40,0x0,0x80,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x28,0x10, ++0x0,0x44,0x24,0x24,0x88,0x5f,0x42,0x4,0x28,0x5f,0xc0,0x40,0x43,0x5c,0x48,0x40,0x40,0x50,0x44,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x10,0x10,0x20,0x21,0x49,0xfb,0x15,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x8,0x8,0xff,0x9,0x1,0x7f,0x1,0x3f,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x20,0x24,0xfe,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x4,0x4,0x4,0x28,0x10,0x0, ++0x4,0x4,0xff,0x4,0x1f,0x1,0x7f,0x5,0x19,0x2,0xff,0x4,0x8,0x7,0x4,0x18,0x40,0x44,0xfe,0x40,0xf0,0x0,0xfc,0x40,0x30,0x4,0xfe,0x20,0x40,0x80,0x60,0x10, ++0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0x5,0xff,0x4,0x8,0x4,0x3,0xc,0x30,0x30,0xc0,0x0,0x4,0xfe,0x40,0x38,0x10,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x8,0x8,0x8,0x17,0x10,0x30,0x57,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40, ++0x8,0xa,0x9,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x12,0x14,0x18,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xc4,0xa4,0x14,0x4,0x4,0x4,0x28,0x10, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x21,0x21,0x2f,0x21,0x21,0x5f,0x41,0x81,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0xf0,0x8,0xfc,0x0,0x8,0xfc,0x0,0x2,0x2,0xfe, ++0x10,0x10,0x20,0x27,0x48,0xf8,0x17,0x20,0x40,0xff,0x0,0x0,0x1c,0xe0,0x40,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40, ++0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x8,0x8,0xff,0x8,0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x44,0x56,0x95,0x24,0xc,0x20,0x24,0xfe,0x20,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x10, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x0,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x4e,0x44,0x40,0x40, ++0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x10,0x12,0x11,0x10,0x14,0x18,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x20,0x40,0x80,0x60,0x1c,0x8, ++0x0,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x4f,0x4a,0x7a,0x4a,0x2,0x3,0x2,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4, ++0x6,0xf8,0x11,0x11,0xff,0x39,0x55,0x91,0x11,0xfe,0x24,0x44,0x28,0x11,0x2a,0x44,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x40,0x60,0xa0,0xa8,0x22,0x22,0x1e, ++0x8,0x8,0x8,0x10,0x17,0x30,0x52,0x92,0x11,0x11,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0x8,0xfc,0x0,0x8,0x8,0x10,0x10,0x90,0xa0,0x24,0xfe,0x0,0x0, ++0x0,0x47,0x34,0x17,0x84,0x67,0x20,0xb,0x12,0x23,0xe2,0x23,0x22,0x22,0x22,0x22,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x23,0x22,0x23,0x22,0x23,0x2a,0x32,0x22,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x1,0x3f,0x21,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x24,0x55,0x54,0xa4,0x14,0x8,0x8,0x88,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x88,0x8,0x28,0x10, ++0x3f,0x21,0x3f,0x20,0x3f,0x20,0x3f,0x24,0x56,0x95,0x2c,0x2,0x51,0x50,0x90,0xf,0x8,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10,0x0,0x84,0x92,0x12,0xf0, ++0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10,0x0,0x0,0x4,0xfe,0x0, ++0x1,0x0,0x1f,0x10,0x93,0x52,0x53,0x12,0x33,0x50,0xd7,0x14,0x24,0x24,0x4f,0x0,0x0,0x84,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0, ++0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x10,0x27,0xe4,0x24,0x24,0x24,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xe2,0x41,0x2,0x40,0x20,0x20,0x4,0xfe,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x2,0x1,0x1,0xff,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x10,0xe,0x4, ++0x20,0x1b,0x48,0x40,0x5f,0x44,0x47,0x44,0x47,0x44,0x44,0x5f,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x44,0xc4,0x44,0xc4,0x44,0x44,0xf4,0x44,0x44,0x54,0x8, ++0x10,0x10,0x20,0x20,0x4f,0xfa,0x11,0x21,0x40,0xfc,0x0,0x0,0x1c,0xe1,0x42,0x4,0x80,0x40,0x40,0x4,0xfe,0x8,0x10,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x48,0x49,0x49,0x49,0x7a,0x4c,0x1,0x2,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x44,0x44,0x84,0x4,0x28,0x10, ++0x8,0x1c,0xf0,0x11,0x12,0xff,0x10,0x33,0x38,0x57,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x40,0x24,0x22,0xa,0xf8,0x0, ++0x2,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe2,0x1f,0x1,0x2,0x3f,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x20,0x40,0x80,0x70,0x4e,0x80,0x20,0x10,0xf0,0x20,0x18,0x8,0x0, ++0x20,0x1b,0x8,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8, ++0x0,0x10,0x79,0x52,0x54,0x59,0x53,0x50,0x57,0x50,0x54,0x72,0x54,0x0,0x2,0x1,0x20,0xa0,0x10,0x48,0x86,0x14,0xf8,0x0,0xbc,0x84,0xa4,0x94,0xa4,0x84,0x94,0x8, ++0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x3e,0x2,0x22,0x12,0xa,0x12,0x22,0xa,0x4,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x8,0x88,0x48,0x28,0x48,0x88,0x28,0x10, ++0x4,0x4,0x9,0x12,0xe4,0xf,0x0,0x7f,0x8,0x8,0xf,0x9,0x8,0xb,0x1c,0x0,0x40,0x40,0x20,0x10,0x4e,0xe0,0x8,0xfc,0x0,0x20,0xf0,0x20,0xa0,0x22,0x22,0x1e, ++0x10,0x10,0x14,0x12,0xf8,0x10,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x15,0x58,0x20,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x28,0x16,0xfc,0x0, ++0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x7d,0x55,0x11,0x15,0x1d,0xe5,0x41,0x1,0x8,0xfc,0x88,0x88,0x88,0xf8,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x4,0x14,0x8, ++0x0,0x43,0x32,0x12,0x82,0x63,0x20,0xf,0x14,0x24,0xe4,0x24,0x25,0x24,0x24,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x44,0xfe,0x44,0x44,0x44,0xa4,0x14,0x4,0x14,0x8, ++0x2,0x1,0x7f,0x44,0x88,0x1f,0x28,0x8,0xf,0x1,0x3f,0x21,0x22,0x2c,0x20,0x20,0x0,0x0,0xfe,0x42,0x24,0xf0,0x28,0x20,0xe0,0x8,0xfc,0x8,0x88,0x68,0x28,0x10, ++0x4,0xe,0x78,0x8,0x8,0xff,0x8,0x8,0xa,0xc,0x18,0x68,0x9,0xa,0x28,0x10,0x80,0xa0,0x90,0x90,0x84,0xfe,0x80,0x90,0x90,0x60,0x40,0xa0,0x20,0x14,0x14,0xc, ++0x10,0x14,0xfe,0x10,0x7c,0x45,0x7e,0x44,0x7d,0x10,0xfe,0x11,0x10,0x10,0x10,0x10,0x20,0x20,0x50,0x50,0x88,0x16,0x94,0x50,0x10,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10, ++0x2,0x7f,0x48,0x48,0x48,0x7e,0x42,0x42,0x42,0x7e,0x48,0x48,0x4a,0x7f,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x13,0x12,0x12,0xff,0x12,0x17,0x1a,0x32,0xd3,0x12,0x12,0x14,0x14,0x5b,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x88,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x80,0x60,0x2f,0x8,0x10,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x0,0x7f,0x1,0x11,0x11,0x11,0x11,0x29,0x29,0x45,0x85,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0x10,0x10,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x48,0x78,0x47,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x10,0x10,0x17,0x18,0x10,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x2,0x4,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x1f,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x20,0xf0,0x20,0x20,0x20,0xa0,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10, ++0x0,0x23,0x18,0x8,0x80,0x6f,0x21,0x9,0x11,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x88,0x50,0x20, ++0x40,0x37,0x10,0x0,0x2,0xe2,0x22,0x22,0x25,0x29,0x20,0x28,0x30,0x20,0x1f,0x0,0x8,0xfc,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0x64,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x3f,0x20,0x3f,0x20,0x2f,0x21,0x22,0x27,0x20,0x20,0x3f,0x40,0x40,0xbf,0x0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0x20,0xf0,0x80,0x88,0xfc,0x80,0x84,0xfe,0x0, ++0x0,0x3f,0x2,0x2,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x20,0xf0,0x0,0x0,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x2,0x2,0x7f,0x2,0x2,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xf0,0x0,0x8,0xfc,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x10,0x13,0x10,0x10,0xfd,0x10,0x39,0x35,0x57,0x50,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7f,0x4,0x4,0x3f,0x8,0x8,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0x20,0xf0,0x20,0x24,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8, ++0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x22,0x22,0x3f,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xfc,0x10,0x50,0x20, ++0x0,0x2,0x3f,0x0,0x0,0xff,0x4,0x4,0x27,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x20,0x20,0xa0,0x12,0xa,0x6, ++0x0,0x0,0x7f,0x2,0x2,0x2,0x2,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0xff,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xfc,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x10,0x13,0x10,0x10,0xfd,0x10,0x15,0x19,0x37,0xd0,0x11,0x11,0x11,0x11,0x51,0x21,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0xf,0x11,0x11,0x21,0x41,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x3f,0x52,0x92,0x7f,0x12,0x12,0xff,0x10,0x1e,0x22,0x52,0xd,0x18,0xe0,0x0,0x8,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x10,0xfc,0x90,0x94,0xfe,0x10,0x10,0x10, ++0x10,0x10,0x17,0x20,0x20,0x60,0xa0,0x27,0x21,0x21,0x21,0x22,0x22,0x22,0x3f,0x20,0x0,0x8,0xfc,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x9,0x9,0x9,0x12,0x15,0x31,0x51,0x91,0x1f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0x0,0x8,0xfc,0x0,0xf8,0x48,0x28,0x8,0xfe,0x48,0x28,0x8,0xfc,0x8,0x28,0x10, ++0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x10,0x1c,0xf3,0x40,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x3f,0x1,0x7f,0x51,0x89,0x14,0x7,0xc,0x13,0xc,0xf2,0xf,0x2,0x4,0x8,0x30,0xf8,0x0,0xfe,0x12,0x24,0x10,0xe0,0x40,0x80,0x60,0x1e,0xe4,0x20,0x20,0xa0,0x40, ++0x0,0xb,0x7c,0x48,0x49,0x48,0x49,0x79,0x4f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x11,0x11,0x51,0x51,0x7b,0x54,0x90,0x1c,0x31,0xd1,0x12,0x12,0x14,0x10,0x11,0x10,0x0,0x0,0x0,0x4,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x10,0x10,0x10,0x1f,0x24,0x44,0x84,0x8,0x8,0x8,0x10,0x11,0x21,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x4,0x4,0x28,0x10, ++0x8,0x8,0xf,0x18,0x26,0x41,0x6,0x1a,0xe2,0x1f,0x2,0x2,0x4,0x4,0x8,0x30,0x0,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe,0xf4,0x10,0x10,0x10,0x10,0xa0,0x40, ++0x10,0x13,0x10,0x10,0x59,0x54,0x51,0x91,0x17,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x80,0x88,0xfc,0x88,0x8,0x8,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x43,0x32,0x12,0x3,0x0,0xe7,0x20,0x20,0x2f,0x20,0x20,0x28,0x31,0x22,0x4,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x4,0x4,0x3f,0x4,0x4,0x4,0xff,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20, ++0x2,0x7f,0x44,0x44,0x5f,0x51,0x51,0x5f,0x44,0x44,0x7f,0x0,0x24,0x22,0x42,0x80,0x4,0x7e,0x44,0x44,0x44,0x7c,0x40,0x40,0x44,0x44,0x3c,0x0,0x88,0x44,0x42,0x2, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x12,0x12,0x14,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x0,0xff,0x4,0x4,0x4,0x7f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x34,0x4,0x4,0xfc,0x4, ++0x0,0xb,0xfc,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4, ++0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x7d,0xa6,0x24,0x24,0x24,0x24,0x3c,0x24,0x1,0x40,0x40,0x40,0x7e,0x42,0x82,0x84,0x44,0x24,0x18,0x8,0x10,0x20,0x40,0x80,0x0, ++0x1,0x9,0x7d,0x49,0x4f,0x49,0x4b,0x7b,0x4d,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x6,0x38,0x20,0xe0,0x20,0xbe,0x68,0x28,0x28,0x28,0x28,0x48,0x48,0x88,0x8, ++0x0,0x8,0x7f,0x48,0x4b,0x48,0x4b,0x4a,0x4b,0x49,0x4f,0x78,0x4b,0x2,0x2,0x3,0x40,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8, ++0x0,0x7,0x7a,0x4a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4c,0x8,0x11,0x2,0x8,0xfc,0x8,0x8,0x10,0x20,0x3c,0x84,0x88,0x48,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x12,0x10,0x15,0x1a,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x54,0x54,0xa4,0x24,0x44,0xa8,0x10, ++0x10,0x10,0x57,0x50,0x7c,0x50,0x97,0x1a,0x32,0xd2,0x12,0x12,0x13,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x8c,0x4,0x4,0xfc,0x4, ++0x9,0x1c,0xf0,0x10,0x11,0xfc,0x13,0x38,0x35,0x51,0x53,0x95,0x11,0x10,0x10,0x10,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20, ++0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0xf0,0x10,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0, ++0x8,0x6,0x1,0x6,0x3a,0x2,0xff,0x4,0x8,0x1f,0x28,0xc8,0x8,0x8,0x0,0x0,0x30,0xc0,0x0,0xc0,0x38,0x0,0xfe,0x80,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80,0x80, ++0x0,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x9,0x31,0x0,0x12,0x51,0x50,0x90,0xf,0xf8,0x0,0x10,0x20,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0,0x0,0x84,0x92,0x12,0xf0, ++0x0,0x78,0x4f,0x48,0x49,0x7a,0x48,0x49,0x4e,0x7a,0x49,0x48,0x49,0x4a,0x48,0x98,0x40,0x44,0xfe,0xe0,0x58,0x48,0xa0,0x10,0x4e,0x48,0x50,0xe0,0x58,0x48,0x40,0xc0, ++0x2,0x2,0x2,0x7,0x4,0x8,0x10,0x24,0x43,0x1,0x0,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0, ++0x11,0x11,0x17,0x11,0x59,0x55,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x93,0x12,0x12,0x13,0x28,0x2a,0x46,0x8a,0x1,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x80,0x60,0x2c,0xa,0xf8, ++0x11,0x10,0x10,0x14,0x59,0x50,0x57,0x90,0x11,0x11,0x13,0x2d,0x29,0x45,0x80,0x0,0x4,0xd8,0x20,0xd8,0x4,0x80,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20, ++0x40,0x37,0x12,0x1,0x80,0x61,0x23,0x8,0x10,0x27,0xe0,0x3f,0x20,0x21,0x22,0x2c,0x1c,0xe0,0x48,0x50,0x80,0x10,0xf8,0x40,0x84,0xfc,0x40,0xfe,0xa0,0x10,0xe,0x4, ++0x20,0x18,0x8,0x0,0x81,0x61,0x22,0xb,0x14,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x8,0xc8,0x50,0x20,0x40,0x80,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x3f,0x24,0x22,0x24,0x28,0x24,0x27,0x28,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x8,0xf8,0x90,0xa0,0x98,0x88,0x80,0xf0,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x21,0x22,0x27,0x24,0xff,0x24,0x77,0x62,0xbf,0x24,0x27,0x24,0x24,0x2a,0x31,0x20,0x10,0x10,0x90,0x94,0xbe,0xc4,0xa4,0x28,0xe8,0x28,0x90,0x90,0xa8,0xa8,0x46,0x84, ++0x2,0x2,0x7f,0x4,0x4,0xb,0x10,0x22,0x1,0xff,0x5,0x9,0x38,0xca,0xc,0x8,0x40,0x28,0xfc,0x80,0xf0,0x84,0x7c,0x0,0x4,0xfe,0x8,0x10,0xa0,0x60,0x1c,0x8, ++0x1,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x20,0x2f,0x28,0x48,0x48,0x88,0x0,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0xe0,0x88,0xfc,0x88,0x88,0xa8,0x90,0x80, ++0x0,0x0,0xff,0x0,0x8,0x4,0x2,0x2,0x0,0x3,0xc,0x30,0x10,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x10,0x29,0x47,0x85,0x0,0x40,0x84,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0x2c,0xa,0xf8, ++0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x10,0x11,0x11,0x1d,0x21,0x22,0x7c,0x93,0x10,0x7c,0x10,0x10,0x14,0x19,0x12,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0, ++0x0,0x42,0x32,0x13,0x82,0x64,0x20,0xf,0x10,0x20,0xe0,0x21,0x21,0x22,0x24,0x28,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x7f,0x4,0x4,0x8,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x9,0x11,0x25,0x2,0x38,0xc0,0x0,0x10,0x20,0xc0,0x0,0x20,0x10,0xf8,0x8,0x20,0x10,0x8,0x8,0x0, ++0x0,0x79,0x4b,0x54,0x50,0x63,0x52,0x4b,0x4a,0x4b,0x68,0x51,0x42,0x44,0x41,0x40,0x40,0x50,0x4c,0x44,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x0,0x0,0x7e,0x2,0x43,0x24,0x14,0x14,0x8,0x14,0x12,0x22,0x40,0x80,0x1,0x2,0x40,0x50,0x48,0x40,0xfe,0x40,0x44,0x44,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x0,0x0,0x7b,0x4a,0x4d,0x78,0x48,0x48,0x7f,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1e,0xf2,0x40,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x30,0x28,0x24,0x24,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x51,0x5f,0x51,0x41,0x41,0x41,0x7f,0x0,0x8,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0xfe,0x0, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3e,0x22,0x3e,0x20,0x3e,0x20,0x3e,0x20,0x20,0x23,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x8,0xf8,0x0,0xf8,0x88,0x50,0x20,0xde,0x4, ++0x10,0x10,0x23,0xfe,0x25,0x50,0x51,0xfc,0x13,0x10,0x1d,0xf1,0x51,0x11,0x11,0x11,0x40,0x20,0xfe,0x22,0xfc,0x20,0xf8,0x20,0xfe,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x17,0x7c,0x54,0x54,0x57,0x54,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x0,0x7c,0xc4,0x44,0x28,0x90,0x28,0x28,0x46,0x84, ++0x10,0x10,0x10,0x55,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x7c,0x4,0x0,0x1,0x6,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4, ++0x8,0x8,0x8,0x17,0x10,0x32,0x51,0x90,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x44,0x2c,0x11,0x28,0x49,0x88,0x8,0x1b,0x28,0x48,0x88,0x8,0x8,0x51,0x26,0x20,0x20,0x28,0xfc,0x20,0x24,0xa8,0x20,0xfe,0x20,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0xff,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x4,0xfe,0x0,0x0,0x0,0x80,0x40,0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x3f,0x20,0x3f,0x22,0x27,0x24,0x27,0x24,0x27,0x24,0x27,0x22,0x47,0x4a,0x81,0x1e,0xfe,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x3e, ++0x7f,0x2,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x8,0xf,0x14,0x22,0x41,0x6,0x38,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c, ++0x0,0xf,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x20,0x20,0x27,0x24,0xfc,0x24,0x27,0x2d,0x35,0xe5,0x25,0x25,0x25,0x29,0xa1,0x40,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82, ++0x20,0x20,0x27,0x3c,0x44,0x84,0x7f,0x25,0x25,0xfd,0x25,0x25,0x2d,0x35,0x29,0x0,0x10,0x90,0x10,0x20,0x3e,0x42,0x94,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82, ++0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x10,0x10,0x10,0x20,0x24,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x11,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3f,0x0,0xe,0xf0,0x40,0x4,0x88,0x54,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x8,0x8,0x11,0x10,0x22,0x7e,0x8,0x13,0x20,0x7e,0x0,0x0,0x1e,0xe0,0x40,0x0,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x29,0x29,0x29,0x4f,0x48,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x8,0x4b,0x49,0x48,0x48,0x48,0x4b,0x1f,0x10,0x11,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x1e,0xf4,0x10,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x9,0x9,0x11,0x23,0x42,0xc,0x13,0x31,0x51,0x97,0x11,0x11,0x11,0x11,0x10,0x10,0x4,0x3e,0x0,0xc0,0x4,0x7e,0x88,0x8,0x8,0xc8,0x8,0x48,0x88,0x8,0x28,0x10, ++0x8,0x12,0x3f,0x23,0x32,0x2a,0x22,0xfe,0x22,0x32,0x2a,0x22,0x22,0x43,0x8a,0x4,0x40,0x20,0x4,0xfe,0x20,0x20,0x40,0x84,0xf8,0x10,0x20,0x40,0x88,0xfc,0x4,0x0, ++0x20,0x1b,0x48,0x41,0x41,0x41,0x5f,0x41,0x43,0x45,0x49,0x51,0x41,0x41,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x24,0xf4,0x4,0x84,0x44,0x34,0x14,0x4,0x4,0x14,0x8, ++0x40,0x20,0x2f,0x1,0x82,0x42,0x44,0x7,0x11,0x29,0xe6,0x22,0x25,0x24,0x28,0x30,0x0,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x54,0xfe,0x0,0x80,0x7e,0x0, ++0x0,0xf8,0x8,0xf,0x8,0x78,0x40,0x41,0x41,0x78,0x8,0x8,0x9,0xb,0x50,0x20,0x80,0x40,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0xfc,0x4,0x0, ++0x21,0x20,0x2f,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x88,0x51,0x22,0x52,0x4c,0x88,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xf8,0xa0,0xb0,0xa8,0xa8,0xa6,0xa0,0xa0, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x14,0x44,0x34,0x14,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x50,0x44,0x4c,0x50,0x40,0x44,0xfe,0x0, ++0x0,0x78,0x48,0x51,0x52,0x65,0x50,0x4a,0x4a,0x49,0x69,0x51,0x41,0x40,0x4f,0x40,0x40,0x40,0xa0,0x10,0x2e,0xf4,0x0,0x48,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0, ++0x0,0x9,0xfd,0x11,0x11,0x11,0x11,0x7d,0x11,0x11,0x10,0x1c,0xf0,0x41,0x2,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0x40,0xa0,0xa0,0x22,0x22,0x1e, ++0x8,0x8,0x9,0xff,0x8,0x9,0x7f,0x55,0x55,0x7f,0x49,0x7f,0x49,0x49,0x43,0x41,0x10,0x10,0x18,0x94,0x10,0x14,0xfe,0x10,0x10,0x10,0x28,0x28,0x28,0x44,0x44,0x82, ++0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x10,0x3f,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0,0x20,0x10,0xf8,0x8, ++0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x7f,0x49,0x49,0x4a,0x4c,0x49,0x98,0x40,0x88,0xfc,0x8,0xf8,0x8,0xfc,0x48,0x50,0xe0,0x60,0x50,0x4e,0x44,0x40,0x80, ++0x20,0x20,0x20,0x3d,0x26,0x48,0x41,0xa2,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x2,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x0,0x44,0x29,0x12,0x20,0x60,0x20,0x23,0x2c,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4, ++0x2,0x1,0x7f,0x49,0x89,0xf,0x11,0x21,0xff,0x2,0x2,0x2,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x78,0x48,0x51,0x52,0x64,0x51,0x4a,0x4a,0x4a,0x6b,0x52,0x42,0x42,0x43,0x42,0x80,0x80,0xf8,0x8,0x10,0x24,0x9e,0x4,0x4,0x4,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x88,0x50,0x20,0x10,0x4e,0x84,0x0, ++0x8,0x8,0x10,0x10,0x22,0x7f,0x8,0x10,0x23,0x7c,0x0,0x0,0x1c,0xe0,0x43,0x0,0x40,0x50,0x48,0x40,0x7c,0xc0,0x44,0x7e,0xc0,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x3f,0x22,0x22,0x22,0x3f,0x22,0x26,0x27,0x2a,0x2a,0x32,0x42,0x42,0x82,0x2,0x4,0xfe,0x0,0x4,0x7e,0xc4,0x44,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x44,0x7c,0x44, ++0x20,0x27,0x38,0x43,0x82,0x7b,0x21,0x27,0xf9,0x23,0x21,0x2f,0x29,0x33,0x2d,0x1,0x40,0xfc,0x0,0xb8,0xa8,0xb8,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4, ++0x0,0x3f,0x1,0x1,0xff,0x5,0x9,0x31,0xcf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x30,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0xe4,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20, ++0x12,0x1f,0x28,0x45,0x8,0x8,0xfe,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x1,0xff,0x0,0x3e,0x22,0x3e,0x4,0x7f,0x4,0x3f,0x4,0xff,0x9,0x18,0x6c,0x8,0x4,0xfe,0x0,0xf8,0x88,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xa0,0x70,0xe, ++0x2,0x42,0x32,0x12,0x8f,0x62,0x26,0x7,0x1a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44, ++0x2,0x2,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x0,0x0,0x0,0x3,0xc,0x70,0x0,0x0,0x20,0x20,0x40,0x80,0x0,0x8,0x8,0xf0,0x20,0x40,0x80,0x0,0x0,0x0, ++0x82,0x44,0x29,0xfe,0x10,0x11,0x7c,0x10,0x10,0xfe,0x11,0x12,0x10,0x20,0x21,0x40,0x0,0x4,0xde,0x44,0x44,0x54,0xcc,0x44,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88, ++0x22,0x11,0x10,0xff,0x8,0x10,0x3b,0x54,0x90,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x2,0x41,0x30,0x17,0x0,0x0,0xf3,0x10,0x10,0x10,0x1f,0x10,0x14,0x18,0x10,0x0,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x10,0x11,0x11,0xff,0x11,0x31,0x39,0x55,0x91,0x11,0x0,0x12,0x51,0x50,0x90,0xf,0x8,0xfc,0x8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x0,0x0,0x84,0x92,0x12,0xf0, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x2,0x2,0x20,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x2,0x1,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x40,0x84,0xfe,0x0,0x0,0x0,0x0, ++0x0,0xb,0xfc,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x0,0x0,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2, ++0x8,0x8,0x7f,0x8,0x8,0xff,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x8,0x8,0x7,0x20,0x28,0xfc,0x20,0x24,0xfe,0x40,0x20,0xf0,0x2e,0x24,0xe0,0x20,0x8,0x8,0xf8, ++0x11,0x11,0x12,0x17,0xfc,0x17,0x30,0x39,0x56,0x51,0x96,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40, ++0x9,0x9,0xa,0x17,0x1c,0x37,0x50,0x91,0x16,0x10,0x17,0x10,0x11,0x16,0x10,0x10,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x80,0x44,0x68,0xb0,0x30,0x68,0xa6,0x20,0xa0,0x40, ++0x2,0x4,0x8,0x7f,0x40,0x40,0x4f,0x48,0x48,0x48,0x48,0x4f,0x48,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8, ++0x8,0xf,0x10,0x3f,0x61,0xa1,0x3f,0x6,0x19,0x62,0xc,0x31,0x6,0x18,0x62,0x1,0x0,0xe0,0x48,0xfc,0x8,0x8,0xf8,0x10,0x20,0xc0,0xc0,0xa0,0x90,0x8e,0x84,0x0, ++0x8,0xff,0x9,0x3f,0x1,0xff,0x1,0x3f,0x1,0x21,0x25,0x25,0x25,0x29,0x41,0x1,0x24,0xfe,0x20,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8, ++0x0,0x5,0xfe,0x10,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8, ++0x1f,0x1,0x7f,0x51,0x89,0x11,0x5,0x3,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xf0,0x0,0xfe,0x12,0x24,0x10,0x40,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x8,0x49,0x2a,0x9,0x7f,0x41,0x41,0x7f,0x41,0x41,0x7f,0x41,0x41,0x41,0x45,0x42,0x4,0x4,0x4,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x0,0x8,0x7f,0x48,0x48,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x10,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x3e,0x22,0x3e,0x0,0xff,0x2,0x1f,0x10,0x11,0x12,0x4,0x78,0x0,0x3e,0x22,0x3e,0xf8,0x88,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x10,0x90,0x40,0x3c,0x0,0xf8,0x88,0xf8, ++0x10,0x11,0x10,0x3c,0x21,0x41,0xbd,0x11,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x4,0x14,0x8, ++0x0,0x42,0x31,0x10,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x22,0x22,0x22,0x22,0x40,0x48,0x50,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x8,0x28,0x10, ++0x2,0x1,0x7f,0x41,0x89,0x5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x0,0x0,0xfe,0x2,0x24,0x50,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20, ++0x2,0x41,0x30,0x11,0x82,0x6f,0x20,0x9,0x13,0x25,0xe9,0x21,0x21,0x21,0x21,0x21,0x8,0xb0,0x40,0xb0,0x48,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x8,0x7c,0x4f,0x48,0x48,0x78,0x4b,0x48,0x4b,0x48,0x78,0x49,0x1,0x2,0xc,0x80,0x88,0xfc,0x80,0x50,0x22,0xd2,0xe,0x0,0xfc,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x1,0x1,0x1,0x1,0x1,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x1,0x1,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x10,0x8,0x4,0x4,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0x3f,0x10,0x21,0x5f,0x81,0x1,0x5,0x2,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x0,0xe0,0x80,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x1,0x11,0x9,0x5,0x1,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x0,0x0,0x7b,0x48,0x4f,0x48,0x4b,0x48,0x4a,0x4a,0x4a,0x7b,0x42,0x4,0x8,0x0,0x40,0x48,0xfc,0x48,0xfe,0x48,0xf8,0x40,0x48,0xe8,0xd8,0x58,0x48,0x48,0x48,0x40, ++0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x48,0x7c,0xa0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4, ++0x10,0x8,0x2,0xff,0x24,0x22,0x41,0xa4,0x14,0x8,0x14,0x24,0x22,0x42,0x80,0x1,0x20,0x20,0x20,0x24,0x7e,0x84,0x44,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x46,0x84, ++0x21,0x21,0x27,0x21,0xff,0x21,0x77,0x69,0xa1,0x20,0x2f,0x20,0x20,0x20,0x23,0x2c,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x4,0x4,0x24,0x27,0x24,0x24,0x24,0x27,0xfc,0x0,0x0,0x1f,0x0,0x0,0x7f,0x0,0x40,0x40,0x40,0x4c,0x70,0x40,0x42,0x42,0x3e,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0, ++0x1,0x3f,0x21,0x3f,0x21,0x3f,0x10,0x10,0x3f,0x48,0xc8,0x54,0x40,0x7c,0x5,0x2,0x20,0xa0,0x20,0x3e,0x42,0x94,0x10,0x90,0xd0,0x90,0x90,0xa8,0xa8,0xa4,0x44,0x82, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x54,0x55,0x7e,0x51,0x15,0x1d,0xf5,0x40,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x80,0x80,0xfe,0x22,0x22,0x52,0x2,0xfa,0xa,0x4, ++0x28,0x28,0xfe,0x29,0x38,0x10,0x7f,0x54,0x54,0x7c,0x11,0xfe,0x10,0x10,0x13,0x10,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x20,0x20,0xfb,0x20,0x20,0x24,0x24,0x24,0x29,0x21,0x21,0x22,0x24,0x20,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x17,0xf8,0x12,0x11,0x18,0x37,0xd0,0x10,0x10,0x11,0x11,0x52,0x24,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x12,0x12,0x13,0x16,0xfb,0x12,0x13,0x1a,0x33,0xd2,0x17,0x11,0x11,0x11,0x52,0x24,0x80,0x48,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xf8,0x10,0x3c,0x4,0x14,0x8, ++0x2,0x7f,0x4,0x24,0x24,0x45,0x7f,0xc,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x8,0x14,0x22,0x41,0xbe,0x8,0x8,0x7f,0x8,0x2a,0x29,0x49,0x8,0x28,0x10,0x8,0x8,0x8,0x48,0x28,0x8,0x48,0x28,0xe,0xf8,0x8,0x8,0x8,0x8,0x8,0x8, ++0x8,0x7c,0x48,0x48,0x4b,0x78,0x48,0x4a,0x4a,0x7a,0x4d,0x49,0x49,0x4a,0x4c,0x98,0x80,0x80,0x80,0x88,0xfc,0x88,0x88,0x8c,0x8a,0x8a,0x8,0x8,0x8,0x8,0x28,0x10, ++0x4,0x24,0x17,0x14,0x4,0x5,0xf6,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x7f,0x40,0x88,0x8,0xf,0x8,0x8,0xf,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x8,0x50,0x20, ++0x10,0x10,0x10,0x17,0xfc,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x18,0x10,0x13,0x20,0x28,0x24,0xfe,0x20,0xa0,0xa0,0xa4,0xe4,0xa8,0xa8,0x90,0xb0,0x52,0x8a,0x6, ++0x20,0x22,0x3f,0x48,0x88,0xa,0xff,0x8,0x28,0x2e,0x28,0x28,0x2f,0xf8,0x40,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x64,0x54,0x48,0x40,0x40, ++0x20,0x3e,0x44,0xbe,0x2a,0x3e,0x2a,0x3f,0x2a,0x41,0x9f,0x11,0x1f,0x1,0x7f,0x20,0x0,0xfc,0x24,0x4c,0xd0,0x7c,0x90,0xfe,0x10,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x4, ++0x22,0x22,0x27,0x29,0xbf,0xaa,0xaa,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x2a,0x31,0x20,0x4,0x7e,0xa4,0x24,0xa4,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0x88,0x8, ++0x2,0x42,0x32,0x12,0x82,0x62,0x2f,0xa,0x12,0x22,0xe2,0x22,0x22,0x22,0x23,0x20,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x78,0x40,0x8,0xfc,0x0, ++0x40,0x27,0x24,0x9,0x81,0x61,0x21,0x9,0x11,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0xfc,0x0,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x14,0x8, ++0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x28,0x28,0x3f,0x21,0x2a,0x34,0x28,0x12,0x1,0x8,0x88,0xc8,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x10, ++0x3f,0x20,0x3f,0x20,0x24,0x22,0x2f,0x28,0x28,0x2f,0x28,0x28,0x4f,0x48,0x88,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10, ++0x4,0xff,0x14,0x8,0x7f,0x22,0x14,0xff,0x8,0xa,0x7f,0x2a,0x49,0x88,0x29,0x10,0x40,0xfe,0x40,0x6,0x78,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8, ++0x8,0x8,0xff,0x8,0x8,0x0,0x2,0x1,0x50,0x50,0x50,0x90,0x10,0x10,0xf,0x0,0x20,0x24,0xfe,0x20,0x20,0x0,0x0,0x0,0x84,0x82,0x2,0x2,0x8,0x8,0xf8,0x0, ++0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0x7c,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0xfc,0x0,0x88,0x50,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20, ++0x2,0x7,0x38,0x20,0x20,0x20,0x3f,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x85,0x2,0x40,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0, ++0x10,0xa,0x7f,0x0,0x22,0x14,0xff,0xa,0x7f,0x8,0xa,0x29,0x48,0x89,0x28,0x10,0x8,0x1c,0x60,0x40,0x40,0x44,0xfe,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x8, ++0x10,0x10,0x11,0x11,0x59,0x55,0x51,0x91,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x2,0x1,0x0,0x0,0x8,0x8,0x28,0x28,0x28,0x48,0x88,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x80,0xc0,0x80,0x0,0x8,0x4,0x2,0x2,0x2,0x0,0x10,0x10,0xf0,0x0, ++0x8,0x8,0xf,0x10,0x10,0x37,0x50,0x90,0x17,0x10,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x44,0xfe,0x0,0x8,0xfc,0x0,0x8,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x57,0xf8,0x40,0x0,0x0,0x10,0x92,0x54,0x54,0x10,0xfe,0x10,0x10,0x14,0xfe,0x10,0x90,0x10,0x10,0x10,0x10, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x1,0x21,0x3f,0x21,0x41,0xbf,0x1,0x1,0xff,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x8,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x0,0x7b,0x4a,0x4b,0x4a,0x7b,0x48,0x4a,0x4b,0x7c,0x48,0x4b,0x48,0x48,0x8f,0x18,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x2,0x45,0x29,0x11,0x29,0x49,0x88,0x9,0x19,0x2a,0x4c,0x89,0x8,0x8,0x57,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x92,0x13,0x14,0x18,0x13,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x2,0x2,0x21,0x11,0x19,0x9,0x0,0x0,0xff,0x0,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x44,0xfe,0x0,0x0,0x40,0x20,0x18,0xc,0x4, ++0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x84,0xc4,0x4,0x24,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x14,0x8, ++0x1,0x7f,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x23,0x41,0x7f,0x1,0x1,0xff,0x0,0x4,0x84,0x24,0x24,0x24,0xa4,0x24,0x24,0x4,0x14,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x1,0x80,0xc4,0xc,0x10,0x20,0x44,0xc,0xd0,0x20,0x42,0x6,0x8,0x10,0x20,0x40,0x80, ++0x0,0x7f,0x12,0x12,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x22,0x22,0x42,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0xb,0x10,0x20,0x40,0x8,0x17,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xc2,0x83,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xa0,0xfc,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x1,0x1,0x3f,0x1,0x1,0xff,0x8,0x4,0x3f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x0,0x10,0xf8,0x0,0x4,0xfe,0x20,0x50,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xc1,0x1f,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x12,0x12,0x5b,0x54,0x54,0x98,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x87,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x14,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x50,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x0,0x20,0x50,0x48,0x44,0x42,0x41,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x0,0x0,0x10,0x10,0x24,0x24,0x44,0x84,0x4,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x0, ++0x8,0x7c,0x49,0x49,0x4a,0x7c,0x49,0x4a,0x4a,0x7a,0x4b,0x4a,0x4b,0x4a,0x88,0x18,0x80,0x80,0x0,0xfe,0x2,0x2,0x12,0xaa,0x4a,0xaa,0x1a,0xa,0xfa,0x2,0x14,0x8, ++0x8,0x8,0x10,0x1f,0x20,0x40,0x90,0x28,0x25,0x22,0x25,0x28,0x20,0x3f,0x20,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x44,0xa4,0x24,0x24,0x24,0xa4,0x24,0xe4,0x14,0x8, ++0x0,0x42,0x31,0x14,0x84,0x64,0x24,0xc,0x14,0x25,0xe5,0x26,0x24,0x27,0x24,0x20,0x0,0x8,0x10,0x94,0xa4,0x44,0x44,0xa4,0xa4,0x14,0xc,0xc,0x4,0xfc,0x4,0x0, ++0x10,0x10,0x10,0xfd,0x11,0x13,0x25,0x21,0x51,0x51,0x91,0x25,0x45,0x7d,0x1,0x1,0x40,0xa0,0x88,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x10,0x10,0x22,0x7f,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x48,0x44,0x80,0x80,0x98,0xe0,0x84,0x84,0x7c,0x80,0x98,0xe0,0x84,0x84,0x7c,0x0,0x88,0x46,0x2, ++0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0xe0,0x50,0x50,0x48,0x46,0x44,0x40,0x40,0x40, ++0x11,0x11,0x11,0x21,0x2a,0x6c,0xa9,0x2e,0x28,0x2b,0x28,0x28,0x23,0x20,0x21,0x26,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x2e,0xc0,0x10,0x60,0x88,0x10,0x60,0x80,0x0, ++0x8,0x4,0x2,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x11,0x2f,0x42,0x84,0x3f,0x0,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0x14,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x80,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x88,0x50,0x20, ++0x0,0x8,0x7f,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x48,0x48,0x7f,0x48,0x1,0x2,0xc,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x50,0x48,0xfe,0xa0,0x10,0xe,0x4, ++0x10,0x13,0x1c,0x20,0x27,0x7c,0x91,0x12,0x7d,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10, ++0x0,0x3f,0x1,0x1,0x7f,0x5,0x9,0x31,0xcf,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x78,0x80,0x0,0x8,0xfc,0x40,0x30,0xe,0xe4,0x20,0x40,0x70,0x10,0x10,0xa0,0x40, ++0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x13,0x20,0x20,0x4f,0xf8,0x11,0x22,0x45,0xf8,0x0,0x0,0x19,0xe1,0x42,0x4,0x18,0xe0,0x40,0x48,0xfc,0xe0,0x50,0x4e,0xf8,0x88,0x90,0x9c,0x4,0x4,0x28,0x10, ++0x20,0x20,0x20,0x27,0xfc,0x24,0x27,0x24,0x24,0x24,0x3e,0xe5,0x48,0x8,0x17,0x20,0x88,0xfc,0x80,0xfe,0x82,0xf0,0x84,0xfc,0x0,0xa0,0xa8,0xb0,0xa0,0xa4,0xfe,0x0, ++0x0,0x0,0x0,0x3f,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x40,0x40,0x83,0x0,0x80,0xa0,0x90,0xfc,0x80,0x80,0x84,0x44,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x10, ++0x2,0x3,0x2,0x3f,0x22,0x23,0x3e,0x23,0x20,0x22,0x32,0x2a,0x4a,0x42,0xbf,0x0,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x8,0xf8,0x0,0x40,0x48,0x58,0x60,0x40,0xfe,0x0, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x7a,0x4c,0x4,0xb,0x0,0x48,0x7c,0x40,0xfe,0x42,0x70,0xc4,0x7c,0x0,0x50,0x54,0xd8,0x50,0x54,0xfe,0x0, ++0x4,0xb,0x10,0x20,0x41,0x5,0x9,0x11,0x21,0x41,0x5,0x9,0x11,0x20,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2, ++0x8,0x8,0x10,0x21,0x42,0xc,0x13,0x30,0x50,0x97,0x10,0x11,0x12,0x14,0x11,0x10,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x2,0x42,0x33,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x8,0x7f,0x9,0x7f,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x20,0xfc,0x20,0xfc,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xae,0xa2,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0x0,0x44,0x44,0xaa,0xaa,0xaa,0x92,0x92,0xaa,0xaa,0xa6,0xc6,0x82,0xfe,0x82, ++0x8,0x8,0x14,0x12,0x21,0x5e,0x88,0x8,0x7e,0x8,0x2c,0x2a,0x4a,0x8,0x29,0x12,0x0,0x0,0x8,0xfc,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x10,0x10,0x10,0x10,0xfe,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x41,0x80,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xfa,0x2,0xfe,0x0, ++0x1,0x0,0x3f,0x20,0x2f,0x20,0x21,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0x82,0x1,0x0,0x88,0xfc,0x0,0xf8,0x20,0x40,0x80,0xfc,0x88,0x90,0x80,0x80,0x80,0x80,0x0, ++0x2,0x1,0xff,0x2,0x4,0x1f,0x1,0x2,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x4,0xfe,0x0,0x10,0xe0,0x0,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x10,0x10,0x11,0x13,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x10,0x80,0x80,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0,0x0, ++0x10,0xfe,0x22,0x64,0x18,0x14,0x62,0x4,0x1f,0x3,0xc,0x3f,0x1,0x11,0x65,0x2,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x20,0xc0,0x0,0x10,0xf8,0x0,0x30,0x8,0x0, ++0x10,0x13,0x10,0x11,0xfd,0x25,0x26,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x0,0xfe,0x42,0x70,0x40,0x40,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x4,0xc, ++0x10,0x10,0x23,0x20,0x48,0xf8,0x17,0x21,0x43,0xfd,0x9,0x1,0x1d,0xe1,0x41,0x1,0x40,0x44,0xf8,0x50,0x60,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x23,0x20,0x48,0xff,0x11,0x20,0x42,0xf9,0x7,0x0,0x1c,0xe0,0x41,0x2,0x40,0x50,0xf8,0x40,0x40,0xfc,0x24,0xa8,0x20,0x24,0xfe,0x40,0x60,0x90,0xc,0x4, ++0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7f,0x8,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x0,0x7b,0x4a,0x4c,0x4b,0x48,0x4b,0x4a,0x4b,0x4a,0x7b,0x48,0x0,0x7,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0, ++0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x4,0x8,0x1f,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x20,0xf0,0x10,0x84,0x82,0x12,0xf0,0x0, ++0x20,0x10,0x14,0xfe,0x21,0x22,0x3c,0x24,0x24,0x24,0x24,0x24,0x44,0x55,0x8a,0x4,0x80,0x84,0xfe,0x80,0x0,0xfe,0x22,0x24,0xa0,0xa8,0xbc,0xa0,0xa0,0x60,0x26,0x1c, ++0x2,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x3f,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0x20,0xc0,0x0,0x0,0x0,0x10,0x10,0xf8,0x8, ++0x0,0x42,0x32,0x13,0x2,0x4,0xf7,0x10,0x10,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0,0x6,0xfc, ++0x1,0x0,0x3f,0x24,0xa4,0x6f,0x32,0x2f,0x6a,0xaf,0x2a,0x2f,0x40,0x43,0x9c,0x8,0x0,0x84,0xfe,0x44,0x28,0x7c,0x10,0x90,0xfc,0x90,0x94,0xfe,0x10,0x90,0x10,0x10, ++0x0,0x8,0x7c,0x4f,0x48,0x48,0x79,0x4a,0x4b,0x78,0x48,0x49,0x4a,0x7b,0x48,0x0,0x80,0x40,0x44,0xfe,0x40,0x80,0x8,0x10,0xe0,0x40,0x80,0x0,0x8,0xfc,0x4,0x0, ++0x10,0x10,0x20,0x20,0x45,0xfa,0x11,0x21,0x41,0xfd,0x1,0x1,0x1d,0xe0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x28,0x28,0xfe,0x29,0x29,0x3b,0x15,0x7d,0x55,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0xa0,0xa0,0xa0,0x20,0x24,0x28,0x30,0x20,0x60,0xa0,0x20,0x22,0x22,0x22,0x1e,0x0, ++0x8,0x8,0xff,0x8,0x20,0x7c,0x45,0x44,0x7c,0x43,0x7c,0x44,0x45,0x7c,0x40,0x0,0x20,0x24,0xfe,0x20,0x40,0x28,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20, ++0x22,0x11,0x11,0x0,0x7f,0x40,0x80,0x1f,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x8,0x8,0x10,0x20,0xfe,0x2,0x4,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x2,0x1,0x1,0x7f,0x40,0x80,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0xfe,0x2,0x84,0x80,0x80,0x40,0x40,0x40,0x20,0x10,0xe,0x4,0x0, ++0x1f,0x1,0x7f,0x41,0x9d,0x1,0x1d,0x1,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0xf0,0x0,0xfe,0x2,0x74,0x0,0x70,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x1,0x1,0x2,0x3f,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xff,0x0,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x2,0x3f,0x22,0x22,0x3e,0x0,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x14,0x23,0xc1,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8, ++0x0,0x3f,0x1,0xff,0x1,0x3f,0x29,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x22,0x40,0x38,0xc0,0x4,0xfe,0x0,0xf8,0x28,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x48,0x24,0x4, ++0x10,0x17,0x24,0x24,0x47,0x94,0x25,0x65,0xa5,0x25,0x25,0x25,0x29,0x29,0x31,0x21,0x1c,0xe0,0x20,0x24,0xfe,0x20,0xfc,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x8,0x8,0xf,0x10,0x10,0x2f,0x48,0x88,0xf,0x8,0x8,0xf,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x28,0x10, ++0x2,0x42,0x33,0x14,0x4,0x9,0xf1,0x11,0x11,0x11,0x11,0x13,0x15,0x18,0x10,0x0,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8, ++0x0,0x3f,0x0,0x0,0x1f,0x0,0x0,0x3f,0x0,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x9,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x1d,0xe5,0x45,0x15,0xa,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4, ++0x0,0x41,0x31,0x12,0x2,0x4,0xf9,0x14,0x12,0x12,0x11,0x11,0x11,0x28,0x44,0x3,0x0,0x24,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x24,0x24,0x24,0x0,0x6,0xfc, ++0x0,0x4,0xfe,0x21,0x21,0x3f,0x45,0x45,0xa5,0x19,0x9,0x11,0x21,0x40,0x80,0x0,0x80,0x84,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x14,0xf4,0x14,0x4,0x14,0x8, ++0x0,0x47,0x30,0x11,0x81,0x61,0x21,0x9,0x17,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0, ++0x1,0x41,0x31,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x16,0x1a,0x14,0x8,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4, ++0x0,0x47,0x30,0x11,0x1,0x1,0xf1,0x11,0x17,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0xa,0xa,0x6,0x0, ++0x0,0x40,0x3f,0x21,0x2,0x4,0xe4,0x27,0x3c,0x24,0x25,0x24,0x2c,0x54,0x88,0x7,0x10,0x10,0x10,0x10,0x10,0x10,0x58,0x54,0x94,0x92,0x12,0x50,0x20,0x0,0x6,0xfc, ++0x0,0x47,0x30,0x11,0x1,0x1,0xf7,0x11,0x11,0x11,0x11,0x11,0x11,0x29,0x44,0x3,0x10,0xf8,0x10,0x10,0x10,0x50,0xf0,0x10,0x10,0x10,0x12,0xa,0x6,0x0,0x6,0xfc, ++0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x40,0x40,0x9f,0x0,0x8,0xfc,0x80,0x80,0x80,0x80,0x88,0xfc,0x80,0xa0,0x98,0x88,0x80,0x84,0xfe,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x10,0x10,0x10,0x50,0x20,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x4,0xfe,0x9,0x29,0x29,0x49,0xff,0x9,0x19,0x29,0x48,0x88,0xb,0x8,0x28,0x10,0x40,0x88,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x2,0xff,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0xfe,0x92,0x10,0x11,0x10,0x10,0x10,0x20,0x44,0xfe,0x84,0xa4,0x84,0x94,0x88,0x80,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x0,0xb,0x7c,0x48,0x48,0x49,0x49,0x4b,0x48,0x48,0x48,0x79,0x46,0x0,0x0,0x0,0x8,0xfc,0x10,0x90,0x90,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x50,0x20, ++0x0,0x20,0x10,0xc,0x4,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x10,0x30,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0xff,0x8,0x0,0x3f,0x8,0x8,0x10,0x3f,0x0,0x3,0xc,0x30,0xc0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x20,0x24,0xfe,0xa0,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x7f,0x0,0x10,0x10,0x20,0x20,0x7f,0x1,0x2,0x4,0x8,0x30,0xc0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x10,0x11,0x14,0x7e,0x54,0x55,0x55,0x57,0x7c,0x10,0x14,0x1c,0xf4,0x41,0x2,0x0,0x8,0xfc,0x8,0x88,0x88,0x8,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x28,0x10, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x20,0x2f,0x40,0x5f,0x80,0x0,0x8,0x8,0xf8,0x0,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x80,0xf8,0x80,0xfe,0x0, ++0x10,0x1f,0x22,0x42,0x8f,0x14,0x24,0x7f,0xa0,0x2f,0x28,0x28,0x28,0x2f,0x28,0x20,0x80,0xc4,0x3e,0x0,0x84,0xfe,0x88,0xe8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10, ++0x0,0x43,0x32,0x12,0x83,0x62,0x22,0xb,0x12,0x22,0xe3,0x22,0x24,0x24,0x2b,0x30,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x2,0x7f,0x4,0x24,0x24,0x45,0xfe,0x4,0xc,0x14,0x24,0x44,0x84,0x4,0x14,0x8,0x40,0x50,0x54,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x0,0xb,0x7c,0x48,0x48,0x48,0x4c,0x4a,0x4a,0x49,0x48,0x78,0x48,0x0,0x7,0x0,0x8,0xfc,0x90,0x90,0x90,0x90,0x92,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0, ++0x0,0x7f,0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x4c,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x47,0x20,0x22,0x2,0x4,0xef,0x20,0x20,0x20,0x24,0x29,0x32,0x24,0x8,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20, ++0x0,0x7f,0x1,0x11,0x11,0x11,0xff,0x10,0x1f,0x10,0x1f,0x0,0x29,0x24,0x40,0x0,0x8,0xfc,0x0,0xf0,0x0,0x4,0xfe,0x0,0xf0,0x4,0xfe,0x4,0x24,0x94,0x14,0x8, ++0x0,0x17,0x7c,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x75,0x56,0x4,0x7,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4, ++0x20,0x1b,0x49,0x41,0x5f,0x42,0x44,0x49,0x5f,0x69,0x4f,0x49,0x4f,0x41,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x84,0x44,0x24,0xfc,0x24,0xe4,0x24,0xe4,0x14,0xf4,0x8, ++0x20,0x27,0x24,0x24,0x2c,0xb4,0xa7,0xa4,0x24,0x24,0x24,0x25,0x56,0x4c,0x87,0x4,0x4,0xfe,0x4,0x44,0x44,0x44,0xfc,0x44,0x44,0xa4,0x94,0xc,0xc,0x4,0xfc,0x4, ++0x0,0x40,0x37,0x10,0x81,0x62,0x27,0xa,0x12,0x23,0xe2,0x22,0x23,0x20,0x20,0x20,0x40,0x48,0xfc,0xa0,0x10,0x8,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e, ++0x8,0x8,0x8,0x7f,0x8,0x8,0xf,0x78,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x0,0x7f,0x2,0x12,0xa,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x80,0x8,0xfc,0x40,0x48,0x50,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0xfd,0x10,0x10,0x20,0x20,0x7c,0xa7,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8, ++0x20,0x20,0x27,0x20,0xf9,0xa9,0xaa,0xaf,0xa8,0xf8,0x22,0x29,0x39,0xea,0x44,0x8,0x0,0x6,0xb8,0x88,0x8,0x8,0x2e,0xa8,0xa8,0xa8,0xa8,0x3e,0x0,0x86,0x7c,0x0, ++0x1,0x21,0x21,0x21,0x3f,0x0,0xff,0x2,0x4,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x8,0x8,0x8,0xf8,0x0,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x0,0x7d,0x4,0x8,0x11,0x21,0x7d,0x5,0x5,0x49,0x29,0x10,0x28,0x47,0x80,0x8,0x1c,0xe0,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc,0x0, ++0x2,0x1,0xff,0x0,0x0,0x1f,0x0,0x1f,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x0,0x20,0xf0,0x0,0xf0,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x9,0x7f,0x22,0x14,0x7f,0x44,0x48,0x52,0x44,0x48,0x52,0x44,0x48,0x90,0x21,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0xa4,0xa4,0xa4,0xa4,0x48,0x86,0x2, ++0x20,0x1b,0x4a,0x42,0x47,0x48,0x51,0x4e,0x48,0x48,0x4e,0x48,0x48,0x4f,0x40,0x40,0x4,0xfe,0x4,0x4,0xc4,0x84,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x14,0x8, ++0x1,0x1,0x11,0x11,0x22,0x4,0x19,0x61,0x1,0x11,0x11,0x22,0x2,0x4,0x18,0x60,0x0,0x8,0x18,0x20,0xc0,0x30,0xc,0x4,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4, ++0x0,0x41,0x31,0x11,0x81,0x61,0x22,0xc,0x10,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xe,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x7f,0x2,0xc,0x31,0xdf,0x11,0x11,0x1f,0x11,0x11,0x1f,0x11,0x1,0x0,0x0,0x8,0xfc,0x80,0x60,0x1e,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x14,0x4,0xfc, ++0x10,0x10,0x10,0x13,0xfc,0x11,0x13,0x1e,0x32,0xd3,0x12,0x12,0x13,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0xa0,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x42,0x42,0x3e, ++0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x7a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0, ++0x10,0x14,0x23,0x41,0x80,0x14,0x23,0x61,0xa0,0x21,0x22,0x2e,0x22,0x22,0x22,0x22,0x8,0x7c,0x0,0x0,0x0,0x4,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x40,0x20,0x2f,0x8,0x90,0x67,0x20,0xf,0x14,0x27,0xe4,0x27,0x20,0x21,0x23,0x24,0x80,0x40,0xfe,0x2,0x4,0xfc,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x0,0x10,0xc,0x4, ++0x10,0x10,0x10,0xff,0x11,0x13,0x7d,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x13,0x1e,0xf2,0x42,0x2,0x3,0x0,0x8,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x48,0xc8,0x30,0x48,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x14,0x17,0xf0,0x17,0x14,0x14,0x34,0xc7,0x0,0x48,0x44,0x80,0x40,0x44,0xfe,0x40,0x50,0xd0,0x12,0xdc,0x50,0x52,0x52,0xce,0x0,0x88,0x46,0x2, ++0x0,0x3f,0x20,0x20,0x20,0x20,0x3f,0x20,0x20,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x80,0xa0,0x90,0x94,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0xe,0x4, ++0x4,0x7f,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x24,0x24,0x3c,0x25,0x2,0x4,0x8,0xfc,0x8,0x28,0x28,0x28,0x48,0x48,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0, ++0x0,0x3f,0x24,0x24,0x29,0x29,0x3b,0x2d,0x29,0x29,0x29,0x29,0x49,0x49,0x89,0x9,0x8,0xfc,0x80,0xa0,0x14,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0, ++0x0,0x8,0x7f,0x48,0x48,0x4b,0x48,0x4b,0x48,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x40,0x24,0xfe,0x0,0x8,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x1,0x3f,0x8,0x4,0x3f,0x20,0x20,0x23,0x2c,0x20,0x23,0x4c,0x40,0x83,0x1c,0x0,0x10,0xf8,0x20,0x44,0xfe,0x20,0xc0,0x10,0x20,0xc0,0x8,0x10,0x60,0x80,0x0, ++0x10,0x10,0x10,0x15,0x5a,0x50,0x53,0x92,0x12,0x12,0x13,0x2a,0x26,0x46,0x83,0x2,0x80,0x80,0xfc,0x8,0x10,0x84,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4, ++0x2,0x1,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x2,0xff,0x4,0xc,0x3,0xc,0x30,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x40,0x80,0x60,0x18, ++0x0,0x40,0x33,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x12,0x12,0x16,0x1a,0x14,0x9,0x40,0x24,0xfe,0x88,0x50,0xfe,0x10,0x20,0x48,0x90,0x24,0x44,0x88,0x10,0x60,0x80, ++0x8,0xfc,0x8,0x48,0x49,0x4a,0x4d,0x48,0x7c,0x6,0x5,0x1d,0xe5,0x44,0x17,0x8,0x40,0x40,0xa0,0xa0,0x10,0xe,0xf4,0x0,0x48,0x48,0x48,0x50,0x10,0x24,0xfe,0x0, ++0x4,0xfe,0x20,0x21,0x3d,0x25,0x25,0x45,0x65,0x9b,0x8,0x10,0x20,0x40,0x81,0x2,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4, ++0x1,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x8,0x30,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8, ++0x1,0x1f,0x11,0x11,0xff,0x4,0xa,0x3f,0xca,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x10,0xf8,0x10,0x14,0xfe,0x40,0x30,0xee,0x24,0xa0,0x44,0xfe,0x4,0xc4,0x14,0x8, ++0x8,0x1c,0xf0,0x11,0x15,0xff,0x11,0x39,0x35,0x53,0x50,0x90,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4, ++0x10,0x13,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x91,0x11,0x12,0x14,0x11,0x10,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10, ++0x10,0x13,0x10,0x10,0xfc,0x10,0x17,0x18,0x30,0xd0,0x11,0x11,0x12,0x14,0x51,0x20,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10, ++0xa,0x9,0x8,0x17,0x10,0x30,0x53,0x90,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x1,0x0,0x1f,0x10,0x97,0x50,0x50,0x11,0x37,0x51,0xd1,0x12,0x22,0x24,0x49,0x0,0x0,0x84,0xfe,0x0,0xf0,0x40,0x80,0x4,0xfe,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x8,0x4,0x2,0x7f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x20,0x40,0x88,0xfc,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x2,0x41,0x30,0x17,0x80,0x60,0x23,0x8,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x8,0x10,0xa0,0xfc,0x40,0x40,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x7d,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x8,0x5,0x3f,0x2,0x1f,0x2,0x7f,0x2,0x2,0x2,0x0,0xfc,0x0,0xf8,0x0,0xf8,0x88,0x8,0xe8,0x8,0xc8,0x8,0xfa,0xa,0x4,0x0, ++0x10,0x11,0x12,0x24,0x24,0x64,0xa4,0x24,0x24,0x24,0x25,0x26,0x24,0x20,0x20,0x20,0x80,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40,0x40, ++0x1,0x0,0x1f,0x11,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x1f,0x20,0x20,0x40,0x0,0x0,0x84,0xfe,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x8,0x4,0x2,0x7f,0x1,0x3f,0x1,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x20,0x40,0x88,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40, ++0x12,0x11,0x10,0x17,0xfc,0x10,0x3b,0x34,0x50,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x1,0x40,0x3f,0x10,0x87,0x60,0x2f,0x8,0x10,0x23,0xe0,0x27,0x21,0x22,0x2d,0x20,0x10,0xa4,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x40,0xc8,0x50,0x60,0x50,0x4e,0x44,0x80, ++0x2,0x44,0x2f,0x28,0xf,0x8,0xef,0x22,0x3f,0x24,0x27,0x24,0x28,0x52,0x89,0x7,0x10,0x10,0x94,0xbe,0xc4,0xa4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa4,0xc4,0x6,0xfc, ++0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4b,0x48,0x48,0x7f,0x48,0x49,0x48,0x48,0x88,0x1b,0x4,0xfe,0x90,0xfc,0x94,0x94,0xfc,0x40,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4, ++0x10,0x10,0x11,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8,0x6,0x4, ++0x8,0xfd,0x10,0x11,0x10,0x10,0x7d,0x11,0x12,0x14,0x13,0x1c,0xf1,0x41,0x1,0x1,0x1c,0xe0,0x0,0x24,0xa4,0xa8,0x0,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x17,0x12,0xfd,0x11,0x16,0x1b,0x34,0xd0,0x1f,0x10,0x12,0x12,0x53,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8, ++0x4,0x4,0x3,0x7e,0x1,0x0,0x7,0x38,0x0,0x7f,0x2,0x2,0x4,0x4,0x8,0x70,0x0,0x8,0xfc,0x20,0x40,0x84,0x64,0x1c,0x8,0xfc,0x40,0x40,0x40,0x42,0x42,0x3e, ++0x0,0x47,0x32,0x11,0x2,0x3,0xf4,0x10,0x1f,0x10,0x12,0x13,0x12,0x28,0x47,0x0,0x38,0xc0,0x48,0x50,0x40,0xf8,0x40,0x44,0xfe,0x40,0x48,0xf8,0x8,0x6,0xfc,0x0, ++0x2,0x1,0x7f,0x48,0x90,0x28,0xf,0x11,0x21,0xff,0x1,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x22,0x14,0x8,0xf0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x27,0x22,0x1,0x1,0xe2,0x23,0x24,0x20,0x2f,0x20,0x2a,0x32,0x23,0x2,0x8,0x3c,0xc0,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8, ++0x10,0x10,0x10,0x12,0xfd,0x25,0x24,0x24,0x24,0x45,0x2a,0x10,0x28,0x45,0x82,0x4,0x50,0x50,0x50,0x52,0x54,0x58,0x50,0x50,0xd8,0x54,0x54,0x90,0x92,0x12,0xe,0x0, ++0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4d,0x49,0x48,0x48,0x48,0x78,0x49,0x2,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0x8,0x14,0x10,0xa0,0xa0,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x0,0x7f,0x2,0x21,0x11,0x11,0x4,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x20,0x10,0x78,0x80,0x8,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x8,0x10,0x22,0x7c,0x9,0x10,0x7e,0x0,0xe,0x70,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x44,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x28,0x10, ++0x0,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x2,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x8,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x10,0x13,0x11,0x54,0x39,0x10,0xfd,0x29,0x2b,0x2d,0x29,0x2b,0x2d,0x49,0x81,0x1,0x0,0xfc,0x54,0xcc,0x54,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x17,0x12,0x12,0xfe,0x13,0x3a,0x36,0x53,0x52,0x92,0x13,0x1e,0x10,0x10,0x10,0x0,0xfe,0x52,0x54,0x54,0xd8,0x54,0x52,0xd2,0x52,0x5a,0xd4,0x50,0x50,0x50,0x50, ++0x0,0x17,0x78,0x53,0x50,0x57,0x54,0x5b,0x50,0x53,0x52,0x73,0x41,0x0,0xf,0x0,0x48,0xfc,0x40,0xf8,0x0,0xfe,0x2,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa4,0xfe,0x0, ++0x2,0x7f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x27,0xfa,0x42,0x2,0x2,0x2,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x64,0x58,0x40,0x40,0x40, ++0x4,0x8,0x14,0x2,0x1,0x6,0x18,0xe0,0x1f,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40,0x20,0x50,0x80,0x0,0xc0,0x30,0xe,0xf0,0x10,0x10,0x10,0x50,0x20,0x0,0x0, ++0x0,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xa,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x7c,0x4,0x28,0x10,0x10,0xfe,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x0,0x40,0x30,0x10,0x1,0x2,0xf,0x10,0x20,0xe3,0x22,0x22,0x22,0x22,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x1,0x1,0x11,0x11,0x11,0x1f,0xf1,0x11,0x11,0x11,0x11,0x10,0x10,0xf,0x0,0x0,0x0,0x0,0x0,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x2,0x2,0x2,0xfe,0x0, ++0x0,0xff,0x2,0x4,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x4,0x8,0x30,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x60,0x18,0x8, ++0x10,0x10,0x17,0x10,0xf9,0x11,0x12,0x1a,0x36,0xdb,0x12,0x12,0x12,0x12,0x53,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x4,0x4,0x4,0x4,0x44,0x24,0x24,0x14,0x14,0x14,0x14,0x4,0x4,0x4,0xff,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x48,0x48,0x50,0x50,0x60,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x2,0x2,0x3f,0x22,0x22,0x3f,0x22,0x22,0x3f,0x22,0x1,0x1,0x6,0x18,0xe0,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0xc0,0x80,0x44,0x34,0xc, ++0x0,0x78,0x4f,0x48,0x49,0x79,0x4a,0x4a,0x4e,0x7b,0x4a,0x4a,0x4a,0x4a,0x8b,0x1a,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x2,0x1,0xff,0x8,0x8,0x10,0x11,0x32,0x56,0x99,0x10,0x10,0x10,0x11,0x12,0x1c,0x0,0x4,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x40,0x37,0x10,0x81,0x61,0x22,0xa,0x16,0x2b,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x44,0xfe,0x20,0x20,0x3c,0x44,0x64,0x98,0x48,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xff,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0x10,0xf0,0x44,0xfe,0x0, ++0x0,0x7f,0x44,0x44,0x4f,0x50,0x40,0x5f,0x40,0x41,0x41,0x42,0x4c,0x40,0x7f,0x0,0x8,0xfc,0x0,0x10,0xf8,0x80,0x88,0xfc,0x80,0x40,0x30,0x18,0x8,0x0,0xfc,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x10,0x17,0x19,0x31,0xd1,0x11,0x11,0x11,0x17,0x50,0x20,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8, ++0x10,0x10,0x10,0x1f,0x20,0x20,0x7c,0x90,0x11,0x7e,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0x24,0xfe,0x40,0x40,0xa0,0xa4,0xa8,0x90,0x90,0x88,0x8e,0xa4,0xc0,0x80, ++0x8,0xb,0x8,0x10,0x10,0x3f,0x50,0x90,0x10,0x13,0x10,0x10,0x11,0x11,0x12,0x14,0x8,0xfc,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xf8,0x88,0x80,0x0,0x0,0x0,0x0, ++0x2,0x1,0x1,0xff,0x2,0x2,0x5,0x5,0xc,0x14,0x24,0xc4,0x4,0x5,0x6,0x4,0x0,0x0,0x4,0xfe,0x0,0x8,0x18,0x20,0xc0,0x80,0x40,0x20,0x18,0xe,0x4,0x0, ++0x4,0x7f,0x48,0x48,0x48,0x5e,0x52,0x52,0x52,0x5e,0x48,0x48,0x48,0x48,0x7e,0x1,0x4,0xfe,0x20,0x44,0xfe,0x84,0x94,0x94,0x94,0x94,0xa4,0xa4,0xa4,0x58,0x86,0x2, ++0x1,0x1,0xff,0x1,0x3f,0x1,0x1,0x3f,0x21,0x21,0x3f,0x1,0x2,0xc,0x30,0xc0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfc,0x4,0x94,0x48,0x30,0xe, ++0x0,0x43,0x32,0x13,0x0,0xf,0xf0,0x13,0x12,0x12,0x12,0x10,0x11,0x2a,0x44,0x3,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0xa0,0x18,0x8,0x6,0xfc, ++0x8,0x1c,0xf0,0x11,0x12,0xfc,0x10,0x39,0x34,0x54,0x90,0x11,0x10,0x10,0x10,0x17,0x40,0x40,0xfc,0x84,0x48,0x30,0x60,0xa0,0x3e,0x42,0xc4,0x24,0x18,0x30,0xc0,0x0, ++0x8,0x8,0x8,0x12,0x12,0x32,0x51,0x91,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x78,0x4f,0x48,0x4b,0x78,0x4b,0x4a,0x4a,0x7b,0x48,0x48,0x48,0x48,0x89,0x1e,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4, ++0x20,0x26,0x38,0x22,0x1e,0x21,0x3e,0x48,0x8,0xfe,0x8,0x8,0x14,0x22,0x41,0x2,0x0,0xfc,0x8,0x50,0x20,0xfe,0x22,0x24,0xa0,0xb8,0xa0,0xa0,0xe0,0xa0,0x1e,0x4, ++0x0,0x40,0x33,0x12,0x82,0x62,0x23,0xa,0x12,0x22,0xe2,0x22,0x24,0x24,0x28,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x2,0x1,0x7f,0x40,0x80,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x0,0x0,0xfe,0x2,0x24,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x2f,0x20,0xfb,0x48,0x4b,0x4a,0x4a,0x93,0x50,0x20,0x50,0x48,0x81,0x6,0x40,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0x40,0xfe,0x42,0x4a,0xa4,0x90,0xe,0x4, ++0x8,0xf,0x10,0x1f,0x0,0xff,0x49,0x2a,0x7f,0x1c,0x2a,0x48,0xff,0x8,0x10,0x60,0x20,0xf0,0x20,0xe0,0x24,0xfe,0x20,0x78,0x24,0xfe,0x54,0x92,0xfe,0x10,0x10,0x10, ++0x10,0x10,0x17,0x10,0xfc,0x11,0x37,0x38,0x57,0x52,0x92,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x12,0x7e,0x55,0x55,0x55,0x54,0x7c,0x10,0x14,0x1c,0xf5,0x42,0xc,0x0,0x80,0x64,0x24,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x90,0x8,0xe,0x4, ++0x8,0x8,0xf,0x10,0x10,0x31,0x5f,0x90,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x0,0x7f,0x0,0x0,0x20,0x20,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x1f,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0, ++0x0,0x0,0x7f,0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x10,0x20,0x20,0x20,0x1f,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0xfc,0x0, ++0x2,0x4,0x8,0x10,0x3f,0x8,0x8,0x1f,0x21,0x1,0xff,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0x20,0x10,0xf8,0x8,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x30,0x1c,0x8, ++0x0,0x4,0x42,0x43,0x41,0x40,0x40,0x40,0x41,0x42,0x44,0x48,0x50,0x60,0x1,0x6,0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x30,0x48,0x84,0x4, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x20,0x20,0x20,0x1f,0x40,0x44,0xfe,0x40,0x0,0xc0,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0xfe, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x13,0x12,0x10,0x50,0x20,0x40,0x84,0x3e,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xa4,0x34,0x28,0x20,0x20,0x20, ++0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x8,0x1f,0x24,0x44,0x88,0x10,0x21,0x2,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x44,0x84,0x84,0x4,0x28,0x10, ++0x1f,0x10,0x10,0x1f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0xf0,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x54,0x54,0x54,0x54,0x55,0x7d,0x45,0x0,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x8,0x9,0x11,0x21,0x41,0xa,0x14,0x33,0x51,0x91,0x10,0x10,0x10,0x10,0x13,0x1c,0x10,0xf8,0x10,0x10,0x10,0xe,0x0,0xf8,0x8,0x10,0x90,0xe0,0x40,0xb0,0xe,0x4, ++0x0,0x7b,0x49,0x48,0x4f,0x78,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x4b,0x4b,0x8d,0x18,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x68,0x26,0xa,0xf8, ++0x2,0x43,0x24,0x28,0x1f,0x8,0xe8,0x2f,0x20,0x21,0x21,0x22,0x24,0x58,0x88,0x7,0x0,0xe0,0x20,0x48,0xfc,0x88,0x88,0xf8,0x80,0x40,0x54,0x44,0x3c,0x0,0x6,0xfc, ++0x40,0x4c,0x71,0x40,0x47,0x3c,0x41,0x7c,0x91,0x10,0xfe,0x13,0x28,0x24,0x44,0x80,0x20,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x0,0x1f,0x10,0x91,0x51,0x51,0x12,0x34,0x53,0xd1,0x10,0x20,0x21,0x46,0x18,0x80,0x44,0xfe,0x0,0xf0,0x10,0x10,0xc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x2,0x1,0x1,0xff,0x4,0x4,0x4,0x14,0x14,0x24,0x44,0x4,0x8,0x8,0x11,0x0,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x80, ++0x2,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x3f,0x24,0x28,0x37,0x24,0x24,0x27,0x20,0x0,0x4,0xfe,0x10,0xa0,0x60,0x1c,0x8,0xfc,0x48,0x28,0xd8,0x48,0x48,0xc8,0x18, ++0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x2,0x51,0x50,0x90,0xf,0x10,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x84,0x92,0x12,0xf0, ++0x10,0x8,0x7f,0x22,0x14,0xff,0x20,0x52,0x9c,0x28,0x4c,0x1b,0x29,0xc8,0x28,0x11,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xf8,0x48,0x48,0x48,0x30,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x91,0x12,0x12,0x14,0x14,0x14,0x14,0x13,0x10,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x2,0x21,0x21,0x10,0x10,0x8,0x8,0x4,0x2,0x1,0x2,0x4,0x8,0x10,0x60,0x0,0x8,0x8,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x0,0x80,0x60,0x18,0xe,0x4, ++0x8,0x4,0x0,0x7f,0x0,0x4,0x8,0x10,0x0,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x20,0x40,0x8,0xfc,0x0,0x40,0x30,0x10,0x0,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x2,0x41,0x30,0x17,0x80,0x61,0x22,0xc,0x10,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x10,0x20,0x8,0xfc,0x0,0x20,0x18,0x8,0x0,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0, ++0x2,0x42,0x33,0x12,0x2,0x1,0xf0,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x0,0x38,0xc0,0x2,0x2,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x0,0x40,0x30,0x12,0x2,0x2,0xf1,0x11,0x10,0x10,0x10,0x14,0x19,0x12,0x4,0x8,0x0,0x80,0x44,0x44,0x4,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x40,0x2f,0x28,0x10,0x3,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x32,0x2f,0x0,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x0, ++0x0,0x47,0x22,0x21,0x0,0x0,0xe3,0x2c,0x20,0x23,0x20,0x24,0x2f,0x30,0x20,0x0,0x0,0xfc,0x8,0xb0,0x40,0xa0,0x1e,0x44,0x50,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x1f,0x8,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x7e,0x22,0x1a,0x22,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x3f,0x4,0xff,0x8,0x30,0xf8,0x88,0x68,0x88,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x40,0xf8,0x40,0xfe,0x20,0x10, ++0x0,0x7e,0x22,0x12,0x6,0x1a,0x62,0x1,0x1,0x7f,0x0,0x8,0x4,0x4,0xff,0x0,0x4,0xfe,0x44,0x24,0xc,0x34,0xc4,0x0,0x8,0xfc,0x20,0x20,0x40,0x44,0xfe,0x0, ++0x10,0x11,0x20,0x20,0x44,0xf8,0x10,0x23,0x40,0xfd,0x0,0x0,0x1d,0xe0,0x40,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x4,0x4,0xff,0x4,0x3f,0x21,0x21,0x2f,0x21,0x22,0x22,0x24,0x28,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xe8,0x8,0x88,0x88,0x48,0x28,0x8,0xf8,0x8, ++0x8,0x8,0xff,0x8,0x7c,0x44,0x48,0x50,0x48,0x44,0x44,0x64,0x59,0x41,0x42,0x44,0x20,0x24,0xfe,0x20,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x4,0x4,0x14,0x8, ++0x0,0x7f,0x41,0x41,0x41,0x5f,0x41,0x41,0x42,0x42,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4, ++0xc,0x70,0x44,0x7e,0x44,0x7d,0x46,0x7d,0x40,0x7c,0x44,0x44,0x44,0x54,0x48,0x83,0x8,0xfc,0x88,0x88,0x88,0x6,0x0,0xfc,0x88,0x88,0x50,0x20,0x50,0x50,0x8e,0x4, ++0x2,0x1,0x3f,0x8,0x4,0x4,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x10,0xf8,0x20,0x20,0x44,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x48,0x44,0x44,0x44,0x68,0x51,0x41,0x42,0x44,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0xfc,0x84,0x84,0x4,0x4,0x14,0x8, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x54,0x54,0x54,0x8c,0x4,0x4,0xfc,0x4, ++0x0,0x8,0x7c,0x48,0x49,0x49,0x4a,0x4c,0x48,0x4b,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8e,0x44,0x40,0xf8,0x8,0x10,0x10,0x20,0x40,0x80, ++0x10,0x11,0x11,0x3d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x13,0x15,0x19,0x11,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0x8c,0x50,0x20,0x10,0x4e,0x84,0x0, ++0x40,0x30,0x17,0x0,0x84,0x62,0x22,0x7,0x10,0x20,0xef,0x20,0x20,0x20,0x27,0x20,0x8,0x3c,0xc0,0x4,0x84,0x48,0x10,0xfc,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0, ++0x2,0x1,0x7f,0x40,0x80,0x3f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0xc,0x30,0x40,0x0,0x0,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x60,0x18,0x4, ++0x10,0x10,0x10,0x10,0x1e,0x22,0x25,0x50,0x90,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4, ++0x0,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x7f,0x1,0x1,0x1,0x3f,0x20,0x20,0x41,0x7f,0x1,0x1,0x1,0x11,0xa,0x4,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x88,0x8,0x8,0x8,0x8,0x8,0x8, ++0x0,0x78,0x48,0x51,0x52,0x67,0x50,0x4b,0x48,0x4b,0x68,0x52,0x42,0x46,0x4a,0x41,0x80,0x80,0xf0,0x10,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x80,0x60,0x2c,0xa,0xf8, ++0x6,0x78,0x40,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40,0x4e,0x70,0x0,0x0,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xa8,0x90,0x80,0x80,0x80, ++0x8,0x8,0x7f,0x8,0x1,0x1f,0x11,0x11,0x11,0xff,0x1,0x2,0x2,0x4,0x18,0x60,0x20,0x28,0xfc,0x20,0x10,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x80,0x60,0x1c,0x8, ++0x10,0x17,0x14,0x15,0xfd,0x16,0x3b,0x34,0x50,0x5f,0x90,0x11,0x10,0x10,0x11,0x16,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8, ++0x0,0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x62,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x0,0x3f,0x22,0x24,0x2c,0x35,0x24,0x24,0x21,0x27,0x24,0x24,0x47,0x40,0x9f,0x0,0x80,0xfe,0x50,0x7c,0xd0,0x7c,0x50,0x5c,0x0,0xf0,0x90,0x20,0xfc,0x4,0xe4,0xc, ++0x1,0x0,0x3f,0x20,0x21,0x28,0x24,0x24,0x22,0x22,0x22,0x22,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0x4,0x84,0x84,0x48,0x48,0x48,0x10,0x10,0x20,0x44,0xfe,0x0, ++0x10,0x17,0x24,0x25,0x45,0xfe,0x13,0x24,0x40,0xff,0x0,0x1,0x1c,0xe0,0x41,0x6,0x0,0xbc,0xa4,0xac,0xac,0xb4,0x18,0xa4,0x80,0xfe,0x90,0x10,0xa0,0x40,0xb0,0x8, ++0x4,0x4,0x7f,0x4,0x4,0x7f,0x40,0xbf,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0xf4,0x0,0x10,0xf8,0x0,0x40,0x24,0xfe,0x0, ++0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x1f,0x11,0x11,0x1f,0x1,0x1,0x3f,0x0,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0xf8,0x10,0x10,0xf0,0x0,0x10,0xf8,0x8, ++0x4,0x4,0x7f,0x4,0x7f,0x40,0x8f,0x8,0x8,0xf,0x0,0x1f,0x10,0x10,0x1f,0x10,0x40,0x48,0xfc,0x40,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x10, ++0x4,0x4,0x7f,0x4,0x4,0x7f,0x41,0x81,0x9,0x9,0x11,0x2,0x2,0x4,0x18,0x60,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x14,0x30,0x40,0x0,0x80,0x40,0x30,0xe,0x4, ++0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x55,0x55,0x7d,0x11,0x15,0x1d,0xf4,0x40,0x0,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e, ++0x0,0x41,0x26,0x14,0x4,0x4,0xf4,0x14,0x15,0x16,0x14,0x10,0x10,0x28,0x47,0x0,0x0,0x84,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x46,0xfc,0x0, ++0x1,0xff,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x0,0x77,0x54,0x75,0x55,0x71,0x52,0xb4,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x0,0xdc,0x54,0x54,0x5c,0x14,0x96,0x62, ++0x0,0x7f,0x10,0x17,0x14,0x12,0x21,0x22,0x44,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x10,0xd0,0x7c,0x84,0x4,0xd4,0x48,0x0,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x0,0x3f,0x20,0x3f,0x15,0x24,0x54,0x8,0x84,0xc4,0x88,0x90,0xa0,0x84,0x4,0xe8,0x10,0xa2,0x82,0x84,0x8,0x90,0xa0,0x40, ++0x40,0x4b,0x70,0x40,0x45,0x3d,0x1,0x1d,0xf1,0x15,0xff,0x11,0x38,0x54,0x91,0x16,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x20,0x58,0x84,0x2, ++0x4,0xff,0x10,0x10,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x24,0x3d,0x24,0x0,0x3,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xa0,0x60,0x9e,0x4, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x0,0x11,0x79,0x52,0x52,0x54,0x5f,0x52,0x54,0x5f,0x50,0x71,0x4e,0x4,0x0,0x0,0x20,0x20,0x24,0x3e,0x44,0x84,0x4,0x44,0x24,0xa4,0x4,0x84,0x4,0x44,0x28,0x10, ++0x20,0x27,0x24,0x24,0xfc,0x27,0x2c,0x34,0x64,0xa7,0x24,0x24,0x28,0x28,0xb0,0x40,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8, ++0x10,0x17,0x14,0x24,0x24,0x67,0xa4,0x24,0x24,0x27,0x24,0x24,0x28,0x28,0x30,0x20,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0x54,0x8, ++0x0,0x78,0x4f,0x49,0x4a,0x7a,0x4f,0x49,0x4a,0x7c,0x4f,0x48,0x48,0x49,0x4a,0x9c,0x40,0x24,0xfe,0x10,0x28,0xbe,0x68,0x28,0xbe,0xa8,0xa8,0xbe,0xa8,0x28,0x3e,0x20, ++0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x54,0xd7,0x14,0x24,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x44,0x54,0x8, ++0x0,0x3f,0x20,0x2f,0x20,0x3f,0x20,0x2f,0x20,0x2f,0x28,0x2f,0x48,0x4f,0x88,0x8,0x84,0xfe,0x80,0xf8,0x88,0xfe,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x98, ++0x1,0x0,0xff,0x8,0x10,0x21,0x49,0xfb,0x11,0x25,0x45,0xf9,0x9,0x11,0x21,0x41,0x0,0x84,0xfe,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x14,0xfe,0x0, ++0x0,0x7d,0x44,0x44,0x44,0x7d,0x11,0x11,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xf5,0x41,0x1,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x4f,0x48,0x49,0x49,0x4a,0x7a,0x44,0x8,0x1,0x0,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80, ++0x0,0x40,0x30,0x13,0x80,0x60,0x27,0x8,0x11,0x21,0xe2,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0x0,0xc0,0x44,0x4c,0xf0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x80, ++0x0,0x47,0x30,0x10,0x80,0x67,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x24,0x24,0x24,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8, ++0x2,0x1,0x0,0x1f,0x1,0x1,0x7d,0x5,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x0,0x0,0x8,0x18,0xa0,0x40,0x40,0x20,0x20,0x10,0xe,0x4,0x0,0x0, ++0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x2,0x51,0x50,0x90,0xf,0x0,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x18,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x3f,0x2,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x7f,0x2,0x2,0x4,0x18,0x60,0xf0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x10,0xf8,0x8,0x8,0x8,0x50,0x20, ++0x0,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x41,0x41,0x80,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x1,0x1,0x9,0x49,0x49,0x51,0x53,0x7d,0x45,0x49,0x55,0x7f,0x43,0x41,0x7f,0x40,0x0,0x0,0x20,0x24,0x24,0x44,0x4c,0xf4,0x14,0x24,0x54,0xfc,0xc,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x20,0x20,0x7f,0xa1,0x21,0x21,0x22,0x22,0x22,0x24,0x24,0x28,0x30,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x8,0x10,0x15,0x36,0x54,0x94,0x14,0x14,0x11,0x2,0x51,0x50,0x90,0xf,0x0,0x80,0x84,0xfe,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x10,0x10,0x10,0x10,0x58,0x57,0x51,0x91,0x11,0x11,0x12,0x12,0x12,0x14,0x14,0x18,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x1,0x1,0x1,0x1,0x1,0xff,0x2,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x1,0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x41,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x49,0x7f,0x41,0x0,0x0,0x0,0x7c,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x10,0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0x7d,0x11,0x11,0x15,0x19,0x11,0x0,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0, ++0x0,0x44,0x2c,0x10,0x28,0x4f,0x89,0x9,0x19,0x29,0x49,0x8a,0xa,0xa,0x54,0x28,0x80,0xa0,0x90,0x90,0x84,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x24,0x24,0x24,0x27,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x2,0x41,0x20,0x2f,0x82,0x62,0x23,0x2,0x12,0x22,0xe2,0x24,0x24,0x28,0x31,0x20,0x10,0x14,0x1e,0xe0,0x40,0x3e,0x84,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xa8,0x10, ++0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x24,0x24,0x28,0x30,0x2f,0x20,0x20,0x3f,0x20,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x78,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8, ++0x2,0x2,0xff,0x4,0x4,0xf,0x8,0x18,0x2f,0x48,0x88,0xf,0x8,0x8,0x8,0x8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x4,0x4,0x4,0xff,0x4,0x4,0xf,0x8,0x14,0x12,0x21,0x40,0x81,0x6,0x18,0x60,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x40,0x30,0xe,0x4, ++0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x1f,0x28,0x48,0x88,0x8,0x8,0xf,0x8,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x10,0x1f,0x31,0x51,0x92,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x80,0x84,0xfe,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x4,0xe,0xf0,0x12,0x57,0x39,0x11,0xff,0x11,0x39,0x35,0x55,0x91,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x24,0x2b,0x21,0x21,0x21,0x2a,0x32,0x24,0x8,0x38,0xc0,0x40,0x44,0xfe,0x60,0x50,0x4e,0xf4,0x10,0x20,0x3c,0x4,0x4,0x28,0x10, ++0x0,0x7f,0x10,0x10,0x10,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x8,0x30,0xc0,0x0,0xf0,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x80,0x40,0x30,0xe,0x4, ++0x0,0x10,0x10,0x10,0x20,0x25,0x44,0xf8,0x10,0x10,0x20,0x48,0xfc,0x45,0x2,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x28,0x10, ++0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x10,0x10,0x10,0x11,0x10,0x28,0x47,0x0,0x10,0xf8,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x80,0x6,0xfc,0x0, ++0x4,0x42,0x22,0x3f,0x84,0x44,0x47,0xd,0x15,0x25,0xe5,0x25,0x25,0x29,0x35,0x22,0x10,0x10,0x90,0xd0,0x28,0x28,0x44,0x82,0x20,0x18,0x8,0x0,0x20,0x18,0xc,0x4, ++0x0,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x10,0x10,0x10,0x11,0xfe,0x14,0x33,0x3a,0x56,0x53,0x92,0x12,0x13,0x12,0x12,0x12,0x40,0x60,0x90,0x8,0xf6,0x0,0xc4,0x54,0x54,0xd4,0x54,0x54,0xc4,0x44,0x54,0xc8, ++0x1,0x1,0x3f,0x20,0x2f,0x20,0x27,0x24,0x27,0x20,0x2f,0x20,0x5f,0x41,0x86,0x18,0xf8,0x0,0xfe,0x84,0xf0,0x84,0xfc,0x10,0xf0,0x80,0xf8,0x80,0xfe,0x40,0x30,0xc, ++0x0,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x22,0x27,0x22,0x51,0x50,0x90,0xf,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x48,0xe8,0x10,0x84,0x92,0x12,0xf0, ++0x1,0x9,0x31,0x27,0x22,0x3d,0x27,0x21,0x39,0x27,0x21,0xff,0x0,0x10,0x30,0x40,0x0,0x8,0x3c,0xc8,0x8,0x38,0xc8,0x8,0x38,0xc8,0x8,0xfe,0x0,0x10,0xc,0x4, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc1,0x1,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0, ++0x1,0x2,0x4,0x8,0x37,0xc0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x22,0x26,0x0,0x80,0x40,0x30,0xce,0x4,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x18, ++0x0,0x41,0x22,0x24,0xb,0x10,0xe7,0x24,0x27,0x24,0x27,0x24,0x25,0x50,0x8f,0x0,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0x88,0x98,0x6,0xfc,0x0, ++0x4,0x4,0xf,0x10,0x20,0x7f,0xa1,0x21,0x3f,0x21,0x21,0x3f,0x20,0x0,0xff,0x0,0x0,0x0,0xe0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x4,0xfe,0x0, ++0x20,0x20,0x21,0x22,0xb5,0xa8,0xa7,0x24,0x24,0x27,0x24,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x0,0x40,0x31,0x12,0x85,0x68,0x27,0xc,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x25,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x1,0x41,0x31,0x12,0x84,0x6f,0x24,0xc,0x17,0x24,0xe4,0x27,0x24,0x20,0x2f,0x20,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4,0x0,0xfe,0x0, ++0x0,0x7b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x4f,0x6c,0x54,0x45,0x44,0x44,0x44,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x84,0x14,0x8, ++0x0,0x3f,0x0,0x2,0x1,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x40,0x80,0x0,0x80,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x25,0x24,0x44,0x2f,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x0,0xff,0x1,0x1,0x3f,0x21,0x21,0x29,0x25,0x21,0x21,0x29,0x25,0x21,0x21,0x20,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x48,0x28,0x8,0x8,0x48,0x28,0x8,0x28,0x10, ++0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x48,0xe8,0x8,0x8,0x50,0x20, ++0x10,0x10,0x10,0x10,0x54,0x54,0x54,0x54,0x54,0x54,0x57,0x7c,0x44,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x4,0x4,0x4,0x28,0x10, ++0x0,0x0,0x7f,0x1,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x41,0x41,0x5f,0x48,0x40,0x40,0x10,0x78,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x44,0xe4,0x24,0x4,0xc, ++0x2,0x1,0x7f,0x40,0x80,0x1f,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4f,0x21,0x21,0x7,0x2,0xe2,0x3f,0x20,0x20,0x27,0x24,0x2c,0x34,0x27,0x4,0x8,0xfc,0x0,0x10,0xf8,0x10,0x14,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7e,0x2,0x2,0x22,0x12,0x12,0x2,0xa,0x12,0x62,0x22,0x2,0x2,0x14,0x8,0x4,0xfe,0x4,0x4,0x44,0x24,0x24,0x4,0x14,0x24,0xc4,0x44,0x4,0x4,0x28,0x10, ++0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x40,0x30,0x10,0x4,0xfe,0x0, ++0x20,0x20,0x20,0x27,0xf8,0x20,0x27,0x24,0x24,0x24,0x3f,0xe0,0x43,0xc,0x0,0x1,0x20,0x28,0x24,0xfe,0x20,0xa0,0xe0,0xa4,0xa4,0xa8,0x90,0x10,0xaa,0x4a,0x86,0x0, ++0x8,0x8,0xff,0x8,0x0,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x20,0x24,0xfe,0x20,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x11,0xff,0x20,0x22,0x7f,0x62,0xa2,0x3e,0x22,0x22,0x3e,0x22,0x22,0x2a,0x24,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x47,0x24,0x27,0x4,0x7,0xe0,0x2f,0x28,0x28,0x2b,0x28,0x28,0x50,0x88,0x7,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x84,0xfe,0x84,0xa4,0xf4,0x4,0x14,0x8,0x6,0xfc, ++0x0,0x10,0x79,0x52,0x55,0x58,0x57,0x54,0x54,0x57,0x54,0x74,0x57,0x4,0x4,0x5,0x40,0xc0,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x55,0x56,0x55,0x55,0x7d,0x45,0x1,0x1,0x1,0x50,0x50,0x88,0x24,0x50,0x50,0x88,0x6,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x14,0x14,0x27,0x4a,0x82,0x12,0x2f,0x62,0xaa,0x2b,0x2a,0x2a,0x2b,0x3c,0x28,0x20,0x0,0x4,0xbe,0x24,0x24,0xa4,0xe4,0x24,0x24,0xa4,0x24,0x34,0xa8,0x20,0x20,0x20, ++0x1,0x2,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x16,0x29,0x28,0x48,0x7,0x0,0x80,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x10,0x30,0x4,0x92,0x12,0xf0, ++0x28,0x28,0x44,0x92,0x10,0x29,0x46,0x82,0x7c,0x44,0x44,0x44,0x44,0x7c,0x45,0x2,0x40,0x40,0x40,0x7c,0x84,0x28,0x20,0x20,0x20,0x20,0x50,0x50,0x90,0x88,0xe,0x4, ++0x4,0x88,0x54,0x22,0x52,0x91,0x1e,0x12,0x32,0x52,0x92,0x13,0x12,0x10,0xa1,0x42,0x20,0x20,0x30,0x28,0x20,0xfe,0x20,0x20,0x20,0x20,0xd0,0x50,0x88,0x88,0x6,0x4, ++0x2,0x1,0xff,0x4,0x8,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x8,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x22,0x11,0x9,0xff,0x4,0x9,0x1f,0x20,0xdf,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x8,0x10,0x24,0xfe,0x40,0x20,0xf0,0xe,0xf4,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10, ++0x1,0x41,0x32,0x14,0x80,0x60,0x20,0x9,0x12,0x27,0xea,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x1,0x7f,0x40,0x9f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x21,0x21,0x2f,0x20,0x20,0x0,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x28,0xe8,0x28,0x10, ++0x21,0x11,0x12,0xfc,0x8,0x10,0x10,0x35,0x5a,0x97,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x8,0x44,0x40,0xa0,0xa0,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x7d,0x4,0x8,0x29,0x11,0xff,0x15,0x11,0x11,0x11,0x11,0x11,0x10,0x50,0x23,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x58,0x84,0x2, ++0x0,0x7c,0x4,0x9,0x2b,0x11,0xff,0x15,0x10,0x11,0x12,0x11,0x16,0x10,0x53,0x20,0x40,0x78,0x90,0x24,0xfe,0x24,0x44,0xfc,0x84,0x48,0xb0,0x30,0x68,0xa6,0x24,0x60, ++0x4,0x7e,0x5,0x24,0x24,0x24,0x24,0x24,0x3e,0x2,0x2,0x1e,0xe2,0x42,0x14,0xb,0x0,0x0,0xfc,0x4,0x4,0x84,0x84,0x88,0x88,0x50,0x20,0x50,0x50,0x88,0x8e,0x4, ++0x10,0x1e,0x22,0x52,0x14,0x8,0x12,0xef,0xa,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x8,0xfc,0x88,0xa8,0x98,0x82,0x7e,0xe0,0x20,0xa0,0x48,0xfc,0x8,0xe8,0x8,0x18, ++0x0,0x44,0x36,0x15,0x85,0x64,0x27,0x4,0xc,0x14,0x25,0xe5,0x26,0x24,0x28,0x30,0x4,0x44,0x4c,0x54,0x64,0x44,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x44,0x4, ++0x0,0x7f,0x44,0x87,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x8,0x10,0x60,0x0,0xfe,0x2,0xe4,0x40,0x90,0xf8,0x10,0x10,0xf0,0x90,0x80,0xa2,0x92,0x7e,0x0, ++0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0xc0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x13,0x10,0x10,0xfd,0x11,0x11,0x11,0x11,0x11,0x11,0x1d,0xf1,0x40,0x7,0x0,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x0, ++0x1,0x1,0x3f,0x1,0xff,0x0,0x1f,0x10,0x10,0x1f,0x5,0x8,0x18,0xea,0xc,0x8,0x0,0x10,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4, ++0x0,0x3f,0x21,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x24,0x44,0x48,0x92,0x1,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x84,0x84,0x0, ++0x10,0x17,0x12,0x11,0xff,0x10,0x10,0x1f,0x30,0xd1,0x11,0x12,0x12,0x14,0x59,0x22,0x1c,0xe8,0x48,0x50,0xfc,0x80,0x84,0xfe,0x80,0xf8,0x8,0x90,0x60,0x90,0xe,0x4, ++0x10,0x10,0x23,0xfc,0x27,0x40,0x93,0xfe,0x12,0x13,0x1d,0xf1,0x53,0x15,0x11,0x11,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0, ++0x0,0x7f,0x40,0x4f,0x40,0x40,0x5f,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x7f,0x40,0x4,0xfe,0x44,0xe4,0x4,0x24,0xf4,0x84,0x84,0x84,0x94,0x94,0x74,0x4,0xfc,0x4, ++0x0,0x1f,0x10,0x10,0x1f,0x0,0x3f,0x20,0x21,0x21,0x21,0x21,0x22,0x4,0x18,0x60,0x10,0xf8,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0x60,0x18,0x4, ++0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x51,0x51,0x52,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x4,0xf4,0x14,0x14,0x14,0x94,0x44,0x24,0xfc,0x4, ++0x2,0x44,0x2b,0x10,0x2f,0x48,0x8b,0xa,0x1a,0x2b,0x49,0x89,0xb,0xd,0x51,0x21,0x40,0x48,0xfc,0x40,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x44,0x28,0x10,0x4e,0x84,0x0, ++0x0,0x47,0x34,0x14,0x84,0x65,0x25,0xd,0x15,0x25,0xe4,0x24,0x29,0x2a,0x30,0x20,0x4,0xfe,0x20,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xa8,0xa6,0x22,0xa0,0x40, ++0x10,0x10,0x21,0x23,0x48,0xff,0x10,0x21,0x42,0xfc,0x1,0x2,0x1c,0xe1,0x46,0x0,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x80,0x88,0x50,0xe0,0x60,0x50,0xc8,0x4e,0x44,0xc0, ++0x0,0x43,0x30,0x10,0x0,0x7,0xf1,0x11,0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0x24,0x1c,0x0,0x6,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x10,0x1e,0x12,0x22,0x22,0x64,0x94,0x8,0x8,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0, ++0x0,0x3f,0x21,0x22,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x44,0x89,0x9,0x28,0x28,0x47,0x8,0xfc,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0x88,0x0,0x94,0x12,0xf2, ++0x10,0x1e,0x12,0x22,0x22,0x54,0x8c,0x8,0x10,0x20,0x42,0x11,0x51,0x50,0x8f,0x0,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0x84,0x84,0x7c,0x0,0x0,0x14,0x12,0xf2,0x0, ++0x0,0x78,0x4f,0x54,0x58,0x63,0x50,0x48,0x4f,0x48,0x68,0x50,0x41,0x41,0x42,0x4c,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x0,0x0,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x40,0x40,0x40,0x7f,0x40,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0, ++0x10,0x10,0x20,0x21,0x45,0xfa,0x14,0x20,0x40,0xfc,0x0,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0x80,0x4,0xfe,0x4,0x4,0x84,0x64,0x24,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x10,0x7d,0x11,0x11,0xff,0x11,0x51,0x5d,0x51,0x50,0x70,0x49,0x44,0x83,0x20,0x28,0x28,0xfc,0x20,0x20,0x28,0x28,0x70,0xa0,0x24,0x54,0x8c,0x0,0x6,0xfc, ++0x0,0x7c,0x47,0x44,0x44,0x7c,0x10,0x13,0x5c,0x50,0x50,0x51,0x5d,0xf2,0x44,0x8,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x10,0x11,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x12,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0xff,0x1,0x11,0x11,0x11,0x11,0x1f,0x10,0xf0,0x0,0x0,0x10,0xf8,0x80,0x80,0x84,0xfe,0x0,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x2,0x1f,0x15,0x11,0x1f,0x11,0x15,0x1f,0x0,0xff,0x4,0xf,0x0,0x0,0x0,0x0,0x10,0xf8,0x50,0x10,0xf0,0x10,0x50,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40, ++0x0,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x8,0x10,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0x50,0x20, ++0x12,0x11,0x10,0x13,0x5a,0x56,0x52,0x92,0x13,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x8,0x18,0xa0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x20,0x17,0x50,0x44,0x42,0x4f,0x48,0x48,0x4f,0x4a,0x42,0x42,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x44,0x84,0xe4,0x24,0x24,0xe4,0xa4,0x84,0x94,0x94,0x74,0x4,0xc, ++0x8,0x8,0x7e,0x8,0x8,0x7e,0x9,0x8,0xfe,0x18,0x1c,0x2a,0x28,0x49,0x8,0x8,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x40,0x40,0x88,0x84,0xfc,0x4,0x0, ++0x0,0x0,0x1f,0x0,0x0,0x0,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x3f,0x0,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0xf8,0x8, ++0x2,0x3f,0x22,0x22,0x3e,0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0x41,0x0,0x7c,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40,0x40, ++0x8,0x8,0xf,0x10,0x10,0x26,0x43,0x81,0x0,0x0,0x3,0x1c,0x8,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x24,0xc4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x7c,0x44,0x48,0x48,0x50,0x49,0x49,0x45,0x45,0x45,0x69,0x50,0x40,0x40,0x43,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x50,0x48,0x84,0x4, ++0x2,0x2,0x4,0x8,0x10,0x7f,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x10,0x20,0xc0,0x0,0x0,0x40,0x20,0x10,0xf8,0x88,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x43,0x30,0x10,0x0,0x7,0xf0,0x10,0x11,0x11,0x12,0x17,0x10,0x28,0x47,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x80,0x80,0x0,0x20,0x10,0xf8,0x8,0x6,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x11,0x21,0x45,0x79,0x11,0x20,0x7f,0x2,0x1e,0xe2,0x47,0x0,0x40,0x44,0xfe,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0xfe,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x53,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x20,0x20,0x44,0xfe,0x2,0x0, ++0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x42,0x9f,0x4,0x9,0x1f,0x1,0x7f,0x1,0x1,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0xf0,0x0,0xfc,0x0,0x0, ++0x10,0x8,0x7f,0x0,0x22,0x14,0xff,0x2,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x20,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0xc,0x34,0xc4,0x4,0x4,0x28,0x10, ++0x0,0x3f,0x8,0x8,0x8,0x10,0x1f,0x20,0x40,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x20,0xf0,0x20,0x24,0x7e,0x4,0xc4,0x54,0x88,0x0,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x20,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x28,0x28,0x20,0x20,0x3f,0x0,0x8,0xfc,0x80,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x84,0xfe,0x0, ++0x8,0xfd,0x11,0x11,0x21,0x25,0x7f,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x0,0x4,0xfe,0x10,0x10,0x7c,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x10,0x14,0xfe,0x0, ++0x4,0x4,0x3f,0x4,0x4,0x8,0x8,0x11,0x21,0x1,0xff,0x1,0x9,0x11,0x25,0x2,0x0,0x20,0xf0,0x20,0x20,0x24,0x24,0x1c,0x0,0x4,0xfe,0x0,0x20,0x18,0x8,0x0, ++0x8,0xa,0x7f,0x8,0x8,0xff,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x2a,0x48,0x89,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x21,0x2,0x40,0x60,0x58,0x48,0x40,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x2,0x1,0x7f,0x40,0x81,0x1,0x11,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x0,0x0,0xfe,0x2,0x4,0x0,0x10,0x18,0x20,0x40,0x80,0x80,0x40,0x30,0xe,0x4, ++0x2,0x1,0x7f,0x42,0x81,0x3f,0x8,0x4,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x0,0x0,0xfe,0x2,0x14,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0, ++0x8,0xa,0x7f,0x8,0x8,0xff,0x10,0xff,0x20,0x28,0x7e,0x8,0xf,0xf8,0x9,0xa,0x40,0x50,0x48,0x48,0x40,0xfe,0x40,0x40,0x48,0x48,0x30,0x20,0x60,0x92,0xa,0x6, ++0x0,0x7f,0x1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x10,0x50,0x20, ++0x2,0x2,0x2,0xff,0x4,0x4,0x8,0x8,0x13,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x0,0x0,0x4,0xfe,0x0,0x40,0x40,0x50,0xf8,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x22,0x2a,0x2f,0x32,0xff,0x25,0x25,0x29,0x33,0xe2,0x22,0x22,0x22,0x20,0xa3,0x4c,0x8,0x28,0xbe,0x48,0xfe,0x14,0x14,0xa6,0xf8,0x8,0x48,0x48,0x48,0xa0,0x18,0x4, ++0x10,0x7e,0x10,0x28,0x7e,0x8,0xfe,0x9,0xa,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x8,0x28,0x3e,0x48,0xff,0x14,0x16,0x24,0x40,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x10,0x50,0x7c,0x90,0xfe,0x28,0x28,0x4a,0x86,0xf0,0x10,0x10,0x10,0x90,0x60,0x18, ++0x4,0x7e,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x29,0x45,0x82,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0xa,0x20,0x14,0xfe,0x0,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x4,0xff,0x4,0x7f,0x10,0x1e,0x22,0x54,0x8,0x70,0x4,0xff,0x4,0x4,0x8,0x10,0x44,0xfe,0x40,0xfc,0x80,0x98,0xe0,0x84,0x84,0x7c,0x40,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x4f,0x30,0x17,0x4,0x7,0xf4,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x28,0x47,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x6,0xfc, ++0x20,0x20,0xaf,0x70,0x27,0x24,0xff,0x24,0x77,0x68,0xa3,0x22,0x23,0x22,0x23,0x22,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x4,0x24,0x14,0x4,0xff,0x0,0x4,0x22,0x2f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x40,0x48,0x50,0x44,0xfe,0x0,0x40,0x88,0xe8,0x8,0x48,0xe8,0x8,0x8,0xf8,0x8, ++0x4,0xff,0x4,0x23,0x1a,0x8b,0x40,0x4f,0x14,0x27,0xe0,0x2f,0x20,0x21,0x22,0x24,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x0,0xbc,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44, ++0x1,0x1,0xff,0x1,0x3f,0x21,0x23,0x25,0x9,0x30,0xc7,0x0,0x0,0xe,0x1,0x0,0x0,0x4,0xfe,0x0,0xf8,0x8,0x88,0x50,0x30,0xe,0x4,0xc0,0x40,0x0,0xc0,0x40, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x3,0x42,0x32,0x13,0x80,0x67,0x24,0xc,0x17,0x20,0xef,0x20,0x21,0x22,0x24,0x28,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x3f,0x0,0x11,0x9,0x4,0x3,0xd,0x11,0x7f,0x91,0x11,0x1f,0x1,0x1,0x3f,0x10,0xf8,0x8,0x10,0x20,0x40,0x80,0x60,0x10,0xfe,0x14,0x10,0xf0,0x20,0xf0,0x8,0x8, ++0x4,0x7e,0x44,0x44,0x44,0x7d,0x11,0x51,0x5d,0x50,0x53,0x50,0x5c,0xf1,0x42,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20, ++0x3,0x12,0x7a,0x53,0x50,0x57,0x54,0x54,0x57,0x50,0x5f,0x70,0x51,0x2,0x4,0x0,0xf8,0x8,0x8,0xf8,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x0,0x42,0x32,0x13,0x4,0x0,0xf7,0x10,0x13,0x12,0x12,0x12,0x13,0x28,0x47,0x0,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0, ++0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x1,0x1,0x1,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x0,0x0,0x4,0x4,0xfc, ++0x10,0x10,0x10,0x12,0x54,0x58,0x53,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x87,0x0,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x12,0x54,0x59,0x51,0x91,0x11,0x10,0x13,0x28,0x24,0x45,0x82,0x0,0xf8,0x88,0x88,0xf8,0x0,0xdc,0x54,0x54,0xdc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20, ++0x1,0x1,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0x2,0xc,0x30,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x10,0x13,0x11,0x10,0xfc,0x10,0x15,0x1a,0x35,0xd0,0x10,0x17,0x10,0x10,0x50,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40, ++0x1,0x7f,0x41,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x14,0x12,0x21,0xc1,0x4,0x84,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x40,0x33,0x11,0x0,0x80,0x60,0x21,0xa,0x15,0x20,0xe0,0x27,0x20,0x20,0x20,0x20,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x10,0x4e,0xf4,0x40,0x40,0xfc,0x40,0x40,0x40,0x40, ++0x4,0x7e,0x44,0x54,0x57,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x29,0x25,0x42,0x84,0x20,0x28,0x24,0x20,0xfe,0xa0,0xa0,0x94,0xf4,0x98,0x98,0x90,0x28,0x2a,0x4a,0x86, ++0x8,0x8,0xf,0x14,0x24,0x47,0x4,0x4,0x7,0x4,0x4,0x52,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x0,0x20,0xf0,0x0,0x20,0xf0,0x0,0x0,0x4,0x92,0x92,0xf0,0x0, ++0x22,0x21,0x20,0x20,0x27,0xfc,0x25,0x24,0x27,0x20,0x3b,0xe2,0x43,0x2,0x3,0x2,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x12,0x11,0x10,0x10,0x5f,0x54,0x55,0x94,0x17,0x10,0x13,0x12,0x13,0x12,0x13,0x12,0x8,0x10,0xa0,0x4,0xfe,0x44,0x54,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x10,0x8,0x4,0x0,0x3f,0x21,0x29,0x21,0x3f,0x0,0xf,0x8,0xf,0x8,0xf,0x8,0x10,0x20,0x40,0x8,0xfc,0x8,0x28,0x8,0xf8,0x20,0xf0,0x20,0xe0,0x20,0xe0,0x20, ++0x1,0x7c,0x44,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x20,0x28,0x44,0x80,0x4,0x88,0x50,0x4,0xfe,0x24,0xac,0x24,0xfc,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88, ++0x8,0x8,0x8,0xa,0xff,0x8,0xa,0xc,0x38,0xc8,0x8,0x8,0x8,0x8,0x28,0x10,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x8,0x7c,0x4f,0x48,0x49,0x4a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x0,0xf,0x0,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0, ++0x0,0x40,0x30,0x17,0x80,0x61,0x22,0xc,0x13,0x22,0xe3,0x22,0x23,0x20,0x2f,0x20,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0, ++0x8,0x8,0x8,0x8,0xff,0x8,0x18,0x1c,0x2a,0x28,0x48,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x12,0xff,0x20,0x28,0x4a,0x7f,0x8,0x8,0xf,0xf8,0x48,0x8,0x8,0x8,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x20,0x27,0x3c,0x45,0x85,0x7d,0x25,0x25,0xfd,0x25,0x25,0x21,0x2a,0x32,0x24,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x14,0x84,0x44,0x54,0x8, ++0x20,0x1b,0x48,0x40,0x4f,0x49,0x49,0x4f,0x49,0x49,0x4f,0x49,0x41,0x41,0x41,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x4,0x4,0x14,0x8, ++0x8,0x7c,0x4b,0x48,0x48,0x78,0x4b,0x48,0x48,0x78,0x48,0x49,0x4e,0x7d,0x48,0x0,0xc,0x30,0xc0,0x80,0x40,0x40,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x6,0xfc,0x0, ++0x20,0x27,0x24,0x24,0xfc,0x24,0x74,0x6f,0xa4,0x24,0x24,0x24,0x24,0x29,0x30,0x20,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x54,0x88, ++0x10,0x10,0x13,0x12,0xfd,0x10,0x38,0x35,0x52,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x20,0xfe,0x8a,0x4,0x40,0xfe,0x80,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80, ++0x1,0x9,0x7d,0x49,0x4a,0x4a,0x4c,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x8,0x8,0xf,0x12,0x12,0x22,0x43,0x82,0x2,0x2,0x3,0x2,0x2,0x2,0x2,0x2,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0, ++0x11,0x11,0x11,0x15,0x5a,0x52,0x54,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x1,0x41,0x31,0x11,0x2,0x2,0xf4,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x10,0x10,0x17,0x11,0xf8,0x17,0x14,0x1c,0x37,0xd4,0x15,0x15,0x15,0x15,0x55,0x24,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x2,0x1,0xff,0x8,0x4,0x3,0x1c,0xe0,0x1f,0x2,0x4,0x3f,0x24,0x24,0x24,0x20,0x0,0x4,0xfe,0x20,0x40,0x80,0x70,0xe,0xf0,0x0,0x8,0xfc,0x48,0x48,0x48,0x18, ++0x2,0x1,0x7f,0x40,0x80,0x3,0x3e,0x2,0x3,0x7e,0x2,0x2,0x2,0x2,0x1,0x0,0x0,0x0,0xfe,0x2,0x34,0xc0,0x0,0x8,0xfc,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x2,0x1,0x7f,0x48,0x94,0x4,0xb,0x12,0x22,0x43,0x2,0x2,0x3,0x2,0x2,0x2,0x0,0x0,0xfe,0x22,0x14,0x0,0xfc,0x0,0x20,0xf0,0x0,0x10,0xf8,0x0,0x0,0x0, ++0x8,0xf,0x8,0x13,0x10,0x3f,0x50,0x93,0x12,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0x8,0x4, ++0x2,0x1,0x7f,0x44,0xbf,0x4,0x1f,0x4,0xff,0x4,0x9,0x3f,0xc5,0x9,0x15,0x2,0x0,0x0,0xfe,0x42,0xfc,0x40,0xf0,0x44,0xfe,0x40,0x20,0xf8,0x46,0x30,0x10,0x0, ++0x8,0x7c,0x49,0x4b,0x4a,0x7b,0x4b,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x44,0x8,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84, ++0x4,0xe,0xf0,0x10,0x14,0x1e,0x70,0x14,0x1f,0xf1,0x11,0x11,0x11,0x11,0xf,0x0,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0xfa,0xa,0xfe,0x0, ++0x10,0x1f,0x20,0x7f,0xa5,0x28,0x3f,0x20,0x27,0x20,0x27,0x20,0x47,0x44,0x87,0x4,0x0,0xf0,0x44,0xfe,0x10,0x88,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xfc,0x8,0xf8,0x8, ++0x8,0x8,0x49,0x2a,0x8,0xff,0x8,0x18,0x1d,0x2b,0x29,0x49,0x89,0x9,0x9,0x8,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x0,0x40,0x30,0x10,0x80,0x60,0x20,0xf,0x14,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x80,0x80,0x84,0xfe,0x80,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x2,0x3,0x7e,0x3,0x7e,0x1,0x1,0xe,0x70,0x3f,0x24,0x24,0x24,0xff,0x0,0x40,0x20,0xf8,0x0,0xfc,0x20,0x40,0x82,0x62,0x1e,0xf8,0x48,0x48,0x48,0xfe,0x0, ++0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x8,0x1c,0xe0,0x80,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x10, ++0x20,0x23,0x2a,0xff,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x54,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x50,0x50,0xfc,0x50,0x54,0xfe,0xa4,0xa8,0x90,0x88,0xce,0x84, ++0x1,0x21,0x3f,0x10,0x14,0xfe,0x20,0x48,0x7e,0x8,0xe,0xf8,0x49,0x9,0xa,0x8,0x0,0x8,0xf8,0x0,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10, ++0x0,0x3f,0x20,0x3f,0x22,0x22,0x2f,0x22,0x22,0x3f,0x24,0x24,0x24,0x45,0x86,0x4,0x8,0xfc,0x8,0xf8,0x20,0x20,0xf8,0x20,0x24,0xfe,0x88,0x50,0x30,0xe,0x4,0x0, ++0x8,0xff,0x8,0xfe,0x28,0x29,0x7e,0x54,0x54,0x54,0x6c,0x44,0x7c,0x45,0x7d,0x46,0x20,0xfe,0x20,0x90,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x0,0x54,0x52,0x2, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x10,0x10,0x10,0x11,0x16,0x10,0x80,0x90,0x88,0x80,0xf8,0x80,0x88,0xfc,0x80,0x48,0x50,0x20,0x60,0x92,0xa,0x6, ++0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x12,0x1f,0x10,0x13,0x10,0x7e,0x42,0x42,0x42,0x42,0x42,0x7e,0x41,0x2,0x40,0x50,0x48,0x48,0x7e,0xc0,0x40,0x40,0x48,0x28,0x30,0x20,0x50,0x92,0xa,0x6, ++0x0,0x20,0x10,0x10,0xfe,0x0,0x44,0x44,0x25,0x25,0x29,0x9,0x1f,0xe1,0x41,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x41,0x37,0x11,0x81,0x61,0x21,0x9,0x11,0x2f,0xe4,0x25,0x26,0x24,0x27,0x20,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0xa0,0x18,0x8,0x0,0xfc,0x0, ++0x10,0x10,0x23,0x22,0x44,0xf8,0x13,0x20,0x40,0xfc,0x40,0x1,0x1d,0xe2,0x44,0x0,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0x20,0xa0,0x66,0x1c,0x0, ++0x10,0x17,0x11,0x10,0xff,0x10,0x33,0x3a,0x57,0x52,0x93,0x10,0x1f,0x10,0x10,0x10,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40, ++0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0x0,0xf8,0x20,0x44,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x4,0x7f,0x11,0xa,0xff,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0xff,0x4,0x4,0x4,0x4,0xc4,0x8,0x10,0xe0,0x84,0xc4,0x88,0x90,0xa2,0x82,0x4,0xe8,0x10,0x20,0xc0, ++0x0,0x47,0x31,0x10,0x8f,0x60,0x23,0xa,0x13,0x22,0xe3,0x20,0x2f,0x20,0x20,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40, ++0x9,0xfd,0x9,0x9,0x9,0x79,0x41,0x47,0x41,0x79,0x9,0x9,0x9,0x9,0x51,0x21,0x0,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0, ++0x11,0x9,0x7f,0x40,0x9f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x10,0x20,0xfe,0x2,0xf4,0x10,0xf0,0x38,0xc0,0x0,0xf8,0x0,0xfe,0x0,0x0,0x0, ++0x40,0x2f,0x21,0x1,0x81,0x4f,0x48,0x8,0x18,0x2f,0xe1,0x21,0x21,0x21,0x2a,0x24,0x40,0x40,0x44,0x44,0x48,0x50,0x44,0xfe,0x50,0x50,0x50,0x48,0x48,0x44,0x62,0x40, ++0x10,0x10,0x10,0x10,0xff,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4, ++0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x8,0x4,0x4,0x2,0x1,0x2,0x4,0x18,0xe0,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x80,0x60,0x1e,0x4, ++0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x5c,0x10,0x10,0x10,0x10,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80, ++0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x10,0x28,0x44,0x80,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80, ++0x8,0x8,0x8,0x10,0x17,0x30,0x51,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x40,0x60,0x90,0xe,0x4, ++0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x80,0x84,0x84,0x88,0x90,0xa0,0x84,0xfe,0xa0,0xa0,0x90,0x90,0x88,0x8e,0xc4,0x80, ++0x0,0x1f,0x10,0x97,0x51,0x5f,0x10,0x17,0x34,0x57,0x94,0x17,0x20,0x2f,0x40,0x0,0x80,0xfe,0x40,0xfc,0x10,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x40,0x40, ++0x0,0x7b,0x49,0x50,0x57,0x60,0x53,0x4a,0x4b,0x4a,0x6b,0x50,0x4f,0x40,0x40,0x40,0x40,0xf8,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40, ++0x10,0x13,0x10,0x10,0xfc,0x10,0x15,0x19,0x32,0xd5,0x11,0x11,0x11,0x11,0x51,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0xb,0x7c,0x48,0x48,0x48,0x49,0x79,0x4a,0x4d,0x49,0x49,0x79,0x49,0x1,0x1,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x10,0x1c,0x30,0xd0,0x10,0x10,0x11,0x12,0x54,0x20,0x80,0xa0,0x90,0x84,0x9e,0xe0,0x80,0x88,0x50,0x60,0x40,0xc0,0x20,0x12,0xa,0x6, ++0x40,0x33,0x10,0x0,0x80,0x60,0x21,0x9,0x12,0x25,0xe1,0x21,0x21,0x21,0x21,0x21,0x4,0xfe,0x84,0x84,0x84,0x84,0x14,0x8,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x8,0x7e,0x8,0xa,0xff,0x8,0x28,0x2e,0x28,0x39,0x48,0x44,0x83,0x0,0x0,0x8,0x88,0x88,0x50,0x50,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc,0x0, ++0x0,0x7d,0x44,0x44,0x44,0x44,0x7d,0x44,0x44,0x44,0x44,0x7c,0x0,0x24,0x62,0x82,0x4,0xfe,0x44,0x44,0x84,0x94,0x8,0xfc,0x84,0x84,0x84,0xfc,0x0,0x88,0x46,0x42, ++0x7f,0x44,0x7f,0x1,0x1,0x1,0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x1,0x1,0x1,0xfc,0x44,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0,0x0,0x0, ++0x4,0x4,0x4,0x24,0x14,0x14,0x4,0x4,0x1c,0x64,0x4,0x8,0x8,0x10,0x20,0x40,0x80,0x80,0x80,0x90,0xa0,0xc0,0x80,0xc0,0xb0,0x90,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x8,0x3e,0x22,0x3e,0x21,0x5f,0x81,0xff,0x1,0x1f,0x1,0x3f,0x1,0xff,0x1,0x1,0x44,0x7e,0xa8,0x10,0x6e,0xf0,0x14,0xfe,0x10,0xf0,0x0,0xf8,0x0,0xfe,0x0,0x0, ++0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x10,0x3f,0x50,0x10,0x10,0x10,0x10,0x1f,0x10,0x8,0xfc,0x8,0x8,0x8,0x28,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x24,0x24,0x25,0x29,0x32,0x50,0x88,0x7,0x40,0x20,0xfc,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0x54,0x52,0x52,0x0,0x6,0xfc, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x15,0x19,0x31,0xd1,0x11,0x11,0x12,0x12,0x54,0x20,0x8,0x3c,0xc0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x9,0x2a,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x8,0x8,0xff,0x8,0xe,0x78,0x8,0x29,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x0,0x40,0x48,0xfc,0x48,0xc8,0x48,0x6a,0x8a,0x6,0xf0,0x10,0x10,0xf0,0x4,0xfc,0x4, ++0x22,0x21,0x27,0xfa,0x24,0x57,0x50,0xff,0x14,0x17,0x1c,0xf7,0x54,0x14,0x14,0x15,0x20,0x20,0xe4,0x3e,0xc4,0xa4,0xa4,0xa4,0xa4,0xa8,0x90,0x90,0xa8,0xa8,0xc6,0x84, ++0x2,0x2,0x3f,0x2,0x2,0xff,0x2,0x4,0xf,0x18,0x28,0x4f,0x88,0x8,0xf,0x8,0x0,0x10,0xe0,0x40,0x84,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x91,0x13,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0xff,0x9,0x0,0x3f,0x22,0x22,0x3f,0x22,0x22,0x23,0x40,0x49,0x89,0x10,0x20,0x24,0xfe,0x20,0x88,0xfc,0x20,0x28,0xfc,0x20,0x20,0xe0,0x0,0x24,0x22,0x2, ++0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x10,0x10,0x10,0x11,0x12,0x28,0x47,0x0,0x80,0x40,0x48,0xfc,0x10,0x10,0x20,0xa0,0x40,0x40,0xa0,0x10,0x10,0x6,0xfc,0x0, ++0x2,0x42,0x32,0x12,0x8f,0x62,0x22,0xa,0x13,0x2e,0xe2,0x22,0x22,0x22,0x2b,0x24,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x48,0x88,0x8,0x8, ++0x0,0x8,0xfc,0x10,0x11,0x12,0x14,0x7d,0x10,0x10,0x11,0x1c,0xf0,0x40,0x0,0x3,0x40,0x40,0xa0,0xa0,0x10,0x2e,0x44,0x80,0x10,0x60,0x84,0x8,0x10,0x20,0xc0,0x0, ++0x22,0x22,0x7f,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x40,0x54,0x62,0x40,0x7f,0x0,0x8,0x8,0x48,0x28,0x8,0x88,0x48,0x8,0x8,0x8e,0xf8,0x8,0x8,0x8,0x8,0x8, ++0x1,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x8,0x10,0x20,0x0,0x8,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x20,0x18,0x8, ++0x2,0xff,0x14,0x15,0x7f,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0x8,0xf,0x78,0x20,0x4,0xfe,0x40,0x40,0xc8,0x7c,0x48,0x48,0x68,0x58,0x58,0x88,0x88,0xaa,0xca,0x6, ++0x4,0xfe,0x10,0x10,0x20,0x24,0x7e,0xa5,0x25,0x25,0x25,0x25,0x3d,0x25,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xfc,0x23,0x20,0x4b,0xfc,0x27,0x21,0xfa,0x25,0x20,0x3b,0xe1,0x42,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xf8,0x50,0x4c,0x44,0x40, ++0x1,0x1,0x1,0x1,0x1,0x1f,0x10,0x11,0x11,0x11,0x11,0x11,0x2,0x4,0x18,0x60,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x40,0x30,0x8,0x4, ++0x10,0x10,0x10,0x1e,0x20,0x20,0x7d,0x90,0x10,0xfe,0x10,0x12,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x8,0x8,0x8,0x10,0x10,0x37,0x54,0x94,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x44,0x44,0x44,0x44,0x44,0x90,0xc,0x6,0x2, ++0x10,0x10,0x10,0x13,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0xfc,0x44,0x48,0x40,0x60,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x1,0x0,0x1f,0x10,0x90,0x51,0x52,0x14,0x39,0x52,0xd4,0x11,0x22,0x20,0x43,0xc,0x0,0x88,0xfc,0x80,0x80,0x40,0x30,0x8e,0x24,0x40,0x80,0x10,0x20,0xc0,0x0,0x0, ++0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x20,0x23,0x20,0x20,0x23,0x28,0x30,0x23,0xc,0x40,0x40,0xa0,0x20,0x10,0x2e,0x44,0x90,0x20,0x40,0x88,0x10,0x20,0xc0,0x0,0x0, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x20,0x2f,0x20,0x3f,0x2a,0x29,0x48,0x8c,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x0,0xf0,0x0,0xf8,0x10,0x20,0xc0,0x30,0xc, ++0x10,0x13,0x12,0x12,0xff,0x12,0x16,0x1b,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x4,0xfe,0x0,0x8,0xfc,0x0,0x4,0xfe,0xa0,0xa2,0xa4,0x98,0x90,0x8e,0xc4,0x80, ++0x10,0x10,0x13,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x18,0x11,0x2,0x20,0x24,0xfe,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0xfe,0x88,0x6,0x2, ++0x0,0x78,0x4f,0x50,0x50,0x61,0x51,0x4b,0x48,0x48,0x68,0x57,0x40,0x40,0x40,0x40,0x80,0x84,0xfe,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x8,0x8,0xff,0x8,0x1f,0x0,0x3d,0x5,0x5,0x9,0x35,0xc2,0xf,0x20,0x24,0x42,0x20,0x24,0xfe,0x20,0xe0,0x48,0x98,0x20,0x40,0x30,0xe,0x4,0xe0,0x10,0x8c,0x44, ++0x10,0x10,0x11,0x12,0xfc,0x13,0x14,0x18,0x37,0xd0,0x10,0x13,0x10,0x10,0x51,0x20,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80, ++0x8,0x7c,0x49,0x4a,0x48,0x7b,0x48,0x48,0x4f,0x78,0x48,0x4b,0x48,0x78,0x49,0x0,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80, ++0x8,0xb,0x10,0x10,0x20,0x48,0x88,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x2,0x44,0x29,0x12,0x28,0x4b,0x88,0x8,0x1f,0x28,0x48,0x8b,0x8,0x8,0x29,0x10,0x80,0x80,0xf8,0x10,0x20,0xf8,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80, ++0x8,0xf,0x8,0x10,0x3f,0x41,0x1,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x5,0x2,0x0,0xe0,0x40,0x90,0xf8,0x10,0x14,0xfe,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0, ++0x10,0x17,0x10,0x10,0x58,0x54,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x12,0x1f,0x10,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x8,0x7f,0x8,0x7f,0x49,0x7f,0x1c,0x2a,0xc8,0x3f,0x1,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0x7e,0x88,0x48,0x50,0x20,0x50,0x8e,0xf8,0x0,0xf0,0x0,0x4,0xfe,0x0, ++0x10,0x13,0x10,0x10,0xfc,0x13,0x15,0x19,0x31,0xd2,0x14,0x10,0x11,0x10,0x5f,0x20,0x0,0xf8,0x10,0x20,0x44,0x48,0x70,0x50,0x50,0x4e,0x44,0x40,0x40,0x84,0xfe,0x0, ++0x0,0x7f,0x1,0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x4,0xfe,0x10,0x10,0x11,0x5e,0x50,0x50,0x50,0x50,0x5e,0xf0,0x40,0x1,0x2,0x40,0x40,0x44,0xfe,0x88,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x10,0x10,0x10,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x10,0x10,0x13,0x20,0x24,0x3e,0x20,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x84,0x2, ++0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x32,0x52,0xd2,0x12,0x22,0x22,0x5f,0x0,0x80,0x48,0xfc,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x41,0x22,0x14,0x7f,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x14,0x12,0x22,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x17,0x10,0x0,0x0,0xf0,0x11,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x8,0x8,0xff,0x8,0x2,0x1,0x3f,0x0,0x0,0x3,0xc,0x10,0x60,0x90,0xf,0x0,0x20,0x24,0xfe,0x20,0x0,0x0,0xf0,0x20,0xc0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x31,0x39,0x54,0x50,0x90,0x10,0x10,0x10,0x11,0x16,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x1,0x1,0x1,0xff,0x1,0x1,0x3f,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x20,0x20,0x40,0x80,0x0,0x80,0x60,0x1e,0x4, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x49,0x48,0x48,0x48,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x22,0x22,0x22,0xfb,0xad,0xa9,0xa9,0xaf,0xf9,0xa1,0x29,0x39,0xea,0x42,0x4,0x8,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xe4,0x24,0x24,0x24,0x24,0xbc,0x64,0x40,0x0, ++0x20,0x20,0x22,0x3f,0x28,0x48,0x88,0x9,0xff,0x8,0x8,0x14,0x12,0x22,0x40,0x80,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0xc4,0x44,0x44,0x44,0x44,0x7c,0x44,0x0, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x24,0x3c,0x24,0x24,0x24,0x44,0x95,0xa,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x5,0x3f,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x45,0x95,0x9,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x0,0x40,0x30,0x10,0x80,0x60,0x27,0x8,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x2,0x1,0x1,0x0,0x7f,0x0,0x0,0x0,0x0,0x1,0x2,0xc,0x30,0x48,0x7,0x0,0x0,0x0,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x40,0x0,0x1c,0xe0,0x41,0x2,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x2,0x2, ++0x4,0xfe,0x24,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0xfc,0x44,0x4,0x5,0x4,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x48,0x48,0x84,0x86,0x2,0x0, ++0x1,0x1,0x7f,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xff,0x0,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xfc,0x13,0x32,0x3b,0x56,0x53,0x92,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0, ++0x4,0xfe,0x13,0x10,0x10,0x3d,0x25,0x45,0xa5,0x19,0x9,0x11,0x21,0x41,0x87,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xff,0x10,0x14,0x18,0x31,0xd0,0x11,0x11,0x11,0x12,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x90,0x50,0x52,0x12,0x12,0xe,0x0, ++0x8,0x8,0xf,0x10,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x13,0x12,0x12,0x1f,0x10,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0, ++0x8,0x8,0xf,0x10,0x11,0x32,0x57,0x90,0x10,0x10,0x17,0x10,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x80,0x0,0x8,0xfc,0x44,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x11,0x13,0x1d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x11,0x11,0x11,0x11,0xfd,0x11,0x14,0x18,0x31,0xd1,0x11,0x11,0x11,0x11,0x51,0x21,0x0,0x8,0x1c,0xe0,0x2,0x2,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x1,0x1,0x1,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x4,0x7e,0x44,0x44,0x45,0x7d,0x11,0x51,0x5d,0x51,0x51,0x51,0x5d,0xf1,0x47,0x0,0x20,0x20,0x20,0x20,0x28,0x3c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xc,0x10,0x20,0x40,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x40,0x20,0x18,0xc,0x4, ++0x20,0x20,0x21,0x3e,0x20,0x20,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x18,0xe0,0x0,0x4,0x4,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x23,0x22,0x46,0xfa,0x12,0x23,0x42,0xfe,0x2,0x2,0x1e,0xe2,0x43,0x2,0x0,0x3c,0xe0,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x92,0xa,0x6, ++0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x3f,0x0,0x2,0x11,0x50,0x50,0x90,0xf,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x80,0x84,0x12,0x12,0xf0,0x0, ++0x8,0x8,0x7e,0x8,0xe,0xf8,0x48,0x19,0x3f,0x1,0x1f,0x1,0xff,0x1,0x1,0x3,0x40,0x48,0xfc,0x48,0xc8,0x68,0x8a,0x36,0xc0,0x0,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x28,0x25,0x20,0x2f,0xf2,0x22,0x22,0x2a,0x3f,0xe2,0x22,0x25,0x24,0x28,0xb0,0x40,0x80,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0xd4,0x48,0x40,0x40, ++0x0,0x7f,0x2,0x4,0x8,0x10,0x3f,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x0,0x0,0x20,0x10,0xf8,0x8,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0, ++0x4,0xfe,0x10,0x10,0x20,0x45,0xfe,0x10,0x10,0x7c,0x10,0x10,0x1e,0xf0,0x41,0x6,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x3f,0x24,0x3f,0x1,0x7f,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xff,0x0,0xf8,0x48,0xf8,0x0,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x0, ++0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x5c,0x10,0x10,0x11,0x12,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x50,0x48,0x84,0x6,0x2, ++0x10,0x10,0x11,0x54,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x20,0x28,0xfc,0x20,0x24,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x28,0x10, ++0x4,0x24,0x25,0x3f,0x24,0x44,0xff,0x4,0x3f,0x24,0x24,0x24,0x26,0x25,0x4,0x4,0x4,0x4,0x4,0xa4,0x24,0xa4,0xe4,0x24,0xa4,0xa4,0xa4,0x84,0x84,0x4,0x14,0x8, ++0x20,0x22,0x3f,0x48,0x8,0xff,0x10,0x14,0x22,0x42,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x4,0x7e,0x44,0x44,0xc4,0x44,0x7c,0x44,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x8,0x1c,0xf2,0x12,0x13,0xfe,0x14,0x30,0x3b,0x54,0x50,0x90,0x11,0x11,0x12,0x1c,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x8,0x1c,0xf0,0x11,0x13,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0xa0,0x90,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x28,0x28,0x28,0x28,0x49,0x42,0x8c,0x30,0x78,0x80,0x80,0x84,0xfe,0x80,0x88,0xfc,0x8,0x88,0x88,0x88,0x8,0x70,0xc,0x4, ++0x4,0x4,0xf,0x11,0x28,0x44,0x3,0xc,0x71,0x9,0x9,0x12,0x4,0x8,0x30,0xc0,0x0,0x0,0xf8,0x10,0xa0,0xc0,0x0,0x0,0x10,0x30,0x40,0x80,0x40,0x30,0xe,0x4, ++0x1,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x3f,0x50,0xd7,0x12,0x21,0x21,0x40,0x0,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x10,0xfc,0x10,0x10,0x10,0x50,0x20, ++0x2,0x42,0x2f,0x22,0x80,0x67,0x24,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x20,0x20,0x48,0x48,0xfe,0x48,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40, ++0x0,0x40,0x31,0x11,0x82,0x67,0x20,0x8,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x80,0x80,0x0,0x10,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x1,0x7f,0x44,0x88,0x3f,0x2,0x4,0x1f,0x1,0x1,0x7f,0x1,0x1,0xff,0x0,0x0,0x0,0xfe,0x42,0x24,0xf8,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0,0x4,0xfe,0x0, ++0x1,0x1,0x1,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0, ++0x1,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x1,0x1,0x12,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x4,0x12,0x12,0xf0,0x0, ++0x10,0x10,0x10,0x1c,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x10,0x14,0x18,0x10,0x0,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x2,0x1,0xff,0x1,0x1f,0x11,0x11,0x1f,0x11,0x5,0x8,0x18,0x28,0xca,0xc,0x8,0x0,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0x0, ++0x10,0x10,0x20,0x21,0x45,0xfa,0x10,0x20,0x40,0xfd,0x2,0x0,0x1c,0xe0,0x40,0x0,0x80,0x80,0xfc,0x8,0x90,0x50,0x20,0x50,0x88,0xe,0x64,0x10,0x8,0xc0,0x30,0x8, ++0x8,0x1c,0xf0,0x10,0x11,0xff,0x11,0x39,0x35,0x55,0x51,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x24,0x44,0x94,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x0,0x3f,0x1,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x3f,0x1,0x1,0xff,0x0,0x38,0xc0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0, ++0x8,0x8,0x8,0x10,0x17,0x34,0x54,0x94,0x14,0x17,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40, ++0x1,0x1,0x1,0x2,0x4,0x8,0x30,0x0,0x8,0x8,0x14,0x12,0x22,0x41,0x82,0x0,0x0,0x0,0x0,0x80,0x40,0x38,0x10,0x0,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x0, ++0x2,0x4,0x1f,0x10,0x12,0x11,0x11,0xff,0x10,0x12,0x11,0x11,0x10,0x20,0x40,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x0,0x3f,0x21,0x21,0x2f,0x21,0x21,0x3f,0x20,0x27,0x24,0x24,0x24,0x47,0x84,0x0,0x8,0xfc,0x8,0x48,0xe8,0x8,0x28,0xf8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x28,0x10, ++0x10,0x10,0x10,0x10,0x54,0x52,0x52,0x90,0x10,0x10,0x10,0x10,0x20,0x20,0x40,0x0,0x4,0x84,0x84,0x84,0xa4,0x94,0x94,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x4,0x4, ++0x1,0x41,0x31,0x11,0x81,0x65,0x23,0xb,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x20,0x4,0x4,0x24,0x24,0x24,0xb4,0x6c,0x6c,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4, ++0x1,0x41,0x21,0x22,0x4,0x8,0xe7,0x20,0x20,0x20,0x23,0x20,0x28,0x30,0x27,0x0,0x0,0x0,0xf8,0x10,0x20,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x9,0xfd,0x9,0x9,0xd,0x7b,0x41,0x47,0x41,0x79,0xb,0xd,0x9,0x89,0x51,0x21,0x4,0x3e,0x4,0x4,0x44,0xbc,0x20,0xe0,0x24,0x3e,0x84,0x44,0x4,0x4,0x28,0x10, ++0x10,0x10,0x14,0xfe,0x21,0x21,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x8,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4,0x0, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x24,0x24,0x24,0x3c,0x24,0x24,0x24,0x44,0x94,0x8,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10, ++0x0,0x3f,0x0,0x1f,0x0,0x3f,0x1,0x7f,0x41,0x9f,0x11,0x11,0x11,0x11,0x1,0x1,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x10,0x10,0x50,0x20,0x0,0x0, ++0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xf,0x8,0x8,0x8,0x8,0x8,0x10,0x20,0x40,0x8,0xfc,0x88,0x88,0x88,0xf8,0x40,0xe0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x1e,0x22,0xc4,0x8,0x7e,0x2,0x2,0x7e,0x2,0x2,0x7f,0x1,0x2,0x0,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x10,0x28,0x4e,0x84, ++0x2,0x1,0x7f,0x40,0x81,0x1,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x20,0x0,0x0,0xfe,0x2,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x20,0x3f,0x50,0x9f,0x10,0x1f,0x0,0x7f,0x0,0x10,0xf8,0x10,0x10,0xf0,0x90,0x40,0x20,0xfe,0x14,0xf0,0x10,0xf0,0x0,0xfc,0x0, ++0x10,0xff,0x12,0x53,0x52,0x53,0x52,0x57,0x78,0xb,0x8,0x3b,0xc8,0x9,0x2e,0x10,0x0,0xfc,0x44,0xd4,0x48,0xd4,0x62,0xd8,0x60,0xa4,0x68,0xb0,0x68,0xa6,0x20,0x20, ++0x0,0x9,0xfd,0x11,0x11,0x12,0x7c,0x13,0x10,0x10,0x1c,0xf0,0x41,0x2,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20, ++0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x10,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20, ++0x10,0x11,0x11,0x11,0x7d,0x56,0x54,0x57,0x54,0x7c,0x10,0x14,0x1d,0xf6,0x44,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xb0,0xa8,0x2e,0x24,0x20,0x20, ++0x1,0x11,0x11,0x1f,0x11,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0xc1,0x1,0x1,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe,0x4,0x0,0x0, ++0x2,0x44,0x2b,0x10,0x28,0x4b,0x88,0x9,0x1b,0x2d,0x49,0x89,0x9,0x9,0x29,0x11,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x20,0x1b,0x8,0x0,0x7,0xf0,0x11,0x13,0x15,0x19,0x11,0x15,0x19,0x11,0x1,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x42,0x22,0x23,0x2,0x4,0xe0,0x2f,0x20,0x20,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x60,0x50,0x4e,0x44,0x40,0x40, ++0x0,0x4f,0x20,0x21,0x3,0xc,0xe1,0x22,0x2c,0x21,0x22,0x2c,0x21,0x50,0x8f,0x0,0x8,0xfc,0x80,0x0,0x88,0xd8,0x60,0x40,0xe0,0x50,0x48,0x48,0x40,0x86,0xfc,0x0, ++0x10,0x10,0x10,0x12,0x1f,0x28,0x49,0x8a,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x40,0x40,0x40,0x44,0x7e,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x10,0x10,0x10,0x12,0x55,0x59,0x51,0x91,0x11,0x11,0x11,0x28,0x24,0x44,0x83,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x3c,0xe2,0x2, ++0x2,0x2,0x3f,0x2,0xff,0x2,0xf,0x38,0xc8,0xf,0x8,0x8,0xf,0x20,0x24,0x42,0x0,0x20,0xf0,0x84,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x84,0x44, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x14,0x18,0x31,0xd0,0x10,0x10,0x10,0x10,0x57,0x20,0x40,0x20,0x4,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x7,0x74,0x57,0x54,0x75,0x54,0x55,0x75,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6, ++0x0,0x7,0x74,0x57,0x54,0x55,0x54,0x55,0x55,0x55,0x54,0x77,0x4a,0x12,0x22,0x2,0x4,0xfe,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x6, ++0x2,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x8,0x8,0xff,0x9,0x1,0x1f,0x1,0xff,0x1,0x2,0xf,0x18,0x2f,0xc8,0xf,0x8,0x20,0x24,0xfe,0x20,0x10,0xe0,0x44,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x38,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x2,0x3f,0x22,0x22,0x23,0x3e,0x22,0x22,0x3e,0x22,0x22,0x22,0x2f,0xf0,0x41,0x2,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0x28,0x10, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x55,0x7c,0x54,0x10,0x14,0xfc,0x47,0x0,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x7e,0x44,0x54,0x55,0x55,0x56,0x54,0x54,0x54,0x54,0x54,0x10,0x2b,0x44,0x84,0x40,0x20,0x20,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x10,0x10,0x13,0x1c,0x20,0x23,0x7c,0x90,0x13,0xfd,0x12,0x15,0x10,0x14,0x18,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x80,0x84,0xfe,0x8,0x8,0xfe,0x8,0x88,0x48,0x18, ++0x10,0x12,0x1f,0x28,0x45,0x80,0x8,0x7d,0x11,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x52,0x12,0xe,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x40,0x30,0x17,0x80,0x60,0x20,0x8,0x17,0x20,0xe0,0x20,0x20,0x20,0x2f,0x20,0x80,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x13,0x12,0x2,0xfe,0xa,0x12,0x3b,0x56,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0xa8,0xa0,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7d,0x4,0x4,0x1c,0xe4,0x44,0x17,0x8,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x14,0x14,0x58,0x20,0x8,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x44,0x42,0x40, ++0x0,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x21,0x41,0x81,0x1,0x10,0x78,0x80,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x8,0xe,0x4,0x0, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x17,0x1a,0x32,0xd3,0x12,0x10,0x10,0x10,0x57,0x20,0x40,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xfc,0x48,0x50,0x20,0xd2,0xa,0x6, ++0x1,0x1,0x1,0x3f,0x2,0x2,0xff,0x4,0x4,0xf,0x0,0x0,0x0,0x6,0x1,0x0,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x80,0x40, ++0x0,0x4,0xfe,0x11,0x10,0x20,0x23,0x7c,0xa4,0x25,0x24,0x24,0x24,0x3c,0x24,0x0,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10, ++0x10,0x10,0x10,0xfd,0x20,0x28,0x4b,0x7c,0x8,0x9,0x1c,0xe8,0x48,0x8,0x8,0x8,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xfc,0x8,0x10,0x90,0x60,0x20,0x10, ++0x10,0x17,0x14,0x14,0xff,0x14,0x13,0x19,0x31,0xd7,0x11,0x11,0x1f,0x11,0x52,0x24,0x4,0xbe,0xa4,0xa4,0xbc,0x62,0xde,0x10,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4, ++0x0,0x7c,0x47,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x54,0x10,0x29,0x46,0x80,0x88,0x50,0xfe,0x50,0xfc,0x54,0x54,0xfe,0x54,0x54,0xfc,0x50,0xd8,0x56,0x54,0x50, ++0x10,0x1e,0x28,0x4f,0x8,0x1f,0x0,0xff,0x2,0xd,0x71,0x6,0x39,0x6,0x78,0x3,0x40,0x7c,0xa0,0xc0,0x40,0x80,0x84,0xfe,0x10,0x20,0xc0,0xa0,0x90,0x8e,0x84,0x0, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x14,0x14,0x1b,0x10,0x40,0x20,0x24,0xfe,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x1,0x0,0x0,0x3f,0x20,0x20,0x20,0x20,0x2f,0x20,0x20,0x20,0x40,0x40,0xbf,0x0,0x0,0x80,0x88,0xfc,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80,0x84,0xfe,0x0, ++0x8,0x48,0x2b,0x8,0x18,0x29,0x4a,0x9,0xff,0x2,0x4,0xc,0x14,0x65,0x6,0x4,0x40,0x48,0xfc,0x40,0x50,0xf8,0x0,0x4,0xfe,0x8,0x90,0xa0,0x40,0x30,0xe,0x4, ++0x8,0x8,0x8,0x48,0x28,0x2f,0x9,0x9,0x19,0x2a,0x49,0xc8,0x8,0x8,0x9,0xa,0x40,0x40,0x40,0x80,0x84,0xfe,0x8,0x8,0x8,0x8,0x10,0xa0,0x40,0xb0,0xc,0x4, ++0x10,0x17,0x11,0x10,0xff,0x10,0x17,0x1a,0x33,0xd2,0x13,0x10,0x17,0x10,0x5f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0, ++0x10,0x10,0x10,0x90,0x50,0x50,0x1f,0x10,0x30,0x50,0xd0,0x10,0x10,0x17,0x10,0x10,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0, ++0x8,0x8,0x8,0x48,0x28,0x2f,0x8,0x8,0x18,0x28,0x49,0xc9,0x9,0xa,0xc,0x8,0x40,0x50,0x48,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4,0x0, ++0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x10,0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x11,0x15,0x19,0x11,0x1,0xa0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x13,0x12,0x12,0x12,0x13,0x2a,0x47,0x0,0x40,0x90,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x6,0xfc,0x0, ++0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1e,0x22,0xcc,0x1f,0x10,0x11,0x11,0x6,0x38,0x40,0x44,0x7e,0x84,0xc4,0x28,0x10,0x28,0x46,0x90,0xf8,0x10,0x10,0x10,0xc0,0x38, ++0x0,0x7c,0x44,0x48,0x50,0x48,0x45,0x65,0x5a,0x44,0x41,0x5f,0x1,0x1,0xff,0x0,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0x8,0xe,0x4,0x0,0xf0,0x0,0x0,0xfe,0x0, ++0x10,0x17,0x24,0x22,0x41,0xfa,0x12,0x24,0x47,0xfc,0x4,0x2,0x19,0xe2,0x44,0x8,0x0,0xbc,0xa4,0xa8,0x10,0xa8,0xa6,0x40,0xbc,0xa4,0xa4,0xa8,0x10,0xa8,0x46,0x4, ++0x0,0x4f,0x30,0x13,0x2,0x2,0xf3,0x10,0x13,0x10,0x10,0x17,0x14,0x18,0x11,0x0,0x44,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x0,0xf8,0x20,0x44,0xfe,0x40,0x40,0x40,0x80, ++0x1,0x41,0x31,0x13,0x2,0x16,0x1b,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x2,0x40,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x17,0x1a,0x30,0xd2,0x12,0x12,0x13,0x14,0x58,0x20,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x48,0x40,0x48,0x7c,0x40,0x40,0xc6,0x7c,0x0, ++0x10,0x10,0x12,0x12,0xfe,0x12,0x17,0x18,0x30,0xd4,0x14,0x14,0x14,0x14,0x57,0x20,0x40,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x11,0x1,0xff,0x1,0x1,0x1,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x1,0x1,0x1,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x9,0x31,0x1,0x8,0xfc,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x0,0x17,0xf8,0x20,0x21,0x22,0x26,0xf9,0x22,0x24,0x20,0x21,0x3a,0xe4,0x41,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80, ++0x8,0x8,0xff,0x8,0x1,0x21,0x21,0x21,0x3f,0x1,0x41,0x41,0x41,0x41,0x7f,0x40,0x20,0x24,0xfe,0x20,0x0,0x8,0x8,0x8,0xf8,0x0,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x55,0x63,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x84,0x4,0x44,0x24,0x24,0x4,0x4,0x4,0x4,0x28,0x10, ++0x0,0xb,0x7c,0x48,0x49,0x4a,0x4e,0x49,0x4a,0x4c,0x48,0x79,0x4a,0x4,0x1,0x0,0x4,0xfe,0x40,0x80,0x84,0x4c,0xb0,0x20,0xb0,0x68,0xa8,0x24,0x22,0x20,0x40,0x80, ++0x8,0x4,0x7f,0x1,0x3f,0x2,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0xf,0x8,0x20,0x48,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x12,0x54,0x59,0x52,0x90,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x40,0x30,0x10,0x87,0x64,0x24,0xc,0x14,0x27,0xe4,0x20,0x20,0x20,0x2f,0x24,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x50,0x48,0x7c,0xc4,0x4, ++0x10,0xc,0x4,0x0,0xff,0x10,0x10,0x22,0x24,0x78,0x8,0x10,0x14,0x22,0x7e,0x2,0x10,0x30,0x40,0x4,0xfe,0x20,0x20,0x44,0x48,0xf0,0x10,0x20,0x28,0x44,0xfc,0x4, ++0x41,0x31,0x11,0x2,0xa,0xf4,0x20,0x20,0x21,0x26,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0xfc,0x4,0x48,0x40,0xa0,0x90,0xe,0x4,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x41,0x21,0x21,0xa,0x34,0xe0,0x21,0x26,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x0,0x0,0xfc,0x44,0x48,0xa0,0x10,0xe,0xf4,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x20,0x10,0x10,0x5,0xa,0x70,0x10,0x13,0x12,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x80,0xfc,0x84,0x28,0x20,0x50,0x8e,0x4,0x0,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x44,0x22,0x21,0xf,0x82,0x42,0x44,0x14,0x1f,0x21,0xe2,0x24,0x29,0x2f,0x21,0x20,0x8,0x10,0x24,0xfe,0x10,0x10,0x20,0xa4,0x78,0x8,0x10,0x20,0x44,0x7c,0x4,0x0, ++0x2,0x42,0x24,0x29,0x84,0x62,0x22,0x8,0x17,0x24,0xe4,0x27,0x24,0x24,0x27,0x24,0x48,0x48,0x90,0x20,0x90,0x48,0x48,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x0,0x0,0xfe,0x4,0x8,0x11,0x15,0x1a,0xf0,0x50,0x10,0x10,0x10,0x10,0x51,0x26,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x28,0x2e,0x28,0x2e,0xf8,0x42,0x4,0x3f,0x1,0x2,0x3f,0x1,0x9,0x11,0x23,0x80,0x80,0x98,0xe2,0x82,0x7e,0x0,0x10,0xe0,0x0,0x10,0xf8,0x8,0x20,0x18,0x8, ++0x8,0xb,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x0,0xf8,0x8,0x10,0x20,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x10,0x11,0x52,0x34,0x18,0xfe,0x10,0x33,0x38,0x54,0x54,0x90,0x10,0x10,0x10,0x10,0x0,0xfc,0x4,0x8,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x40,0x37,0x14,0x88,0x67,0x20,0x9,0x10,0x2f,0xe0,0x20,0x27,0x20,0x20,0x20,0x80,0x40,0xfe,0x2,0x44,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x40,0x40, ++0x0,0x3f,0x0,0x0,0x0,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x10,0x20,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x2,0x4,0x1f,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x47,0x30,0x13,0x80,0x6f,0x20,0xb,0x12,0x22,0xe2,0x22,0x22,0x20,0x23,0x2c,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x2,0x1,0x3f,0x20,0x40,0x1f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0x0,0xfc,0x4,0x8,0xe0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x13,0x1c,0x10,0x7f,0x14,0x3e,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x9,0x11,0x23,0x4,0x18,0x64,0x18,0x64,0x18,0x60,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x20,0x18,0x8, ++0x10,0x10,0x13,0x12,0xfc,0x11,0x30,0x38,0x57,0x50,0x90,0x11,0x11,0x12,0x10,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x0,0x78,0x4b,0x4a,0x4c,0x79,0x50,0x10,0x13,0x5c,0x50,0x51,0x5d,0xf2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x2,0x1,0x7f,0x40,0x80,0x1f,0x0,0x0,0xff,0x1,0x9,0x9,0x11,0x21,0x5,0x2,0x0,0x0,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0x0,0x20,0x10,0x8,0x8,0x0,0x0, ++0x10,0x10,0x23,0x22,0x44,0xf9,0x10,0x20,0x43,0xf8,0x0,0x1,0x19,0xe2,0x40,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x10,0x8,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x2,0x51,0x50,0x90,0xf,0x0,0x10,0x20,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x0,0x84,0x92,0x12,0xf0,0x0, ++0x11,0x11,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x82,0x0, ++0x10,0x10,0x10,0x3f,0x42,0x84,0x7f,0x1,0x1,0x3f,0x1,0x1,0x7f,0x1,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x1,0x1,0x1,0x3f,0x1,0x1,0xff,0x1,0x9,0x9,0x9,0x9,0x9,0x15,0x23,0x40,0x0,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0, ++0x1,0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x37,0xc1,0x1f,0x1,0x2,0x4,0x38,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x30,0xce,0x4,0xf0,0x0,0xc0,0x30,0x8, ++0x10,0x10,0x17,0x10,0xfb,0x10,0x17,0x19,0x32,0xdd,0x10,0x17,0x10,0x10,0x51,0x26,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xe,0xf4,0x40,0xfc,0x40,0xb0,0xc,0x4, ++0x8,0x1c,0xf1,0x11,0x15,0xff,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x0,0x1f,0x10,0x10,0x10,0x10,0x1f,0x11,0x1,0x11,0x11,0x11,0x11,0x29,0x47,0x80,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x10,0xf8,0x0,0x0,0x6,0xfc,0x0, ++0x2,0x1,0x7f,0x8,0x8,0x8,0x14,0x22,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x20,0x20,0x20,0x50,0x88,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x20,0x18,0x8,0x0,0xfe,0x21,0x20,0x3c,0x24,0x25,0x27,0x24,0x44,0x44,0x94,0x9,0x40,0x40,0x48,0x7c,0x80,0x48,0x7c,0xa0,0xa0,0x24,0xfe,0x20,0x50,0x50,0x8e,0x4, ++0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x40,0x30,0x11,0x1,0x1,0xf1,0x11,0x11,0x11,0x11,0x11,0x13,0x15,0x19,0x17,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x0,0x7c,0x45,0x49,0x49,0x51,0x49,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x47,0x40,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x10,0x10,0x21,0x21,0x45,0xf9,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x47,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x10,0x10,0x10,0x1e,0x20,0x20,0x7c,0x91,0x11,0xff,0x11,0x13,0x15,0x19,0x11,0x1,0x20,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x3e,0x48,0x9f,0x12,0x10,0x1f,0x8,0xff,0x14,0x2f,0x41,0x9f,0x5,0x9,0x13,0x40,0x7e,0x90,0xf0,0x10,0x90,0xf0,0x4,0xfe,0x50,0x88,0x2e,0xe4,0x40,0x30,0x10, ++0x1,0x5,0x75,0x55,0x55,0x5f,0x51,0x52,0x57,0x5a,0x53,0x72,0x43,0x2,0x4,0x8,0x20,0x20,0xe6,0x38,0xe2,0x1e,0xf0,0x28,0xfc,0x48,0xf8,0x48,0xf8,0x48,0x48,0x58, ++0x4,0xfe,0x29,0x28,0xfe,0xaa,0xaa,0xab,0xa6,0xc2,0x83,0xfe,0x82,0x82,0xfe,0x82,0x20,0x24,0xfe,0x0,0x88,0x88,0x88,0x54,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x22,0x3f,0x22,0x3e,0x22,0x3e,0xe2,0x2,0x3,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0xfc,0x84,0x88,0x50,0x20,0x58,0x8e,0x4, ++0x0,0x7f,0x44,0x44,0x7f,0x0,0x4,0xfc,0x4,0x4,0x7c,0x4,0x4,0xfc,0x4,0x4,0x4,0xfe,0x44,0x44,0xfc,0x0,0x44,0x7e,0x40,0x48,0x7c,0x40,0x44,0x7e,0x40,0x40, ++0x8,0x7f,0x4,0x3f,0x24,0x24,0x28,0x3f,0x20,0x3f,0x0,0xff,0x8,0x4,0x4,0x0,0x40,0xfc,0x80,0xf8,0x88,0xe8,0x8,0xf8,0x8,0xf8,0x20,0xfe,0x20,0x20,0xa0,0x40, ++0x2,0x5f,0x21,0x2f,0x9,0xa,0xe8,0x2b,0x28,0x2f,0x20,0x3f,0x24,0x22,0x50,0x8f,0x20,0xfc,0x40,0xf8,0x48,0x38,0x8,0xe8,0x8,0xf8,0x20,0xfe,0x20,0xa0,0x46,0xfc, ++0x1,0x9,0x7d,0x49,0x4a,0x4c,0x48,0x78,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x2,0x2,0x2,0xff,0x4,0x4,0x4,0x8,0xf,0x10,0x10,0x20,0x40,0x80,0x7f,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x10,0xf8,0x80,0x80,0x80,0x80,0x84,0xfe,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x12,0x14,0x18,0x10,0x10,0x17,0x10,0x80,0x80,0x84,0xfe,0x80,0x80,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x11,0x11,0x11,0x11,0xfe,0x14,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x10,0x12,0x12,0x22,0x3f,0x62,0xa2,0x22,0x2f,0x28,0x28,0x28,0x28,0x2f,0x28,0x20,0x20,0x20,0x20,0x24,0xfe,0x84,0x44,0x44,0xc8,0xa8,0xa8,0x90,0xa8,0xa8,0x46,0x84, ++0x9,0x9,0x9,0x11,0x12,0x32,0x54,0x98,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x90,0xf8,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x1,0x1,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x0,0x0,0x10,0x10,0x10,0x28,0x24,0x44,0x80,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0, ++0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x2a,0x29,0x31,0x20,0x2f,0x40,0x40,0xbf,0x0,0x0,0x84,0xfe,0x80,0x90,0x90,0x90,0xa8,0xa4,0xc4,0x90,0xf8,0x80,0x84,0xfe,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x0,0x0,0x0,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x8,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0xff,0x1,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x8,0x8,0x8,0x8,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0x8,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xe0,0x20, ++0x10,0x11,0x11,0x11,0x11,0x11,0x11,0xff,0x11,0x11,0x11,0x11,0x11,0x21,0x20,0x40,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x7f,0x0,0x0,0x1,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x80,0x0,0x0,0x60,0x10,0x8,0x4,0x4,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0xff,0x0,0x8,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x0,0x4,0xfe,0x0, ++0x0,0x3f,0x0,0x0,0x1,0x7d,0x5,0x9,0x9,0x11,0x11,0x21,0x45,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x18,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x4,0xfe,0x0, ++0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x0,0x7f,0x44,0x42,0x5f,0x41,0x41,0x41,0x40,0x4,0xfe,0x0,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x44,0x84,0xf4,0x4,0x4,0x14,0x8, ++0x0,0x7f,0x3,0x5,0x19,0x61,0x10,0x10,0xfe,0x22,0x22,0x23,0x14,0x8,0x14,0x62,0x8,0xfc,0x0,0x60,0x18,0x4,0x0,0xf8,0x8,0x10,0x24,0xfe,0x20,0x20,0xa0,0x40, ++0x0,0xff,0x1,0x3d,0x25,0x3d,0x1,0x7f,0x1,0x3d,0x25,0x25,0x3d,0x1,0xff,0x0,0x4,0xfe,0x0,0x78,0x48,0x78,0x0,0xfc,0x0,0x78,0x48,0x48,0x78,0x4,0xfe,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x1,0x7f,0x41,0x41,0x4f,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x4,0x24,0xe4,0x24,0x14,0x8, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x0,0x0,0x20,0x60,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x0,0x3,0x7e,0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x10,0xf8,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0xfe, ++0x0,0x1,0x3f,0x1,0x1,0x1,0x1,0xff,0x1,0x2,0x2,0x4,0x4,0x8,0x30,0xc0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x80,0x80,0x40,0x20,0x10,0xe,0x4, ++0x0,0x10,0xc,0x2,0x1,0x2,0xc,0x70,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x10,0x30,0x40,0x80,0x0,0xc0,0x30,0x28,0x40,0x40,0x80,0x0,0x80,0x60,0x1e,0x4, ++0x0,0x1,0x3e,0x20,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x3,0x10,0xf8,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x20,0x2,0x2,0xfe, ++0x0,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x20,0x20,0x22,0x24,0x28,0x33,0x20,0x0,0x10,0xf8,0x80,0x80,0x80,0x84,0xfe,0x80,0x80,0x40,0x40,0x20,0x20,0x12,0x8a,0x6, ++0x2,0x2,0x4,0x3f,0x20,0x28,0x24,0x22,0x21,0x22,0x24,0x28,0x30,0x20,0x3f,0x20,0x0,0x0,0x8,0xfc,0x8,0x28,0x48,0x88,0x8,0x88,0x48,0x28,0x18,0x8,0xf8,0x8, ++0x1,0x12,0x14,0x1f,0x11,0x12,0x1f,0x10,0x17,0x14,0x17,0x24,0x27,0x44,0x85,0x4,0x0,0x10,0x50,0x90,0x10,0x50,0xf0,0x10,0xd0,0x50,0xd0,0x50,0xd2,0x52,0x4e,0x80, ++0x10,0x10,0x10,0x13,0xfc,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x24,0x24,0x43,0x80,0x0,0x88,0x50,0xfe,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x8a,0x2,0xfe,0x0, ++0x20,0x20,0x24,0x7f,0x80,0x7c,0x44,0x55,0x44,0xfe,0x44,0x54,0x44,0x7e,0x5,0x1a,0x40,0x20,0x24,0xfe,0x40,0x50,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0xaa,0xaa,0x2e,0x0, ++0x4,0x8,0x3f,0x24,0x3f,0x1,0x1f,0x1,0xff,0x4,0x1f,0x1,0x7f,0x1,0x1,0x1,0x0,0x8,0xfc,0x48,0xf8,0x0,0xf0,0x4,0xfe,0x40,0xf0,0x0,0xfc,0x0,0x0,0x0, ++0x12,0xa,0x12,0x2,0x3c,0x8,0x7e,0x9,0xff,0x0,0x3e,0x22,0x3e,0x14,0x7e,0x1,0x48,0x50,0x48,0x44,0x3c,0x20,0x28,0xfc,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e, ++0x0,0x0,0x0,0x0,0x0,0x4,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x0,0x0,0x1,0x3d,0x25,0x25,0x25,0x25,0x25,0x3d,0x1,0x2,0xff,0x0,0x20,0xf0,0x40,0x80,0x8,0x7c,0x8,0x48,0x30,0x10,0x28,0x48,0x0,0x4,0xfe,0x0, ++0x7f,0x10,0x17,0x14,0x27,0x24,0x57,0x94,0x17,0x10,0x1e,0x2,0x7e,0x12,0x12,0x62,0xf0,0x10,0xd4,0x5e,0xc4,0x44,0xd4,0x5c,0xd0,0x10,0xf0,0x80,0xf8,0x88,0x88,0x88, ++0x0,0x8,0x8,0x8,0x8,0x9,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x7,0x0,0x0,0x0,0x0,0x20,0x70,0xa0,0x20,0x20,0x20,0x20,0xa0,0x44,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x12,0x1f,0x10,0x10,0x10,0x12,0x7f,0x42,0x42,0x42,0x42,0x42,0x7e,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x42,0x3e,0x0, ++0x0,0x3f,0x0,0x0,0x0,0xff,0x4,0x4,0x4,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x10,0xf8,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x1,0x9,0x9,0x79,0x9,0x9,0x9,0x7f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x20,0x28,0x3c,0x20,0x20,0x28,0xfc,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x1,0x1,0x7f,0x1,0x41,0x7f,0x40,0x9f,0x0,0x1,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x0,0x0,0xfe,0x2,0xe4,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x1,0x1,0x7f,0x1,0x9,0x5,0xff,0x0,0x3f,0x20,0x27,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xf8,0x8, ++0x20,0x27,0x24,0xfc,0x24,0x27,0x24,0x74,0x57,0x54,0x54,0x57,0x74,0x54,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x84,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x2e,0xc4, ++0x0,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x21,0x21,0x22,0x22,0x44,0x48,0x90,0x20,0x8,0xfc,0x0,0x80,0x80,0x80,0x80,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0xe,0x4, ++0x0,0x3f,0x21,0x21,0x2f,0x22,0x22,0x24,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x8,0xfc,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x3f,0x22,0x22,0x2f,0x22,0x3f,0x20,0x27,0x24,0x24,0x27,0x44,0x44,0x87,0x4,0x8,0xfc,0x20,0x28,0xfc,0x20,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x3f,0x20,0x20,0x2f,0x21,0x3e,0x20,0x2f,0x28,0x2f,0x28,0x4f,0x48,0x80,0x0,0x8,0xfc,0xa0,0x90,0xfc,0x40,0x3c,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0x80,0x80, ++0x0,0x3f,0x20,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x22,0x42,0x44,0x88,0x10,0x8,0xfc,0x20,0xa0,0x20,0xbe,0x22,0xd4,0x90,0x90,0x90,0x90,0x28,0x28,0x44,0x82, ++0x0,0x3f,0x29,0x29,0x3f,0x29,0x2f,0x29,0x2f,0x29,0x29,0x3f,0x42,0x49,0x90,0x1,0x8,0xfc,0x0,0xc,0xf0,0x40,0x44,0x7e,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8, ++0x0,0x3f,0x20,0x2f,0x21,0x26,0x38,0x2f,0x20,0x2f,0x29,0x29,0x49,0x49,0x89,0xf,0x8,0xfc,0xa0,0xfc,0x40,0x30,0xe,0xfc,0x80,0xfc,0x24,0xe4,0x24,0xe4,0x24,0xfc, ++0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x24,0x2f,0x28,0x28,0x48,0x41,0x86,0x18,0x8,0xfc,0x50,0xfc,0x90,0xfc,0x90,0x9e,0x80,0xf8,0x8,0x88,0x88,0x60,0x18,0x4, ++0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x40,0x40,0x47,0x44,0x44,0x44,0x44,0x44,0x47,0x44,0x40,0x40,0x7f,0x0,0x8,0xfc,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x48,0x4a,0x7f,0x50,0x54,0x7f,0x44,0x44,0x7f,0x44,0x44,0x45,0x7f,0x0,0x8,0xfc,0x40,0x40,0x50,0xf8,0x50,0x50,0x50,0x50,0x54,0x54,0x8c,0x0,0xfe,0x0, ++0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x7f,0x40,0x4f,0x48,0x48,0x43,0x4c,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x8,0xfc,0x88,0x88,0x60,0x18,0xfe,0x0, ++0x0,0x7f,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x59,0x69,0x4f,0x49,0x49,0x48,0x7f,0x0,0x8,0xfc,0x80,0xf8,0x8,0xf8,0x0,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x4,0xfe,0x0, ++0x0,0x4,0x7f,0x48,0x49,0x48,0x5f,0x54,0x55,0x55,0x5d,0x49,0x49,0x48,0x7e,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0x24,0x24,0x24,0x50,0x4c,0x84, ++0x8,0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0xa,0x7f,0x8,0x8,0xf,0x78,0x20,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0xd0,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x1,0x1,0x1,0x1,0x1,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x88,0xc8,0x88,0x88,0x88,0x88,0x8,0xf8,0x8, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x0,0x41,0x21,0x11,0x12,0xa,0xa,0x4,0x4,0xa,0x9,0x11,0x10,0x20,0x40,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x84,0x14,0x8, ++0x20,0x20,0x20,0x3f,0x2a,0x4a,0x4a,0x8a,0x12,0x14,0x14,0x24,0x48,0x12,0x1,0x0,0x4,0x4,0xa4,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x84,0x84,0x14,0x8, ++0x0,0x7f,0x1,0x2,0x4,0xb,0x30,0xc0,0x3f,0x4,0x4,0x4,0x7,0x7c,0x20,0x0,0x4,0x84,0x4,0x24,0x24,0x24,0xa4,0x24,0xa4,0x24,0x24,0x4,0x84,0x4,0x14,0x8, ++0x8,0x9,0xff,0x14,0x12,0x21,0xde,0x0,0xff,0x10,0x3f,0x1,0x1,0x11,0xa,0x4,0x4,0x4,0x84,0x24,0x24,0xa4,0xa4,0x24,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x4,0x4,0x24,0x24,0x3f,0x8,0x8,0xf,0x10,0x11,0x31,0x4a,0x4,0x8,0x10,0x60,0x4,0x4,0x84,0xa4,0xa4,0xa4,0x24,0xa4,0xa4,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x8,0x8,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x21,0x26,0x38,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x84,0x4,0x14,0x8, ++0x8,0x9,0xff,0x8,0x9,0x7f,0x49,0x49,0x7f,0x59,0x1c,0x2a,0x29,0x49,0x88,0x8,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x8,0x9,0xff,0x8,0x14,0x22,0xff,0x1,0x3d,0x25,0x25,0x25,0x3d,0x21,0x5,0x2,0x4,0x4,0x84,0x24,0x24,0xa4,0xe4,0x24,0x24,0x24,0x24,0x4,0x4,0x4,0x14,0x8, ++0x8,0x49,0x29,0x2a,0x8,0x16,0x21,0xc8,0x8,0x29,0x2a,0x48,0x16,0x21,0xc0,0x0,0x4,0x4,0x4,0x24,0x24,0x24,0xa4,0xa4,0x24,0x24,0x24,0x4,0x4,0x84,0x94,0x8, ++0x8,0x44,0x7f,0x40,0xa0,0x3b,0x2a,0x4a,0x6a,0x93,0x12,0x22,0x22,0x42,0x83,0x0,0x4,0x4,0xc4,0x54,0x94,0xd4,0x94,0x94,0x94,0x94,0x14,0x4,0x44,0x84,0x14,0x8, ++0x11,0x11,0xff,0x11,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4a,0x9c,0x8,0x4,0x44,0xe4,0x14,0xd4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x44,0x44,0xd4,0x48, ++0x0,0xff,0xa,0xa,0x7f,0x4a,0x4a,0x7f,0x0,0x7f,0x0,0xff,0x15,0x24,0x44,0xc,0x84,0xc4,0x4,0x54,0xf4,0x54,0x54,0xd4,0x14,0xd4,0x14,0xe4,0x4,0xc4,0x54,0x8, ++0x0,0x7f,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x55,0x5f,0x44,0x44,0x48,0x91,0x22,0x22,0xf2,0x2,0x4a,0x4a,0x7a,0x9a,0xa,0x4a,0x4a,0x4a,0x4a,0xa2,0x92,0x16,0x2, ++0x4,0x25,0x3f,0x24,0x25,0x7f,0xa4,0x25,0x3f,0x24,0x25,0x3f,0x20,0x54,0x4a,0x8a,0x4,0x4,0x84,0x24,0x24,0xa4,0x24,0x24,0xa4,0x24,0x24,0x84,0x4,0x84,0x54,0x48, ++0x11,0x7f,0x11,0x12,0x3f,0x52,0x1f,0x12,0x13,0x10,0x3f,0x11,0xa,0x4,0x1b,0x60,0x4,0xc4,0x4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x24,0xa4,0x4,0x4,0x4,0x14,0x88, ++0x4,0x3f,0x28,0x24,0x3f,0x0,0x7f,0x44,0x7f,0x44,0x7f,0x0,0xff,0x11,0x11,0x21,0x4,0x84,0x84,0x94,0x94,0x14,0xd4,0x54,0xd4,0x54,0xd4,0x4,0xc4,0x4,0x14,0x8, ++0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x0,0x7f,0x48,0x44,0x42,0x5f,0x42,0x41,0x5f,0x48,0x48,0x48,0x4f,0x40,0x40,0x40,0x4,0xfe,0x24,0x44,0x84,0xf4,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x14,0x8, ++0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x10,0x10,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x8,0x8,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x8,0x8,0x8,0x10,0x17,0x30,0x50,0x90,0x10,0x10,0x11,0x11,0x11,0x12,0x14,0x18,0x80,0x80,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x4,0x4,0x4,0x48,0x28,0x10, ++0x8,0x8,0xb,0x10,0x10,0x30,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x10,0x0,0x8,0xfc,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x9,0x9,0x9,0x12,0x12,0x37,0x58,0x90,0x10,0x10,0x11,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x8,0x8,0x8,0x10,0x10,0x30,0x51,0x92,0x14,0x18,0x11,0x12,0x14,0x17,0x10,0x10,0x20,0x20,0x40,0x40,0x80,0xa0,0x20,0x40,0x40,0x80,0x0,0x10,0x8,0xfc,0x4,0x0, ++0x8,0x8,0xf,0x10,0x10,0x32,0x52,0x92,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10, ++0x8,0x8,0xb,0x12,0x12,0x32,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x0,0x8,0xfc,0x0,0x8,0x88,0x50,0x50,0x20,0x20,0x50,0x88,0x8,0x4,0xfe,0x0, ++0x8,0xa,0xa,0x12,0x12,0x32,0x53,0x92,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x22,0x24,0xb8,0x20,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e, ++0x8,0x8,0xb,0x10,0x11,0x31,0x53,0x90,0x10,0x10,0x10,0x11,0x12,0x14,0x10,0x10,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x30,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20, ++0x8,0x8,0xf,0x11,0x11,0x31,0x51,0x91,0x11,0x12,0x12,0x12,0x13,0x16,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x90,0x50,0x30,0x10,0xd2,0x12,0xe,0x0, ++0x9,0x9,0xa,0x13,0x14,0x38,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x9,0x9,0x9,0x11,0x11,0x31,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x10,0x8,0x46,0x84,0x0, ++0x8,0x8,0x8,0x10,0x11,0x32,0x54,0x99,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x8,0x8,0x8,0x17,0x10,0x30,0x51,0x91,0x11,0x11,0x11,0x11,0x12,0x12,0x14,0x18,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x8,0x8,0x8,0x13,0x12,0x34,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x8,0xb,0x8,0x10,0x17,0x30,0x50,0x9f,0x11,0x11,0x12,0x11,0x10,0x10,0x11,0x16,0x10,0xf8,0x0,0x8,0xfc,0x80,0x84,0xfe,0x10,0x10,0x10,0xa0,0x40,0xa0,0x18,0x4, ++0x8,0x8,0x8,0x10,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x80,0xc0,0xa0,0x98,0x88,0x80,0x80,0x80, ++0x8,0x8,0x8,0x10,0x15,0x35,0x56,0x94,0x14,0x14,0x14,0x14,0x14,0x10,0x11,0x16,0x80,0x80,0x80,0x84,0xfe,0x8,0x88,0x88,0x88,0x50,0x50,0x20,0x50,0x90,0xe,0x4, ++0x8,0x8,0xa,0x12,0x13,0x34,0x58,0x90,0x1f,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x9,0x9,0x9,0x13,0x12,0x34,0x5b,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x44,0x28,0x10, ++0x9,0x9,0x9,0x12,0x15,0x38,0x50,0x90,0x11,0x12,0x1c,0x10,0x11,0x10,0x10,0x10,0x0,0x0,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x30,0x10, ++0x8,0x8,0x8,0x13,0x12,0x35,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x40,0x40,0xfc,0x4,0x8,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0, ++0x8,0xb,0xa,0x12,0x12,0x33,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0, ++0x14,0x14,0x14,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x24,0x24,0x28,0x28,0x32,0x21,0x0,0x0,0x4,0xbe,0xe4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0, ++0x8,0x8,0x8,0x1f,0x10,0x30,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0xf,0x9,0x11,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x17,0x10,0x10,0x10,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x7e,0x88,0x8,0x8,0x8,0x8, ++0x8,0x8,0x8,0x17,0x11,0x31,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x80,0x84,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10, ++0x8,0x8,0x8,0x1f,0x10,0x31,0x52,0x9c,0x13,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0xee,0x4,0xf8,0x0,0xf8,0x8,0x8,0x90,0x50,0x20, ++0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x92,0x12,0x12,0x12,0x12,0x12,0x14,0x18,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x4e,0x0, ++0x8,0xa,0xa,0x13,0x14,0x38,0x50,0x9f,0x10,0x10,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x8,0x9,0x9,0x12,0x14,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x20,0x10,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x8,0x8,0x8,0x14,0x12,0x32,0x50,0x91,0x12,0x14,0x10,0x11,0x11,0x12,0x14,0x18,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x8,0x8,0xf,0x11,0x10,0x30,0x50,0x93,0x1d,0x11,0x11,0x11,0x11,0x11,0x12,0x14,0x40,0x28,0xfc,0x10,0xa0,0x40,0xb0,0xe,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x8,0x8,0x8,0x17,0x11,0x31,0x52,0x95,0x11,0x10,0x10,0x10,0x10,0x11,0x12,0x1c,0x80,0x40,0x48,0xfc,0x20,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x8,0x8,0x8,0x17,0x14,0x38,0x51,0x91,0x13,0x15,0x19,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0x40,0xfe,0x82,0x84,0x40,0x48,0x30,0x20,0x10,0x10,0x8,0x4e,0x84,0x0, ++0x8,0x8,0x9,0x12,0x17,0x32,0x52,0x93,0x14,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x10,0x8,0xfc,0x44,0x50,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x8,0x8,0xf,0x10,0x17,0x31,0x5f,0x91,0x12,0x13,0x15,0x18,0x10,0x10,0x10,0x10,0x80,0x88,0xfc,0x80,0xf8,0x0,0xfe,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x50,0x20, ++0x8,0xf,0x8,0x14,0x12,0x30,0x57,0x94,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x18,0x8,0xfc,0xa0,0xa4,0xa8,0xa0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0xf,0x10,0x10,0x37,0x54,0x94,0x16,0x15,0x14,0x14,0x14,0x14,0x14,0x15,0x0,0x4,0xfe,0x0,0x4,0xbe,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xa4,0xa4,0xac, ++0x8,0x8,0x8,0x10,0x17,0x30,0x54,0x92,0x12,0x10,0x11,0x12,0x14,0x10,0x11,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x48,0x50,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x80, ++0x8,0x8,0xf,0x14,0x14,0x37,0x54,0x94,0x17,0x14,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0, ++0x8,0xb,0xa,0x12,0x12,0x33,0x50,0x97,0x10,0x10,0x1f,0x10,0x10,0x11,0x12,0x1c,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4, ++0x8,0x8,0xb,0x12,0x13,0x32,0x53,0x90,0x1f,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x40,0x48,0xfc,0x48,0xf8,0x48,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x8,0xb,0x8,0x10,0x10,0x37,0x54,0x94,0x17,0x14,0x14,0x17,0x14,0x14,0x14,0x14,0x0,0xf8,0x10,0xa0,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x44,0x54,0x8, ++0x8,0x8,0x9,0x12,0x17,0x31,0x51,0x91,0x12,0x14,0x1f,0x10,0x10,0x10,0x11,0x16,0x80,0x80,0x10,0x8,0xfc,0x4,0x0,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x91,0x12,0x15,0x18,0x10,0x17,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x48,0xfe,0x44,0x40,0xfc,0x40,0x40,0x40, ++0x8,0x8,0xf,0x10,0x13,0x30,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x9,0x9,0xf,0x11,0x11,0x30,0x5f,0x91,0x11,0x12,0x13,0x16,0x1a,0x12,0x13,0x12,0x10,0x10,0xfc,0x10,0x90,0x84,0xfe,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x17,0x10,0x30,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0, ++0x8,0x8,0x8,0x10,0x13,0x32,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x48,0x7c,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x11,0x11,0x11,0x29,0x2a,0x6c,0xa8,0x29,0x2e,0x28,0x2f,0x28,0x20,0x20,0x21,0x26,0x0,0x8,0xfc,0x10,0xa0,0x40,0xb0,0x4e,0x50,0x48,0xfc,0x40,0xa0,0x90,0xe,0x4, ++0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x97,0x14,0x10,0x1f,0x10,0x11,0x12,0x1c,0x10,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x8,0xb,0x8,0x10,0x17,0x31,0x52,0x94,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x18,0xe0,0x40,0x48,0xfc,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8, ++0x8,0x9,0xb,0x12,0x12,0x33,0x52,0x92,0x13,0x10,0x11,0x1f,0x10,0x10,0x10,0x10,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x8,0xf,0xc,0x14,0x17,0x34,0x54,0x95,0x14,0x15,0x15,0x15,0x15,0x14,0x14,0x18,0x4,0xfe,0x44,0x54,0xfc,0x44,0x44,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x8,0x8,0xb,0x12,0x14,0x33,0x52,0x92,0x13,0x12,0x13,0x12,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x8,0x17,0x14,0x39,0x52,0x94,0x10,0x13,0x10,0x10,0x10,0x10,0x1f,0x10,0x80,0x40,0x40,0xfe,0x2,0x14,0x8,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x12,0x12,0x13,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0xf,0x10,0x11,0x3f,0x51,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x54,0xfe,0x10,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x8,0xf,0xc,0x15,0x15,0x35,0x55,0x95,0x14,0x17,0x14,0x14,0x14,0x14,0x17,0x10,0x4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x40,0xfe,0x48,0x90,0x70,0x88,0xfe,0x0, ++0xa,0xa,0xb,0x12,0x12,0x33,0x56,0x90,0x13,0x12,0x12,0x13,0x12,0x12,0x13,0x12,0x20,0x24,0xac,0x30,0xa2,0x22,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x8,0xb,0xa,0x13,0x12,0x33,0x51,0x91,0x13,0x14,0x1a,0x12,0x12,0x13,0x10,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x44,0x44,0xa4,0x4,0xe4,0x14,0x8, ++0x8,0xb,0xa,0x12,0x13,0x32,0x52,0x93,0x10,0x1f,0x12,0x12,0x12,0x12,0x13,0x12,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4, ++0x9,0x9,0x9,0x12,0x13,0x34,0x59,0x92,0x14,0x11,0x10,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0xf4,0x2c,0x44,0x94,0x8,0x40,0x24,0x22,0xa,0xf8,0x0, ++0x8,0xa,0x9,0x10,0x17,0x30,0x51,0x92,0x10,0x1f,0x11,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x40,0xfc,0xe0,0x50,0x4c,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8, ++0x10,0x14,0x12,0x20,0x2f,0x68,0xb7,0x24,0x24,0x24,0x27,0x25,0x21,0x21,0x22,0x2c,0x80,0x90,0xa0,0x80,0xfc,0x4,0xf8,0x10,0x10,0x10,0xf0,0x50,0x40,0x44,0x44,0x3c, ++0x8,0x8,0xb,0x12,0x14,0x31,0x51,0x91,0x11,0x11,0x11,0x1f,0x10,0x10,0x11,0x16,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4, ++0x10,0x10,0x10,0x2f,0x21,0x71,0xaa,0x2a,0x24,0x24,0x2a,0x29,0x31,0x20,0x20,0x20,0x20,0x30,0x28,0x7e,0x48,0xc8,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40, ++0xa,0xa,0xb,0x14,0x1a,0x35,0x53,0x92,0x14,0x18,0x17,0x11,0x12,0x14,0x11,0x10,0x0,0x20,0xbc,0xa4,0xa8,0x10,0x10,0xe8,0x6,0x0,0xfc,0x50,0x4c,0x44,0x40,0x80, ++0x8,0xf,0x8,0x13,0x10,0x33,0x52,0x93,0x11,0x1f,0x10,0x13,0x12,0x12,0x13,0x12,0x48,0xfc,0x40,0xf8,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8, ++0x15,0x15,0x1f,0x25,0x25,0x68,0xaf,0x28,0x30,0x2e,0x2a,0x2a,0x2e,0x20,0x22,0x21,0x20,0x20,0xa0,0x24,0x7e,0x84,0xc4,0xc4,0xa8,0xa8,0xa8,0x90,0xa8,0xa8,0xc6,0x4, ++0x11,0x1f,0x1a,0x2a,0x2f,0x62,0xa6,0x2a,0x33,0x20,0x27,0x24,0x27,0x24,0x27,0x24,0x4,0xbe,0x28,0x28,0xbe,0x8,0x18,0xaa,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x9,0x9,0x9,0x12,0x16,0x3b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x15,0x14,0x18,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2, ++0x14,0x12,0x12,0x3f,0x20,0x6f,0xa8,0x28,0x28,0x2f,0x22,0x2b,0x2a,0x32,0x26,0x20,0x10,0x10,0x98,0xd4,0x10,0xfe,0x90,0x90,0x98,0x98,0x28,0x28,0xa8,0xca,0x4a,0x86, ++0x8,0xf,0x9,0x10,0x1f,0x30,0x57,0x94,0x17,0x14,0x17,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0, ++0x8,0xf,0xc,0x14,0x17,0x30,0x5f,0x90,0x13,0x12,0x13,0x10,0x11,0x13,0x1d,0x11,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x8,0xfc,0x8,0xf8,0xc4,0x28,0x10,0x8e,0x4, ++0x9,0x9,0xa,0x17,0x14,0x35,0x57,0x94,0x15,0x14,0x15,0x14,0x15,0x15,0x19,0x11,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4, ++0x1,0x1,0x2,0x4,0x8,0x10,0x20,0xc0,0x1f,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0x0,0x0,0x80,0x40,0x20,0x10,0xe,0x24,0xf0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x1,0x1,0x2,0x4,0x9,0x31,0xc1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x40,0x30,0xe,0x4,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x1,0x1,0x2,0x4,0x8,0x30,0xcf,0x0,0x0,0x7f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x80,0x40,0x30,0x4e,0xe4,0x0,0x8,0xfc,0x0,0x20,0x18,0xc,0x4,0x0, ++0x1,0x1,0x2,0x4,0x8,0x10,0x2f,0xc0,0x12,0x9,0x9,0x9,0x8,0x0,0xff,0x0,0x0,0x0,0x80,0x40,0x20,0x50,0xee,0x4,0x10,0x10,0x20,0x20,0x40,0x84,0xfe,0x0, ++0x10,0x11,0x11,0x29,0x29,0x45,0x95,0x11,0x11,0x29,0x29,0x45,0x45,0x81,0xf,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x1,0x1,0x2,0xc,0x37,0xc0,0x3b,0x2a,0x3b,0x0,0x3f,0x24,0x3f,0x24,0x24,0x20,0x0,0x0,0x80,0x60,0xd8,0x6,0xb8,0xa8,0xb8,0x0,0xf8,0x48,0xf8,0x48,0x48,0x18, ++0x6,0x1,0x2,0xc,0x31,0xc1,0x1,0x3d,0x5,0x9,0x9,0x11,0x21,0x41,0x5,0x2,0x0,0x0,0x80,0x60,0x18,0x6,0x0,0x90,0x60,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x6,0x1,0x2,0xc,0x31,0xc1,0x11,0x9,0x1,0x7f,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x0,0x80,0x60,0x18,0x6,0x10,0x20,0x8,0xfc,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x4,0x4,0x8,0x8,0x10,0x20,0x5f,0x88,0x8,0x1f,0x0,0x0,0x0,0x2,0x1,0x0,0x40,0x40,0x20,0x20,0x10,0x58,0xee,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x40,0x80, ++0x0,0x3e,0x22,0x22,0x3e,0x20,0x22,0x1e,0x4,0x3f,0x4,0x4,0xff,0x4,0x18,0x20,0x8,0xfc,0x88,0x88,0xf8,0x80,0x84,0x7c,0x40,0xf8,0x40,0x44,0xfe,0x40,0x30,0x8, ++0x22,0x11,0x7f,0x44,0x9f,0x4,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x4,0x18,0x20,0x8,0x10,0xfe,0x42,0xf4,0x40,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x40,0x30,0x8, ++0x0,0x44,0x28,0xff,0x10,0x20,0x7d,0x45,0x45,0x7d,0x45,0x7c,0x44,0x47,0x7c,0x44,0x10,0x18,0x14,0xfe,0x10,0x10,0xd4,0x54,0x54,0x54,0xd4,0x18,0xd2,0x2a,0x46,0x82, ++0x44,0x25,0x29,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x12,0xfe,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x48,0xfc,0x48,0x48,0xfe,0xa4,0xa8,0x90,0x88,0xc6,0x80, ++0x4,0xff,0x1,0x17,0x54,0x5f,0x54,0x57,0x5c,0xe7,0x14,0x27,0x4c,0x13,0xc,0x70,0x40,0xfe,0x0,0xdc,0x54,0xd4,0x5c,0xd0,0x52,0xce,0x10,0xc8,0x44,0x80,0x60,0x1c, ++0x10,0x10,0x1f,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x1f,0x22,0x42,0xbf,0x2,0x3f,0x22,0x3f,0x22,0x3f,0x22,0x22,0x22,0x0,0x0,0x4,0xfe,0x84,0x44,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0x64,0x34,0x8, ++0x10,0x10,0x1f,0x24,0x42,0xbf,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x4,0xfe,0x4,0x44,0xe4,0x4,0xc4,0x4,0xc4,0x4,0xc4,0x44,0x44,0xd4,0x8, ++0x10,0x10,0x1f,0x20,0x7f,0x80,0x1f,0x10,0x1f,0x0,0x3f,0x22,0x3f,0x22,0x3f,0x0,0x0,0x4,0xfe,0x44,0xe4,0x4,0xc4,0x44,0xc4,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8, ++0x2,0x4,0x3f,0x20,0x24,0x22,0x20,0x3f,0x0,0xf,0x8,0x8,0x8,0x10,0x20,0xc0,0x0,0x20,0xf0,0x20,0x20,0xa0,0x48,0xfc,0x8,0xa8,0x90,0x80,0x80,0x82,0x82,0x7e, ++0x0,0x3f,0x20,0x20,0x2f,0x22,0x22,0x27,0x24,0x2c,0x32,0x21,0x22,0x44,0x48,0x80,0x10,0xf8,0x10,0x90,0xd0,0x10,0x10,0xd0,0x50,0x50,0x90,0x10,0x12,0x12,0xa,0x4, ++0x0,0x3c,0x24,0x24,0x27,0x20,0x20,0x3f,0x24,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x8,0x7c,0x48,0x48,0xc8,0x8,0x8,0xf8,0x48,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x0,0x0,0x0,0x2,0x1,0x1,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x8,0x1f,0x4,0x4,0x4,0x4,0x8,0x10,0x60,0x0,0x4,0xfe,0x20,0x18,0xc,0x44,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c,0x0, ++0x1,0xff,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x3f,0x1,0x1,0x0,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x12,0xe4,0x0,0xf8,0x0,0x4,0x4,0xfc, ++0x2,0x1,0xff,0x8,0x12,0x22,0x44,0x1f,0x2,0x6,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x4,0xfe,0x20,0x18,0x4c,0x24,0xf0,0x0,0x18,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x1,0xff,0x0,0x1f,0x2,0x1,0x7f,0x4,0x8,0x32,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x0,0xf0,0x40,0x80,0xfc,0x84,0x88,0x80,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x1,0xff,0x8,0x8,0x7e,0x8,0xe,0x78,0x9,0x1a,0x1,0x2,0xc,0x15,0x66,0x4,0x0,0xfe,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x1,0xff,0x4,0x14,0x24,0x45,0x1,0x3f,0x22,0x24,0x29,0x22,0x24,0x28,0x20,0x20,0x0,0xfe,0x40,0x50,0x4c,0x44,0x0,0xf8,0x88,0x68,0x28,0x88,0x68,0x28,0x28,0x10, ++0x1,0xff,0x2,0x1c,0x10,0x10,0x1c,0x10,0x10,0x1f,0x5,0x8,0x18,0x2a,0xcc,0x8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x8,0x90,0x60,0x30,0xe,0x4, ++0x1,0xff,0x0,0x3f,0x24,0x27,0x24,0x3f,0x0,0x3f,0x0,0xff,0x9,0x11,0x21,0x3,0x0,0xfe,0x8,0xfc,0x48,0xc8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x20,0x18,0x8,0x0, ++0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x79,0x49,0x7f,0x4a,0x7a,0x49,0x4e,0x98,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x38,0x28,0xe8,0xb8,0xa8,0x2a,0xea,0x46, ++0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x71,0x57,0x75,0x57,0x71,0x51,0x57,0xb0,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x1c,0xd4,0x54,0xdc,0x14,0x54,0xd4,0x22, ++0x1,0xff,0x20,0x3f,0x0,0x1f,0x10,0x1f,0x7a,0x4f,0x79,0x4f,0x79,0x4f,0x49,0x99,0x0,0xfe,0x0,0xf8,0x0,0xf0,0x10,0xf0,0xb8,0xe8,0x28,0xe8,0x38,0xea,0x2a,0x46, ++0x0,0x40,0x20,0x10,0x10,0x0,0x0,0x10,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x4f,0x22,0x12,0x12,0x3,0x2,0x12,0x22,0x22,0xe7,0x20,0x20,0x20,0x2f,0x0,0x8,0xfc,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x20,0x20,0x44,0xfe,0x0, ++0x0,0x4f,0x22,0x12,0x13,0x2,0x14,0x14,0x26,0x29,0xe0,0x21,0x22,0x24,0x28,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8, ++0x0,0x42,0x22,0x13,0x12,0x4,0x0,0x17,0x21,0x21,0xe1,0x21,0x22,0x22,0x24,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x2,0x42,0x22,0x22,0x1f,0x2,0x26,0x27,0x2a,0x4a,0xd2,0x42,0x42,0x42,0x42,0x2,0x0,0x28,0x28,0x28,0xc4,0x44,0x92,0x10,0x90,0xa0,0x20,0x48,0x44,0xfe,0x2,0x0, ++0x0,0x0,0x0,0x0,0x40,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x7f,0x40,0x80,0x3f,0x6,0x9,0x1a,0x74,0xb,0x16,0x64,0x8,0x10,0x62,0x1,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0x90,0xe0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x0, ++0x40,0x7f,0x40,0x80,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x1,0xff,0x0,0x8,0x10,0x20,0x0,0xfe,0x2,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x4,0xfe,0x0,0x20,0x18,0x8, ++0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x47,0x30,0x10,0x0,0x0,0xf0,0x17,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x40,0x37,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x12,0x14,0x1f,0x10,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0,0x0, ++0x0,0x40,0x20,0x20,0x4,0x4,0xe4,0x24,0x24,0x24,0x24,0x24,0x2c,0x37,0x20,0x0,0x40,0x40,0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x0, ++0x0,0x47,0x24,0x24,0x5,0x4,0xe4,0x24,0x24,0x24,0x25,0x26,0x2c,0x34,0x27,0x0,0x8,0xfc,0x0,0x4,0x4,0x88,0x50,0x20,0x50,0x88,0xc,0x4,0x0,0x4,0xfe,0x0, ++0x0,0x43,0x32,0x12,0x2,0x3,0xf2,0x12,0x12,0x13,0x12,0x12,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x40,0x20,0x20,0x7,0x4,0xe4,0x24,0x24,0x24,0x25,0x25,0x2e,0x34,0x24,0x4,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0xc,0x4,0x14,0x8, ++0x0,0x40,0x30,0x10,0x7,0x0,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x37,0x10,0x0,0x3,0xf2,0x12,0x12,0x12,0x13,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x48,0xe8,0x48,0x48,0x48,0x48,0xc8,0x8,0x8,0x8,0x28,0x10, ++0x0,0x40,0x27,0x24,0x4,0x4,0xe7,0x24,0x24,0x24,0x24,0x24,0x2d,0x36,0x24,0x0,0x10,0x78,0xc0,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x20,0xa0,0x12,0x92,0x4a,0x6, ++0x0,0x47,0x30,0x10,0x0,0x1,0xf1,0x12,0x14,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x4,0xfe,0x84,0x84,0x84,0x4,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x40,0x22,0x22,0x2,0x2,0xe2,0x23,0x20,0x24,0x24,0x24,0x2c,0x34,0x27,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x40,0x44,0x44,0x44,0x44,0x44,0xfc,0x4, ++0x0,0x40,0x30,0x11,0x2,0x7,0xf0,0x10,0x13,0x12,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x80,0x8,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x43,0x32,0x12,0x3,0x2,0xf2,0x12,0x12,0x12,0x12,0x13,0x16,0x1a,0x13,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x0,0x3,0xf0,0x10,0x1f,0x10,0x10,0x15,0x19,0x12,0x4,0x0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x0,0x40,0x33,0x10,0x0,0x0,0xf7,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x40,0x30,0x1f,0x0,0x0,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x17,0x1,0x1,0xf1,0x12,0x12,0x14,0x19,0x10,0x14,0x18,0x11,0x2,0x80,0x80,0x84,0xfe,0x0,0x20,0x20,0xa4,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x42,0x32,0x13,0x4,0x0,0xf0,0x1f,0x11,0x11,0x11,0x15,0x1a,0x12,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x40,0x33,0x12,0x2,0x3,0xf2,0x12,0x12,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x0,0x40,0x30,0x11,0x2,0xc,0xf3,0x10,0x10,0x10,0x13,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0xe,0x4,0xf8,0x40,0x40,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0, ++0x1,0x41,0x31,0x12,0x4,0xb,0xf0,0x10,0x1f,0x10,0x10,0x13,0x14,0x18,0x11,0x0,0x0,0x0,0xf0,0x20,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x40,0x40,0x80, ++0x0,0x47,0x34,0x18,0x7,0x1,0xf1,0x12,0x17,0x10,0x10,0x1f,0x10,0x14,0x18,0x0,0x0,0xfc,0x84,0x88,0xfc,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x40,0x37,0x10,0x0,0x4,0xf2,0x12,0x10,0x11,0x16,0x10,0x14,0x18,0x12,0x1,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8, ++0x0,0x42,0x31,0x11,0x0,0x3,0xf2,0x12,0x13,0x12,0x12,0x13,0x16,0x1a,0x12,0x2,0x40,0x48,0x58,0x60,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x42,0x32,0x13,0x4,0x8,0xf7,0x10,0x10,0x13,0x12,0x12,0x16,0x1a,0x13,0x2,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x45,0x32,0x15,0x9,0x1,0xf1,0x13,0x15,0x19,0x11,0x11,0x15,0x19,0x15,0x2,0x80,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x14,0xfe,0x0, ++0x0,0x40,0x31,0x12,0x7,0x1,0xf1,0x11,0x12,0x10,0x1f,0x10,0x14,0x18,0x11,0x6,0x80,0x80,0x10,0x8,0xfc,0x4,0x10,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x0,0x5f,0x24,0x24,0x7,0x4,0xe4,0x27,0x24,0x24,0x24,0x2f,0x28,0x30,0x20,0x0,0x4,0xfe,0x80,0x80,0xbe,0x82,0xa2,0x94,0x94,0x94,0x88,0xc8,0x94,0x94,0xa2,0xc0, ++0x0,0x4f,0x20,0x21,0x3,0x4,0xe8,0x25,0x22,0x26,0x29,0x21,0x2a,0x34,0x21,0x0,0x4,0xfe,0x80,0x0,0x4,0x8c,0xd0,0x60,0x60,0x50,0xd0,0x48,0x4e,0x44,0x40,0x80, ++0x0,0x43,0x30,0x10,0x7,0x1,0xf2,0x14,0x10,0x1f,0x11,0x11,0x14,0x18,0x11,0x6,0x3c,0xc0,0x40,0x48,0xfc,0x50,0x4e,0x44,0x80,0xfe,0x10,0x10,0xa0,0x60,0x98,0x4, ++0x0,0x41,0x36,0x14,0x4,0x7,0xf4,0x14,0x17,0x14,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x44,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x40,0x20,0x21,0x2,0x4,0xe8,0x23,0x20,0x20,0x21,0x2d,0x35,0x25,0x9,0x0,0x40,0x40,0xa0,0x10,0x88,0x46,0x4,0xf0,0x10,0x20,0x0,0x48,0x24,0x4,0x10,0xf0, ++0x0,0x40,0x30,0x11,0x2,0x4,0xf0,0x13,0x12,0x12,0x13,0x12,0x16,0x1a,0x13,0x2,0x80,0x80,0xfc,0x8,0x10,0x20,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x40,0x37,0x11,0x1,0x1,0xf2,0x14,0x10,0x1f,0x10,0x10,0x14,0x18,0x10,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x1,0x41,0x37,0x11,0x1,0x1,0xf1,0x11,0x11,0x1f,0x12,0x12,0x17,0x1a,0x13,0x0,0x10,0x10,0xfc,0x10,0xf0,0x10,0xf0,0x10,0x14,0xfe,0x0,0x90,0x8,0x0,0xfc,0x0, ++0x0,0x40,0x2f,0x20,0x7,0x4,0xe5,0x24,0x24,0x27,0x21,0x29,0x32,0x24,0x8,0x0,0x40,0x44,0xfe,0x40,0xfc,0x44,0x54,0xe4,0x44,0xfc,0x60,0x50,0x48,0x4e,0x44,0x40, ++0x0,0x40,0x20,0x27,0x4,0x4,0xe7,0x24,0x24,0x24,0x25,0x2d,0x37,0x29,0x9,0x10,0x48,0x7c,0x40,0xfe,0x42,0x7c,0xc0,0x44,0x7c,0x0,0xfc,0x0,0xfe,0x0,0xfc,0x0, ++0x0,0x43,0x22,0x23,0x2,0x3,0xe1,0x23,0x24,0x28,0x22,0x23,0x2a,0x33,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xf4,0x14,0x8, ++0x0,0x47,0x24,0x24,0x7,0x0,0xe3,0x20,0x2f,0x21,0x21,0x24,0x28,0x30,0x20,0x0,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x0,0x40,0x21,0x22,0x4,0xb,0xf0,0x27,0x24,0x27,0x24,0x27,0x2c,0x34,0x24,0x5,0x80,0x80,0x40,0x20,0x10,0xee,0x4,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x0,0x47,0x20,0x22,0x1,0xf,0xe0,0x20,0x2f,0x21,0x21,0x2b,0x32,0x24,0x8,0x3,0x3c,0xc0,0x88,0x48,0x50,0xfc,0x80,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc, ++0x0,0x40,0x37,0x12,0x1,0x0,0xf7,0x10,0x13,0x12,0x12,0x13,0x16,0x1a,0x13,0x2,0x80,0x48,0xfc,0x10,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x37,0x11,0x0,0x7,0xf4,0x18,0x13,0x12,0x12,0x12,0x16,0x1a,0x10,0x0,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x48,0x58,0x40,0x40, ++0x0,0x48,0x24,0x24,0x1,0x6,0xe8,0x30,0x21,0x22,0x27,0x22,0x2a,0x32,0x23,0x2,0x80,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x27,0x24,0x2c,0x37,0x24,0x2c,0x34,0x4,0x80,0x48,0xfc,0x8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa4,0xb4,0x8, ++0x1,0x41,0x37,0x11,0x0,0x3,0xf2,0x13,0x12,0x13,0x10,0x1f,0x10,0x19,0x12,0xc,0x10,0x14,0xfe,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x44,0xfe,0xa0,0x10,0xe,0x4, ++0x0,0x42,0x21,0x2f,0x8,0x13,0xe2,0x22,0x22,0x23,0x20,0x21,0x29,0x32,0x24,0x8,0x40,0x48,0x50,0xfe,0x2,0xfc,0x8,0x8,0x8,0xf8,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x47,0x24,0x27,0x4,0x7,0xe2,0x25,0x29,0x22,0x25,0x20,0x28,0x30,0x23,0xc,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0x4,0xfa,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x4,0x42,0x21,0x2f,0x0,0x1,0xe2,0x24,0x23,0x22,0x22,0x22,0x2a,0x32,0x2f,0x0,0x4,0x8,0x10,0xfe,0x0,0x10,0xc,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x1,0x40,0x30,0x15,0x5,0x9,0xf1,0x12,0x14,0x13,0x12,0x12,0x16,0x1a,0x17,0x0,0x0,0xc8,0x48,0x14,0x22,0x42,0x88,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x0,0x40,0x2f,0x21,0x0,0x7,0xe4,0x24,0x27,0x24,0x25,0x25,0x2d,0x35,0x25,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x1,0x40,0x37,0x10,0x3,0x2,0xf3,0x12,0x13,0x12,0x10,0x13,0x14,0x18,0x11,0x6,0x8,0x90,0xfe,0x0,0xd4,0x54,0xd4,0x54,0xc4,0x4c,0x0,0xfc,0x84,0x84,0x14,0x8, ++0x2,0x4f,0x22,0x2a,0xf,0x2,0xe6,0x2b,0x32,0x20,0x23,0x22,0x2b,0x32,0x23,0x2,0x4,0xbe,0x8,0x28,0xbe,0x8,0x98,0x2a,0x4e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x1,0x41,0x23,0x22,0x6,0xb,0xe2,0x22,0x23,0x22,0x22,0x23,0x2a,0x35,0x24,0x8,0x40,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x24,0x92,0x2, ++0x0,0x47,0x20,0x20,0xf,0x1,0xe2,0x2c,0x27,0x24,0x27,0x25,0x2d,0x35,0x24,0x4,0x0,0xf8,0x90,0x60,0xfe,0x44,0x40,0xc4,0xfe,0xa4,0x1c,0xf4,0x14,0xf4,0x14,0x8, ++0x1,0x41,0x21,0x2f,0x1,0x1,0xef,0x2a,0x2a,0x2f,0x29,0x2f,0x29,0x39,0x28,0x0,0x8,0x8,0x4c,0xe8,0x3e,0x8,0xe8,0xa8,0xa8,0xe8,0x28,0xe8,0x28,0x74,0x24,0x42, ++0x1,0x41,0x22,0x27,0xc,0x5,0xe7,0x24,0x25,0x24,0x25,0x2c,0x35,0x25,0x9,0x1,0x0,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x4, ++0x0,0x44,0x24,0x2b,0x0,0x1f,0xe2,0x2e,0x22,0x2e,0x22,0x2e,0x2a,0x32,0x2f,0x0,0x10,0x90,0x98,0x54,0x10,0xfe,0x90,0xf0,0x94,0xf4,0x94,0xe8,0x9a,0xaa,0xe6,0x2, ++0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20,0x20,0x20, ++0x1f,0x0,0x1,0x3d,0x5,0x9,0x33,0xc1,0x3f,0x0,0x1f,0x10,0x10,0x10,0x10,0xf,0xf0,0x40,0x88,0xb0,0x40,0x30,0xe,0x4,0xf8,0x10,0xf8,0x10,0x90,0x64,0x4,0xfc, ++0x0,0x78,0x48,0x48,0x50,0x50,0x60,0x50,0x50,0x48,0x48,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x78,0x4f,0x49,0x51,0x51,0x61,0x51,0x51,0x49,0x49,0x69,0x52,0x42,0x44,0x48,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x7c,0x45,0x48,0x48,0x50,0x48,0x4b,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x1,0x79,0x49,0x49,0x57,0x51,0x61,0x51,0x51,0x4f,0x49,0x69,0x51,0x42,0x42,0x44,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x8,0x3c,0xc0,0x0,0x8,0xfc,0x8,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x0,0x7c,0x44,0x48,0x48,0x50,0x48,0x49,0x45,0x45,0x45,0x69,0x51,0x41,0x41,0x41,0x40,0x40,0x44,0x7e,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x7d,0x45,0x49,0x4a,0x52,0x4c,0x48,0x44,0x44,0x44,0x68,0x50,0x40,0x40,0x40,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x0,0x78,0x48,0x4b,0x52,0x52,0x62,0x53,0x52,0x4a,0x4a,0x6a,0x54,0x44,0x49,0x42,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x0,0x7b,0x48,0x48,0x50,0x50,0x61,0x56,0x50,0x4b,0x48,0x68,0x50,0x40,0x4f,0x40,0x0,0xf8,0x10,0x20,0x40,0xb0,0xc,0x4,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x78,0x48,0x4f,0x50,0x50,0x61,0x53,0x51,0x48,0x48,0x6b,0x50,0x40,0x43,0x4c,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2, ++0x0,0x78,0x49,0x49,0x51,0x51,0x67,0x50,0x51,0x49,0x4a,0x68,0x50,0x40,0x43,0x4c,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x50,0x60,0x40,0x80,0x0,0x0, ++0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x52,0x48,0x4b,0x68,0x50,0x40,0x4f,0x40,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x70,0x5f,0x54,0x54,0x57,0x64,0x54,0x57,0x54,0x54,0x5f,0x70,0x40,0x40,0x40,0x0,0x40,0xe0,0x80,0xbc,0x84,0xa4,0xa8,0xa8,0x90,0x90,0xe8,0xa8,0xc6,0x80,0x80, ++0x0,0x78,0x4f,0x48,0x50,0x5f,0x61,0x51,0x57,0x49,0x49,0x6f,0x50,0x40,0x47,0x40,0x8,0x3c,0xc0,0x40,0x44,0xfe,0x50,0x50,0xfc,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0, ++0x0,0x79,0x4b,0x4a,0x52,0x53,0x62,0x52,0x53,0x48,0x49,0x6f,0x50,0x40,0x40,0x40,0x80,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x7b,0x4a,0x4a,0x53,0x52,0x62,0x53,0x50,0x4f,0x4a,0x6a,0x52,0x42,0x43,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x4,0xfe,0x88,0x50,0x20,0x90,0xe,0x4, ++0x0,0x78,0x4b,0x4a,0x53,0x52,0x63,0x50,0x57,0x48,0x48,0x6b,0x50,0x40,0x4f,0x40,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x0, ++0x0,0x78,0x4b,0x4a,0x52,0x53,0x62,0x52,0x4b,0x48,0x68,0x51,0x41,0x42,0x44,0x48,0x40,0x88,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0xc8,0x54,0x5c,0x42,0x42,0x3e, ++0x0,0x7b,0x4a,0x4b,0x52,0x53,0x61,0x52,0x57,0x49,0x4a,0x6f,0x50,0x45,0x44,0x48,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x8,0x10,0xbe,0x8,0x94,0xbe,0x0,0x24,0x92,0x2, ++0x2,0x7f,0x8,0x8,0x8,0x9,0xff,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x0,0x2,0x7f,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x4,0x2,0x3f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x80,0x0,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x10,0x8,0x9,0xff,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x3f,0x0,0x0,0x0,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x12,0x3f,0x22,0x22,0x22,0x2a,0x24,0x20,0x3f,0x0,0x4,0xfe,0x0,0x2,0x1,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20, ++0x10,0x8,0x9,0xff,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x1,0xff,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x55,0x63,0x41,0x41,0x45,0x42,0x0,0x0,0xfc,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x1,0xff,0x4,0x8,0x18,0x1c,0x2a,0x29,0x49,0x88,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x14,0x14,0x14,0x14,0x15,0xf7,0x14,0x14,0x14,0x14,0x14,0x35,0xd6,0x14,0x0,0x0,0x0,0x7c,0x44,0x44,0x48,0xc8,0x50,0x48,0x44,0x42,0xc2,0x62,0x54,0x48,0x40,0x40, ++0x14,0x14,0x14,0x14,0x94,0x54,0x55,0x35,0x36,0x14,0x14,0x17,0xf8,0x40,0x0,0x0,0x0,0x7c,0x44,0x44,0xc8,0xc8,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40, ++0x2,0x7,0x78,0x48,0x48,0x4a,0x7f,0x48,0x48,0x48,0x44,0x44,0x52,0x69,0x44,0x0,0x0,0x3c,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0x22,0x22,0xa2,0xb4,0xa8,0x20,0x20, ++0x10,0x10,0x20,0x24,0x42,0xff,0x0,0x2,0x7f,0x42,0x42,0x42,0x42,0x7e,0x42,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x8,0x9,0xff,0x8,0x49,0x29,0x2a,0xff,0x8,0x8,0x14,0x12,0x23,0xc1,0x0,0x0,0x7c,0x44,0xc4,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x2,0xff,0x10,0x10,0x22,0x41,0x7f,0x8,0x8,0x7f,0x8,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40, ++0x8,0x8,0x4a,0x7f,0x48,0x88,0x9,0xff,0x8,0x1c,0x1c,0x2a,0x29,0x48,0x88,0x8,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x8,0x14,0x12,0x21,0x20,0x7f,0x80,0x1,0xff,0x10,0x14,0x22,0x7f,0x21,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0xd0,0x48,0x44,0xc2,0x42,0x62,0x54,0x48,0x40,0x40, ++0x41,0x22,0x14,0x8,0x14,0x63,0x10,0xff,0x10,0x24,0x28,0x48,0x92,0x3f,0x1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x21,0x3f,0x41,0x41,0xbd,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x1,0xa,0x4,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x0,0x7f,0x50,0x91,0x3f,0x10,0x14,0x25,0x7f,0x4,0x4,0x7,0xfc,0x44,0x4,0x4,0x0,0xfc,0xc4,0x44,0x48,0x48,0x50,0x48,0xc4,0x42,0x42,0xe2,0x54,0x48,0x40,0x40, ++0x0,0xff,0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x6b,0x5a,0x4a,0x4a,0x4a,0x4a,0x5a,0x0,0x40,0xfe,0x12,0x52,0xf4,0x54,0x58,0x54,0x54,0xd2,0x52,0x5a,0x54,0x50,0xd0,0x10, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x0,0xff,0x8,0xa,0x7f,0x8,0xf,0xf8,0x40,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40, ++0x8,0x28,0x2a,0x3f,0x48,0x88,0x9,0xff,0x0,0x7f,0x41,0x41,0x41,0x7f,0x41,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0xc8,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x20,0x11,0xe,0x11,0x28,0x8,0xff,0x14,0x24,0x7f,0xa4,0x24,0x24,0x25,0x24,0x4,0x80,0x3c,0x24,0x24,0xa8,0x28,0xf0,0x28,0xa4,0xe2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20, ++0x1,0x3,0xfc,0x49,0x29,0x2,0x7f,0x2,0xc,0x8,0xff,0x48,0x8,0x8,0x28,0x10,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x0,0x7c,0xc4,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0xe2,0x54,0x48,0x40,0x40, ++0x8,0x29,0x2a,0x4c,0x94,0x12,0x21,0xc8,0x8,0x29,0x2a,0x54,0x12,0x21,0xc1,0x0,0x0,0x7c,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x1,0x7f,0x40,0x5f,0x51,0x5f,0x51,0x5f,0x48,0x7f,0x49,0x52,0x4e,0x51,0x7f,0x0,0x0,0xbc,0x24,0x24,0x28,0x28,0x30,0x28,0x24,0xe2,0x22,0x22,0x34,0x28,0xa0,0x20, ++0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x7f,0x49,0x8,0x7f,0x8,0xf,0xf8,0x40,0x0,0xfc,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x1,0x7f,0x4,0x17,0x14,0xff,0x20,0x3f,0x20,0x3f,0x0,0xaa,0xaa,0x0,0x2,0x1,0x0,0xbc,0x24,0xa4,0x28,0xe8,0x30,0x28,0x24,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0x20, ++0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x3e,0x8,0xf,0x78,0x20,0x0,0xfc,0x44,0x44,0x48,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x8,0x7f,0x22,0x14,0xff,0x0,0x7f,0x41,0x7f,0x41,0x7f,0x8,0xff,0x8,0x8,0x8,0x0,0x7c,0x44,0x44,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0xd4,0x48,0x40,0x40, ++0x3,0x7c,0x24,0x15,0x7f,0xc,0x15,0x24,0xff,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x80,0x3c,0xa4,0x24,0xe8,0x28,0x30,0xa8,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0, ++0x11,0xa,0x7f,0x4,0x3f,0x4,0x7f,0x24,0x15,0xff,0x0,0x3f,0x20,0x20,0x3f,0x20,0x0,0x3c,0xe4,0x24,0xa8,0x28,0xf0,0xa8,0x24,0xe2,0x22,0xa2,0xb4,0xa8,0xa0,0xa0, ++0xff,0x48,0x7b,0x4a,0x7a,0x49,0xfa,0x8,0x7f,0x14,0x25,0x4e,0x15,0x24,0xc4,0x4,0x80,0x3c,0xa4,0xa4,0xa8,0x28,0xb0,0x28,0x24,0xa2,0x22,0x22,0xb4,0xa8,0x20,0x20, ++0x2,0x7f,0x8,0x7f,0x48,0xaa,0x8,0x2a,0x0,0x7f,0x55,0x55,0x55,0x55,0x7f,0x0,0x0,0x7c,0x44,0xc4,0xc8,0x48,0x50,0x48,0x44,0x42,0x42,0x62,0x54,0x48,0x40,0x40, ++0x2a,0x7f,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x0,0xff,0x1,0x7f,0x41,0x7f,0x22,0xff,0x0,0x3c,0xa4,0xa4,0xa8,0xa8,0xb0,0xa8,0x24,0xa2,0x22,0xa2,0x34,0x28,0x20,0xa0, ++0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x80,0x0,0x0,0x1f,0x0,0x0,0x0,0x3f,0x0,0x0,0x20,0xf0,0x20,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0xf,0x10,0x10,0x20,0x5f,0x11,0x11,0x11,0xff,0x1,0x2,0x4,0x18,0x60,0x0,0x0,0xe0,0x20,0x40,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0x80,0x60,0x1c,0x8, ++0x0,0x1,0xff,0x10,0x10,0x12,0x1f,0x12,0x12,0x12,0x12,0x22,0x22,0x4a,0x84,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x20,0x22,0x3f,0x42,0x42,0x8a,0x7e,0x4a,0x4a,0x4a,0x4a,0x7a,0x42,0xa,0x4,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x2,0xff,0x22,0x22,0x22,0x2a,0x44,0x80,0x7e,0x42,0x42,0x42,0x42,0x7e,0x42,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x10,0x9,0xff,0x10,0x12,0x22,0x24,0x7c,0x8,0xa,0x12,0x24,0x4c,0x92,0x20,0x1,0x20,0x20,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x8,0x8,0x7f,0x9,0x11,0x15,0x62,0x0,0xff,0x0,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x7c,0x0,0xfe,0x10,0x90,0x90,0x90,0x90,0x50,0x20, ++0x0,0x7f,0x2,0x4,0x7e,0x4,0x14,0x8,0x7f,0x55,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x1,0xff,0x81,0xbd,0x81,0xbd,0x0,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x7e,0x42,0x1,0x20,0xa0,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x44,0x84,0xa8,0x10, ++0x10,0x12,0x7f,0x12,0x12,0x2a,0x44,0x0,0x44,0xff,0x55,0x55,0x55,0x55,0x99,0x33,0x0,0xfe,0x92,0x92,0xfe,0x92,0x92,0xfe,0x82,0x20,0x10,0x50,0xc2,0xc6,0x44,0x3c, ++0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x3f,0x1,0x7f,0x8,0x6,0x1,0x6,0x18,0xe0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x0,0xf0,0x20,0xc0,0x0,0xc0,0x30,0xe, ++0x21,0x2f,0x20,0xaf,0x70,0x2f,0x20,0x27,0x54,0x87,0x0,0x1f,0x4,0x3,0xc,0x70,0x8,0xe8,0x8,0xea,0x1c,0xe8,0x8,0xc8,0x54,0xc2,0x0,0xe0,0x40,0x80,0x60,0x1c, ++0x3e,0x32,0x2a,0x26,0x3e,0x8,0x1f,0x28,0x4f,0x8,0x8,0x1f,0x4,0x3,0x1c,0xe0,0xf8,0xc8,0xa8,0x98,0xf8,0x80,0xf8,0x80,0xf0,0x84,0x7c,0xe0,0x40,0x80,0x70,0xe, ++0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x78,0x8,0x88,0x50,0x30,0x20,0x50,0x88,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc, ++0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x1,0x1,0x1,0x41,0x41,0x5f,0x43,0x45,0x45,0x49,0x51,0x61,0x45,0x42,0x7f,0x0,0x0,0x0,0x0,0x14,0x34,0x44,0x84,0x44,0x44,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4, ++0x9,0x4,0x22,0x29,0x22,0x24,0x29,0x20,0x3f,0x28,0x8,0x9,0xe,0x8,0x7,0x0,0x20,0x40,0x88,0x28,0x88,0x48,0x28,0x8,0xf8,0x8,0x60,0x80,0x0,0x4,0xfc,0x0, ++0x0,0x0,0x1,0x1,0x1,0x2,0x2,0x4,0x4,0x8,0x8,0x10,0x20,0x7f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x10,0x8,0xfc,0x4,0x0, ++0x1,0x1,0x2,0x4,0x1f,0x0,0x4,0x4,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x20,0xf0,0x10,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x2,0x4,0x8,0x1f,0x2,0xff,0x4,0x8,0x3f,0xd1,0x11,0x1f,0x11,0x11,0x1f,0x10,0x0,0x40,0x20,0xf0,0x4,0xfe,0x40,0x20,0xf8,0x16,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x0,0xfb,0x8,0x10,0x2d,0xc3,0x8,0x7d,0x11,0x11,0x11,0x1d,0xf2,0x44,0x8,0x80,0x44,0xfe,0x80,0x80,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0, ++0x1,0x4,0x4,0x8,0x10,0x2f,0xc4,0x4,0x8,0x31,0x1,0x3f,0x1,0x1,0xff,0x0,0x80,0x80,0x40,0x20,0x10,0xee,0x24,0x20,0xa0,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x2,0x22,0x1a,0xa,0x2,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0xff,0x0,0x8,0xfc,0x80,0x88,0x98,0xa0,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0, ++0x9,0x9,0x9,0x11,0x1f,0x30,0x50,0x90,0x11,0x17,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0x10,0x0,0xfc,0x0,0x90,0xa0,0x44,0xa4,0x1c,0x0,0xf8,0x0,0x4,0xfe,0x0, ++0x8,0xff,0x0,0x3e,0x22,0x3e,0x0,0x7e,0x4,0x7e,0x9,0x19,0x7f,0x1,0x1,0xff,0x20,0xa0,0x28,0xfc,0x28,0x68,0x28,0x58,0x48,0x8a,0x6,0x10,0xfc,0x0,0x4,0xfe, ++0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x49,0x7f,0x1,0x3f,0x1,0xff,0x8,0x7c,0x48,0x48,0x86,0x7c,0x44,0x44,0x28,0x90,0x28,0xc6,0x0,0xf8,0x0,0xfe, ++0x1,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x8,0x11,0x61,0x3f,0x1,0x1,0xff,0x0,0xfe,0x90,0xfe,0x90,0xfc,0x90,0xfc,0x90,0xfe,0x80,0x10,0xf8,0x0,0x4,0xfe, ++0x8,0xf,0x48,0x7f,0x40,0xbf,0x8,0x55,0x3e,0xe3,0x22,0x3e,0x1,0x3f,0x1,0xff,0x0,0x0,0x7c,0x84,0xc4,0x28,0x28,0x10,0x28,0xa8,0x46,0x0,0x10,0xf8,0x0,0xfe, ++0x10,0x10,0x11,0x10,0x14,0xfe,0x10,0x13,0x10,0x10,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x11,0x10,0x14,0xfe,0x13,0x10,0x10,0x11,0x1e,0xf0,0x40,0x0,0x0,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x88,0x50,0x20, ++0x10,0x10,0x10,0x10,0x15,0xfe,0x11,0x10,0x10,0x10,0x1e,0xf1,0x41,0x1,0x0,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4,0x4, ++0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x13,0x10,0x14,0xfe,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x13,0x12,0x12,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x1,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x9,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x10,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf2,0x42,0x4,0x9,0x12,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x88,0x48,0x50,0x30,0x20,0x50,0x88,0xe,0x4, ++0x11,0x11,0x11,0x11,0x17,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x1,0x1,0x8,0x8,0x8,0xa,0xfe,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0x17,0xfc,0x10,0x10,0x10,0x11,0x1d,0xf1,0x42,0x2,0x4,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0x28,0x28,0x30,0x62,0xa2,0x1e,0x0, ++0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x13,0x12,0x12,0x1e,0xf2,0x42,0x3,0x2,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0x10,0xff,0x12,0x12,0x12,0x13,0x1e,0xf2,0x44,0x4,0x8,0x10,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x11,0x11,0x11,0xfd,0x11,0x11,0x11,0x11,0x1d,0xf1,0x42,0x2,0x4,0x0,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x50,0x30,0x18,0x14,0x10,0x10,0x10, ++0x10,0x10,0x13,0x12,0x12,0xfe,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x3,0x6,0x0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x10,0x90,0x52,0x2a,0x6, ++0x10,0x10,0x10,0x13,0x12,0xfc,0x11,0x11,0x11,0x11,0x1d,0xf1,0x41,0x1,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x4,0x8,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0, ++0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x17,0x12,0x12,0x1e,0xf2,0x43,0x0,0x0,0x0,0x8,0xfc,0x8,0x48,0x28,0x28,0xa,0xfe,0x8,0x88,0x48,0x48,0xfc,0x8,0x50,0x20, ++0x10,0x11,0x11,0x12,0x12,0xfc,0x17,0x11,0x12,0x14,0x17,0x1c,0xf0,0x40,0x0,0x1,0x20,0x20,0x20,0x24,0x7e,0xa4,0xa4,0x24,0x24,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8, ++0x10,0x17,0x10,0x10,0x10,0xfc,0x14,0x12,0x12,0x12,0x1c,0xf0,0x40,0x0,0xf,0x0,0x8,0xfc,0xa0,0xa0,0xa0,0xa4,0xa4,0xa4,0xa8,0xa8,0xa0,0xa0,0xa0,0xa4,0xfe,0x0, ++0x10,0x17,0x10,0x10,0x11,0xfd,0x13,0x10,0x10,0x10,0x13,0x1c,0xf0,0x40,0xf,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x10,0x10,0x14,0x14,0x17,0xfc,0x10,0x13,0x10,0x10,0x13,0x1e,0xf2,0x42,0x2,0x1,0x40,0x40,0x44,0x44,0xfc,0x4,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe, ++0x20,0x20,0x2f,0x21,0x22,0xfa,0x24,0x2f,0x21,0x29,0x25,0x3a,0xe2,0x5,0x8,0x10,0x4,0xc,0x70,0x10,0x10,0x50,0x5c,0x50,0x50,0x50,0x50,0x50,0x7c,0x0,0x86,0x7c, ++0x10,0x10,0x10,0x13,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x42,0x2,0x2,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x20,0x20,0x20,0x2f,0x20,0xf8,0x25,0x24,0x24,0x24,0x24,0x3c,0xe5,0x44,0x7,0x4,0x80,0x40,0x44,0xfe,0x0,0x10,0x14,0xa4,0xa4,0x44,0xa4,0x94,0x14,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x17,0x10,0xfc,0x11,0x13,0x11,0x10,0x1c,0xf1,0x46,0x0,0x3,0xc,0x80,0x40,0x44,0xfe,0x80,0x90,0x10,0xe0,0x28,0x48,0x90,0x10,0x20,0xd8,0x6,0x2, ++0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x13,0x12,0x12,0x1e,0xf2,0x42,0x2,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x88,0x50,0x20,0x10,0x8e,0x4,0x0, ++0x10,0x11,0x11,0x11,0x11,0xfd,0x11,0x10,0x13,0x10,0x10,0x1d,0xf0,0x40,0x7,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x27,0x24,0x24,0xfc,0x24,0x27,0x24,0x24,0x24,0x3c,0xe7,0x44,0x0,0x0,0x8,0x88,0xc8,0x88,0x8a,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0x28,0x10, ++0x10,0x11,0x11,0x11,0x11,0xfd,0x10,0x13,0x12,0x12,0x1e,0xf2,0x43,0x2,0x2,0x2,0x8,0xfc,0x8,0x8,0xf8,0x48,0x44,0xfe,0x44,0x44,0x44,0xb4,0x14,0x4,0x14,0x8, ++0x10,0x11,0x11,0x11,0x11,0xfc,0x13,0x12,0x12,0x12,0x1e,0xf2,0x42,0x0,0x3,0xc,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x24,0x24,0x44,0x44,0x98,0x4,0x2, ++0x10,0x10,0x17,0x10,0x12,0xfd,0x10,0x10,0x17,0x11,0x10,0x1c,0xf0,0x40,0x0,0x0,0x8,0x3c,0xc0,0x44,0x24,0x28,0x10,0x14,0xfe,0x10,0x90,0x90,0x10,0x10,0x50,0x20, ++0x10,0x10,0x13,0x12,0x14,0xfd,0x10,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x4,0xfe,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x17,0x10,0x10,0xff,0x12,0x13,0x12,0x13,0x1e,0xf3,0x42,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xa,0xfe,0x0, ++0x10,0x10,0x10,0x17,0x11,0xfd,0x13,0x16,0x1a,0x13,0x1e,0xf2,0x43,0x2,0x0,0x0,0x80,0x80,0x84,0xfe,0x10,0x50,0xf8,0x4e,0x48,0xf8,0x48,0x48,0xf8,0x4a,0x42,0x3e, ++0x10,0x13,0x12,0x13,0x12,0xff,0x11,0x11,0x13,0x14,0x10,0x1d,0xf1,0x42,0x4,0x1,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x44,0x94,0x8, ++0x10,0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x13,0x10,0x1d,0xf7,0x40,0x0,0x0,0x0,0x40,0x84,0xfe,0x24,0x24,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x10,0x10,0x10,0x10,0x11,0xfe,0x14,0x13,0x10,0x10,0x1c,0xf0,0x45,0x5,0x9,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf8,0x10,0x20,0x80,0x40,0x44,0x12,0x12,0xf0, ++0x20,0x27,0x24,0x24,0x24,0xff,0x24,0x24,0x24,0x27,0x3c,0xe4,0x44,0x8,0x9,0x10,0x4,0xbe,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0xa4,0xd4,0x88, ++0x10,0x10,0x10,0x11,0x12,0xff,0x12,0x12,0x12,0x13,0x1e,0xf0,0x40,0x1,0x6,0x18,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x44,0xfc,0x44,0xa0,0xb0,0x2a,0x22,0x1e, ++0x20,0x23,0x20,0x21,0x28,0xfb,0x20,0x27,0x24,0x2b,0x3a,0xe2,0x42,0x2,0x0,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x42,0xfc,0x48,0x48,0x48,0x58,0x40,0x40, ++0x10,0x10,0x13,0x10,0x10,0xff,0x10,0x10,0x13,0x10,0x1e,0xf1,0x42,0xc,0x1,0x0,0x40,0x48,0xfc,0x48,0x4a,0xfe,0x48,0x48,0xf8,0x40,0x48,0x50,0x50,0x4e,0x44,0x80, ++0x10,0x13,0x12,0x12,0x13,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf3,0x45,0x5,0x9,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0xa8,0xa8,0xa8,0xf8,0x20,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x12,0x12,0x17,0x12,0xfe,0x12,0x12,0x13,0x10,0x1f,0xf0,0x41,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x10,0x17,0x10,0x10,0x17,0xfc,0x14,0x14,0x17,0x10,0x1c,0xf7,0x40,0x0,0xf,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x10,0x13,0x12,0x12,0x12,0xff,0x12,0x10,0x17,0x10,0x1c,0xf0,0x41,0x1,0x2,0xc,0x4,0xfe,0x94,0x94,0x94,0xfc,0x44,0x20,0xfe,0x80,0xf8,0x88,0x8,0x8,0x28,0x10, ++0x11,0x11,0x11,0x12,0x13,0xfe,0x16,0x1a,0x13,0x12,0x1f,0xf2,0x42,0x2,0x2,0x3,0x0,0x78,0x8,0x12,0xfe,0x0,0x88,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4, ++0x10,0x17,0x10,0x13,0x12,0xfe,0x13,0x10,0x17,0x15,0x1c,0xf5,0x44,0x4,0x4,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8, ++0x10,0x13,0x12,0x12,0x12,0xfe,0x12,0x12,0x12,0x12,0x1e,0xf2,0x44,0x5,0xa,0x0,0x4,0xfe,0x20,0x44,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x20,0xa8,0x26,0x22,0x60, ++0x13,0x12,0x13,0x12,0x13,0xfc,0x17,0x14,0x14,0x17,0x1c,0xf3,0x41,0x0,0x3,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x18,0x6, ++0x20,0x27,0x24,0x25,0x24,0xff,0x24,0x25,0x24,0x25,0x3d,0xe5,0x49,0x9,0x11,0x1,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c, ++0x24,0x22,0x28,0x24,0x21,0xfc,0x24,0x29,0x20,0x2f,0x38,0xe0,0x41,0x2,0xc,0x0,0x8,0xfc,0x48,0xc8,0x48,0x88,0xa8,0x10,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x20,0x27,0x24,0x27,0x24,0xfd,0x24,0x25,0x24,0x25,0x3e,0xe4,0x47,0x8,0x10,0x0,0x4,0xfe,0x4,0xfc,0x20,0x24,0xa8,0x24,0xa0,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x8,0x7f,0x8,0x7f,0x49,0x7f,0x40,0x4f,0x81,0x3f,0x5,0xf,0x18,0x2f,0x8,0xf,0x78,0x48,0x4c,0x80,0x7c,0x28,0x10,0xee,0x0,0xf8,0x0,0xf0,0x1c,0xf0,0x10,0xf0, ++0x8,0x7f,0x8,0xff,0x22,0x3e,0x14,0x7f,0x2,0x1f,0x11,0x1f,0x12,0xff,0x1,0x1,0x10,0x10,0xfe,0x10,0x7c,0x28,0x10,0x6e,0x0,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x0, ++0x10,0xfe,0x11,0x7c,0x0,0xfe,0x82,0x7c,0x1,0x7c,0x44,0x44,0x7d,0x29,0xfe,0x0,0x20,0x20,0x20,0xbe,0x42,0x14,0x50,0x98,0x26,0x42,0x20,0x10,0x54,0x42,0x4a,0x38, ++0x4,0x4,0xff,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x6,0x2,0x2,0x7f,0x2,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0x20,0xf0,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x4,0x4,0xff,0x4,0x4,0x3f,0x4,0x4,0x4,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0xf0,0x10,0x20,0x48,0xfc,0x8,0x8,0x8,0x88,0x50,0x20, ++0x4,0x4,0xff,0x4,0x4,0x1,0x1,0x1,0x7f,0x1,0x1,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x1,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x50,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x4,0x3f,0x8,0x8,0xc,0x12,0x12,0x11,0x20,0x20,0x43,0xc,0x40,0x44,0xfe,0x40,0x40,0xf0,0x20,0x40,0xf0,0x10,0x20,0x20,0xc0,0xb0,0xe,0x4, ++0x4,0x4,0xff,0x4,0x6,0x2,0x3f,0x2,0x1a,0x4,0x6,0x5,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0, ++0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x20,0x3f,0x0,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20, ++0x4,0x4,0xff,0x4,0x4,0x3f,0x0,0x0,0x1f,0x10,0x10,0x10,0x10,0x10,0xf,0x0,0x40,0x44,0xfe,0x40,0x50,0xf8,0x10,0x10,0xf0,0x10,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x2,0x4,0x1f,0x0,0x3,0xc,0x3f,0x0,0x0,0x1,0xe,0x70,0x40,0x44,0xfe,0x40,0x0,0x20,0xc0,0x80,0x20,0x20,0xc0,0x40,0x80,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x1,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0x0,0xff,0x4,0x4,0x4,0x8,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x4,0x4,0xff,0x4,0x4,0x0,0x3f,0x0,0x0,0xff,0x2,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x40,0x10,0xf8,0x0,0x4,0xfe,0x0,0x0,0x40,0x20,0xf0,0x10, ++0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x11,0x11,0x11,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x50,0x20,0x0,0x0, ++0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x3f,0x8,0x4,0x2,0x1,0x6,0x18,0xe0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x0,0xc0,0x30,0xe, ++0x4,0x4,0xff,0x4,0x4,0x3f,0x21,0x21,0x2f,0x21,0x21,0x22,0x42,0x44,0x88,0x10,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20, ++0x4,0x4,0xff,0x4,0x4,0x1f,0x10,0x10,0x17,0x14,0x14,0x24,0x24,0x44,0x84,0x3,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x20,0xf0,0x20,0x20,0xa0,0x40,0x4,0x4,0xfc, ++0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x20,0x3f,0x0,0x40,0x44,0xfe,0x40,0xf8,0x0,0x20,0xf0,0x20,0x20,0xe0,0x20,0x0,0x8,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x4,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x26,0x38,0x20,0x0,0x40,0x44,0xfe,0x40,0x40,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x84,0x84,0x7c,0x0, ++0x4,0x4,0xff,0x4,0x5,0x1,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0x9,0xff,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x5,0x1,0x3f,0x21,0x21,0x22,0x22,0x24,0x28,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0x40,0x8,0xfc,0x8,0x8,0x88,0x48,0x68,0x28,0x8,0x28,0x10, ++0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x80,0x84,0x84,0x7c, ++0x4,0x4,0xff,0x4,0x8,0x8,0xb,0x8,0xff,0xa,0x9,0x8,0x8,0xa,0xc,0x8,0x40,0x44,0xfe,0x40,0x20,0xc0,0x0,0x4,0xfe,0x0,0x0,0x80,0x40,0x20,0x1c,0x8, ++0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x8,0x8,0x8,0x8,0x14,0x12,0x20,0x41,0x2,0x40,0x44,0xfe,0x40,0x40,0x20,0x20,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x4,0x2, ++0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x33,0xc0,0x0,0x1f,0x0,0x0,0x0,0x0,0x1,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x84,0x20,0xf0,0x20,0x40,0x40,0x80,0x0, ++0x4,0x4,0xff,0x4,0x8,0x8,0xf,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x4,0x0,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x48,0x48,0x48,0x88,0x88,0x8,0x8,0x50,0x20, ++0x4,0x4,0xff,0x4,0xc,0x8,0xf,0x11,0x11,0x21,0x2,0x2,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x40,0x0,0xf8,0x10,0x20,0x0,0x80,0x80,0x40,0x30,0xe,0x4, ++0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf8,0x80,0x80,0x80,0x88,0xfc,0x80,0x40,0x40,0x22,0x12,0xe, ++0x4,0x4,0xff,0x4,0x0,0x7,0x4,0x8,0x30,0xf,0x4,0x2,0x1,0x2,0xc,0x70,0x40,0x44,0xfe,0x40,0x0,0xc0,0x48,0x7c,0x0,0xe0,0x40,0x80,0x0,0x80,0x60,0x1c, ++0x4,0x4,0xff,0x4,0x6,0x1,0xff,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x40,0x4,0xfe,0x0,0x0,0x40,0x30,0x10,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x6,0x41,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x40,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x2,0xc,0x8,0xf,0xf8,0x48,0x8,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x4,0x4,0xff,0x4,0x0,0x24,0x22,0x21,0x21,0x20,0x20,0x24,0x28,0x30,0x1,0x6,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0x10,0x10,0x10,0x20,0x20,0x50,0x8c,0x4,0x0, ++0x4,0x4,0xff,0x5,0x1,0xff,0x1,0x1,0x7f,0x3,0x5,0x9,0x31,0xc1,0x1,0x1,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x8,0xfc,0x80,0x40,0x30,0xe,0x4,0x0,0x0, ++0x4,0x4,0xff,0x4,0x8,0x8,0xff,0x8,0x8,0x8,0xf,0x8,0x8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0xe0,0x20,0x20,0x20,0xe0,0x20, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0xff,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x4,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x2,0x2,0x4,0x4,0x8,0x8,0x11,0x26,0x40,0x40,0x44,0xfe,0x40,0x20,0x14,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x82,0x82,0x7e,0x0, ++0x4,0x4,0xff,0x4,0x2,0x2,0xff,0x4,0x4,0x7,0xa,0x9,0x10,0x21,0x46,0x18,0x40,0x44,0xfe,0x40,0x40,0x24,0xfe,0x0,0x0,0xf0,0x20,0x40,0x80,0x60,0x1c,0x8, ++0x4,0x4,0xff,0x4,0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x4,0x4,0xff,0x4,0x0,0xf,0x8,0x8,0xf,0x8,0x8,0xf,0x8,0x8,0xff,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x24,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x1,0x1f,0x11,0x11,0x1f,0x11,0x11,0xff,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x14,0xfe,0x10,0x10,0x50,0x20, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x24,0x27,0x24,0x20,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0x48,0xc8,0x48,0x28,0x10, ++0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x10,0x17,0x10,0x10,0x20,0x24,0xfe,0x20,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0,0x0, ++0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x51,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20, ++0x4,0x4,0xff,0x5,0x2,0x4,0xa,0x31,0xc1,0x3f,0x0,0x0,0xc,0x3,0x0,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0x4,0xf0,0x20,0x40,0x80,0x0,0xc0,0x40, ++0x4,0x4,0xff,0x5,0x2,0xf,0x8,0xa,0x9,0x8,0xf,0x0,0xff,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0x20,0xf0,0x20,0x20,0x60,0x8,0xfc,0x8,0xc8,0x8,0x50,0x20, ++0x4,0x4,0xff,0x4,0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x26,0x38,0x20,0x0,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80, ++0x4,0x4,0xff,0x4,0x6,0x38,0x22,0x22,0x22,0x22,0x22,0x3c,0x24,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x41,0x81,0x1,0x3f,0x1,0x1,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x4,0x10,0xf8,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x40,0x9f,0x4,0x5,0x3f,0x4,0x4,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x20,0x20,0x24,0x14,0x8, ++0x4,0x4,0xff,0x4,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x20,0x20,0x28,0x30,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x80,0x88,0xfc,0x40,0x40,0x22,0x12,0xe, ++0x4,0x4,0xff,0x4,0x3f,0x4,0x4,0x8,0x10,0x60,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0x8,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x4,0x4,0xff,0x4,0x0,0xff,0x4,0x4,0x3f,0x24,0x24,0x28,0x30,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x4,0xfe,0x40,0x48,0xfc,0x48,0x48,0x38,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x1,0xff,0x1,0x3f,0x1,0x3f,0x21,0x3f,0x2,0xc,0x30,0xc0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x84,0x4c,0x30,0xe, ++0x4,0x4,0xff,0x4,0x1,0x1,0x7f,0x1,0x3,0x3c,0x0,0x7f,0x4,0x4,0x8,0x70,0x40,0x44,0xfe,0x40,0x0,0xf8,0x20,0x44,0x84,0x7c,0x10,0xf8,0x80,0x82,0x82,0x7e, ++0x4,0x4,0xff,0x4,0x20,0x20,0x3e,0x20,0x26,0x39,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x80,0x84,0x7c,0x0,0xfe,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x0,0x4,0x24,0x27,0x24,0x24,0x24,0x24,0x27,0xf8,0x40,0x0,0x40,0x44,0xfe,0x40,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x10,0x1f,0x0,0x3f,0x20,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0x10,0xf0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x27,0x24,0x24,0x24,0x27,0x20,0x20,0x20,0x40,0x44,0xfe,0x40,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x11,0x11,0x1f,0x21,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x40,0x44,0xfe,0x40,0x0,0x20,0xf0,0x0,0x4,0xfe,0x80,0x40,0x20,0x1c,0x8,0x0, ++0x4,0x4,0xff,0x4,0x0,0x7d,0x4,0x8,0x13,0x3c,0x4,0x24,0x19,0xc,0x32,0xc1,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x0,0x6,0xfc, ++0x4,0x4,0xff,0x4,0x1,0x3e,0x2,0xff,0x4,0x8,0x34,0xc4,0x4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0x4e,0x44,0x40,0x40,0x40,0x40, ++0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x1f,0x30,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x4,0x4,0xff,0x4,0x8,0x8,0x17,0x10,0x30,0x50,0x9f,0x10,0x10,0x10,0x17,0x10,0x40,0x44,0xfe,0x40,0x8,0x3c,0xc0,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x4,0x9,0x10,0x64,0xb,0x18,0x28,0xc8,0x8,0x8,0x8,0x8,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xdf,0x1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xe,0xf4,0x0,0x20,0xf0,0x0,0x8,0xfc,0x0, ++0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x30,0xcf,0x0,0x3f,0x2,0x4,0x8,0x1f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0x4e,0xe4,0x0,0xf8,0x0,0x40,0x20,0xf0,0x10, ++0x4,0x4,0xff,0x14,0x10,0x3f,0x20,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa8,0x10, ++0x4,0x4,0xff,0x4,0x2,0x7,0x8,0x14,0x23,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0xc0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x6,0x1,0x2,0xc,0x34,0xc4,0x4,0x8,0x10,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0xc0,0x0,0xc0,0x70,0x4e,0x44,0x40,0x40,0x40, ++0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x24,0x42,0x1,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0xfc,0x0,0x10,0x4c,0x44,0x80,0x0,0x80,0x60,0x1c,0x8, ++0x4,0x4,0xff,0x4,0x1,0xff,0x2,0x4,0x8,0x1f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x40,0x20,0xf0,0x90,0x80,0x80,0x84,0x84,0x7c, ++0x4,0x4,0xff,0x4,0x20,0x18,0xb,0x40,0x20,0x28,0x10,0x20,0x60,0x20,0x2f,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x89,0xf,0x11,0x21,0x7f,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x40,0x7f,0x41,0x41,0xbd,0x5,0x9,0x9,0x11,0x61,0x5,0x2,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x14,0x20,0xc0,0x40,0x20,0x20,0x1c,0x0,0x0, ++0x4,0x4,0xff,0x4,0x1f,0x0,0xf,0x0,0x1f,0x0,0xff,0x8,0x4,0x4,0x0,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x14,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf8,0x10,0x20,0x40,0x80,0x60,0x1c,0x8, ++0x4,0x4,0xff,0x4,0x1f,0x10,0x10,0x1f,0x10,0x12,0x11,0x20,0x20,0x43,0x80,0x0,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x40,0x20,0x90,0x8e,0x4,0x0,0xc0,0x20, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x0,0xc,0x2,0x18,0x4,0xff,0x1,0x2,0xc,0x30,0x40,0x44,0xfe,0x40,0x0,0xf8,0x8,0x90,0x80,0x80,0x84,0xfe,0x0,0x60,0x18,0x4, ++0x4,0x4,0xff,0x4,0x0,0x7e,0x4,0x8,0xe,0x38,0xc9,0x9,0xa,0x8,0x28,0x10,0x40,0x44,0xfe,0x40,0x20,0x20,0x20,0xa0,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40, ++0x4,0x4,0xff,0x4,0x10,0x10,0x23,0x7c,0x8,0x10,0x26,0x78,0x20,0xe,0x73,0x20,0x40,0x44,0xfe,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x10,0x10,0x22,0x7d,0x8,0x10,0x26,0x78,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10, ++0x4,0x4,0xff,0x4,0x10,0x10,0x10,0xfd,0x12,0x10,0x10,0x10,0x1c,0xe1,0x42,0x4,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x4,0x48,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x4,0x4,0xff,0x5,0x1,0x3f,0x1,0x7f,0x40,0x9f,0x0,0x1,0x7f,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xfe,0x2,0xe4,0x80,0x8,0xfc,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x0,0x7c,0x44,0x47,0x44,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x40,0x44,0xfe,0x40,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x50,0x10,0x10,0x50,0x20, ++0x4,0x4,0xff,0x4,0xf,0x8,0x8,0xf,0x1,0x3f,0x21,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0xe0,0x20,0x20,0xe0,0x8,0xfc,0x8,0x8,0xc8,0x48,0x28,0x10, ++0x4,0x4,0xff,0x4,0x1,0x3f,0x1,0x7f,0x5,0x9,0x3f,0xc4,0x4,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0xf0,0x0,0x4,0xfe,0x40,0x30,0xce,0x44,0xf0,0x10,0x50,0x20, ++0x4,0x4,0xff,0x4,0x6,0x3c,0x4,0xff,0x4,0x5,0x6,0x1c,0x64,0x4,0x15,0x8,0x40,0x44,0xfe,0x40,0x60,0x50,0x44,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x6, ++0x4,0x4,0xff,0x14,0x10,0x1f,0x20,0x5f,0x12,0x11,0xff,0x22,0x21,0x3f,0x0,0x0,0x40,0x44,0xfe,0x40,0x10,0xf8,0x0,0xf0,0x10,0x14,0xfe,0x10,0x10,0xfc,0x50,0x20, ++0x4,0x4,0xff,0x4,0x8,0x8,0x14,0x15,0x36,0x54,0x94,0x14,0x14,0x10,0x11,0x12,0x40,0x44,0xfe,0x40,0x80,0x84,0xfe,0x88,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x4,0x4,0xff,0x4,0x8,0x8,0x10,0x17,0x30,0x52,0x91,0x11,0x11,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x40,0x48,0xfc,0x0,0x18,0x10,0x10,0x20,0x24,0xfe,0x0, ++0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x3f,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0xf8,0x0,0x20,0x18,0x8,0x0, ++0x4,0x4,0xff,0x5,0x2,0x4,0x8,0x3f,0xc0,0x2,0x11,0x9,0x9,0x0,0x7f,0x0,0x40,0x44,0xfe,0x40,0x80,0x40,0x30,0xee,0x4,0x10,0x10,0x20,0x20,0x48,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x0,0x7f,0x11,0x9,0x3f,0x0,0x1,0x1,0xff,0x1,0x5,0x2,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x11,0x9,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x44,0xfe,0x40,0xf8,0x10,0x10,0x20,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x4,0x4,0xff,0x4,0x20,0x14,0xb,0x14,0x64,0xc,0x14,0x24,0xc5,0x5,0x2a,0x14,0x40,0x44,0xfe,0x40,0x50,0x48,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x4,0x4,0xff,0x4,0x20,0x14,0x8,0x14,0x64,0xd,0x14,0x24,0xc4,0x4,0x29,0x12,0x40,0x44,0xfe,0x40,0x20,0x20,0xa4,0xa4,0xa8,0x20,0x50,0x50,0x90,0x88,0xe,0x4, ++0x4,0x4,0xff,0x4,0x1,0x3f,0x8,0x4,0x4,0xff,0x1,0x1,0x3f,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x10,0xf8,0x20,0x40,0x84,0xfe,0x0,0x10,0xf8,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x1,0x7f,0x40,0x9f,0x0,0x7f,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x80,0x80,0x84,0x84,0x7c, ++0x4,0x4,0xff,0x4,0x1,0x1f,0x10,0x1f,0x10,0x1f,0x12,0x11,0x10,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x20,0xc0,0x60,0x1e,0x4, ++0x4,0x4,0xff,0x4,0x7f,0x42,0x8f,0x8,0xb,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0xe4,0x20,0x20,0xa0,0x48,0xfc,0x8,0xc8,0x28,0x10, ++0x4,0x4,0xff,0x4,0x10,0x17,0x20,0x7e,0xa,0x12,0x23,0x7c,0x0,0xe,0x70,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e, ++0x4,0xff,0x5,0x3f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0xfe,0x40,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0xf,0x8,0xf,0x8,0x8,0xff,0x4,0x8,0x30,0x40,0x44,0xfe,0x40,0x28,0xfc,0x20,0xe0,0x20,0xe0,0x20,0x24,0xfe,0x40,0x30,0x8, ++0x4,0x4,0xff,0x4,0x8,0x8,0xfe,0x8,0x1c,0x1a,0x28,0x48,0x89,0x9,0xa,0x8,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x80,0x84,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10, ++0x4,0x4,0x7f,0x4,0x8,0xa,0x7f,0x8,0x1c,0x1a,0x29,0x48,0x88,0x8,0x9,0x8,0x40,0x44,0xfe,0x40,0x0,0x50,0x50,0x50,0x88,0xae,0x24,0x40,0x50,0x88,0xfc,0x4, ++0x8,0x8,0xff,0x8,0xf,0x1,0x3f,0x21,0x3f,0x1,0x7f,0x1,0x3f,0x1,0xff,0x0,0x20,0x24,0xfe,0x20,0xe0,0x8,0xfc,0x8,0xf8,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0, ++0x4,0x4,0xff,0x5,0x1,0x7f,0x2,0x4,0xf,0x30,0xdf,0x1,0x9,0x11,0x25,0x2,0x40,0x44,0xfe,0x40,0x8,0xfc,0x80,0x40,0xf0,0xe,0xf4,0x0,0x20,0x18,0x8,0x0, ++0x4,0xff,0x5,0x7f,0x1,0x3f,0x1,0xff,0x1,0x3f,0x2,0xff,0x4,0x8,0x7,0x38,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x14,0xfe,0x10,0xf0,0x4,0xfe,0x40,0x80,0x80,0x78, ++0x4,0x4,0xff,0x4,0x10,0x10,0xff,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x50,0x23,0x40,0x44,0xfe,0x40,0x90,0x88,0xfe,0x0,0xf8,0x88,0x90,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x4,0xff,0x4,0x8,0xf,0x8,0xa,0xff,0x8,0x2c,0x2b,0x49,0x88,0x28,0x11,0x40,0x44,0xfe,0x40,0x0,0x7c,0x4,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x86,0x4, ++0x4,0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x3f,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x10,0x10,0x7c,0x54,0x54,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x4,0xff,0x4,0xd,0x31,0x21,0x21,0x3d,0x21,0x21,0x3f,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0xf8,0x80,0x60,0x1c,0x8, ++0x4,0xff,0x4,0x9,0x8,0x1f,0x10,0x30,0x5f,0x90,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0xfe,0x40,0x0,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x88,0xfc,0x0, ++0x4,0x4,0xff,0x5,0x2,0x3f,0x21,0x3f,0x22,0x3f,0x5,0x9,0xff,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x3d,0x25,0x25,0x3d,0x25,0x25,0x3d,0x25,0x25,0x45,0x55,0x89,0x40,0x44,0xfe,0x40,0xf8,0x8,0x48,0x30,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x4,0xff,0x4,0xf,0x8,0x10,0x3f,0x51,0x11,0x1f,0x12,0x2,0x4,0x18,0x60,0x40,0x44,0xfe,0x40,0xe0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x80,0xa0,0x94,0x84,0x7c, ++0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x26,0x78,0xa0,0x24,0x3e,0x20,0x20,0x3f,0x20,0x40,0x44,0xfe,0x40,0x0,0xf0,0x20,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0x4,0xff,0x4,0x1,0x7f,0x8,0x8,0x14,0x22,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0xfe,0x40,0x8,0xfc,0x20,0x20,0x50,0x88,0x0,0xfe,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x10,0x8,0xff,0x10,0x1e,0x13,0x12,0x22,0x22,0x42,0x8a,0x4,0x40,0x44,0xfe,0x40,0x20,0x20,0x50,0x50,0x8e,0x4,0x60,0x10,0x0,0xc0,0x30,0x8, ++0x4,0x4,0xff,0x4,0x40,0x33,0x12,0x82,0x4b,0x12,0x22,0xe3,0x22,0x22,0x3f,0x20,0x40,0x44,0xfe,0x40,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0, ++0x4,0xff,0x4,0x41,0x7f,0x40,0x80,0x7f,0x4,0x4,0xf,0x18,0x28,0x48,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0x4,0xfc,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x4,0xff,0x4,0x41,0x7f,0x40,0x8f,0x8,0x8,0xf,0x8,0xf,0x8,0x8,0xf,0x8,0x40,0xfe,0x40,0x0,0xfe,0x2,0xe4,0x20,0x20,0xe0,0x0,0xf0,0x10,0x10,0xf0,0x0, ++0x4,0x4,0xff,0x4,0x41,0x7f,0x50,0x9e,0x12,0x22,0x52,0xc,0x4,0x8,0x30,0x40,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0xfc,0x88,0x88,0x88,0xa8,0x92,0x82,0x7e,0x0, ++0x4,0x4,0xff,0x4,0x40,0x7f,0x42,0x84,0x1f,0x1,0x2,0x1f,0x9,0x9,0x31,0x3,0x40,0x44,0xfe,0x40,0x0,0xfe,0x2,0x24,0xc0,0x0,0x20,0xf0,0x20,0x18,0x8,0x0, ++0x4,0x4,0xff,0x4,0x7c,0x9,0x11,0x11,0x15,0x39,0xd2,0x12,0x12,0x14,0x58,0x20,0x40,0x44,0xfe,0x40,0x1c,0xe0,0x50,0x50,0x50,0x50,0x50,0x48,0x48,0x54,0xf6,0x0, ++0x4,0x4,0xff,0x4,0x1f,0x0,0x40,0x51,0x49,0x45,0x45,0x49,0x53,0x41,0x7f,0x40,0x40,0x44,0xfe,0x40,0xe0,0x20,0x44,0x94,0x24,0x44,0x44,0x34,0x14,0x4,0xfc,0x4, ++0x4,0xff,0x4,0x8,0x7e,0x8,0x3e,0x8,0x7e,0x9,0x1,0xff,0x2,0x4,0x18,0x60,0x40,0xfe,0x40,0x8,0xfc,0x48,0x48,0x48,0xa8,0x10,0x4,0xfe,0x80,0x40,0x30,0xc, ++0x4,0x4,0xff,0x4,0x8,0x7f,0x8,0x8,0x7f,0x0,0x8,0x7f,0x8,0xf,0x78,0x20,0x40,0x44,0xfe,0x40,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10, ++0x4,0xff,0x4,0x8,0x3f,0x8,0xf,0x8,0xf,0x8,0xff,0x12,0x14,0x10,0x1f,0x0,0x40,0xfe,0x40,0x20,0xf8,0x20,0xe0,0x20,0xe0,0x24,0xfe,0x80,0x40,0x10,0xf8,0x0, ++0x4,0x4,0xff,0x4,0x8,0x8,0x7e,0x8,0x18,0x1c,0x2a,0x28,0x48,0x88,0x8,0x8,0x40,0x44,0xfe,0x40,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x25,0x29,0x2a,0x44,0x5b,0x80,0x40,0x44,0xfe,0x50,0x48,0xfc,0x40,0xc8,0x48,0xd0,0x20,0x20,0x60,0xa2,0x12,0xe, ++0x4,0x4,0xff,0x4,0x0,0x3f,0x20,0x2f,0x28,0x2a,0x2a,0x2a,0x2a,0x45,0x44,0x98,0x40,0x44,0xfe,0x50,0x28,0xfc,0x20,0xa0,0xa4,0xa4,0xa8,0xa8,0x90,0x32,0xca,0x86, ++0x4,0x4,0xff,0x4,0x20,0x3e,0x20,0x2e,0x72,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0xfe,0x40,0x80,0x98,0xe0,0x84,0x7c,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x4,0xff,0x4,0xf,0x8,0xf,0x0,0xff,0x8,0xf,0x8,0xf,0x8,0x7f,0x0,0x0,0x44,0xfe,0x40,0xe0,0x20,0xe0,0x4,0xfe,0x20,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20, ++0x4,0xff,0x5,0x1f,0x11,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x12,0xc,0x30,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0x90,0x60,0x1c, ++0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x2,0x29,0x29,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0x24,0x24,0xe0, ++0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0x1f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0x40,0xfe,0x40,0xf8,0x88,0xf8,0x0,0xf0,0x4,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40, ++0x4,0x4,0xff,0x4,0xb,0xa,0x12,0x13,0x30,0x5f,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x4,0x4,0xff,0x14,0x20,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x44,0x0,0x40,0x44,0xfe,0x40,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0xfe,0x0, ++0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x40,0x7f,0x40,0x9f,0x1,0x1,0x5,0x2,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfe,0x2,0xf4,0x0,0x0,0x0,0x0, ++0x4,0x4,0xff,0x4,0x11,0x9,0x7f,0x5,0x39,0x2,0xff,0x4,0xc,0x3,0x6,0x38,0x40,0x44,0xfe,0x40,0x10,0x20,0xfc,0x40,0x38,0x0,0xfe,0x40,0x40,0x80,0x60,0x18, ++0x4,0x4,0xff,0x4,0x20,0x1b,0x4a,0x22,0xa,0x12,0x22,0x64,0x24,0x24,0x28,0x30,0x40,0x44,0xfe,0x40,0x1c,0xe0,0xc,0xf0,0xa4,0xa8,0x90,0x90,0x90,0xa8,0xce,0x84, ++0x4,0xff,0x4,0x41,0x7f,0x40,0x9f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0x40,0xfe,0x40,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0, ++0x4,0x4,0xff,0x4,0x7e,0x42,0x42,0x7e,0x40,0x49,0x7c,0x40,0x44,0x7e,0x41,0x46,0x40,0x44,0xfe,0x40,0xfc,0x4,0x4,0xfc,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0xff,0x5,0x7f,0x1,0x1f,0x2,0xff,0x4,0xf,0x31,0xdf,0x5,0x9,0x31,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x40,0xf0,0xe,0xf4,0x40,0x30,0x8,0x0, ++0x4,0xff,0x5,0x3f,0x1,0xff,0x1,0x7,0x1c,0x67,0x0,0xf,0x8,0xf,0x8,0xf,0x40,0xfe,0x40,0xd0,0x24,0xfe,0x0,0xe8,0x8,0xf8,0x0,0xe0,0x20,0xe0,0x20,0xe0, ++0x4,0xff,0x4,0x3f,0x20,0x2f,0x20,0x3f,0x29,0x2a,0x2c,0x20,0x5f,0x44,0x82,0x0,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x4,0xfe,0x10,0xe0,0x1e,0x20,0xfc,0x20,0x20,0x60, ++0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x8,0x3f,0xc0,0x8,0xf,0x0,0x3f,0x0,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x20,0xf8,0x26,0x20,0xf8,0x8,0xc8,0x30, ++0x4,0x4,0xff,0x4,0x1f,0x11,0x11,0x1f,0x11,0x12,0x14,0x1f,0x29,0x28,0x48,0x7,0x40,0x44,0xfe,0x40,0xf0,0x10,0x10,0xf0,0x10,0x90,0x50,0xf0,0x8,0x84,0x24,0xe0, ++0x4,0x4,0xff,0x4,0x8,0xf,0x10,0x11,0x30,0x5f,0x90,0x13,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0xff,0x4,0x5,0xa,0x14,0xef,0x0,0x7e,0x2,0x12,0x6,0x1a,0x63,0xa,0x4,0x40,0xfe,0x40,0x40,0x20,0x50,0xee,0x4,0xf8,0x8,0x48,0x18,0x68,0x88,0x28,0x10, ++0x4,0xff,0x5,0x7f,0x0,0x1f,0x10,0x1f,0x0,0x7f,0x40,0x4f,0x48,0x4f,0x40,0x40,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x14,0x8, ++0x4,0x4,0x7f,0x5,0x1f,0x92,0x52,0x13,0x34,0x50,0x9f,0x10,0x20,0x21,0x42,0xc,0x40,0x44,0xfe,0x40,0xfc,0x0,0x10,0xf8,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4, ++0x4,0xff,0x4,0x1,0xff,0x14,0x13,0x14,0x1f,0x1,0x7f,0x42,0x44,0x4f,0x40,0x40,0x40,0xfe,0x40,0x4,0xfe,0x50,0x90,0x50,0xf0,0x4,0xfe,0x4,0x24,0xf4,0x14,0x8, ++0x4,0xff,0x4,0x1,0x3f,0x4,0x7f,0x42,0x81,0x3f,0x4,0x7,0x8,0x8,0x10,0x60,0x40,0xfe,0x40,0x10,0xf8,0x40,0xfe,0x2,0x14,0xf8,0x0,0xe0,0x20,0x20,0xa0,0x40, ++0x4,0xff,0x14,0x8,0x7f,0x4,0x3f,0x4,0xff,0x4,0x3f,0xc,0x14,0x24,0xc4,0x4,0x40,0xfe,0x50,0x20,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x60,0x50,0x4e,0x44,0x40, ++0x4,0x4,0xff,0x4,0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x9,0x8,0x8,0x10,0x21,0x40,0x44,0xfe,0x40,0x7c,0x44,0xc4,0x7c,0x44,0x44,0x7c,0x44,0x44,0x84,0x94,0x8, ++0x4,0x4,0xff,0x4,0x20,0x1b,0xa,0x43,0x26,0xb,0x12,0x72,0x12,0x12,0x13,0x12,0x40,0x44,0xfe,0x80,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x90,0xe,0x4, ++0x4,0x4,0xff,0x4,0x7f,0x41,0x82,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x40,0x44,0xfe,0x40,0xfe,0x2,0x84,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0, ++0x4,0x4,0xff,0x4,0x7d,0x4,0x28,0x11,0xfd,0x15,0x11,0x11,0x11,0x10,0x50,0x23,0x40,0x44,0xfe,0x40,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x44,0x58,0x84,0x2, ++0x4,0x4,0xff,0x4,0x9,0xff,0x8,0x7f,0x49,0x49,0x7f,0x18,0x1c,0x2a,0xc8,0x9,0x40,0x44,0xfe,0x40,0x20,0xa4,0x7e,0x44,0xa8,0x20,0x20,0x20,0x50,0x48,0x8e,0x4, ++0x4,0xff,0x4,0x3f,0x24,0x3f,0x40,0x7f,0x40,0x9f,0x4,0x7,0xa,0x9,0x1f,0x0,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x22,0xf4,0x0,0xc0,0x40,0x44,0xc4,0x3c, ++0x4,0x4,0xff,0x5,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x8,0x30,0xc0,0x40,0x44,0xfe,0x40,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e, ++0x4,0x4,0xff,0x4,0x8,0x11,0x25,0x49,0x17,0x30,0x52,0x92,0x13,0x12,0x14,0x18,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x48,0x7c,0x40,0xc0,0x3e,0x8, ++0x4,0x4,0xff,0x4,0x8,0x14,0x22,0x41,0xbe,0x0,0x49,0x29,0x2a,0x7,0x78,0x20,0x40,0x44,0xfe,0x40,0x20,0x24,0x3e,0x44,0xa4,0x24,0x24,0x28,0x10,0x28,0x46,0x84, ++0x4,0x4,0xff,0x4,0x11,0x11,0xfe,0x24,0x20,0x3c,0x25,0x27,0x24,0x44,0x54,0x89,0x40,0x44,0xfe,0x40,0x4,0xfe,0x0,0x88,0xfc,0xa0,0x24,0xfe,0x50,0x50,0x8e,0x4, ++0x4,0x4,0xff,0x4,0x17,0x45,0x44,0x4f,0x58,0x6f,0x48,0x4f,0x48,0x4f,0x48,0x40,0x40,0x44,0xfe,0x40,0xfc,0x4,0xa4,0xf4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x14,0x8, ++0x4,0xff,0x24,0x13,0x42,0x2b,0x12,0x63,0x22,0x23,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x0,0xfe,0x40,0x30,0xc,0x0, ++0x4,0xff,0x4,0x1,0x7f,0x40,0x84,0x3e,0x0,0xff,0x14,0x14,0x14,0x25,0x44,0x83,0x40,0xfe,0x40,0x0,0xfe,0x42,0x74,0x40,0xf8,0x8,0x50,0x20,0x50,0x8a,0x2,0xfe, ++0x4,0xff,0x4,0x1,0x7f,0x48,0x88,0x17,0x30,0x53,0x92,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0x0,0xfe,0x2,0x8,0xfc,0x40,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0xff,0x4,0x3e,0x12,0xa,0x13,0x22,0xc,0x31,0xc6,0x18,0x7,0x18,0x3,0x3c,0x40,0xfe,0x40,0xf8,0x48,0x28,0x48,0x88,0x60,0x98,0x6,0xc0,0x18,0x60,0x80,0x0, ++0x4,0xff,0x5,0x7f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x7f,0x12,0x51,0x50,0x8f,0x40,0xfe,0x40,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x8,0xfc,0x0,0x14,0x12,0xf2, ++0x4,0xff,0x4,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0xfe,0x40,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0, ++0x4,0xff,0x4,0x3f,0x28,0x25,0x3f,0x22,0x2a,0x2a,0x2a,0x2f,0x42,0x42,0x84,0x8,0x40,0xfe,0x40,0xfc,0xa0,0x20,0xbe,0x42,0x94,0x90,0x90,0xa8,0xa8,0x28,0x46,0x84, ++0x4,0xff,0x4,0xff,0x10,0x31,0x4a,0x96,0x25,0x4d,0x15,0x25,0x44,0x84,0x28,0x10,0x40,0xfe,0x40,0x10,0x50,0x7c,0x90,0x10,0x7c,0x10,0x14,0xfe,0x80,0x40,0x3e,0xc, ++0x4,0xff,0x4,0x1f,0x10,0x1f,0x10,0xff,0x21,0x3f,0x21,0x3f,0x21,0xff,0x1,0x1,0x40,0xfe,0x40,0xf0,0x10,0xf0,0x14,0xfe,0x0,0x7c,0x44,0x28,0x10,0xa8,0x4e,0x84, ++0x4,0xff,0x4,0x3e,0x22,0x3e,0x0,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x2,0x40,0xfe,0x40,0x10,0x48,0x48,0x40,0xfe,0x40,0x48,0x48,0x30,0x20,0x52,0x8a,0x4, ++0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x10,0xf0,0x10,0xf0,0x10,0xf0, ++0x4,0xff,0x4,0x3f,0x9,0x5,0xff,0x5,0x9,0x31,0xdf,0x11,0x1f,0x11,0x1f,0x10,0x40,0xfe,0x40,0xf8,0x20,0x44,0xfe,0x40,0x20,0x18,0xf6,0x10,0xf0,0x10,0xf0,0x10, ++0x4,0xff,0x4,0x22,0x14,0x7f,0x49,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x9,0x8,0x40,0xfe,0x40,0xc,0x70,0x40,0x40,0x7e,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8, ++0x4,0x4,0xff,0x4,0x3e,0x20,0x3d,0x20,0x3c,0x20,0xff,0x10,0x24,0x24,0x7d,0x2,0x40,0x44,0xfe,0x40,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x0,0x90,0x88,0x4,0x4, ++0x4,0xff,0x4,0x0,0x7e,0x11,0x10,0x1c,0x25,0x54,0x8,0x9,0x10,0x20,0x43,0x0,0x20,0xfe,0x20,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x54,0xfe,0x0, ++0x4,0xff,0x4,0x3f,0x24,0x3f,0x0,0x7f,0x40,0x9f,0x8,0x1e,0x32,0x4c,0x8,0x70,0x40,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xfe,0x2,0xf4,0x80,0x90,0xa0,0xc4,0x84,0x7c, ++0x4,0xff,0x4,0x12,0x1a,0x2a,0x4f,0x90,0x2f,0x60,0xa7,0x25,0x25,0x29,0x28,0x30,0x40,0xfe,0x40,0x20,0xa4,0xbe,0xc4,0x24,0xa4,0x28,0x28,0x10,0x90,0x28,0x46,0x84, ++0x4,0xff,0x5,0x3f,0x8,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x9,0x28,0x28,0x47,0x40,0xfe,0x40,0xf8,0x20,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x88,0x24,0xe4, ++0x4,0x4,0xff,0x5,0xff,0x10,0x14,0x25,0x7a,0x10,0x24,0x7c,0x4,0x8,0x10,0x60,0x40,0x40,0xfe,0x40,0xfe,0xa0,0x94,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x94,0xfe,0x80, ++0x4,0x4,0xff,0x4,0x49,0x2a,0xff,0x2a,0x49,0x10,0xff,0x22,0x64,0x18,0x26,0x41,0x40,0x44,0xfe,0x40,0x20,0x24,0x7e,0x84,0x44,0x48,0x48,0x30,0x20,0x50,0x8e,0x4, ++0x4,0x4,0xff,0x4,0x3e,0x23,0x22,0x3e,0x21,0x20,0x3e,0x53,0x52,0x92,0x1e,0x10,0x40,0x44,0xfe,0x40,0x20,0xfc,0x88,0x50,0xfe,0x20,0x28,0xfc,0x20,0x20,0x20,0x20, ++0x4,0xff,0x24,0x23,0x22,0xfa,0x4a,0x4b,0x4a,0x92,0x52,0x22,0x55,0x4c,0x88,0x10,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x90,0xce,0x8,0xfe,0x88,0x48,0x18, ++0x4,0xff,0x8,0x3f,0xa,0x9,0x48,0x7f,0x40,0x9f,0x4,0xf,0x1,0x1f,0x1,0x7f,0x40,0xfe,0x20,0xf8,0x20,0x20,0xa0,0xfe,0x2,0xf4,0x40,0xe0,0x0,0xf0,0x0,0xfc, ++0x4,0xff,0x4,0x7f,0x1,0x7f,0x51,0x8d,0x11,0x7f,0x2,0x3f,0x24,0x24,0x24,0x20,0x40,0xfe,0x40,0xfc,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0xf8,0x48,0x48,0x48,0x18, ++0x4,0xff,0x4,0x3f,0x1,0xff,0x1,0x3f,0x25,0x3f,0x1,0x3f,0x1,0x7f,0x24,0x42,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x0,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfc,0x88,0x44, ++0x4,0xff,0x14,0x10,0x3e,0x44,0x88,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xf,0xf0,0x0,0x40,0xfe,0x40,0x44,0x28,0xfe,0x10,0x10,0x7c,0x10,0x10,0xfe,0x10,0x10,0x10,0x10, ++0x4,0xff,0x5,0x7f,0x9,0x8,0x7f,0x40,0x4f,0x48,0x4f,0x1,0xff,0x5,0x19,0x61,0x40,0xfe,0x40,0xfc,0x20,0xa0,0xfc,0x4,0xe4,0x24,0xec,0x0,0xfe,0x40,0x30,0xc, ++0x4,0xff,0x4,0x3e,0x8,0x7e,0x18,0x2d,0x4a,0x4,0x19,0xe9,0x5,0x9,0x15,0x2,0x40,0xfe,0x40,0x44,0x7e,0x94,0x24,0x44,0x98,0x40,0x30,0x2e,0x40,0x20,0x10,0x0, ++0x4,0xff,0x4,0x3f,0x1,0x7f,0x51,0x8d,0x10,0x1f,0x30,0x5f,0x90,0x1f,0x10,0x1f,0x40,0xfe,0x40,0xf8,0x0,0xfe,0x12,0x64,0x90,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc, ++0x4,0xff,0x4,0x40,0x30,0x17,0x4,0x5,0xf4,0x15,0x16,0x15,0x14,0x19,0x28,0x47,0x40,0xfe,0x40,0x78,0x40,0xfc,0x44,0xf0,0x44,0x3c,0xa8,0x68,0xa8,0x24,0x40,0xfe, ++0x4,0xff,0x4,0x12,0x13,0x24,0x4f,0x95,0x27,0x65,0xa7,0x21,0x2f,0x21,0x22,0x2c,0x40,0xfe,0x40,0x0,0xdc,0x80,0xc0,0x7e,0xc8,0x48,0xc8,0x8,0xe8,0x8,0x88,0x58, ++0x4,0xff,0x24,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x2,0xf,0x2,0x1f,0x5,0x39,0x40,0xfe,0x20,0xa4,0x7e,0x84,0x24,0xa8,0x10,0x2e,0x44,0xe0,0x20,0xf0,0x40,0x38, ++0x4,0xff,0x14,0x3f,0x62,0x3e,0x21,0x3e,0x23,0x3e,0x1,0xff,0x5,0x19,0x61,0x1,0x40,0xfe,0x20,0xfc,0x88,0x50,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x40,0x30,0xc,0x0, ++0x2,0x7f,0x2,0x3f,0x22,0x3f,0x2b,0x32,0x21,0x2f,0x21,0x2f,0x41,0x5f,0x81,0x1,0x20,0xfe,0xa0,0xfc,0x10,0xfe,0x54,0x92,0x20,0x3c,0x20,0x3c,0x20,0x3e,0x20,0x20, ++0x0,0x0,0x0,0x0,0x4,0x4,0x4,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x0,0x0,0x0,0x0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x10,0x4,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x1,0x1,0xff,0x2,0x4,0x8,0x30,0xc9,0x9,0x9,0x9,0x9,0x11,0x11,0x21,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x24,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xd0,0x14,0x12,0x11,0x12,0x14,0x18,0x1f,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0x40,0x80,0x0,0x80,0x60,0x20,0xf8,0x0, ++0x1,0x1,0xff,0x2,0x4,0x8,0x3f,0xc8,0xf,0x8,0xf,0x8,0x8,0x7f,0x0,0x0,0x0,0x4,0xfe,0x80,0x40,0x20,0xf8,0x26,0xe0,0x20,0xe0,0x28,0xfc,0x20,0x20,0x20, ++0x2,0x1,0x7f,0x4,0x14,0x24,0x48,0x11,0x1,0xff,0x2,0x2,0x4,0x8,0x30,0xc0,0x0,0x8,0xfc,0x40,0x50,0x4c,0xc4,0x0,0x4,0xfe,0x80,0x80,0x40,0x30,0xe,0x4, ++0x0,0x7f,0x22,0x11,0x12,0x4,0x1f,0x2,0x4,0x1f,0x1,0xff,0x1,0x2,0xc,0x70,0x3c,0xc8,0x8,0x10,0x40,0x20,0xf0,0x0,0x20,0xf0,0x4,0xfe,0x0,0x80,0x60,0x1c, ++0x4,0x24,0x24,0x3d,0x4,0x7c,0x24,0x25,0x44,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x20,0x20,0x28,0xfc,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0,0x80,0x40,0x30,0xe, ++0x10,0x10,0x10,0xfe,0x29,0x46,0xfd,0x1,0xff,0x21,0x3d,0x5,0x5,0x5,0x28,0x10,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x2,0x2,0xfe,0x0, ++0x2,0x2,0x2,0x2,0xff,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x4,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x84,0x7c,0x0, ++0x20,0x20,0x20,0x20,0xfd,0x29,0x2a,0x28,0x28,0x28,0x28,0x28,0x28,0x48,0x47,0x80,0x80,0x80,0x88,0xfc,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x88,0x52,0x22,0xfe,0x0, ++0x20,0x20,0x20,0x20,0xfd,0x2a,0x2c,0x28,0x28,0x28,0x29,0x29,0x2a,0x48,0x47,0x80,0x20,0x20,0x50,0x90,0x8,0x6,0x94,0x90,0x90,0x90,0x10,0x10,0x12,0x2,0xfe,0x0, ++0x20,0x22,0x22,0x22,0xfe,0x2a,0x28,0x28,0x2b,0x2a,0x2a,0x2a,0x2f,0x48,0x47,0x80,0x90,0x90,0xa0,0xfc,0x80,0x90,0x88,0x80,0xf8,0xa8,0xa8,0xa8,0xfe,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x14,0x18,0x30,0xd0,0x10,0x10,0x10,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x12,0x11,0x12,0xfe,0x12,0x12,0x16,0x1a,0x32,0xd2,0x12,0x12,0x12,0x52,0x20,0x0,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x17,0x14,0x18,0x31,0xd0,0x13,0x10,0x10,0x50,0x20,0x40,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x80,0xf8,0x8,0x10,0xd0,0x20,0x10,0x8, ++0x10,0x10,0x10,0x10,0xfb,0x12,0x12,0x1b,0x32,0xd2,0x13,0x12,0x10,0x10,0x50,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x11,0xfd,0x13,0x15,0x15,0x19,0x31,0xd1,0x11,0x11,0x11,0x51,0x21,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x11,0xff,0x10,0x11,0x15,0x19,0x37,0xd1,0x11,0x11,0x11,0x52,0x24,0x40,0x40,0x90,0x8,0xfc,0x4,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x11,0x11,0x12,0xfa,0x14,0x1f,0x11,0x1a,0x32,0xd4,0x1f,0x10,0x10,0x50,0x21,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xa4,0x44,0x44,0x94,0x8, ++0x10,0x10,0x10,0x10,0xff,0x10,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x40,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x17,0x10,0xfc,0x17,0x10,0x15,0x1a,0x35,0xd9,0x11,0x11,0x12,0x52,0x24,0x8,0x3c,0xc0,0x40,0x84,0xfe,0xa0,0x10,0x8,0x16,0x14,0x10,0x10,0x10,0x10,0x10, ++0x11,0x11,0x12,0x11,0xfd,0x10,0x10,0x14,0x19,0x31,0xd2,0x14,0x10,0x10,0x50,0x23,0x24,0x24,0x48,0x24,0x24,0x80,0x84,0xfe,0x4,0x84,0x48,0x28,0x10,0x20,0xc0,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x10,0x13,0x16,0x1a,0x32,0xd3,0x12,0x12,0x12,0x52,0x21,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x4,0x0,0x2,0x2,0xfe, ++0x10,0x10,0x17,0x12,0xfd,0x11,0x10,0x14,0x1b,0x30,0xd1,0x10,0x10,0x10,0x50,0x20,0x8,0x7c,0x80,0x48,0x48,0x50,0x20,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10, ++0x10,0x17,0x11,0x11,0xff,0x11,0x11,0x17,0x19,0x32,0xd3,0x15,0x15,0x19,0x51,0x21,0x8,0xfc,0x8,0x8,0xfe,0x8,0x8,0xf8,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x13,0x10,0x10,0xfc,0x17,0x10,0x15,0x1a,0x34,0xd9,0x11,0x12,0x14,0x51,0x20,0x8,0xfc,0x40,0x40,0x84,0xfe,0xa0,0x10,0x4e,0x44,0x68,0x54,0x54,0x44,0x40,0x80, ++0x20,0x2f,0x24,0x24,0xfc,0x27,0x24,0x24,0x2f,0x34,0xe4,0x24,0x2f,0x20,0xa0,0x40,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xe8,0xa0,0xa0,0xa0, ++0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x12,0x14,0x14,0x5b,0x20,0x4,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x10,0x17,0xf8,0x11,0x12,0x15,0x18,0x30,0xd7,0x10,0x12,0x12,0x55,0x20,0x40,0x40,0x48,0xfc,0xa0,0x10,0x8,0xf6,0x4,0x8,0xfc,0x40,0x50,0x4c,0x44,0x80, ++0x10,0x10,0x17,0x10,0xfc,0x11,0x17,0x10,0x18,0x33,0xd2,0x12,0x13,0x10,0x50,0x20,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0x8,0xc8,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x20,0x27,0x24,0x24,0xfd,0x24,0x24,0x25,0x2c,0x34,0xe4,0x27,0x24,0x24,0xa7,0x44,0x4,0xfe,0x4,0x4,0xf4,0x44,0x44,0xf4,0x44,0x54,0x44,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1b,0x30,0xd1,0x1f,0x10,0x10,0x50,0x20,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x11,0x11,0x11,0x13,0xfe,0x14,0x12,0x10,0x1b,0x30,0xd1,0x12,0x14,0x10,0x50,0x20,0x0,0x0,0x4,0xfe,0x84,0x94,0xa4,0x84,0xf4,0x84,0xc4,0xb4,0x94,0x84,0x14,0x8, ++0x10,0x10,0x10,0x17,0xfc,0x11,0x10,0x17,0x18,0x30,0xd3,0x12,0x12,0x12,0x53,0x22,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x33,0xd2,0x12,0x14,0x14,0x59,0x22,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x12,0x16,0x1a,0x32,0xd2,0x12,0x14,0x14,0x58,0x20,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x84,0x94,0x88, ++0x10,0x13,0x12,0x17,0xfa,0x12,0x13,0x10,0x1b,0x32,0xd2,0x12,0x12,0x10,0x51,0x26,0x8,0xfc,0x48,0xfe,0x48,0x48,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0xb0,0x8,0x4, ++0x10,0x12,0x12,0x17,0xfa,0x12,0x12,0x16,0x1b,0x30,0xd7,0x10,0x11,0x12,0x54,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x10,0x10,0x17,0x10,0xfc,0x11,0x12,0x14,0x1b,0x32,0xd3,0x12,0x13,0x10,0x5f,0x20,0x40,0x48,0xfc,0x40,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0, ++0x10,0x17,0x14,0x15,0xfd,0x15,0x15,0x15,0x1c,0x37,0xd4,0x15,0x14,0x14,0x57,0x20,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x88,0x90,0x60,0x98,0xfe,0x0, ++0x20,0x24,0x24,0x27,0xf4,0x28,0x37,0x22,0x32,0x2f,0xe2,0x22,0x23,0x22,0xa0,0x41,0x20,0x20,0x20,0xa4,0x3e,0x44,0xa8,0x20,0x20,0xa0,0x20,0x50,0x50,0x88,0x8e,0x4, ++0x10,0x10,0x10,0x11,0xfe,0x15,0x18,0x13,0x1a,0x33,0xd2,0x13,0x12,0x12,0x52,0x22,0x40,0x40,0xa0,0x10,0x8,0xf6,0x0,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x44,0x54,0xc8, ++0x10,0x10,0x17,0x10,0xfd,0x10,0x1f,0x14,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x14,0x17,0x14,0xfc,0x13,0x10,0x13,0x1a,0x33,0xd2,0x13,0x12,0x10,0x57,0x20,0x80,0x40,0xfe,0x2,0x8,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x4,0xfe,0x0, ++0x20,0x27,0x24,0x24,0xff,0x25,0x24,0x27,0x2c,0x34,0xe7,0x24,0x28,0x28,0xb1,0x42,0x4,0xfe,0x4,0x4,0xfc,0x8,0x90,0xfc,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10, ++0x10,0x17,0x10,0x14,0xfb,0x11,0x12,0x13,0x1c,0x30,0xd7,0x10,0x10,0x11,0x52,0x24,0x20,0xa8,0xb0,0xa4,0x28,0x10,0x8,0xf6,0x44,0x40,0xfc,0x80,0xa0,0x10,0x8,0x4, ++0x10,0x10,0x10,0x11,0xfd,0x10,0x17,0x14,0x19,0x36,0xd1,0x16,0x11,0x16,0x50,0x20,0x80,0x80,0xf8,0x8,0xf0,0x14,0xfe,0x88,0x50,0xa0,0x30,0x68,0xae,0x24,0xa0,0x40, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd2,0x14,0x1a,0x12,0x54,0x20,0x48,0x7c,0x40,0xfc,0x44,0x48,0xf8,0x40,0x44,0x3c,0x0,0xa0,0x94,0x82,0x8a,0x78, ++0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x33,0xd0,0x11,0x15,0x15,0x59,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x40,0x44,0x12,0x12,0xf0, ++0x10,0x10,0x17,0x14,0xfc,0x15,0x15,0x15,0x1d,0x35,0xd5,0x15,0x15,0x16,0x58,0x23,0x8,0x7c,0xa0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x4a,0x8a,0x6, ++0x12,0x11,0x10,0x17,0xf8,0x10,0x17,0x10,0x1f,0x30,0xd7,0x11,0x12,0x14,0x58,0x20,0x8,0x10,0xa4,0xfe,0xa0,0xa4,0xfe,0xa4,0xfe,0xa4,0xfc,0xb0,0xa8,0xa6,0xa4,0xa0, ++0x20,0x28,0x25,0x20,0xff,0x22,0x2a,0x2a,0x2a,0x3a,0xef,0x22,0x22,0x24,0xa8,0x51,0x4,0xbe,0x24,0x24,0xe4,0x3c,0xa4,0xa4,0xa4,0xbc,0xa4,0xa4,0x44,0x44,0x94,0x8, ++0x10,0x13,0x12,0x12,0xff,0x12,0x12,0x17,0x1a,0x32,0xd3,0x15,0x15,0x15,0x59,0x21,0x4,0xfe,0x4,0x4,0xfc,0x94,0x90,0xfc,0x90,0x94,0xfe,0x40,0x28,0x10,0x8e,0x4, ++0x10,0x17,0x10,0x10,0xff,0x14,0x14,0x17,0x18,0x34,0xd2,0x12,0x14,0x10,0x52,0x21,0x4,0xbe,0x84,0x84,0xbc,0x20,0x24,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x84,0x94,0x8, ++0x10,0x13,0x11,0x10,0xfb,0x10,0x17,0x14,0x1b,0x34,0xd0,0x1f,0x11,0x12,0x54,0x20,0x0,0xf8,0x10,0xe0,0x18,0x0,0xbc,0xa4,0x18,0xa4,0x40,0xfe,0x50,0x48,0x46,0x40, ++0x10,0x17,0x14,0x17,0xfc,0x17,0x14,0x11,0x1b,0x30,0xd0,0x17,0x11,0x12,0x54,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0xc0, ++0x10,0x17,0x14,0x15,0xfd,0x16,0x13,0x14,0x18,0x37,0xd1,0x12,0x11,0x10,0x51,0x26,0x0,0xbc,0xa4,0xac,0xac,0x34,0x18,0xa4,0x80,0xfe,0x10,0x10,0x20,0xe0,0x98,0x4, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x13,0x16,0x1a,0x32,0xd4,0x14,0x15,0x15,0x5a,0x20,0x40,0x24,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x0,0x54,0x52,0x52,0x0, ++0x20,0x20,0x27,0x21,0xfa,0x2f,0x24,0x27,0x2c,0x37,0xe4,0x24,0x3f,0x20,0xa0,0x40,0x0,0x10,0x90,0x24,0x3e,0xc4,0xa4,0xa8,0xa8,0xa8,0x90,0xd0,0xa8,0xa8,0xc6,0x84, ++0x10,0x17,0x10,0x14,0xfa,0x12,0x14,0x10,0x1b,0x32,0xd2,0x13,0x12,0x12,0x53,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x12,0x12,0x12,0xff,0x12,0x12,0x17,0x18,0x37,0xd5,0x15,0x15,0x17,0x50,0x21,0x0,0x4,0x7e,0x10,0xa4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x20,0x4c,0x82, ++0x11,0x13,0x14,0x17,0xfc,0x17,0x14,0x17,0x18,0x37,0xd0,0x13,0x12,0x13,0x52,0x23,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x12,0x11,0x17,0x10,0xfb,0x12,0x13,0x12,0x1a,0x33,0xd0,0x1f,0x12,0x11,0x50,0x20,0x8,0x10,0xfc,0xa8,0xfc,0xa8,0x18,0xe8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x50,0x20, ++0x10,0x10,0x17,0x15,0xfa,0x14,0x13,0x12,0x1b,0x30,0xd7,0x14,0x17,0x10,0x50,0x20,0x80,0x40,0xfe,0x12,0x48,0x44,0xf8,0x48,0xf8,0x40,0xfc,0x44,0xfc,0x40,0x40,0x40, ++0x22,0x22,0x22,0x2f,0xf2,0x2f,0x28,0x2f,0x38,0xef,0x22,0x2f,0x22,0x22,0xa2,0x42,0x10,0x10,0x28,0xa8,0x44,0x82,0xfc,0x90,0x90,0x94,0x7e,0x90,0x10,0x10,0x10,0x10, ++0x10,0x17,0x14,0x14,0xff,0x10,0x17,0x10,0x1b,0x32,0xd3,0x11,0x13,0x15,0x59,0x21,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x28,0x10,0x8e,0x4, ++0x20,0x20,0x27,0x24,0xf4,0x27,0x24,0x34,0x27,0xe6,0x26,0x2a,0x2a,0x33,0xa2,0x40,0x10,0x8,0xc8,0x7e,0x40,0xd4,0x14,0x3e,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8, ++0x10,0x13,0x12,0x12,0xfb,0x10,0x17,0x14,0x1f,0x34,0xd7,0x10,0x1f,0x11,0x51,0x26,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10, ++0x10,0x17,0x10,0x12,0xf8,0x12,0x11,0x11,0x1a,0x37,0xda,0x13,0x12,0x12,0x53,0x22,0x0,0xbc,0x84,0x94,0x84,0x94,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x20,0x27,0x20,0x2f,0xfa,0x21,0x22,0x28,0x37,0xe4,0x2f,0x34,0x27,0x24,0xa7,0x44,0x8,0xfc,0x40,0xfe,0x4a,0x50,0x48,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfe,0x0, ++0x12,0x13,0x15,0x13,0xfe,0x12,0x13,0x18,0x17,0x31,0xd2,0x1d,0x10,0x13,0x51,0x26,0x10,0xde,0x28,0xf8,0x88,0x48,0xf8,0x80,0xfe,0x50,0x98,0xe6,0x90,0xf8,0x50,0x4c, ++0x20,0x27,0x20,0x23,0xf2,0x2f,0x29,0x27,0x21,0x33,0xe1,0x27,0x21,0x23,0xad,0x41,0x40,0xfc,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfc,0x48,0x30,0x8e,0x4, ++0x2,0x2,0x2,0x2,0x3,0xfe,0x2,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x44,0x24,0x1c,0x0, ++0x0,0x0,0x0,0x0,0xff,0x0,0x8,0x4,0x14,0x54,0x50,0x50,0x91,0x11,0xf,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0x40,0x20,0xa0,0x60,0x50,0x12,0xa,0xa,0x4, ++0x0,0x0,0x0,0x0,0xff,0x22,0x22,0xff,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x0,0x80,0xa0,0x94,0xfe,0x80,0x40,0x40,0xc0,0x40,0x40,0x20,0x20,0x12,0x12,0xa,0x4, ++0x0,0x22,0x14,0xb,0x14,0x62,0x8,0x9,0xfe,0x8,0x2c,0x2a,0x48,0xb,0x28,0x10,0x20,0x28,0x24,0xfe,0x20,0x20,0x20,0xd0,0x90,0x90,0x90,0x90,0xf2,0x8a,0xa,0x4, ++0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0xa0,0x98,0x8c,0x84,0x80,0x80,0x80,0x80,0x80,0x80,0x80, ++0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x49,0x4a,0x4c,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0x98,0xa0,0xc0,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xc8,0xa8,0x90,0x80,0x80,0x80, ++0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10, ++0x0,0x8,0x7c,0x48,0x4b,0x48,0x48,0x48,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x4,0x28,0x10, ++0x0,0x8,0x7d,0x48,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x8,0x1c,0xe0,0x40,0x40,0x44,0x7e,0xc0,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0xa,0x7d,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x0,0x4,0xc,0x90,0xa0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x8,0x7c,0x48,0x48,0x49,0x4b,0x48,0x48,0x48,0x48,0x78,0x49,0x2,0x3,0x0,0x40,0x40,0x40,0x80,0x84,0x4,0xf8,0x8,0x10,0x20,0x40,0x80,0x8,0x4,0xfe,0x2, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x0,0xb,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x2,0x4,0x8,0x8,0xfc,0x80,0x80,0x80,0x84,0xfe,0xa0,0xa0,0xa0,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x0,0x7b,0x48,0x48,0x4b,0x48,0x48,0x48,0x48,0x49,0x7a,0x4a,0x2,0x1,0x0,0x90,0x94,0xfe,0x90,0x0,0xf8,0x10,0x20,0x40,0x80,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x8,0x7c,0x48,0x4f,0x48,0x48,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x10,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0xa0,0xa0,0x10,0x90,0x48,0x48,0x6,0x4, ++0x0,0xb,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x9,0x12,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x0,0xb,0x7e,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x10,0x4,0xfe,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x2,0xa,0x7e,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0x2,0x0,0x20,0x20,0x20,0x20,0x24,0x28,0xb0,0x20,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x1,0x2,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x40,0x98,0x6,0x2, ++0x0,0x1f,0x10,0x10,0x10,0x1f,0x11,0x1,0x7f,0x42,0x42,0x44,0x48,0x40,0x40,0x40,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10,0x4,0xfe,0x84,0x44,0x24,0x24,0x4,0x14,0x8, ++0x0,0x0,0x8,0x7c,0x48,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x0,0x0,0x0,0x40,0x20,0x20,0x20,0xa0,0x80,0x88,0x84,0x82,0x82,0x82,0x8a,0x8a,0x88,0x78,0x0, ++0x0,0xb,0x7c,0x48,0x48,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x78,0x48,0x2,0x1,0x0,0x24,0xf4,0x24,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84, ++0x0,0x3,0x7a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x2,0x3,0x0,0x8,0xfc,0x20,0x28,0xfc,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb8,0x20,0x24,0xfe,0x0, ++0x0,0x0,0x8,0x7c,0x48,0x48,0x48,0x4f,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x80,0x88,0xfc,0x80,0x80,0x84,0xfe,0x80,0xa0,0x90,0x88,0x88,0x80,0x80,0x80, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x48,0x0,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x5,0x9,0x10,0x8,0x1c,0xe0,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0xa4,0x14,0xf2,0x0, ++0x0,0x0,0x8,0x7c,0x49,0x4a,0x4c,0x48,0x48,0x4b,0x48,0x79,0x48,0x0,0x0,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x49,0x4a,0x4c,0x78,0x49,0x0,0x0,0x0,0x80,0x80,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0x8e,0x64,0x20,0x80,0x60,0x10,0x0, ++0x0,0x8,0x7c,0x4b,0x4a,0x4a,0x48,0x4b,0x48,0x48,0x48,0x78,0x48,0x0,0x0,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x2,0x12,0x7a,0x52,0x5f,0x52,0x52,0x52,0x54,0x54,0x55,0x72,0x55,0x8,0x10,0x0,0x0,0x0,0x8,0x7c,0x88,0x88,0xa8,0xa8,0xa8,0x90,0x10,0x28,0x28,0xc4,0x44,0x82, ++0x0,0x11,0x79,0x51,0x52,0x54,0x5f,0x51,0x52,0x52,0x54,0x7f,0x54,0x0,0x1,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xa4,0xc4,0x44,0x84,0x28,0x10, ++0x0,0x11,0x79,0x51,0x52,0x52,0x57,0x51,0x52,0x52,0x54,0x77,0x50,0x0,0xf,0x0,0x0,0x8,0x8,0x8,0x10,0x94,0xbc,0x8,0x10,0x10,0x20,0xbc,0x0,0x4,0xfe,0x0, ++0x0,0xb,0x7e,0x4a,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x0,0x8,0xfc,0x0,0x8,0xfc,0x20,0x20,0xf8,0x20,0x20,0x28,0xfc,0x0,0x4,0xfe,0x0, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x49,0x48,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x20,0x20,0x24,0xfe,0x20,0x20,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x7,0x8,0x7c,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x8,0x7f,0x48,0x48,0x49,0x49,0x4a,0x4c,0x49,0x78,0x48,0x0,0x1,0x2,0x80,0x80,0x84,0xfe,0x80,0xa0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x0,0x70,0x54,0x52,0x52,0x50,0x5e,0x52,0x52,0x52,0x72,0x53,0x6,0x9,0x0,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x50,0x48,0x8c,0x4,0x0,0x6,0xfc, ++0x0,0x7,0x9,0x7d,0x49,0x4a,0x4a,0x4a,0x4d,0x48,0x48,0x79,0x49,0x2,0x4,0x8,0x44,0xe4,0x4,0x4,0xd4,0x54,0x54,0x54,0x54,0x94,0x94,0x14,0x4,0x4,0x14,0x8, ++0x0,0x0,0x7b,0x48,0x4b,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x48,0x0,0x1,0x2,0xc,0x40,0x48,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0x44,0xac,0x10,0x8,0x6, ++0x0,0x8,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x4f,0x49,0x79,0x49,0x2,0x4,0x18,0x80,0x88,0xfc,0x80,0x48,0x50,0x62,0x92,0xe,0xf8,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x2,0x2,0x7a,0x4b,0x4a,0x4a,0x4a,0x4b,0x48,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x20,0x20,0x24,0xa8,0x30,0x24,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x8,0x7c,0x48,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x3,0xc,0x0,0x90,0x90,0x90,0x90,0x92,0x94,0xf8,0x90,0x90,0x90,0x90,0xb0,0xd2,0x12,0xe,0x0, ++0x0,0x0,0x7a,0x49,0x49,0x49,0x48,0x4f,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x40,0x40,0x48,0x4c,0x50,0x50,0x44,0xfe,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x8,0x7d,0x49,0x49,0x49,0x48,0x48,0x48,0x49,0x4a,0x78,0x48,0x0,0x1,0x6,0x20,0x20,0x24,0x24,0x24,0xfc,0x44,0x40,0xfc,0x84,0x44,0x28,0x10,0x60,0x80,0x0, ++0x1,0x1,0x11,0x7a,0x52,0x57,0x5a,0x52,0x52,0x52,0x52,0x72,0x53,0x2,0x2,0x2,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0xa8,0xa6,0x24,0x20,0x20,0x20, ++0x1,0x1,0x11,0x7a,0x52,0x56,0x5b,0x52,0x52,0x52,0x53,0x72,0x52,0x2,0x2,0x3,0x0,0x4,0xfe,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x80,0x0, ++0x0,0x0,0x7b,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x44,0x4,0x8,0x0,0x8,0x3c,0xc0,0x4,0x18,0xe0,0xa0,0xa4,0xa8,0x90,0x90,0x90,0x88,0xae,0xc4,0x80, ++0x0,0x0,0x8,0x7c,0x49,0x4a,0x4d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x7,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x0,0x4,0xfe,0x80,0x80,0x10,0x8,0xfc,0x4, ++0x0,0x1,0x9,0x7d,0x49,0x49,0x4a,0x48,0x4f,0x48,0x48,0x78,0x49,0x2,0xc,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x4c,0x40,0xfe,0x40,0xe0,0xd0,0x48,0x4e,0x44,0x40, ++0x0,0x0,0x78,0x4b,0x49,0x48,0x48,0x48,0x49,0x4e,0x48,0x78,0x48,0x1,0x2,0x4,0x80,0x40,0x24,0xfe,0x8,0x90,0x60,0x90,0xe,0x94,0x90,0x90,0x90,0x10,0x10,0x10, ++0x2,0x9,0x7c,0x4b,0x48,0x48,0x48,0x4b,0x48,0x48,0x48,0x7f,0x48,0x0,0x0,0x0,0x8,0x10,0xa0,0xfc,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x8,0x7c,0x4a,0x49,0x48,0x4f,0x48,0x48,0x48,0x49,0x79,0x4a,0x4,0x8,0x0,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0x40,0xe0,0xd0,0x50,0x48,0x46,0x44,0x40,0x40, ++0x0,0x0,0x7b,0x4a,0x4c,0x48,0x4b,0x48,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x0,0x80,0x40,0xfe,0x2,0x4,0x38,0xc0,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x8,0x7c,0x49,0x49,0x4a,0x48,0x48,0x48,0x49,0x49,0x7a,0x44,0x8,0x0,0x0,0x20,0x20,0x20,0xfe,0x42,0x44,0x40,0xa0,0xa4,0x28,0x90,0x90,0x88,0xae,0xc4,0x80, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x0,0x0,0x8,0x7d,0x4b,0x48,0x49,0x49,0x49,0x4a,0x48,0x7b,0x48,0x0,0x0,0x0,0x20,0x40,0x88,0x4,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x0,0x7b,0x48,0x4b,0x48,0x4f,0x48,0x49,0x49,0x49,0x7a,0x44,0x0,0x3,0xc,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x0,0x0,0x7b,0x48,0x48,0x48,0x4f,0x48,0x4a,0x4a,0x7a,0x45,0x9,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xa0,0xa8,0xa4,0xa4,0x24,0x20,0x20,0xa0,0x40, ++0x0,0x0,0x7b,0x48,0x48,0x4b,0x4a,0x4c,0x4b,0x48,0x48,0x78,0x49,0x2,0x4,0x8,0x90,0x94,0xfe,0x90,0x90,0xfe,0x42,0x44,0xf8,0x48,0x88,0x88,0x8,0x8,0x50,0x20, ++0x0,0x3,0x78,0x48,0x4b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x7a,0x49,0x0,0x3,0xc,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0xc0,0x30,0xe, ++0x0,0x3,0x8,0x7c,0x4b,0x49,0x49,0x49,0x4f,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0xf8,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x2,0x2,0x72,0x5f,0x52,0x52,0x52,0x52,0x53,0x5e,0x52,0x72,0x52,0x2,0xb,0x4,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0xc8,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x8, ++0x0,0x2,0x9,0x7d,0x48,0x4b,0x4a,0x4a,0x4a,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x44,0x4c,0x50,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa8,0x90,0xc,0x4, ++0x0,0x0,0x7b,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x78,0x40,0xf,0x0,0x0,0x0,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x44,0x7e,0xc0,0x44,0x44,0x3c, ++0x1,0x8,0x7c,0x48,0x49,0x48,0x4f,0x48,0x49,0x4b,0x4d,0x79,0x49,0x1,0x0,0x0,0x8,0xd0,0x20,0x58,0x84,0x40,0xfe,0xa0,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20, ++0x0,0x0,0x2,0x7a,0x4a,0x4a,0x4d,0x48,0x48,0x48,0x4b,0x78,0x48,0x0,0xf,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x7,0x74,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x55,0x74,0x55,0x6,0x0,0x0,0x80,0xc4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0xb4,0x28,0x20,0x20,0x20, ++0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x78,0x47,0x0,0x0,0x0,0x40,0x44,0xfe,0x40,0xfc,0x40,0xfe,0xa0,0x50,0xf8,0x46,0x40,0xfc,0x40,0x40,0x40, ++0x0,0x8,0x7f,0x48,0x4b,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7a,0x4a,0x0,0x1,0x6,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x1,0x9,0x7f,0x49,0x48,0x48,0x4f,0x48,0x48,0x49,0x49,0x7b,0x45,0x9,0x1,0x1,0x10,0x10,0xfc,0x10,0x40,0x44,0xfe,0x80,0x88,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x1,0x11,0x7f,0x51,0x51,0x50,0x57,0x54,0x54,0x54,0x57,0x74,0x54,0x4,0x7,0x4,0x10,0x14,0xfe,0x10,0x10,0x4,0xfe,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x1,0x11,0x79,0x51,0x5f,0x51,0x53,0x53,0x55,0x55,0x55,0x79,0x51,0x1,0x1,0x1,0x10,0x10,0x10,0x14,0xfe,0x10,0x30,0xb8,0x58,0x54,0x54,0x92,0x10,0x10,0x10,0x10, ++0x1,0x11,0x79,0x57,0x52,0x52,0x55,0x55,0x5f,0x51,0x51,0x73,0x4d,0x1,0x1,0x1,0x10,0x10,0x14,0xfe,0x10,0x14,0x7e,0x10,0x90,0x20,0x7e,0x84,0x28,0x10,0xc,0x4, ++0x0,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x79,0x4a,0x2,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8, ++0x2,0x12,0x7b,0x54,0x5a,0x53,0x54,0x50,0x5f,0x50,0x54,0x74,0x57,0x0,0x0,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x84,0x94,0xfc,0x84,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x1,0x9,0x7d,0x4a,0x4a,0x4c,0x49,0x49,0x4a,0x48,0x49,0x7d,0x45,0x9,0x0,0x0,0x0,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x54,0x8,0x40,0x24,0x22,0xa,0xf8,0x0, ++0x0,0x8,0x7f,0x49,0x49,0x49,0x4a,0x4a,0x4c,0x48,0x4f,0x78,0x48,0x0,0x0,0x0,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x0,0xb,0x7c,0x49,0x48,0x4f,0x48,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x80,0x50,0xf8,0x0,0x10,0xa0,0xfc,0x80,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8, ++0x0,0x8,0x7f,0x48,0x49,0x4b,0x48,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x80,0x44,0xfe,0x80,0x8,0xfc,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x8,0x7d,0x49,0x4a,0x48,0x49,0x4a,0x48,0x49,0x49,0x7a,0x48,0x0,0x3,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x10,0xc,0x40,0x48,0x50,0x40,0xa0,0x90,0xe,0x4, ++0x0,0x4,0x72,0x52,0x58,0x54,0x50,0x52,0x52,0x54,0x5c,0x74,0x55,0x5,0x6,0x4,0x10,0x10,0x10,0xfe,0x92,0x94,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x28,0x46,0x84, ++0x0,0x8,0x7c,0x4b,0x4a,0x4c,0x48,0x4b,0x48,0x49,0x49,0x79,0x49,0x2,0x4,0x8,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x3c,0x20,0x20,0xa0,0x60,0x1e, ++0x2,0x1,0x17,0x7c,0x54,0x57,0x54,0x54,0x57,0x54,0x54,0x75,0x54,0x5,0x6,0x0,0x0,0x0,0xbc,0xa4,0xa8,0xa8,0xb0,0xa8,0xa4,0x24,0x24,0x24,0xb4,0xa8,0x20,0x20, ++0x0,0x8,0x7f,0x4a,0x4a,0x4b,0x4a,0x4a,0x4a,0x4b,0x4a,0x7a,0x44,0x4,0x9,0x2,0x40,0x24,0xfe,0x4,0x4,0xfc,0x20,0x28,0x24,0xfe,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x17,0x7c,0x54,0x57,0x55,0x55,0x57,0x55,0x75,0x4d,0x15,0x15,0x25,0x1,0x1,0x4,0xc4,0x54,0x54,0xd4,0x14,0x14,0xd4,0x54,0x54,0x54,0x44,0x44,0xc4,0x14,0x8, ++0x0,0xf,0x4,0x75,0x52,0x55,0x58,0x50,0x5f,0x50,0x55,0x75,0x52,0x5,0x8,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xfc,0x84,0x28,0x28,0x10,0x28,0xc6,0x84, ++0x0,0x2,0x12,0x7f,0x52,0x52,0x52,0x52,0x53,0x50,0x5f,0x70,0x51,0x2,0xc,0x0,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x1,0x1,0xf,0x79,0x48,0x48,0x49,0x4a,0x4d,0x48,0x4b,0x7a,0x4a,0x2,0x3,0x2,0x10,0x14,0xfe,0x50,0x40,0xa0,0x10,0xe,0xf4,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x0,0xf,0x70,0x50,0x57,0x55,0x54,0x55,0x54,0x54,0x77,0x54,0x4,0x4,0x4,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x44,0x54,0x8, ++0x0,0x17,0x7c,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x74,0x49,0x8,0x10,0x3,0x4,0xfe,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe, ++0x0,0x0,0x0,0x77,0x50,0x51,0x53,0x5c,0x53,0x50,0x50,0x77,0x50,0x0,0xf,0x0,0x40,0x40,0x44,0xfe,0xa0,0x50,0xf8,0x46,0xf8,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x2,0x2,0x7b,0x4a,0x4a,0x4a,0x4b,0x48,0x49,0x49,0x79,0x49,0x1,0x1,0x1,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x13,0x7a,0x52,0x53,0x52,0x52,0x53,0x50,0x57,0x74,0x54,0x5,0x4,0x4,0x4,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x44,0xfe,0x44,0x54,0xf4,0x4,0x14,0x8, ++0x0,0x7,0x74,0x57,0x54,0x57,0x50,0x53,0x52,0x53,0x72,0x53,0x2,0x2,0x2,0x2,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x1,0x77,0x51,0x51,0x51,0x57,0x51,0x53,0x53,0x55,0x75,0x49,0x11,0x1,0x1,0x90,0xd0,0x10,0x52,0x34,0x38,0xd0,0x10,0x90,0x50,0x28,0x28,0x28,0x44,0x44,0x82, ++0x0,0x1,0x7a,0x4a,0x4a,0x4b,0x4a,0x4a,0x4b,0x48,0x7b,0x49,0x0,0x0,0x1,0xe,0x40,0x48,0x5c,0x48,0x48,0x58,0x48,0x48,0xf8,0x40,0xf8,0x10,0xa0,0x40,0xb0,0xe, ++0x0,0x0,0x7,0x78,0x49,0x48,0x4f,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x2,0x3,0x2,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x1,0x3f,0x8,0x4,0x7f,0x41,0x9f,0x11,0x11,0x11,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xf8,0x20,0x40,0xfe,0x2,0xf4,0x10,0x10,0x30,0x0,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x9,0x7c,0x4b,0x48,0x49,0x48,0x4f,0x48,0x48,0x49,0x7a,0x44,0x8,0x13,0x0,0x8,0x8,0x90,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x0,0xa,0x7d,0x48,0x4f,0x48,0x49,0x4a,0x48,0x4f,0x49,0x7a,0x49,0x0,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0x40,0x50,0x48,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8, ++0x22,0x11,0x0,0x7f,0x41,0x91,0x1f,0x21,0xff,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x8,0x10,0x20,0xfe,0x2,0x24,0xf0,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4b,0x4a,0x4a,0x4a,0x7a,0x42,0x4,0x4,0xb,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x1,0x1,0x7a,0x4b,0x48,0x4f,0x49,0x49,0x4a,0x4c,0x79,0x46,0x1,0xe,0x1,0x0,0x0,0xf0,0x10,0xf0,0x24,0xfe,0x0,0x88,0x50,0xe0,0x50,0xd0,0x4e,0x44,0x40,0x80, ++0x0,0x0,0xb,0x7c,0x4b,0x48,0x4f,0x48,0x49,0x4b,0x4c,0x7b,0x48,0x1,0x6,0x0,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0xc0,0x70,0x48,0x40, ++0x1,0x1,0x17,0x79,0x57,0x51,0x5f,0x52,0x53,0x52,0x52,0x74,0x44,0x9,0x10,0x0,0x10,0x10,0xd0,0x14,0xfe,0x24,0xe4,0x28,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0x46,0x84, ++0x0,0x0,0x7,0x78,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x48,0x7b,0x49,0x2,0x4,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x40,0x90,0xe0,0x48,0xf8,0x50,0x4c,0x44,0x40, ++0x2,0x12,0x7f,0x52,0x52,0x5f,0x52,0x57,0x5c,0x54,0x57,0x74,0x54,0x7,0x4,0x0,0x0,0x3c,0xa4,0x24,0xa4,0xe8,0x24,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20, ++0x0,0x0,0xb,0x7c,0x48,0x4f,0x48,0x49,0x4b,0x48,0x4b,0x7a,0x4a,0x2,0xf,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x0,0xf,0x72,0x53,0x52,0x53,0x52,0x5f,0x50,0x5f,0x50,0x74,0x55,0x2,0x5,0x8,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xbc,0x84,0xa4,0x28,0x10,0x28,0xc6, ++0x1,0x1,0x17,0x79,0x51,0x53,0x52,0x56,0x5a,0x52,0x52,0x72,0x52,0x2,0x2,0x2,0x20,0x28,0xfc,0x20,0x4,0xfe,0x8,0x8,0xe8,0xa8,0xa8,0xe8,0x8,0x8,0x28,0x10, ++0x0,0x0,0x7,0x78,0x4b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x7a,0x4f,0x1,0x2,0x4,0x40,0x44,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x0,0x0,0x17,0x78,0x57,0x54,0x58,0x53,0x50,0x50,0x57,0x71,0x52,0x4,0x1,0x0,0x40,0x48,0xfc,0x40,0xfe,0x42,0x94,0xf0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x40,0x80, ++0x0,0x7,0x10,0x7b,0x52,0x52,0x53,0x50,0x57,0x55,0x54,0x75,0x54,0x4,0x4,0x4,0x4,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xf4,0x44,0x44,0x54,0x8, ++0x0,0x7,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x4a,0x4b,0x49,0x79,0x4a,0x4,0x8,0x3,0x4,0xfe,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x90,0x60,0x90,0xe, ++0x0,0x3,0x7a,0x4a,0x4b,0x4a,0x4a,0x4b,0x4a,0x4b,0x78,0x45,0x5,0x9,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0xa8,0x18,0x8,0xf8,0x0,0x44,0x22,0xa,0xf8,0x0, ++0x0,0x0,0x7b,0x4a,0x4b,0x4a,0x4b,0x48,0x4f,0x48,0x49,0x7a,0x45,0x8,0x0,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0xa0,0x50,0x48,0xfe,0x44,0x40,0x40, ++0x0,0x1,0xa,0x7c,0x49,0x4e,0x48,0x4b,0x48,0x4b,0x48,0x7b,0x48,0x0,0x0,0x7,0x90,0x18,0xa4,0x40,0xb0,0x4e,0xf0,0x90,0x60,0xa0,0x78,0x88,0x90,0x60,0xc0,0x0, ++0x0,0x10,0x7b,0x52,0x51,0x57,0x54,0x58,0x57,0x51,0x51,0x73,0x52,0x4,0x8,0x3,0x10,0x78,0x80,0x48,0x50,0xfe,0x82,0x84,0xfc,0x0,0xf0,0x10,0xa0,0x40,0xb0,0xc, ++0x0,0x2,0x1,0x78,0x4f,0x48,0x49,0x4a,0x48,0x4b,0x4a,0x7a,0x4a,0x2,0xf,0x0,0x0,0x8,0x10,0x4,0xfe,0xa0,0x18,0x8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x8,0x4,0x12,0x7f,0x51,0x55,0x55,0x55,0x55,0x55,0x57,0x71,0x51,0x2,0x4,0x8,0x24,0x5e,0x94,0xf4,0x14,0x5c,0x54,0x54,0x54,0x5c,0xd4,0x54,0x24,0x24,0x54,0x88, ++0x0,0x8,0x75,0x51,0x53,0x59,0x55,0x51,0x57,0x55,0x55,0x75,0x59,0x9,0x8,0x0,0x80,0x88,0xfc,0x0,0xf8,0x8,0x48,0x28,0xfe,0x8,0x48,0x28,0x8,0xfc,0x8,0x30, ++0x1,0x8,0x74,0x54,0x51,0x51,0x5d,0x55,0x55,0x55,0x55,0x75,0x55,0xa,0x11,0x0,0xfc,0x8,0x50,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x2c,0x6,0xfc,0x0, ++0x0,0x2,0x7a,0x4b,0x48,0x4f,0x48,0x48,0x4b,0x4a,0x4a,0x7b,0x4a,0x0,0x7,0x0,0x40,0x48,0x48,0xf8,0x40,0xfe,0x40,0x48,0xfc,0x48,0x48,0xf8,0x40,0x48,0xfc,0x4, ++0x11,0x11,0x27,0x22,0x7d,0x17,0x21,0x79,0x7,0xf9,0x1,0x1f,0x10,0x10,0x1f,0x10,0x8,0x8,0xd0,0x10,0x3c,0xc8,0x10,0x3c,0xc0,0x3e,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x2,0x12,0x7f,0x52,0x53,0x51,0x57,0x55,0x55,0x57,0x51,0x5f,0x71,0x1,0x1,0x1,0x90,0x90,0xf0,0x94,0xbe,0x14,0xd4,0x54,0x54,0xd4,0x14,0xf4,0x24,0x24,0x54,0x88, ++0x0,0x0,0xf,0x70,0x57,0x54,0x57,0x54,0x57,0x50,0x53,0x72,0x53,0x2,0x3,0x2,0xa0,0xa4,0xfe,0xa0,0xfc,0xa4,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x7,0x70,0x50,0x57,0x54,0x54,0x57,0x50,0x57,0x50,0x7f,0x51,0x2,0x5,0x0,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x0,0xfe,0x50,0x4c,0x44,0x80, ++0x0,0x0,0x77,0x54,0x55,0x55,0x55,0x55,0x57,0x55,0x55,0x7b,0x4d,0x11,0x23,0x0,0x28,0x24,0xfe,0x20,0x20,0xe4,0x24,0x24,0xe8,0x28,0x28,0x90,0x50,0x2a,0x4a,0x84, ++0x7,0x14,0x7d,0x55,0x56,0x56,0x55,0x58,0x50,0x5f,0x51,0x72,0x51,0x0,0x1,0x6,0xbc,0xa4,0xac,0xac,0xb4,0xb4,0x28,0xc4,0x80,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8, ++0x0,0x14,0x7c,0x57,0x50,0x57,0x54,0x54,0x57,0x54,0x54,0x77,0x54,0x8,0xa,0x11,0x40,0x44,0x44,0xfc,0x4,0xbe,0xa4,0xa4,0xbc,0xa4,0xa4,0xbc,0xa4,0xa4,0xd4,0x8, ++0x4,0x2,0x72,0x5f,0x54,0x54,0x57,0x55,0x55,0x55,0x55,0x75,0x49,0xb,0x10,0x0,0x20,0x24,0x3e,0x40,0xa0,0x24,0x3e,0x50,0x14,0xfe,0x10,0x10,0x28,0x28,0x44,0x82, ++0x0,0x10,0x7f,0x51,0x50,0x57,0x54,0x54,0x57,0x54,0x55,0x75,0x55,0x5,0x4,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x0,0x0,0x7,0x74,0x58,0x51,0x55,0x55,0x59,0x52,0x5c,0x72,0x52,0x2,0x3,0x0,0x80,0x40,0xfe,0x2,0x94,0x50,0x24,0x4a,0x8a,0xf8,0x40,0x48,0x48,0x48,0xf8,0x8, ++0x1,0x1,0xf,0x71,0x57,0x50,0x57,0x54,0x54,0x57,0x50,0x74,0x52,0xf,0x0,0x0,0x4,0x44,0xe4,0x8,0xc8,0x10,0xc4,0x44,0x48,0xd2,0x2,0x44,0x84,0xe8,0x10,0x20, ++0x0,0x7,0x74,0x56,0x55,0x57,0x54,0x56,0x56,0x56,0x7b,0x48,0x8,0x11,0x22,0x0,0x4,0xfe,0x8,0x28,0x4e,0xf2,0x84,0xa8,0xa8,0xa8,0xe8,0xa8,0x88,0x14,0x24,0x42, ++0x0,0x8,0x7f,0x48,0x4a,0x49,0x4b,0x4e,0x4b,0x4a,0x4b,0x78,0x49,0x2,0x5,0x0,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x0,0x2,0x79,0x48,0x4f,0x49,0x48,0x4b,0x48,0x4b,0x48,0x7f,0x48,0x1,0x1,0x6,0xa0,0xa8,0xb0,0xa4,0xfe,0x10,0xa0,0xf8,0x40,0xf8,0x40,0xfe,0xa0,0x10,0x10,0xc, ++0x1,0x9,0x7d,0x49,0x49,0x48,0x4f,0x4a,0x4b,0x4a,0x4b,0x7a,0x43,0xe,0x4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xfc,0x44,0xe8,0x68,0xd0,0x68,0x46,0x40, ++0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x49,0x49,0x49,0x49,0x79,0x49,0x2,0x2,0x4,0xa0,0x90,0xfc,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0xa8,0xa4,0x4, ++0x0,0x1,0x77,0x54,0x55,0x54,0x57,0x54,0x55,0x56,0x70,0x4f,0x0,0x1,0x2,0xc,0x80,0x4,0xfe,0x44,0x54,0x44,0xfc,0xc4,0x74,0x4c,0x40,0xfe,0xa0,0x10,0x8,0x6, ++0x0,0x0,0x10,0x79,0x52,0x55,0x58,0x52,0x52,0x53,0x50,0x77,0x54,0x5,0x4,0x4,0x40,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x94,0xf4,0x4,0xc, ++0x1,0x11,0x7a,0x57,0x5c,0x57,0x54,0x57,0x50,0x5f,0x50,0x73,0x52,0x3,0x2,0x3,0x0,0xf0,0x20,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x2,0x11,0x78,0x57,0x54,0x55,0x54,0x57,0x50,0x53,0x52,0x72,0x53,0x2,0x2,0x3,0x8,0x10,0xa4,0xfe,0x44,0x54,0x44,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x0,0x7,0x71,0x55,0x52,0x53,0x54,0x5b,0x52,0x52,0x53,0x70,0x52,0x1,0x1f,0x0,0x40,0x48,0x30,0x24,0x18,0xf0,0x8,0xf6,0x10,0x10,0xf0,0x0,0x10,0x24,0xfe,0x0, ++0x1,0xf,0x71,0x50,0x57,0x50,0x53,0x52,0x53,0x50,0x57,0x74,0x55,0x5,0x5,0x4,0x10,0xfe,0x10,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x14,0xf4,0xc, ++0x1,0x11,0x7f,0x51,0x53,0x55,0x59,0x51,0x57,0x50,0x5f,0x70,0x52,0x4,0x9,0x0,0x10,0x14,0xfe,0x10,0xb8,0x54,0x12,0x10,0xfc,0x0,0xfe,0x40,0x48,0x46,0x42,0x80, ++0x0,0x10,0x78,0x57,0x54,0x57,0x54,0x54,0x57,0x54,0x55,0x7a,0x49,0x10,0x23,0x0,0x48,0x7c,0x40,0xfe,0x42,0xf8,0x40,0x38,0xfe,0x80,0x48,0xb0,0x70,0xae,0x24,0x60, ++0x0,0x0,0x77,0x52,0x51,0x5f,0x50,0x53,0x52,0x53,0x52,0x73,0x54,0x5,0x9,0x1,0x80,0x40,0xfc,0x8,0x10,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x44,0x42,0x12,0xf0, ++0x0,0x0,0x77,0x55,0x5b,0x51,0x53,0x51,0x5f,0x51,0x52,0x75,0x48,0x0,0x7,0x0,0x80,0x40,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x50,0x48,0xf6,0x40,0x48,0xfc,0x0, ++0x0,0x7,0x74,0x54,0x54,0x57,0x54,0x54,0x57,0x56,0x76,0x4a,0xa,0x13,0x22,0x0,0x10,0xc8,0x7e,0x40,0x54,0xd4,0x3e,0x8,0xc8,0x48,0x7e,0x48,0x48,0xc8,0x48,0x8, ++0x0,0x7,0x70,0x57,0x54,0x5b,0x50,0x53,0x50,0x5f,0x50,0x77,0x54,0x4,0x4,0x4,0x8,0xfc,0x40,0xfe,0x42,0x5c,0x40,0x58,0x4,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc, ++0x0,0x0,0x77,0x55,0x59,0x52,0x56,0x51,0x53,0x54,0x5b,0x70,0x51,0x2,0x5,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x0,0x7,0x70,0x57,0x55,0x58,0x51,0x51,0x53,0x56,0x5b,0x72,0x53,0x2,0x3,0x2,0x8,0xfc,0x40,0xfe,0x52,0xe4,0x50,0x20,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x0,0x17,0x78,0x53,0x52,0x57,0x55,0x5b,0x51,0x57,0x51,0x7f,0x51,0x3,0xd,0x1,0x48,0xfc,0x40,0xf8,0x8,0xfe,0x12,0xfc,0x10,0xfc,0x10,0xfe,0x48,0x30,0x9e,0x4, ++0x0,0x7f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x7f,0x40,0x4f,0x40,0x40,0x41,0x5f,0x41,0x41,0x41,0x41,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0xe4,0x44,0x84,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x7f,0x42,0x42,0x42,0x7f,0x44,0x44,0x48,0x44,0x43,0x42,0x44,0x48,0x7f,0x40,0x4,0xfe,0x4,0x4,0x14,0xfc,0x44,0x44,0x44,0x44,0x84,0x84,0x64,0x14,0xfc,0x4, ++0x0,0x7f,0x41,0x41,0x42,0x44,0x48,0x54,0x64,0x45,0x46,0x44,0x43,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x5c,0x84,0x4,0x4,0x24,0xe4,0x4,0xfc,0x4, ++0x0,0x7f,0x48,0x48,0x4f,0x54,0x54,0x64,0x48,0x49,0x51,0x62,0x44,0x40,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x94,0x94,0x94,0x94,0x14,0x14,0x54,0x24,0x4,0xfc,0x4, ++0x0,0x7f,0x41,0x41,0x42,0x44,0x4a,0x51,0x6f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0x84,0x44,0x24,0x1c,0xe4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4, ++0x0,0x7f,0x42,0x42,0x7f,0x44,0x47,0x4c,0x57,0x64,0x47,0x44,0x44,0x44,0x7f,0x40,0x4,0xfe,0x4,0x14,0xfc,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xa4,0x44,0xfc,0x4, ++0x0,0x7f,0x40,0x5f,0x42,0x4f,0x44,0x7f,0x40,0x4f,0x48,0x48,0x4f,0x40,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xfc,0x4,0xe4,0x24,0x24,0xe4,0x4,0xfc,0x4, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x4f,0x41,0x5f,0x40,0x44,0x42,0x41,0x40,0x7f,0x40,0x4,0xfe,0x4,0x4,0xf4,0x4,0xe4,0x4,0xf4,0x24,0x44,0x84,0x4,0x84,0xfc,0x4, ++0x0,0x7f,0x41,0x41,0x5f,0x41,0x7f,0x44,0x42,0x4f,0x41,0x5f,0x41,0x41,0x7f,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0xfc,0x44,0x84,0xe4,0x4,0xf4,0x4,0x4,0xfc,0x4, ++0x0,0x7f,0x40,0x5f,0x52,0x5f,0x40,0x7f,0x48,0x4f,0x45,0x4c,0x56,0x44,0x7f,0x40,0x4,0xfe,0x4,0xf4,0x94,0xf4,0x4,0xfc,0x24,0xe4,0x44,0x84,0x74,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x7f,0x54,0x54,0x55,0x54,0x54,0x57,0x5c,0x54,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x20,0x20,0xfe,0x22,0x22,0x2a,0x24,0x20,0x20, ++0x10,0x10,0x11,0x7d,0x55,0x55,0x56,0x54,0x57,0x54,0x5c,0x54,0x10,0x10,0x11,0x16,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2, ++0x10,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x12,0x12,0x14,0x13,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x8,0x48,0x50,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x8,0xfe,0x12,0x32,0xc,0x12,0x61,0x1,0x1f,0x11,0x11,0x11,0x11,0x1,0x1,0x0,0x0,0xfc,0x44,0x28,0x10,0x28,0x46,0x10,0xf8,0x10,0x10,0x50,0x20,0x0,0x0, ++0x10,0x10,0x13,0x7c,0x55,0x54,0x57,0x54,0x54,0x55,0x5d,0x52,0x14,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x88,0x88,0xfe,0x8,0x88,0x48,0x8,0x28,0x10, ++0x10,0x10,0x11,0x7c,0x55,0x54,0x57,0x54,0x55,0x55,0x5d,0x55,0x11,0x10,0x10,0x13,0x20,0x28,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x20,0x58,0x86,0x2, ++0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x55,0x11,0x11,0x11,0x11,0x4,0xfe,0x4,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0x24,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x7d,0x55,0x57,0x55,0x55,0x55,0x55,0x55,0x5d,0x11,0x11,0x11,0x11,0x80,0xa0,0x94,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x10,0x11,0x11,0x7d,0x55,0x55,0x55,0x55,0x55,0x55,0x5d,0x56,0x12,0x14,0x19,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0x48,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x21,0x21,0x21,0xf9,0xa9,0xa8,0xab,0xaa,0xab,0xa8,0xab,0xb9,0x20,0x20,0x21,0x2e,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe, ++0x10,0x11,0x10,0x7c,0x57,0x54,0x55,0x55,0x55,0x55,0x5d,0x54,0x13,0x10,0x10,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20, ++0x10,0x11,0x10,0x7c,0x57,0x54,0x54,0x55,0x54,0x55,0x5c,0x57,0x10,0x10,0x10,0x13,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6, ++0x10,0x10,0x13,0x7d,0x54,0x57,0x54,0x54,0x57,0x54,0x5d,0x55,0x11,0x11,0x11,0x11,0x8,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xa8,0x26,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x4, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x8,0x8,0x8,0x14,0x12,0x21,0x20,0x41,0x86,0x18,0x0,0x8,0x8,0xf8,0x0,0xf0,0x20,0x40,0x80,0xf0,0x10,0x20,0xc0,0x40,0x30,0xe, ++0x10,0x10,0x11,0x10,0x54,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x13,0x10,0x54,0x54,0x54,0x57,0x54,0x54,0x54,0x54,0x7d,0x5,0x2,0x4,0x0,0x4,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8,0x8, ++0x10,0x10,0x10,0x13,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x54,0x7c,0x4,0x1,0x6,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0xfc,0x84,0x88,0x50,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x0,0x4,0x44,0x28,0x28,0x10,0x10,0x28,0x24,0x44,0x80,0x0,0xfe,0x0, ++0x10,0x10,0x11,0x10,0x55,0x55,0x55,0x54,0x54,0x54,0x54,0x55,0x7e,0x4,0x0,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x50,0x20, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x7d,0x5,0x2,0xc,0x8,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x68,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x0,0x0,0x3f,0x2,0x2,0xff,0x4,0x8,0x31,0xc1,0x11,0x11,0x11,0x11,0x1f,0x0,0x10,0x38,0xc0,0x0,0x4,0xfe,0x40,0x30,0xe,0x4,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x1,0x21,0x21,0x3f,0x21,0x2,0x4,0xa,0x31,0xc0,0xf,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x8,0xf8,0x8,0x80,0x40,0x30,0xe,0x4,0xf0,0x10,0x20,0x40,0x80,0x0, ++0x1,0x21,0x21,0x3f,0x0,0x1f,0x10,0x10,0x14,0x12,0x11,0x12,0x24,0x28,0x40,0x80,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0x10,0x50,0x90,0x10,0x90,0x50,0x52,0xa,0x4, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x21,0x21,0x3f,0x20,0x20,0x20,0x20,0x1f,0x0,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x10,0x55,0x54,0x54,0x54,0x54,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x21,0x21,0x3f,0x0,0xff,0x0,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x10,0x90,0xd0,0x90,0x90,0x90,0x90,0x10,0x50,0x20, ++0x1,0x21,0x21,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x1f,0x0,0x8,0x10,0x62,0x1,0x0,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0,0x80,0x90,0xf8,0x80,0x90,0x8c,0x84,0x0, ++0x10,0x10,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7c,0x4,0x0,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20, ++0x10,0x10,0x10,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x9,0x9,0x11,0x11,0x3f,0x50,0x90,0x10,0x11,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x40,0x24,0xfe,0x0,0x80,0x84,0x44,0x3c,0x0,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10, ++0x1,0x21,0x21,0x3f,0x4,0x78,0x42,0x42,0x42,0x42,0x4e,0x72,0x4,0x4,0x18,0x60,0x0,0x8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x0,0x4,0xfe,0x4,0x4,0xfc,0x20,0x20,0x24,0xfe,0x10,0x10,0x10,0x8,0x4a,0x86,0x2, ++0x10,0x13,0x10,0x10,0x54,0x54,0x57,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x0,0x0,0x0,0xfc,0x88,0x50,0x20,0xd8,0x6,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x1,0x1,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x54,0x4,0x14,0x8, ++0x20,0x20,0x23,0x20,0xa8,0xaf,0xa8,0xa9,0xa9,0xab,0xad,0xa9,0xf9,0x9,0x2,0x4,0x8,0x3c,0xc0,0x40,0x44,0xfe,0xa0,0x10,0x18,0x16,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x10,0x10,0x10,0x55,0x56,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x5,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10, ++0x10,0x10,0x10,0x11,0x56,0x55,0x54,0x54,0x57,0x54,0x54,0x55,0x7c,0x4,0x0,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40, ++0x10,0x10,0x17,0x10,0x54,0x57,0x56,0x54,0x55,0x54,0x54,0x54,0x7c,0x4,0x1,0x2,0x90,0x94,0xfe,0x90,0x0,0xfe,0x42,0x44,0xf8,0x48,0x48,0x48,0x88,0x88,0x28,0x10, ++0x10,0x10,0x10,0x13,0x54,0x55,0x54,0x54,0x57,0x54,0x54,0x54,0x7c,0x5,0x2,0x0,0x20,0x20,0x24,0xfe,0x20,0x24,0xa8,0x20,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20, ++0x1,0x21,0x21,0x3f,0x8,0x8,0x8,0x7e,0x9,0x1d,0x2a,0x28,0x48,0x89,0x9,0x8,0x0,0x8,0x8,0xf8,0x0,0x10,0x90,0x90,0x8,0x48,0x46,0x80,0x90,0x8,0xfc,0x4, ++0x10,0x10,0x10,0x13,0x54,0x54,0x55,0x57,0x55,0x55,0x55,0x55,0x7d,0x4,0x0,0x0,0x20,0x20,0x24,0xfe,0x50,0xa8,0xfc,0x26,0x24,0xfc,0x24,0x24,0xfc,0x20,0x22,0x1e, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x21,0x2f,0x21,0x27,0x24,0x24,0x27,0x20,0x3f,0x20,0x0,0x8,0x8,0xf8,0x0,0xf8,0x8,0xe8,0x8,0xc8,0x48,0x48,0xc8,0x8,0xf8,0x8, ++0x11,0x10,0x10,0x10,0x55,0x54,0x57,0x54,0x54,0x55,0x56,0x54,0x7c,0x4,0x0,0x0,0x8,0x90,0x60,0x90,0x48,0x40,0xfe,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xa8,0x90, ++0x10,0x10,0x13,0x10,0x55,0x55,0x55,0x54,0x55,0x54,0x54,0x57,0x7c,0x4,0x1,0x0,0x80,0x48,0xfc,0x0,0xf8,0x8,0xf8,0x0,0xf8,0x10,0x60,0xfe,0x40,0x40,0x40,0x80, ++0x10,0x10,0x10,0x11,0x55,0x56,0x54,0x55,0x54,0x55,0x54,0x54,0x7c,0x4,0x3,0x0,0x40,0x20,0x20,0xfe,0x2,0x54,0x88,0x4,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x8,0x0,0x4,0xfe,0x4,0x4,0xfc,0x10,0x54,0x54,0x54,0x7c,0x10,0x12,0x92,0x92,0xfe,0x2, ++0x10,0x10,0x13,0x10,0x54,0x55,0x55,0x56,0x54,0x55,0x54,0x54,0x7c,0x5,0x2,0x0,0x88,0x88,0xfe,0x88,0x0,0xfe,0x2,0x24,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20, ++0x10,0x13,0x10,0x10,0x55,0x55,0x55,0x55,0x54,0x54,0x57,0x54,0x7c,0x4,0x0,0x3,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x40,0x44,0xfe,0x88,0x90,0x60,0x98,0x4, ++0x1,0x21,0x21,0x3f,0x0,0x3f,0x20,0x3f,0x24,0x3f,0x24,0x29,0x46,0x45,0x98,0x0,0x0,0x8,0x8,0xf8,0x50,0xfe,0x40,0xc4,0x44,0xc8,0xa8,0x30,0x20,0x52,0x8a,0x6, ++0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x2,0x51,0x51,0x90,0xf,0x0,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x0,0x8,0x6,0x12,0xf0,0x0, ++0x1,0x21,0x21,0x3f,0x0,0x1f,0x11,0x1f,0x11,0x1f,0x12,0x2,0x4,0x8,0x30,0x40,0x0,0x8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x90,0xa8,0xba,0x82,0x7e,0x0, ++0x1,0x21,0x21,0x3f,0x1,0x6,0x38,0xcf,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x26,0x0,0x8,0x8,0xf8,0x0,0xc0,0x30,0xee,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x18, ++0x11,0x10,0x10,0x13,0x54,0x55,0x54,0x57,0x54,0x54,0x55,0x55,0x7e,0x4,0xb,0x0,0x8,0x90,0xa0,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x11,0x10,0x54,0x57,0x54,0x54,0x55,0x54,0x57,0x54,0x55,0x7c,0x4,0x0,0x3,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x88,0x8,0x90,0x60,0x98,0x4, ++0x11,0x10,0x10,0x13,0x54,0x54,0x55,0x55,0x57,0x54,0x55,0x55,0x7e,0x3,0x0,0x0,0x4,0x88,0x0,0xfe,0x88,0x88,0x10,0x54,0xb8,0x88,0x10,0x14,0xa4,0xfc,0x84,0x0, ++0x10,0x11,0x11,0x11,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x0,0x4,0xfe,0x24,0x24,0xfc,0x0,0x4,0x7e,0x44,0x7c,0x44,0x7c,0x44,0x44,0x7c,0x44, ++0x20,0x20,0x27,0x20,0xaf,0xa8,0xa9,0xaf,0xa9,0xaf,0xa8,0xa9,0xf9,0xa,0x4,0x0,0x8,0x3c,0xc0,0x44,0xfe,0x40,0x50,0x5c,0x50,0x5c,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x1,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x0,0x8,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x8,0xe8,0x28,0xe8,0x18, ++0x20,0x22,0x21,0xaa,0xa8,0xa9,0xab,0xad,0xa9,0xa9,0xa9,0xa9,0xf9,0x9,0x1,0x1,0x40,0x48,0x50,0x48,0xa0,0x10,0xfe,0x14,0x10,0xf0,0x10,0x10,0xf0,0x10,0x50,0x20, ++0x10,0x13,0x10,0x54,0x57,0x54,0x55,0x55,0x55,0x55,0x55,0x54,0x7f,0x4,0x0,0x0,0x20,0xfe,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20, ++0x20,0x22,0x21,0x20,0xaf,0xa9,0xaa,0xac,0xaa,0xab,0xac,0xaa,0xf9,0x9,0x2,0x4,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x44,0x8,0xbc,0xa8,0xa8,0x7e,0x8,0x8,0x8, ++0x20,0x27,0x20,0x22,0xa9,0xa9,0xaa,0xac,0xab,0xaa,0xaa,0xab,0xf9,0x8,0x7,0x0,0x20,0xa8,0xb0,0xa4,0x18,0xf0,0xe,0x4,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0, ++0x1,0x1,0x45,0x7f,0x51,0x59,0x6b,0x5d,0x69,0x5d,0x6b,0x49,0x59,0x41,0x7f,0x40,0x0,0x0,0x14,0xfc,0x44,0x64,0xac,0x74,0xa4,0x74,0xac,0x24,0x64,0x4,0xfc,0x4, ++0x1,0x21,0x3f,0x0,0x26,0x38,0x21,0x1f,0x20,0x3e,0x48,0xa,0xff,0x14,0x22,0x41,0x0,0x8,0xf8,0x0,0xfc,0x8,0x30,0x10,0xfe,0x14,0x50,0x5c,0x50,0xb0,0x90,0xe, ++0x1,0x21,0x3f,0x8,0xff,0x8,0x3e,0x22,0x2a,0x2a,0x2a,0x2a,0xff,0x8,0x14,0x62,0x0,0x8,0xf8,0x0,0xfe,0x20,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2, ++0x0,0x0,0x1,0x2,0x4,0x8,0x10,0x1,0x3,0x5,0x9,0x31,0x1,0x1,0x1,0x1,0x80,0x80,0x0,0x0,0x40,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0x10,0x27,0x40,0x8,0x10,0x20,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x80,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x50,0x20, ++0x8,0x8,0x11,0x21,0x49,0x9,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xfe,0x0, ++0x8,0x8,0x10,0x20,0x49,0xa,0x11,0x31,0x51,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10, ++0xa,0x9,0x10,0x20,0x4b,0x8,0x10,0x37,0x50,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x8,0x8,0x10,0x21,0x4b,0x8,0x10,0x37,0x51,0x91,0x12,0x15,0x10,0x10,0x11,0x16,0x40,0x40,0x88,0x10,0xe0,0x40,0x88,0xfc,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe, ++0x8,0x8,0x10,0x27,0x48,0xa,0x11,0x37,0x50,0x90,0x11,0x12,0x14,0x18,0x10,0x10,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x8,0x8,0x12,0x22,0x4a,0xa,0x17,0x30,0x50,0x92,0x12,0x12,0x13,0x14,0x14,0x18,0x40,0x40,0x48,0x7c,0x40,0x44,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0xc0,0x66,0x1c, ++0x8,0x8,0x12,0x21,0x49,0x8,0x17,0x34,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x8,0x8,0x13,0x22,0x4b,0xa,0x13,0x30,0x57,0x90,0x10,0x13,0x10,0x10,0x1f,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x8,0x8,0x17,0x22,0x49,0x9,0x12,0x33,0x54,0x90,0x1f,0x10,0x12,0x12,0x13,0x10,0x8,0x7c,0x80,0x48,0x48,0x50,0x0,0xfc,0x40,0x44,0xfe,0x40,0x48,0x48,0xf8,0x8, ++0x12,0x12,0x2a,0x4a,0x8f,0x10,0x2f,0x60,0xaf,0x22,0x2f,0x22,0x23,0x2e,0x20,0x21,0x10,0x10,0x90,0xa4,0xbe,0x44,0xa4,0x28,0xa8,0x10,0x90,0x28,0xa8,0x44,0x86,0x0, ++0x12,0x14,0x2f,0x48,0x8f,0x18,0x2f,0x62,0xbf,0x24,0x27,0x24,0x28,0x2b,0x30,0x21,0x10,0x10,0x90,0xa4,0xbe,0xc4,0xa4,0x28,0xa8,0x10,0x90,0xa8,0xa8,0x44,0x86,0x0, ++0xe,0x1a,0x2e,0x4a,0x8e,0x1a,0x2e,0x64,0xa7,0x2c,0x37,0x24,0x27,0x24,0x27,0x24,0xe0,0xa4,0xfe,0xa0,0xe0,0xa0,0xfe,0x84,0xe4,0x84,0xe4,0x84,0xe4,0x84,0xf4,0x8, ++0x0,0x0,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x8,0x10,0x20,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x88,0x50,0x20,0x50,0x88,0x8,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x88,0x50,0x20,0x57,0x88,0x8,0x18,0x28,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x80,0x80,0x80,0x90,0xf8,0x90,0x90,0x90,0x90,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x4,0x8b,0x50,0x20,0x50,0x88,0xf,0x18,0x28,0x48,0x88,0x8,0x8,0x8,0x50,0x20,0x10,0xf8,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x4,0x88,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0xa,0xa,0x54,0x28,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x4,0x8b,0x50,0x21,0x51,0x89,0x9,0x19,0x29,0x48,0x88,0xf,0x8,0x8,0x50,0x20,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x4,0x28,0x10, ++0x4,0x88,0x53,0x20,0x50,0x88,0x8,0x18,0x2b,0x48,0x88,0x8,0x8,0x8,0x57,0x20,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0xfe,0x0, ++0x4,0x88,0x50,0x20,0x51,0x8a,0xb,0x18,0x28,0x48,0x88,0x8,0x9,0x9,0x52,0x24,0x40,0x40,0x40,0x90,0x8,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x4,0x88,0x51,0x21,0x51,0x89,0x9,0x19,0x29,0x49,0x89,0x9,0x8,0x8,0x50,0x20,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20, ++0x5,0x89,0x51,0x22,0x52,0x8d,0x9,0x19,0x29,0x49,0x89,0x9,0x9,0x9,0x50,0x20,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x28,0x10,0x2,0x2,0xfe,0x0, ++0x4,0x88,0x50,0x27,0x50,0x88,0xb,0x1a,0x2a,0x4b,0x88,0x8,0x9,0x9,0x52,0x24,0xa0,0xa0,0xa8,0xfc,0xa8,0xa8,0xf8,0xa0,0xa4,0xfe,0xa4,0xa4,0x34,0x28,0x20,0x20, ++0x4,0x88,0x50,0x20,0x57,0x88,0x9,0x19,0x2f,0x49,0x89,0x9,0x9,0xa,0x50,0x20,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x28,0xe8,0x28,0x28,0x10,0x12,0x2a,0xc6,0x2, ++0x4,0x88,0x50,0x21,0x52,0x8c,0x9,0x18,0x28,0x4f,0x88,0x8,0x9,0xa,0x53,0x20,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x4,0x88,0x53,0x22,0x54,0x88,0x8,0x1f,0x28,0x49,0x88,0x8,0x8,0x8,0x50,0x20,0x40,0x20,0xfe,0x2,0x14,0x10,0x14,0xfe,0x10,0x10,0x90,0x90,0x10,0x10,0x50,0x20, ++0x0,0x88,0x57,0x20,0x51,0x92,0x12,0x33,0x56,0x9a,0x12,0x12,0x12,0x1a,0xa4,0x40,0x10,0x10,0x90,0x90,0x10,0x10,0xd8,0x54,0x54,0x52,0x92,0x10,0x10,0x10,0x50,0x20, ++0x4,0x8a,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2b,0x48,0x88,0xb,0x8,0x8,0x57,0x20,0x0,0x20,0x24,0x28,0xb0,0x20,0x22,0xa2,0x1e,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x4,0x89,0x51,0x21,0x51,0x88,0xb,0x1a,0x2a,0x4b,0x8a,0xa,0xb,0xa,0x52,0x22,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8, ++0x4,0x88,0x57,0x21,0x51,0x91,0x1f,0x31,0x53,0x93,0x15,0x15,0x19,0x11,0xa1,0x41,0x4,0xc4,0x4,0x14,0x14,0x54,0xf4,0x14,0x14,0x94,0x54,0x14,0x4,0x4,0x14,0x8, ++0x4,0x88,0x50,0x21,0x52,0x8d,0x8,0x18,0x2f,0x48,0x89,0x9,0xa,0xc,0x51,0x20,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x48,0x44,0x44,0x40,0x80, ++0x4,0x88,0x50,0x21,0x52,0x8c,0xb,0x18,0x28,0x4a,0x89,0x9,0x9,0x8,0x57,0x20,0x40,0x40,0xa0,0x10,0x8,0x6,0xf8,0x0,0x8,0x48,0x48,0x50,0x50,0x4,0xfe,0x0, ++0x4,0x88,0x57,0x20,0x50,0x8b,0x8,0x1b,0x28,0x48,0x8b,0xa,0xa,0xa,0x53,0x22,0x80,0x44,0xfe,0x0,0x0,0xfc,0x0,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x88,0x51,0x22,0x57,0x91,0x12,0x35,0x51,0x91,0x13,0x14,0x10,0x10,0xa1,0x46,0x40,0x80,0x10,0x8,0xfc,0x10,0x8,0x4,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x4,0x88,0x57,0x20,0x50,0x89,0xf,0x18,0x2b,0x4a,0x8a,0xa,0xb,0xa,0x50,0x20,0x40,0x44,0xfe,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1b,0x28,0x4f,0x88,0x8,0x9,0xa,0x54,0x20,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x4,0x8f,0x54,0x24,0x54,0x97,0x14,0x10,0x31,0x52,0x95,0x10,0x10,0x10,0xa1,0x46,0x4,0xfe,0xa4,0xa4,0xa4,0xfc,0x84,0x80,0xf8,0x8,0x8,0x90,0x60,0x40,0x80,0x0, ++0x4,0x88,0x53,0x22,0x52,0x8b,0xa,0x1a,0x2b,0x4a,0x88,0x8,0x8,0x9,0x52,0x24,0x0,0x44,0x9e,0x4,0x4,0x9c,0x4,0x4,0xfc,0x94,0x90,0x90,0x90,0x12,0x12,0xe, ++0x4,0x88,0x50,0x21,0x52,0x95,0x18,0x30,0x57,0x90,0x13,0x12,0x12,0x12,0xa3,0x42,0x40,0x40,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x88,0x57,0x21,0x51,0x89,0xa,0x1c,0x28,0x4f,0x88,0x8,0x8,0x8,0x50,0x20,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x8,0x8f,0x51,0x21,0x51,0x97,0x14,0x34,0x54,0x97,0x11,0x11,0x11,0x11,0xaa,0x44,0x20,0x20,0x20,0x40,0x7e,0x82,0x14,0x10,0x54,0x54,0x52,0x52,0x92,0x10,0x50,0x20, ++0x5,0x89,0x51,0x21,0x5f,0x91,0x11,0x31,0x57,0x94,0x14,0x14,0x17,0x14,0xa0,0x41,0x4,0x3e,0x24,0x24,0xe4,0x3c,0x24,0x24,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8, ++0x4,0x88,0x57,0x20,0x51,0x92,0x14,0x3b,0x52,0x93,0x12,0x13,0x12,0x10,0xaf,0x40,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0, ++0x4,0x8b,0x52,0x22,0x53,0x92,0x12,0x33,0x50,0x9f,0x12,0x12,0x12,0x12,0xa3,0x42,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x40,0x48,0x30,0x90,0xe,0x4, ++0x0,0x8f,0x54,0x27,0x54,0x97,0x10,0x33,0x52,0x93,0x12,0x13,0x12,0x12,0xa2,0x42,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x4,0x8b,0x52,0x22,0x53,0x8a,0xa,0x1a,0x2a,0x4a,0x8a,0xa,0xa,0xa,0x54,0x28,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x4,0x8b,0x50,0x20,0x57,0x88,0x9,0xa,0x18,0x2f,0x48,0x88,0x9,0xa,0x54,0x20,0x0,0xf8,0x90,0x60,0xfc,0xc4,0x48,0xc0,0x44,0xfe,0x40,0xe0,0x50,0x4e,0x44,0x40, ++0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0xf,0x8,0x50,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40, ++0x4,0x8f,0x51,0x20,0x5f,0x88,0xb,0x1a,0x2b,0x4a,0x8b,0x8,0x8,0x9,0x52,0x2c,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0xa0,0xa0,0x22,0x22,0x1e, ++0x0,0x8f,0x58,0x2a,0x69,0xaf,0x28,0x2a,0x6a,0xaa,0x2b,0x28,0x28,0x29,0xb2,0x44,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0x88,0x94,0x14,0x24,0x42, ++0x4,0x88,0x57,0x20,0x52,0x91,0x13,0x36,0x5b,0x92,0x13,0x10,0x12,0x14,0xa9,0x40,0x40,0x44,0xfe,0x40,0xa8,0x10,0xf8,0xe,0xf8,0x8,0xf8,0x40,0x50,0x4c,0x44,0x80, ++0x2,0x8a,0x53,0x24,0x59,0x97,0x15,0x35,0x57,0x95,0x15,0x17,0x15,0x15,0xa8,0x40,0x4,0x3e,0x94,0x94,0x14,0xec,0x40,0x58,0xde,0x68,0x48,0xfe,0x48,0x48,0xc8,0x8, ++0x0,0x8b,0x50,0x2f,0x50,0x97,0x15,0x34,0x57,0x90,0x17,0x10,0x1f,0x15,0xa4,0x48,0x38,0xc0,0x44,0xfe,0x40,0xfc,0x54,0xe4,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x2, ++0x1,0x8f,0x51,0x27,0x54,0x97,0x11,0x32,0x57,0x9a,0x13,0x12,0x13,0x12,0xa3,0x42,0x10,0xfe,0x10,0xbc,0xa4,0xbc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x0,0x10,0x10,0x10,0x1f,0x22,0x22,0x22,0x54,0x8c,0x8,0x8,0x10,0x20,0xc0,0x0,0x10,0x10,0x10,0x10,0xfc,0x10,0x90,0x90,0x90,0x94,0xfe,0x10,0x10,0x10,0x10,0x10, ++0x1,0x7f,0x49,0x49,0x7f,0x49,0x49,0x7f,0x8,0xff,0x8,0x1c,0x2a,0x49,0x88,0x8,0x20,0xa0,0x3c,0x44,0xa8,0x10,0x20,0x60,0xbe,0x22,0x44,0xa4,0x18,0x10,0x20,0xc0, ++0x20,0x20,0x20,0x21,0x3a,0x4c,0x4b,0x4a,0xab,0x12,0x13,0x22,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0x10,0x8e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x48,0x30,0x90,0xc,0x4, ++0x4,0xf,0x32,0x7,0x59,0x7f,0x40,0x9f,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x8,0x30,0x0,0xf0,0x60,0x80,0x0,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x20,0x18, ++0x2,0x2,0x7,0x4,0xa,0x11,0x6,0x18,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x40,0x80,0x0,0xc0,0x30,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x1e,0x24,0x28,0x40,0x90,0x10,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x23,0x20,0x3c,0x44,0x89,0x23,0x20,0x20,0x20,0x21,0x25,0x2a,0x32,0x24,0x0,0x0,0xf8,0x20,0x40,0x80,0x4,0xfe,0x94,0x94,0x94,0x24,0x24,0x44,0x44,0xa8,0x10, ++0x20,0x20,0x20,0x3f,0x44,0x8a,0x22,0x22,0x22,0x22,0x23,0x20,0x28,0x30,0x20,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e, ++0x21,0x21,0x21,0x3d,0x46,0x89,0x20,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0x20,0x0,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x6, ++0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x20,0x2f,0x20,0x20,0x24,0x28,0x30,0x27,0x0,0x8,0x3c,0xc0,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x48,0xfc,0x0, ++0x20,0x20,0x23,0x3c,0x44,0x88,0x20,0x2f,0x20,0x20,0x20,0x24,0x29,0x31,0x22,0xc,0x8,0x3c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x20,0x20,0x21,0x3d,0x46,0x88,0x23,0x20,0x20,0x20,0x20,0x24,0x28,0x30,0x21,0x6,0x80,0x84,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x20,0x20,0x20,0x3c,0x45,0x8a,0x27,0x20,0x20,0x23,0x22,0x26,0x2a,0x32,0x23,0x2,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x20,0x20,0x3f,0x46,0x8a,0x22,0x22,0x22,0x22,0x22,0x26,0x2a,0x32,0x22,0x2,0x40,0x40,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x20,0x20,0x23,0x3c,0x44,0x8b,0x22,0x24,0x21,0x20,0x20,0x27,0x28,0x30,0x21,0x0,0x40,0x48,0xfc,0x40,0x40,0xfc,0x4,0x8,0xf0,0x20,0x44,0xfe,0x40,0x40,0x40,0x80, ++0x20,0x20,0x20,0x3c,0x45,0x8a,0x25,0x20,0x20,0x27,0x20,0x21,0x2a,0x34,0x21,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8,0xf6,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x20,0x23,0x22,0x3e,0x47,0x8a,0x22,0x23,0x22,0x22,0x23,0x26,0x2a,0x32,0x23,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x22,0xa2,0x1e,0x0, ++0x20,0x20,0x27,0x3c,0x45,0x8a,0x24,0x2b,0x22,0x23,0x22,0x23,0x2a,0x30,0x27,0x0,0x40,0x48,0xfc,0xe0,0x50,0x48,0x46,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfc,0x0, ++0x20,0x20,0x21,0x3d,0x45,0x89,0x21,0x21,0x21,0x20,0x23,0x20,0x28,0x30,0x20,0x7,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0xd8,0x6, ++0x21,0x21,0x27,0x39,0x49,0x93,0x2,0x23,0x22,0x23,0x20,0x27,0x28,0x31,0x22,0xc,0x10,0x14,0xfe,0x10,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0xa0,0x10,0xe,0x4, ++0x21,0x20,0x27,0x38,0x4b,0x90,0xf,0x20,0x21,0x21,0x22,0x2b,0x34,0x28,0x17,0x0,0x10,0xa0,0xfc,0x40,0xfc,0x40,0xfe,0x88,0xfc,0x48,0x48,0xf8,0x88,0x88,0xfe,0x0, ++0x21,0x21,0x27,0x39,0x49,0x90,0x3,0x22,0x23,0x20,0x27,0x20,0x2b,0x30,0x2f,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0, ++0x22,0x22,0x22,0x3f,0x4a,0x92,0xf,0x20,0x27,0x24,0x27,0x24,0x2f,0x34,0x25,0x4,0x88,0x88,0x88,0xd0,0x9e,0xa4,0xf4,0x14,0xd4,0x54,0xc8,0x48,0xd4,0x54,0x64,0x82, ++0x20,0x27,0x24,0x3c,0x4f,0x94,0x4,0x27,0x21,0x27,0x21,0x21,0x2f,0x31,0x22,0x4,0x4,0xbe,0xa4,0xa4,0xbc,0x20,0xa4,0xbc,0x10,0xfc,0x10,0x14,0xfe,0x10,0xc,0x4, ++0x20,0x2f,0x20,0x3b,0x4a,0x97,0x5,0x2b,0x21,0x23,0x21,0x27,0x29,0x33,0x2d,0x1,0x40,0xfe,0x40,0xf8,0x48,0xfe,0x12,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4, ++0x1,0x0,0x3f,0x20,0x24,0x24,0x24,0x24,0x24,0x27,0x24,0x24,0x44,0x44,0x83,0x0,0x0,0x88,0xfc,0x0,0x0,0x0,0x8,0x30,0xc0,0x0,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x1,0x0,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x21,0x21,0x21,0x42,0x42,0x84,0x18,0x0,0x88,0xfc,0x0,0x10,0xf8,0x80,0x84,0xfe,0x40,0x40,0x40,0x40,0x42,0x42,0x3e, ++0x1,0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x2f,0x24,0x22,0x21,0x40,0x41,0x86,0x18,0x0,0x88,0xfc,0x80,0x84,0xfe,0x80,0x80,0xf8,0x10,0x20,0x40,0x80,0x60,0x1e,0x4, ++0x1,0x0,0x3f,0x24,0x24,0x27,0x28,0x30,0x27,0x24,0x24,0x27,0x44,0x44,0x84,0x3,0x0,0x88,0xfc,0x0,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe, ++0x1,0x0,0x3f,0x20,0x22,0x24,0x24,0x2f,0x34,0x24,0x24,0x24,0x45,0x46,0x84,0x4,0x0,0x88,0xfc,0x0,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20, ++0x1,0x0,0x3f,0x24,0x22,0x3f,0x20,0x20,0x2f,0x20,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x10,0x20,0xfc,0x80,0x90,0xf8,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x1,0x0,0x3f,0x22,0x3f,0x22,0x23,0x20,0x27,0x24,0x27,0x24,0x44,0x48,0x88,0x10,0x0,0x88,0xfc,0x20,0xfc,0x20,0xe0,0x0,0xf0,0x10,0xf0,0x80,0x40,0x30,0xe,0x4, ++0x1,0x0,0x3f,0x20,0x2f,0x21,0x22,0x24,0x2f,0x34,0x27,0x24,0x47,0x44,0x80,0x0,0x0,0x88,0xfc,0x80,0xfc,0x40,0xa0,0x90,0xfe,0x94,0xf0,0x90,0xf0,0x92,0x82,0x7e, ++0x1,0x0,0x3f,0x22,0x2c,0x28,0x28,0x2e,0x28,0x28,0x2f,0x29,0x42,0x44,0x88,0x30,0x0,0x88,0xfc,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x48,0x20,0x10,0xe,0x4, ++0x1,0x0,0x3f,0x21,0x2f,0x28,0x2f,0x28,0x2f,0x21,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x88,0xfc,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x0,0x3f,0x20,0x2f,0x20,0x3f,0x21,0x2f,0x22,0x27,0x2c,0x34,0x24,0x41,0x42,0x8c,0x80,0xfe,0x80,0xf8,0x88,0xfe,0x8,0xf8,0x20,0xf0,0x1e,0x94,0x90,0x40,0x30,0x8, ++0x1,0x0,0x3f,0x22,0x2f,0x22,0x2f,0x22,0x3f,0x24,0x27,0x24,0x44,0x4a,0x91,0x0,0x0,0x88,0xfc,0x20,0xa4,0x3e,0xa8,0x48,0xa8,0x28,0xa8,0x90,0x90,0xa8,0x44,0x82, ++0x0,0x3f,0x24,0x3f,0x24,0x27,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x4f,0x40,0xbf,0x80,0xfe,0x10,0xfc,0x10,0xf0,0x80,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xf8,0x80,0xfe, ++0x0,0x3f,0x20,0x2f,0x28,0x2f,0x28,0x2f,0x20,0x2f,0x20,0x3f,0x24,0x4b,0x40,0xbf,0x80,0xfe,0x0,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xf8,0x80,0xfe,0x90,0xe8,0x80,0xfe, ++0x0,0x3f,0x24,0x27,0x29,0x2a,0x3f,0x2a,0x2f,0x2a,0x2f,0x2a,0x2a,0x4a,0x51,0x80,0x80,0xfe,0x0,0xfc,0x24,0x24,0xac,0xc8,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x8, ++0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2b,0x2a,0x2f,0x20,0x27,0x20,0x5f,0x42,0x8c,0x80,0xfe,0x80,0xfe,0x0,0xf8,0x28,0xe8,0x28,0xf8,0x0,0xf0,0x0,0xfc,0xa0,0x98, ++0x0,0x3f,0x22,0x24,0x2d,0x36,0x24,0x24,0x27,0x24,0x27,0x24,0x27,0x44,0x44,0x84,0x80,0xfe,0x50,0xfc,0x90,0xfc,0x90,0x9c,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x10,0x10,0x10,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x17,0x10,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10, ++0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x90,0x90,0x10,0x10,0x10,0x10,0x50,0x20, ++0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x17,0x10,0x58,0x54,0x5f,0x90,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x0,0x8,0xfc,0x40,0x40,0x44,0xfe,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x93,0x12,0x11,0x10,0x10,0x10,0x11,0x12,0x1c,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x4, ++0x10,0x13,0x12,0x12,0x5a,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x4,0x84,0x48,0x48,0x30,0x10,0x28,0x48,0x84,0x4,0x0,0xfe,0x0, ++0x20,0x20,0x20,0x20,0xb7,0xac,0xa4,0xa4,0x24,0x27,0x24,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x10,0x59,0x56,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x11,0x11,0x11,0x12,0x5b,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x12,0xa,0x6,0x2, ++0x11,0x11,0x11,0x11,0x59,0x55,0x51,0x9f,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x10,0x20,0x40,0x80,0x4,0xfe,0x40,0x40,0x20,0x20,0x10,0x4e,0x84,0x0, ++0x10,0x10,0x10,0x10,0x59,0x56,0x54,0x91,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x40,0x40,0xa0,0x90,0x8,0xe,0x4,0xf0,0x10,0x10,0x50,0x20,0x4,0x4,0xfc,0x0, ++0x10,0x10,0x10,0x10,0x59,0x55,0x52,0x94,0x10,0x10,0x10,0x11,0x12,0x13,0x10,0x10,0x0,0x20,0xa0,0x90,0x10,0x8,0xe,0x44,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x0, ++0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x40,0x4,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x13,0x10,0x58,0x54,0x50,0x93,0x10,0x10,0x10,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0, ++0x10,0x10,0x10,0x10,0x5f,0x54,0x50,0x90,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x10,0x10,0x5b,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x10,0x10,0x10,0x40,0x50,0x48,0x40,0xfe,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40,0x40, ++0x10,0x17,0x10,0x12,0x59,0x55,0x51,0x90,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x40,0x48,0x48,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x13,0x12,0x5a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x10,0x1f,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x13,0x5a,0x56,0x52,0x92,0x12,0x1f,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x11,0x11,0x11,0x11,0x5a,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x10,0x13,0x12,0x12,0x5b,0x56,0x52,0x92,0x12,0x12,0x12,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x0,0x80,0x84,0x88,0x90,0xa0,0xc0,0x82,0x82,0x7e,0x0, ++0x10,0x10,0x10,0x17,0x58,0x54,0x57,0x94,0x14,0x17,0x10,0x10,0x11,0x11,0x12,0x14,0xa0,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0xa4,0xa0,0xfe,0xa2,0xa2,0x2a,0x24,0x20,0x20, ++0x10,0x10,0x13,0x10,0x58,0x54,0x51,0x92,0x14,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x84,0x84,0x84,0x14,0x8,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x11,0x10,0x58,0x54,0x51,0x92,0x15,0x10,0x10,0x17,0x10,0x10,0x10,0x10,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x50,0x4e,0xf4,0x40,0x48,0xfc,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x18,0x55,0x52,0x57,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x80,0x80,0x10,0x8,0xfc,0x4,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x21,0x2f,0x30,0xa8,0xa0,0xbf,0xa2,0x22,0x24,0x25,0x28,0x2f,0x20,0x20,0x21,0x10,0x10,0x90,0x14,0x7e,0x14,0xd4,0x14,0x14,0x14,0x24,0xa4,0xa4,0x44,0x94,0x8, ++0x20,0x27,0x24,0x24,0xb4,0xac,0xa7,0xa4,0x24,0x24,0x24,0x24,0x28,0x29,0x31,0x26,0x4,0xfe,0x40,0x50,0x48,0x40,0xfe,0x40,0x40,0x40,0xa0,0xa0,0xa0,0x10,0xe,0x4, ++0x20,0x27,0x24,0x24,0xb5,0xad,0xa5,0xa5,0x25,0x25,0x25,0x21,0x22,0x22,0x24,0x28,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x84,0x44,0x54,0x8, ++0x10,0x12,0x12,0x12,0x5b,0x54,0x53,0x90,0x10,0x13,0x12,0x12,0x12,0x12,0x11,0x10,0x40,0x48,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x11,0x5a,0x54,0x53,0x92,0x12,0x13,0x12,0x12,0x13,0x12,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10, ++0x10,0x10,0x11,0x11,0x5a,0x54,0x50,0x91,0x12,0x14,0x1b,0x12,0x12,0x12,0x13,0x12,0x80,0x80,0xf8,0x10,0xa0,0x40,0xa0,0x10,0xe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x27,0x24,0x28,0xb7,0xa9,0xa1,0xa2,0x27,0x20,0x20,0x2f,0x20,0x20,0x20,0x20,0x0,0xfe,0x82,0x84,0xf8,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x98,0x13,0x10,0x10,0x17,0x10,0x10,0x11,0x10,0x40,0x48,0xfc,0x40,0x40,0xfe,0x2,0x4,0xf8,0x10,0x24,0xfe,0x40,0x40,0x40,0x80, ++0x10,0x10,0x17,0x10,0x58,0x57,0x54,0x94,0x17,0x14,0x10,0x11,0x12,0x14,0x18,0x10,0x40,0x44,0xfe,0x40,0x44,0xfe,0x44,0x44,0xfc,0x44,0xe0,0x50,0x48,0x46,0x44,0x40, ++0x21,0x25,0x25,0x25,0xb5,0xad,0xa5,0xa5,0x25,0x20,0x20,0x2f,0x20,0x20,0x3f,0x20,0x0,0x0,0xfc,0x4,0x28,0x10,0x28,0x46,0x80,0x80,0x90,0xf8,0x80,0x84,0xfe,0x0, ++0x10,0x10,0x17,0x14,0x5c,0x57,0x54,0x94,0x17,0x10,0x10,0x17,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x10,0x17,0x14,0x14,0x5c,0x57,0x54,0x94,0x14,0x15,0x16,0x14,0x14,0x14,0x17,0x14,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0xc4,0xe4,0x5c,0x4c,0x44,0x44,0x4,0xfc,0x4, ++0x10,0x13,0x12,0x12,0x5b,0x54,0x57,0x94,0x14,0x14,0x17,0x14,0x14,0x14,0x13,0x10,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x44,0x44,0x44,0xfc,0x0,0x2,0x2,0xfe,0x0, ++0x12,0x11,0x10,0x13,0x58,0x50,0x57,0x94,0x14,0x17,0x10,0x11,0x12,0x14,0x10,0x10,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40, ++0x10,0x10,0x11,0x1a,0x57,0x51,0x52,0x94,0x11,0x12,0x15,0x10,0x10,0x10,0x13,0x14,0x40,0x80,0x10,0x8,0xfc,0x10,0x8c,0x84,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x4, ++0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x94,0x17,0x14,0x14,0x14,0x14,0x15,0x17,0x10,0x8,0xfc,0x20,0x28,0xfc,0x20,0xa8,0x20,0xfe,0x20,0x50,0x50,0x88,0x4,0xfe,0x0, ++0x10,0x10,0x17,0x10,0x58,0x57,0x52,0x91,0x10,0x17,0x10,0x10,0x1f,0x10,0x10,0x10,0x40,0x48,0xfc,0x40,0x44,0xfe,0x8,0x10,0xa0,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40, ++0x10,0x10,0x10,0x17,0x58,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa8,0xbc,0xa0,0xa0,0xa0,0xbc,0xa0,0xa0,0xa4,0xbe,0xa0,0xa0,0xa0,0xa0, ++0x10,0x14,0x12,0x11,0x58,0x57,0x54,0x94,0x15,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x40,0x44,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x10,0x17,0x14,0x15,0x5c,0x57,0x54,0x94,0x17,0x15,0x15,0x15,0x15,0x14,0x14,0x14,0x4,0xfe,0x4,0x14,0xa4,0xfc,0x44,0x54,0xfc,0x4,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x17,0x14,0x14,0x5d,0x54,0x54,0x97,0x14,0x15,0x15,0x15,0x15,0x15,0x18,0x10,0x4,0xfe,0x44,0x44,0xf4,0x44,0x54,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x11,0x11,0x11,0x12,0x5c,0x55,0x51,0x92,0x14,0x11,0x11,0x15,0x15,0x19,0x10,0x10,0x0,0x4,0xfe,0xa4,0xa4,0x24,0x44,0x54,0x88,0x40,0x20,0x24,0xa,0xa,0xf8,0x0, ++0x10,0x10,0x17,0x11,0x59,0x55,0x52,0x94,0x10,0x1f,0x10,0x10,0x10,0x10,0x10,0x10,0x80,0x48,0xfc,0x10,0x10,0x10,0xa8,0x44,0x40,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x20,0x27,0x24,0x24,0xb7,0xac,0xa4,0xa7,0x20,0x2f,0x29,0x29,0x29,0x29,0x3f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x24,0x24,0x24,0x24,0xfe,0x0, ++0x10,0x10,0x13,0x1a,0x53,0x50,0x5f,0x90,0x13,0x12,0x12,0x12,0x12,0x10,0x11,0x16,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x8,0xfc,0x8,0x48,0x48,0x48,0xb0,0x8,0x4, ++0x10,0x17,0x14,0x14,0x5f,0x54,0x53,0x90,0x1f,0x11,0x13,0x10,0x10,0x10,0x10,0x10,0x4,0xbe,0xa4,0xa4,0xbc,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x10,0x17,0x14,0x14,0x5f,0x54,0x50,0x9f,0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x14,0x4,0xfe,0xa4,0xa4,0xfc,0x80,0x44,0xfe,0x80,0x88,0xfc,0x88,0x8,0x8,0x28,0x10, ++0x10,0x12,0x12,0x12,0x5b,0x54,0x50,0x97,0x10,0x10,0x17,0x14,0x14,0x14,0x14,0x14,0x40,0x48,0x48,0x48,0xf8,0x0,0x4,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xc, ++0x10,0x11,0x17,0x11,0x59,0x55,0x57,0x91,0x13,0x13,0x15,0x15,0x19,0x11,0x11,0x11,0x90,0xd0,0x10,0x10,0x52,0x34,0xd8,0x10,0x10,0x90,0x50,0x28,0x28,0x44,0x82,0x0, ++0x11,0x11,0x11,0x1a,0x55,0x51,0x51,0x91,0x11,0x11,0x11,0x13,0x14,0x10,0x11,0x16,0x0,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xf8,0x10,0xa0,0x40,0xb0,0xe, ++0x10,0x10,0x17,0x18,0x57,0x50,0x5f,0x90,0x11,0x13,0x10,0x17,0x11,0x12,0x14,0x10,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x80,0x10,0xe0,0x48,0xfc,0x50,0x4c,0x44,0xc0, ++0x22,0x21,0x2f,0x21,0xb7,0xa9,0xa1,0xbf,0x21,0x21,0x27,0x21,0x23,0x25,0x29,0x21,0x10,0x24,0xfe,0x20,0xfc,0x24,0x24,0xfe,0x24,0x24,0xfc,0x20,0x30,0x2e,0x24,0x20, ++0x10,0x13,0x12,0x13,0x5a,0x57,0x52,0x93,0x12,0x13,0x13,0x13,0x15,0x15,0x19,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c, ++0x10,0x13,0x12,0x13,0x5a,0x57,0x50,0x9f,0x10,0x13,0x12,0x13,0x11,0x12,0x14,0x10,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x0,0xf8,0x8,0xf8,0x50,0x4c,0x44,0xc0, ++0x11,0x11,0x11,0x1a,0x56,0x5b,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x12,0x12,0x14,0x40,0x24,0xfe,0x20,0x20,0xfc,0x20,0x20,0xfc,0x20,0x20,0xfe,0x0,0x94,0x4a,0x2, ++0x10,0x17,0x11,0x10,0x5f,0x54,0x53,0x92,0x13,0x12,0x13,0x10,0x17,0x10,0x1f,0x10,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xfc,0x40,0xfe,0x0, ++0x11,0x11,0x1f,0x11,0x5b,0x55,0x51,0x97,0x10,0x12,0x12,0x12,0x13,0x12,0x14,0x18,0x10,0x14,0xfe,0x10,0xb8,0x54,0x10,0xfc,0x48,0x40,0x7c,0x40,0x40,0xc0,0x46,0x3c, ++0x10,0x1f,0x10,0x17,0x5d,0x55,0x55,0x97,0x10,0x13,0x10,0x1f,0x11,0x12,0x14,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0, ++0x21,0x2f,0x21,0x23,0xb2,0xab,0xa0,0xaf,0x28,0x33,0x22,0x23,0x22,0x23,0x22,0x23,0x10,0xfe,0x10,0xf8,0xa8,0xf8,0x0,0xfe,0x2,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8, ++0x0,0x3f,0x2,0x2,0xff,0x4,0x4,0x8,0x12,0x22,0xcb,0xa,0x12,0x22,0xa,0x4,0x10,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x24,0x90,0x48,0x48,0x0,0x0, ++0x3c,0x27,0x24,0x29,0x26,0x24,0x34,0x28,0x21,0x26,0x18,0xe1,0x9,0x11,0x25,0x2,0x40,0xfc,0x80,0xf8,0x88,0xf8,0x88,0xf8,0x88,0xc0,0x30,0xe,0x50,0x28,0x28,0x0, ++0x20,0x17,0x40,0x40,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x4,0x4,0x24,0xf4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x20,0x17,0x40,0x40,0x5f,0x40,0x40,0x40,0x4f,0x40,0x40,0x40,0x5f,0x40,0x40,0x40,0x4,0xfe,0x4,0x24,0xf4,0x4,0x4,0x44,0xe4,0x4,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x20,0x17,0x41,0x41,0x5f,0x41,0x41,0x4f,0x41,0x41,0x5f,0x41,0x41,0x41,0x41,0x41,0x4,0xfe,0x4,0x24,0xf4,0x4,0x44,0xe4,0x4,0x14,0xfc,0x14,0x54,0x24,0xc,0x4, ++0x20,0x17,0x42,0x42,0x42,0x5f,0x42,0x44,0x45,0x49,0x4a,0x52,0x67,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0x84,0x4,0x4,0x44,0x24,0xe4,0x4,0x14,0x8, ++0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x44,0x42,0x41,0x42,0x44,0x48,0x40,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x44,0x44,0x84,0x4,0x84,0x64,0x24,0x4,0x14,0x8, ++0x20,0x17,0x40,0x42,0x41,0x5f,0x40,0x47,0x44,0x44,0x44,0x44,0x48,0x50,0x40,0x40,0x4,0xfe,0x4,0x4,0x24,0xf4,0x4,0xc4,0x44,0x44,0x44,0x54,0x74,0x4,0x14,0x8, ++0x20,0x17,0x40,0x50,0x48,0x47,0x40,0x58,0x49,0x49,0x4a,0x4c,0x53,0x60,0x40,0x40,0x4,0xfe,0x4,0x84,0xa4,0xf4,0x84,0x84,0x44,0x34,0x14,0x4,0xfc,0x4,0x14,0x8, ++0x20,0x17,0x40,0x40,0x47,0x44,0x44,0x47,0x40,0x4f,0x48,0x48,0x48,0x4f,0x48,0x40,0x4,0xfe,0x4,0x44,0xe4,0x44,0x44,0xc4,0x4,0xe4,0x24,0x24,0x24,0xe4,0x14,0x8, ++0x20,0x17,0x40,0x40,0x5f,0x51,0x51,0x5f,0x51,0x53,0x55,0x59,0x51,0x5f,0x50,0x40,0x4,0xfe,0x4,0x4,0xf4,0x14,0x54,0xf4,0x14,0x94,0x54,0x34,0x14,0xf4,0x14,0x8, ++0x20,0x17,0x42,0x47,0x48,0x51,0x4f,0x49,0x4f,0x49,0x4f,0x41,0x41,0x40,0x40,0x40,0x4,0xfe,0x4,0xc4,0x84,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x4,0x14,0xf4,0x4,0xc, ++0x20,0x17,0x42,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x4a,0x49,0x48,0x4a,0x4c,0x48,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x14,0x24,0xc4,0x44,0x34,0x4,0xc, ++0x20,0x17,0x40,0x40,0x7f,0x40,0x5e,0x52,0x52,0x52,0x5e,0x40,0x7e,0x41,0x42,0x40,0x4,0xfe,0xa4,0x94,0xfc,0x84,0x84,0x94,0x54,0x64,0x44,0x54,0xb4,0x14,0x4,0xc, ++0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x5f,0x50,0x5f,0x50,0x5f,0x40,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x4,0xf4,0x14,0xf4,0x14,0xf4,0x14,0x8, ++0x20,0x17,0x40,0x42,0x4c,0x48,0x4e,0x48,0x4f,0x42,0x42,0x44,0x44,0x48,0x50,0x40,0x4,0xfe,0x4,0x24,0xf4,0x24,0xe4,0x24,0xe4,0x84,0x84,0x94,0x94,0x74,0x4,0xc, ++0x20,0x17,0x40,0x40,0x5f,0x49,0x45,0x5f,0x50,0x67,0x44,0x42,0x41,0x46,0x58,0x40,0x4,0xfe,0x24,0xf4,0x4,0x24,0x44,0xfc,0xc,0xd4,0x44,0x84,0x4,0xc4,0x34,0x8, ++0x20,0x17,0x40,0x4f,0x49,0x4f,0x48,0x4a,0x4c,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x84,0x54,0x34,0x4,0xe4,0x24,0xe4,0x24,0xf4,0x8, ++0x20,0x17,0x48,0x44,0x44,0x7f,0x48,0x49,0x4e,0x4a,0x4a,0x52,0x52,0x66,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xa4,0xa4,0x14,0x8c,0x64,0x24,0x4,0x84,0x64,0x24,0xc, ++0x20,0x17,0x40,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x41,0x7f,0x41,0x46,0x58,0x40,0x4,0xfe,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x44,0xfc,0x4,0xc4,0x34,0xc, ++0x20,0x17,0x40,0x5e,0x52,0x4a,0x44,0x4f,0x71,0x41,0x5f,0x41,0x42,0x44,0x58,0x40,0x4,0xfe,0x84,0xa4,0xcc,0x94,0x64,0xe4,0x1c,0x4,0xf4,0x4,0xc4,0x34,0x14,0x8, ++0x20,0x17,0x41,0x4f,0x41,0x5f,0x42,0x44,0x4f,0x40,0x4f,0x4a,0x4a,0x4a,0x5f,0x40,0x4,0xfe,0x4,0xe4,0x4,0xf4,0x4,0x44,0xe4,0x4,0xe4,0xa4,0xa4,0xa4,0xf4,0x8, ++0x20,0x17,0x41,0x5f,0x41,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x4f,0x48,0x7f,0x44,0x48,0x4,0xfe,0x4,0xf4,0x4,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xe4,0x24,0xfc,0x44,0x2c, ++0x20,0x17,0x40,0x51,0x4a,0x7f,0x44,0x55,0x55,0x5f,0x54,0x44,0x48,0x51,0x40,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x94,0x44,0x44,0x44,0x44,0xa4,0xa4,0x14,0x14,0x8, ++0x20,0x17,0x40,0x5c,0x44,0x7e,0x53,0x5e,0x52,0x5e,0x52,0x7e,0x43,0x42,0x42,0x40,0x4,0xfe,0x4,0x44,0x44,0xfc,0x14,0x94,0xa4,0xa4,0x44,0xa4,0x1c,0x4,0x14,0x8, ++0x10,0x10,0x10,0x90,0x50,0x50,0x10,0x10,0x10,0x30,0x50,0x90,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x8,0x8,0x8,0x8,0xf,0x0,0x0,0x7f,0x8,0x8,0x8,0x8,0x10,0x60,0x0,0x20,0x20,0x20,0x20,0x20,0xe0,0x20,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x4,0x24,0x24,0x24,0x24,0x3c,0x7,0x4,0xfc,0x24,0x24,0x24,0x24,0x44,0x85,0x4,0x40,0x50,0x48,0x40,0x44,0x7e,0xc0,0x40,0x48,0x48,0x50,0x20,0x60,0x92,0xa,0x4, ++0x0,0x40,0x30,0x10,0x80,0x48,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x10,0x10,0x20,0xe0,0x21,0x22,0x22,0x21,0x20,0x0,0x0,0x4,0xfe,0x0,0x0,0xf0,0x10,0x20,0x40,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x82,0x4a,0x49,0x11,0x10,0x20,0xe0,0x20,0x20,0x21,0x22,0x2c,0x0,0x0,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x0,0x40,0x30,0x17,0x80,0x48,0x4b,0x10,0x10,0x20,0xef,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x47,0x30,0x10,0x80,0x4f,0x49,0x11,0x11,0x21,0xe1,0x22,0x22,0x24,0x28,0x30,0x8,0xfc,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x40,0x40,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40, ++0x0,0x4f,0x30,0x10,0x82,0x4a,0x4a,0x12,0x12,0x23,0xe0,0x20,0x20,0x20,0x20,0x20,0x4,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x44,0xfc,0x4,0x4,0x4,0x4,0x28,0x10, ++0x0,0x40,0x20,0x2f,0x80,0x44,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0xfe,0x40,0x44,0x44,0x44,0x44,0xfc,0x44,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x40,0x33,0x12,0x82,0x4a,0x4a,0x12,0x13,0x22,0xe2,0x22,0x22,0x22,0x23,0x22,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x17,0x84,0x44,0x4c,0x14,0x17,0x24,0xe4,0x24,0x24,0x27,0x24,0x20,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4,0x0, ++0x1,0x40,0x30,0x10,0x8f,0x40,0x48,0x10,0x10,0x20,0xe0,0x20,0x20,0x20,0x20,0x20,0x0,0x80,0x80,0x4,0xfe,0x80,0x80,0xa0,0x90,0x8c,0x84,0x80,0x80,0x80,0x80,0x80, ++0x0,0x40,0x30,0x17,0x80,0x4a,0x4a,0x11,0x11,0x20,0xe0,0x20,0x21,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x8,0x8,0x8,0x10,0x10,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x40,0x30,0x17,0x80,0x48,0x49,0x11,0x11,0x21,0xe1,0x21,0x22,0x22,0x24,0x28,0x80,0x40,0x44,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x40,0x34,0x13,0x81,0x4f,0x48,0x10,0x10,0x20,0xe1,0x21,0x22,0x22,0x24,0x28,0x40,0x40,0x40,0x40,0x44,0xfe,0x84,0x84,0x84,0xc4,0x34,0x14,0x4,0x44,0x28,0x10, ++0x0,0x4f,0x39,0x1a,0x8a,0x4c,0x4a,0x19,0x19,0x29,0xed,0x2a,0x28,0x28,0x29,0x2a,0x20,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x2,0x42,0x22,0x22,0x9f,0x42,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x22,0x23,0x22,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x40,0x30,0x10,0x87,0x48,0x48,0x11,0x11,0x22,0xe2,0x24,0x28,0x20,0x20,0x20,0x40,0x50,0x4c,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x48,0x44,0x46,0x40,0x40,0x40, ++0x1,0x41,0x31,0x11,0x8f,0x49,0x49,0x11,0x11,0x22,0xe2,0x22,0x24,0x25,0x28,0x30,0x0,0x20,0x10,0x4,0xfe,0x40,0x48,0x48,0x50,0x50,0x60,0x40,0xc2,0x42,0x3e,0x0, ++0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe2,0x22,0x22,0x24,0x24,0x28,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0, ++0x0,0x40,0x30,0x13,0x82,0x4a,0x4a,0x12,0x12,0x2f,0xe0,0x20,0x20,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x0,0x40,0x30,0x1f,0x89,0x49,0x59,0x19,0x29,0x29,0xca,0x4c,0x48,0x4f,0x48,0x40,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x1c,0x4,0x4,0xfc,0x4,0x0, ++0x1,0x41,0x31,0x12,0x84,0x42,0x4a,0x13,0x16,0x22,0xe2,0x22,0x22,0x22,0x21,0x20,0x0,0x8,0xfc,0x40,0x40,0x48,0x7c,0xc8,0x48,0x48,0x68,0x50,0x42,0x2,0xfe,0x0, ++0x0,0x40,0x30,0x11,0x81,0x4a,0x4c,0x10,0x17,0x20,0xe0,0x21,0x20,0x20,0x20,0x20,0x40,0x40,0xa0,0x10,0x10,0x88,0x46,0x40,0xf8,0x8,0x10,0x20,0xc0,0x40,0x30,0x10, ++0x0,0x41,0x36,0x14,0x84,0x44,0x4c,0x14,0x15,0x26,0xe0,0x21,0x21,0x22,0x24,0x28,0x80,0x4,0x3e,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xb4,0xa8,0x20,0x20,0x20,0x20,0x20, ++0x0,0x40,0x37,0x14,0x84,0x44,0x44,0x17,0x10,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x8,0x7c,0x80,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x50,0x48,0x46,0x42,0x40,0x80, ++0x0,0x40,0x30,0x17,0x80,0x40,0x49,0x12,0x17,0x20,0xe0,0x21,0x22,0x24,0x27,0x20,0x80,0x40,0x44,0xfe,0x80,0x80,0x8,0x18,0xe0,0x40,0x80,0x0,0x10,0x8,0xfc,0x4, ++0x0,0x44,0x33,0x11,0x80,0x47,0x48,0x10,0x10,0x2f,0xe0,0x20,0x20,0x20,0x20,0x20,0x40,0x44,0x4c,0x50,0x40,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40, ++0x0,0x40,0x30,0x17,0x84,0x48,0x42,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x21,0x20,0x80,0x40,0x40,0xfc,0x4,0x4,0x10,0x30,0x40,0x80,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x0,0x4f,0x30,0x10,0x80,0x47,0x4c,0x14,0x14,0x27,0xe0,0x20,0x20,0x21,0x25,0x22,0x0,0x90,0x90,0x90,0x90,0x90,0x10,0x20,0x20,0xa0,0xa0,0xa8,0xa4,0x42,0x7e,0x0, ++0x0,0x47,0x34,0x14,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x24,0x24,0x25,0x26,0x24,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x44,0xfe,0x40,0x20,0x20,0x12,0xa,0x4, ++0x0,0x40,0x37,0x10,0x80,0x48,0x49,0x12,0x14,0x27,0xe0,0x20,0x20,0x20,0x2f,0x20,0x0,0x10,0xf8,0x10,0x20,0xc0,0x18,0x6,0x2,0xfc,0x40,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x47,0x30,0x10,0x83,0x4a,0x4a,0x13,0x12,0x22,0xe2,0x23,0x22,0x20,0x2f,0x20,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x81,0x49,0x4b,0x15,0x11,0x21,0xe1,0x21,0x21,0x21,0x21,0x21,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x0,0x40,0x37,0x12,0x82,0x43,0x42,0x14,0x16,0x29,0xe0,0x20,0x21,0x21,0x22,0x24,0x4,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0x94,0x94,0x94,0x4,0x4,0x14,0x8, ++0x0,0x40,0x30,0x17,0x80,0x4a,0x49,0x10,0x1f,0x20,0xe0,0x20,0x21,0x21,0x22,0x2c,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x8,0xe,0x4, ++0x0,0x40,0x30,0x10,0x80,0x4b,0x4a,0x12,0x12,0x22,0xe2,0x22,0x20,0x20,0x21,0x26,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0xa0,0x90,0xc,0x4, ++0x0,0x47,0x34,0x14,0x84,0x4f,0x4c,0x14,0x14,0x24,0xe4,0x25,0x26,0x24,0x27,0x24,0x4,0xfe,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0xa4,0xa4,0x14,0xc,0x4,0xfc,0x4, ++0x0,0x4f,0x28,0x18,0x89,0x49,0x49,0x19,0x19,0x29,0xe9,0x29,0x28,0x28,0x2f,0x28,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x4,0xfc,0x4, ++0x0,0x42,0x32,0x13,0x84,0x48,0x48,0x17,0x10,0x21,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x0,0x40,0x33,0x12,0x82,0x4a,0x4b,0x12,0x12,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x40,0x88,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x11,0x87,0x45,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x25,0x3f,0x20,0x40,0x40,0x80,0x8,0xfc,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0xfe,0x0, ++0x0,0x40,0x30,0x11,0x82,0x4c,0x49,0x10,0x10,0x2f,0xe0,0x20,0x21,0x22,0x27,0x20,0x40,0x40,0xa0,0x10,0x8,0xe,0xf4,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x0,0x40,0x30,0x14,0x82,0x4a,0x48,0x11,0x12,0x24,0xe0,0x21,0x21,0x22,0x24,0x28,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xb0,0xac,0xa4,0xa0,0x20,0x22,0x22,0x1e,0x0, ++0x1,0x41,0x31,0x11,0x82,0x4c,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x20,0x20,0x0,0x0,0x4,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x24,0x24,0xe4,0x4,0x28,0x10, ++0x1,0x41,0x31,0x13,0x84,0x40,0x49,0x16,0x10,0x23,0xe2,0x22,0x27,0x20,0x20,0x20,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40, ++0x2,0x41,0x31,0x1f,0x80,0x44,0x42,0x12,0x11,0x21,0xe2,0x22,0x24,0x28,0x20,0x20,0x4,0x4,0x14,0xf4,0x54,0x54,0x94,0x94,0x14,0x14,0x94,0x94,0x44,0x44,0x14,0x8, ++0x0,0x48,0x24,0x24,0x80,0x51,0x5c,0x14,0x25,0x24,0xe4,0x25,0x26,0x24,0x20,0x20,0x40,0x40,0x48,0xfc,0xa0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x47,0x30,0x10,0x83,0x48,0x48,0x13,0x10,0x2f,0xe2,0x21,0x21,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x14,0xfe,0x10,0x10,0x10,0x10,0x50,0x20, ++0x4,0x44,0x24,0x24,0x9f,0x44,0x44,0x14,0x14,0x28,0xe5,0x22,0x25,0x24,0x28,0x30,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0x24,0x24,0x24,0xbc,0xa4,0x0, ++0x0,0x40,0x37,0x10,0x80,0x4b,0x4a,0x12,0x12,0x23,0xe0,0x21,0x22,0x2c,0x20,0x20,0x40,0x44,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0xf8,0xe0,0x50,0x4e,0x44,0x40,0x40, ++0x0,0x47,0x30,0x10,0x87,0x49,0x49,0x11,0x1f,0x20,0xe3,0x22,0x22,0x22,0x23,0x22,0x8,0xfc,0x80,0x90,0xf8,0x10,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x17,0x80,0x42,0x49,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x20,0x20,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x17,0x24,0xe4,0x24,0x24,0x24,0x27,0x24,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x44,0xf4,0x54,0x54,0x74,0x44,0x44,0xfc,0x4, ++0x0,0x43,0x32,0x12,0x82,0x4b,0x48,0x10,0x12,0x22,0xe2,0x22,0x23,0x22,0x24,0x28,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0xc0,0x30,0xe, ++0x0,0x41,0x31,0x11,0x81,0x48,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x22,0x22,0x22,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x14,0x8, ++0x0,0x40,0x34,0x14,0x87,0x40,0x48,0x11,0x12,0x24,0xeb,0x20,0x20,0x20,0x20,0x20,0x40,0x40,0x44,0x44,0xfc,0x44,0xa0,0x10,0x4e,0x4,0xf8,0x8,0x10,0x20,0x40,0x80, ++0x0,0x40,0x33,0x12,0x82,0x43,0x42,0x12,0x12,0x22,0xef,0x20,0x21,0x22,0x24,0x28,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x10,0x10,0x10,0x14,0xfe,0x0,0x20,0x10,0xc,0x4, ++0x2,0x41,0x30,0x11,0x82,0x40,0x4f,0x11,0x12,0x27,0xea,0x22,0x22,0x22,0x20,0x0,0x8,0xb0,0x40,0xb0,0x48,0x80,0xfe,0x40,0x48,0xfc,0x48,0x48,0x48,0x58,0x40,0x40, ++0x1,0x41,0x31,0x12,0x84,0x47,0x4c,0x14,0x14,0x27,0xe4,0x20,0x21,0x21,0x22,0x2c,0x0,0x0,0xf8,0x10,0x24,0xfe,0x44,0x44,0x44,0xfc,0xa4,0xa0,0x20,0x22,0x22,0x1e, ++0x0,0x44,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x21,0xe1,0x21,0x21,0x22,0x24,0x28,0x80,0x40,0xfe,0x2,0x24,0xf0,0x0,0x8,0xfc,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x40,0x27,0x10,0x80,0x4f,0x48,0x10,0x13,0x22,0xe6,0x2b,0x32,0x22,0x23,0x22,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x2,0x42,0x37,0x12,0x82,0x4b,0x4a,0x12,0x13,0x22,0xe2,0x3f,0x20,0x22,0x24,0x28,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x23,0x22,0x0,0xc,0x70,0x40,0xc0,0x44,0x7e,0x48,0xc8,0x48,0x48,0x48,0x88,0x88,0x8,0x8, ++0x2,0x42,0x32,0x12,0x8f,0x42,0x56,0x17,0x2a,0x2a,0xf2,0x22,0x22,0x22,0x22,0x22,0x0,0x10,0x50,0x50,0xd0,0x48,0x88,0x26,0xa0,0x20,0x40,0x48,0x44,0xfc,0x4,0x0, ++0x0,0x40,0x37,0x10,0x80,0x4f,0x41,0x10,0x12,0x21,0xe0,0x2f,0x20,0x20,0x21,0x26,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x60,0x20,0xa4,0xfe,0x40,0x50,0x8c,0x4, ++0x0,0x4f,0x30,0x11,0x86,0x40,0x55,0x12,0x16,0x29,0xe2,0x24,0x28,0x20,0x21,0x20,0x4,0xfe,0x80,0x0,0x88,0xd0,0x60,0x60,0xd0,0x50,0x48,0x4e,0x44,0x40,0x40,0x80, ++0x0,0x47,0x34,0x14,0x87,0x54,0x54,0x17,0x10,0x2f,0xe1,0x21,0x21,0x22,0x24,0x28,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x14,0x27,0xe4,0x24,0x27,0x20,0x20,0x20,0x8,0xfc,0x8,0x8,0xf8,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x40,0x42,0x3e, ++0x0,0x40,0x30,0x11,0x82,0x4d,0x48,0x10,0x17,0x20,0xe2,0x21,0x21,0x20,0x2f,0x20,0x40,0x40,0xa0,0x10,0xe,0xf4,0x40,0x48,0xfc,0x40,0x44,0x48,0x50,0x40,0xfe,0x0, ++0x0,0x4f,0x29,0x29,0x89,0x4f,0x59,0x19,0x29,0x2f,0xe9,0x29,0x29,0x29,0x2b,0x10,0x4,0x7e,0x54,0x54,0x54,0x54,0x54,0x54,0x7c,0x44,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x40,0x37,0x14,0x88,0x43,0x48,0x10,0x17,0x20,0xe1,0x22,0x24,0x28,0x21,0x20,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80, ++0x0,0x40,0x37,0x14,0x88,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x20,0x20,0x20,0x80,0x40,0xfe,0x42,0x40,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x44,0x40,0x40,0x40, ++0x0,0x40,0x37,0x14,0x88,0x43,0x4a,0x12,0x13,0x22,0xe3,0x22,0x22,0x22,0x23,0x22,0x80,0x40,0xfe,0x2,0x4,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x0,0x43,0x30,0x10,0x83,0x48,0x48,0x17,0x10,0x24,0xe2,0x21,0x22,0x2c,0x21,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfe,0x40,0x44,0xe8,0x50,0x48,0x4e,0x44,0x80, ++0x0,0x47,0x34,0x14,0x87,0x45,0x4d,0x17,0x15,0x2d,0xed,0x35,0x25,0x25,0x21,0x21,0x44,0xe4,0x44,0x54,0xd4,0x14,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0xc4,0x14,0x8, ++0x0,0x42,0x32,0x17,0x82,0x4a,0x4a,0x12,0x13,0x20,0xe7,0x20,0x21,0x22,0x2c,0x20,0x90,0x90,0x94,0xfe,0x90,0x90,0xf0,0x0,0xfc,0x40,0xfc,0xe0,0x50,0x4e,0x44,0x40, ++0x0,0x47,0x30,0x10,0x87,0x44,0x4c,0x14,0x17,0x24,0xe0,0x27,0x20,0x20,0x2f,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xa4,0xfc,0x44,0x40,0xfc,0x40,0x44,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x81,0x4f,0x49,0x19,0x19,0x29,0xe9,0x29,0x29,0x29,0x2f,0x28,0x0,0x4,0xfe,0x80,0x4,0xfe,0x24,0x24,0xe4,0x24,0x24,0xe4,0x24,0x24,0xfc,0x4, ++0x0,0x41,0x36,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x23,0x10,0x90,0x10,0x10,0x92,0xd4,0x38,0x10,0x10,0x90,0x28,0x28,0x48,0x48,0x84,0x2, ++0x0,0x41,0x36,0x14,0x87,0x44,0x4c,0x17,0x10,0x27,0xe2,0x21,0x20,0x20,0x23,0x2c,0x40,0x44,0x5e,0x44,0x5c,0x44,0x44,0xfc,0x40,0xfc,0x8,0x10,0xe0,0xa0,0x10,0xe, ++0x0,0x41,0x33,0x12,0x83,0x4a,0x4b,0x10,0x17,0x20,0xe0,0x27,0x20,0x20,0x2f,0x20,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x0, ++0x2,0x42,0x35,0x14,0x88,0x57,0x42,0x12,0x1f,0x22,0xe7,0x2a,0x32,0x22,0x2a,0x24,0x0,0x0,0x4,0xfe,0x44,0x44,0x44,0x28,0xa8,0x28,0x10,0x90,0x28,0x28,0x44,0x82, ++0x0,0x41,0x31,0x12,0x87,0x49,0x41,0x12,0x14,0x27,0xe5,0x25,0x25,0x25,0x3f,0x20,0x20,0x20,0x20,0x10,0xfe,0x14,0x10,0x50,0x20,0xf8,0x28,0x28,0x28,0x28,0xfe,0x0, ++0x4,0x42,0x31,0x1f,0x80,0x47,0x44,0x14,0x17,0x24,0xe4,0x27,0x24,0x24,0x25,0x24,0x8,0x10,0x24,0xfe,0x0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0x88,0xa8,0x90, ++0x0,0x40,0x37,0x14,0x89,0x40,0x4b,0x12,0x12,0x23,0xe2,0x22,0x23,0x20,0x2f,0x20,0x80,0x40,0xfe,0x2,0xf4,0x0,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0, ++0x0,0x47,0x34,0x14,0x87,0x4c,0x4d,0x14,0x14,0x25,0xe4,0x25,0x28,0x28,0x33,0x20,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x0,0x47,0x34,0x14,0x87,0x44,0x4d,0x15,0x15,0x25,0xe5,0x25,0x25,0x29,0x29,0x31,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0xfc, ++0x2,0x42,0x22,0x2f,0x82,0x42,0x4f,0x12,0x12,0x22,0xef,0x22,0x22,0x22,0x22,0x22,0x20,0x20,0x3c,0x48,0x94,0x7e,0xd4,0x54,0x54,0x54,0xfc,0x40,0x42,0x42,0x3e,0x0, ++0x0,0x40,0x37,0x10,0x87,0x40,0x4f,0x11,0x12,0x25,0xe8,0x23,0x20,0x21,0x26,0x20,0x40,0x44,0xfe,0x40,0xfc,0x80,0xfe,0x10,0x8,0xfe,0x44,0xf8,0xe0,0x50,0x4c,0x40, ++0x0,0x40,0x37,0x10,0x80,0x4f,0x48,0x11,0x13,0x20,0xe7,0x24,0x24,0x24,0x2f,0x20,0x40,0x48,0xfc,0x40,0x44,0xfe,0x80,0x10,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xfe,0x0, ++0x0,0x4f,0x32,0x13,0x82,0x4b,0x4a,0x1f,0x10,0x2f,0xe8,0x25,0x22,0x25,0x28,0x30,0x8,0xfc,0x10,0xf0,0x10,0xf0,0x14,0xfe,0x10,0xfc,0x84,0x28,0x10,0x28,0xc6,0x84, ++0x1,0x41,0x3f,0x11,0x80,0x4f,0x40,0x11,0x12,0x2d,0xe1,0x27,0x21,0x21,0x22,0x24,0x10,0x10,0xfe,0x10,0x48,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfc,0x10,0x10,0x10,0x10, ++0x1,0x41,0x3f,0x11,0x8f,0x48,0x48,0x17,0x10,0x20,0xe3,0x20,0x20,0x20,0x2f,0x20,0x10,0x14,0xfe,0x10,0xfe,0x2,0x4,0xfc,0x40,0x50,0xf8,0x40,0x50,0x48,0xfe,0x0, ++0x0,0x40,0x37,0x10,0x87,0x44,0x4f,0x14,0x17,0x24,0xe0,0x2f,0x21,0x20,0x20,0x20,0x50,0x48,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x44,0x40,0xfe,0x8,0x88,0x28,0x10, ++0x0,0x47,0x30,0x10,0x87,0x44,0x44,0x17,0x10,0x20,0xef,0x20,0x21,0x22,0x2c,0x20,0x4,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x0,0x47,0x34,0x15,0x84,0x47,0x4d,0x15,0x15,0x29,0xe0,0x2f,0x22,0x21,0x20,0x20,0x8,0xfc,0x0,0xf8,0x0,0xfc,0x44,0x28,0x90,0xe,0x10,0xfe,0x10,0x10,0x50,0x20, ++0x0,0x47,0x34,0x17,0x84,0x4f,0x48,0x17,0x10,0x24,0xe3,0x22,0x24,0x20,0x22,0x21,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x9c,0x94,0xa4,0x84,0x94,0x8, ++0x0,0x47,0x34,0x17,0x84,0x45,0x4e,0x14,0x17,0x24,0xe7,0x24,0x25,0x24,0x27,0x24,0x4,0xfe,0x4,0xfc,0x84,0x8c,0x54,0xe4,0x44,0xe4,0x5c,0x4c,0x44,0x84,0xfc,0x4, ++0x2,0x42,0x33,0x15,0x88,0x40,0x4f,0x10,0x17,0x20,0xe0,0x2f,0x20,0x20,0x20,0x20,0x20,0x24,0xbe,0x50,0x88,0x3c,0xc0,0x90,0xf8,0x80,0x84,0xfe,0x80,0x84,0x84,0x7c, ++0x0,0x41,0x37,0x14,0x87,0x44,0x47,0x14,0x17,0x20,0xe0,0x3f,0x21,0x21,0x22,0x2c,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0xa0,0x94,0xfe,0x40,0x20,0x10,0xe, ++0x1,0x42,0x35,0x10,0x80,0x49,0x4e,0x13,0x10,0x20,0xe7,0x22,0x21,0x20,0x2f,0x20,0x10,0xc,0x14,0xa0,0x40,0xb0,0xe,0xf8,0x40,0x40,0xfc,0x48,0x50,0x44,0xfe,0x0, ++0x0,0x40,0x37,0x14,0x85,0x44,0x57,0x14,0x25,0x24,0xe5,0x25,0x25,0x29,0x29,0x31,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x40,0x37,0x11,0x80,0x4f,0x48,0x10,0x1f,0x21,0xe1,0x21,0x21,0x21,0x22,0x24,0x80,0x48,0xfc,0x10,0xa0,0xfe,0x82,0x44,0xfe,0x10,0xf8,0x10,0x10,0x10,0x50,0x20, ++0x0,0x4f,0x28,0x10,0x83,0x4a,0x4b,0x12,0x13,0x20,0xe0,0x2f,0x20,0x21,0x22,0x24,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4, ++0x1,0x41,0x37,0x11,0x81,0x4f,0x48,0x17,0x14,0x27,0xe4,0x27,0x24,0x21,0x22,0x24,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xfc,0x44,0xfc,0x44,0xfc,0x4,0x10,0xc,0x4, ++0x1,0x41,0x2f,0x11,0x87,0x44,0x49,0x13,0x10,0x21,0xe7,0x20,0x22,0x24,0x29,0x20,0x10,0x14,0xfe,0x10,0xfe,0x82,0x14,0xe0,0x80,0x8,0xfc,0x44,0x50,0x4c,0x44,0x80, ++0x1,0x4f,0x31,0x10,0x87,0x40,0x4f,0x10,0x17,0x20,0xe4,0x25,0x25,0x26,0x28,0x30,0x10,0xfe,0x10,0x40,0xfc,0x44,0xfe,0x44,0xfc,0x40,0x44,0x64,0x54,0x54,0x44,0x44, ++0x2,0x42,0x2f,0x12,0x87,0x4a,0x52,0x12,0x10,0x2f,0xe1,0x22,0x21,0x20,0x23,0x2c,0x10,0x10,0xfc,0x10,0x38,0xd4,0x12,0x90,0x84,0xfe,0x10,0x10,0x20,0xc0,0x30,0x8, ++0x1,0x41,0x3f,0x11,0x8f,0x49,0x4f,0x19,0x2f,0x20,0xe7,0x24,0x27,0x24,0x27,0x24,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x40,0x30,0x17,0x84,0x45,0x44,0x14,0x14,0x25,0xe5,0x24,0x2b,0x28,0x30,0x20,0x48,0x7c,0x40,0xfe,0x44,0xf0,0x44,0x3c,0x8,0xf0,0x24,0xa8,0xfe,0x20,0xa0,0x40, ++0x0,0x47,0x34,0x17,0x84,0x47,0x44,0x11,0x17,0x20,0xe1,0x27,0x22,0x24,0x29,0x20,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x8,0xf0,0x80,0x8,0xfc,0x50,0x4c,0x44,0x80, ++0x0,0x40,0x37,0x14,0x84,0x47,0x40,0x17,0x14,0x24,0xe7,0x20,0x2a,0x2a,0x32,0x21,0x40,0x44,0xfe,0x44,0x44,0xfc,0x40,0xfc,0x44,0x44,0xfc,0x40,0x88,0x46,0xa,0xf8, ++0x2,0x42,0x35,0x14,0x88,0x57,0x40,0x1a,0x1a,0x2a,0xea,0x21,0x23,0x3c,0x28,0x21,0x10,0x10,0x10,0xa4,0x7e,0xa4,0x24,0xa4,0xa8,0xa8,0x90,0x10,0xa8,0x28,0x44,0x82, ++0x0,0x48,0x25,0x12,0x86,0x4a,0x4b,0x12,0x16,0x2b,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0xa0,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44, ++0x1,0x49,0x25,0x12,0x86,0x4a,0x53,0x12,0x26,0x2a,0xf2,0x22,0x22,0x22,0x2a,0x24,0x20,0x28,0xfc,0x20,0x50,0x88,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x0,0x40,0x37,0x14,0x84,0x4f,0x4c,0x14,0x17,0x25,0xe5,0x25,0x29,0x29,0x31,0x21,0x80,0x44,0xfe,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x20,0x24,0xe8,0x30,0x62,0xa2,0x1e, ++0x4,0x42,0x32,0x1f,0x84,0x44,0x4f,0x15,0x15,0x25,0xe5,0x29,0x29,0x2d,0x32,0x21,0x20,0x20,0x24,0xfe,0x80,0x0,0x7e,0x12,0x14,0x50,0x5c,0x50,0x50,0x70,0x98,0x6, ++0x0,0x47,0x30,0x11,0x8f,0x44,0x4c,0x17,0x14,0x24,0xe7,0x24,0x24,0x3f,0x20,0x20,0x10,0x90,0x90,0x24,0xfe,0xa4,0xa4,0xa4,0xa8,0xa8,0x90,0x90,0xa8,0xa8,0xc4,0x82, ++0x2,0x42,0x2f,0x22,0x8f,0x50,0x1f,0x28,0x28,0x4f,0xc0,0x48,0x45,0x5f,0x40,0x40,0x8,0x88,0xc8,0x8,0xbe,0x8,0x88,0xa8,0x98,0x88,0x8,0x88,0x8,0xc8,0x28,0x10, ++0x9,0x49,0x29,0x1f,0x89,0x49,0x5f,0x19,0x2f,0x29,0xe9,0x3f,0x24,0x29,0x30,0x21,0x0,0xc,0x70,0xc0,0x40,0x44,0x7e,0x48,0x48,0x48,0x48,0xc8,0x48,0x48,0x88,0x8, ++0x2,0x42,0x2f,0x12,0x87,0x4a,0x42,0x17,0x14,0x27,0xe4,0x24,0x27,0x24,0x24,0x24,0x10,0x10,0xfc,0x10,0x38,0xd6,0x10,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x28,0x10, ++0x0,0x41,0x2e,0x12,0x82,0x5f,0x42,0x16,0x17,0x2a,0xea,0x32,0x22,0x22,0x22,0x22,0x10,0x90,0x54,0x38,0x10,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44,0x44,0x54,0x48, ++0x0,0x47,0x31,0x10,0x8f,0x40,0x47,0x14,0x17,0x24,0xe7,0x20,0x27,0x20,0x2f,0x20,0x40,0xfc,0x10,0xa4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfc,0x40,0xfe,0x0, ++0x7,0x44,0x37,0x14,0x85,0x44,0x4f,0x14,0x14,0x27,0xe4,0x25,0x2b,0x29,0x31,0x23,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x64,0xde,0x84,0x8,0xfe,0x8,0x8,0x18, ++0x4,0x44,0x3f,0x24,0x84,0x5f,0x15,0x55,0x5f,0x44,0xcc,0x4e,0x55,0x64,0x44,0x44,0x20,0x20,0x7c,0x88,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x46,0x82, ++0x0,0x40,0x2f,0x29,0x89,0x49,0x5f,0x19,0x29,0x2f,0xe9,0x29,0x29,0x2f,0x29,0x20,0x20,0x30,0x48,0x7e,0xc8,0x48,0x7e,0x48,0x48,0x7e,0x48,0x48,0x48,0x7e,0x40,0x40, ++0x0,0x40,0x37,0x14,0x87,0x44,0x57,0x10,0x27,0x20,0xe3,0x22,0x23,0x21,0x20,0x2f,0xa0,0xa4,0xfe,0xa4,0xfc,0xa4,0xfc,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xa0,0xfe, ++0x0,0x41,0x32,0x17,0x84,0x45,0x57,0x14,0x25,0x24,0xe5,0x24,0x29,0x29,0x31,0x21,0x80,0xf0,0x24,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x4,0x4,0xfc, ++0x0,0x4f,0x20,0x27,0x85,0x45,0x45,0x17,0x10,0x23,0xe2,0x23,0x22,0x23,0x20,0x2f,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe, ++0x0,0x40,0x37,0x15,0x87,0x4c,0x4f,0x14,0x17,0x24,0xe7,0x24,0x29,0x2a,0x34,0x20,0x40,0x24,0xfe,0x8,0xfc,0x90,0xfc,0x94,0xfe,0x94,0xfc,0x90,0x98,0x94,0x92,0x90, ++0x0,0x47,0x20,0x2f,0x88,0x53,0x40,0x13,0x10,0x2f,0xe0,0x27,0x24,0x24,0x24,0x24,0x8,0xfc,0x40,0xfe,0x42,0x58,0x40,0x58,0x40,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xc, ++0x2,0x43,0x22,0x24,0x8f,0x54,0x44,0x17,0x14,0x25,0xe4,0x27,0x24,0x24,0x24,0x27,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x0,0x43,0x32,0x12,0x83,0x48,0x4f,0x14,0x17,0x24,0xe7,0x20,0x2f,0x21,0x21,0x22,0x80,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x10,0x10,0x10, ++0x0,0x4f,0x30,0x13,0x82,0x4f,0x48,0x13,0x10,0x23,0xec,0x23,0x2c,0x23,0x2d,0x20,0x40,0xfe,0x0,0xf8,0x8,0xfe,0x2,0xfc,0x80,0x48,0x50,0x60,0xd0,0x4e,0x44,0x80, ++0x0,0x4f,0x34,0x12,0x82,0x44,0x41,0x11,0x13,0x26,0xeb,0x22,0x23,0x22,0x23,0x22,0x0,0xbc,0xa4,0x94,0x94,0xa4,0x0,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x4,0x44,0x3f,0x4,0x9f,0x51,0x11,0x3f,0x51,0x51,0xdf,0x44,0x7f,0x44,0x44,0x44,0x10,0x10,0xa8,0x28,0x44,0x82,0xfc,0x24,0xb4,0x6c,0x6c,0xb4,0x24,0x24,0xb4,0x48, ++0x2,0x43,0x32,0x17,0x84,0x4a,0x41,0x12,0x17,0x20,0xe7,0x20,0x27,0x20,0x2f,0x20,0x0,0xbc,0x24,0xa8,0x90,0xa8,0x46,0xa0,0xbc,0xa0,0xbc,0xa0,0xbc,0xa0,0xfe,0x0, ++0x0,0x5f,0x24,0x27,0x80,0x47,0x4c,0x17,0x10,0x2e,0xeb,0x2e,0x2b,0x2f,0x2a,0x37,0x80,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xf8,0x80,0x9c,0xf4,0x9c,0x54,0x54,0x96,0x62, ++0x0,0x41,0x22,0x24,0x8b,0x50,0x4f,0x19,0x2f,0x20,0xef,0x29,0x29,0x2f,0x29,0x28,0x80,0x40,0x20,0x10,0xee,0x4,0xfc,0x24,0xfc,0x0,0xfc,0x24,0x24,0xfc,0x24,0xc, ++0x0,0x42,0x2f,0x21,0x82,0x4f,0x44,0x17,0x14,0x27,0xe1,0x27,0x21,0x2f,0x22,0x24,0x40,0x48,0xfe,0x50,0x48,0xfe,0x44,0xfc,0x44,0xfc,0x10,0xfc,0x10,0xfe,0x8,0x4, ++0x40,0x3f,0x31,0x9f,0x51,0x5f,0x4,0x3f,0x20,0x5f,0xd1,0x5f,0x44,0x55,0x64,0x4c,0x4,0x7e,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82, ++0x47,0x20,0x2f,0xa,0x95,0x4f,0x45,0x17,0x12,0x2f,0xea,0x2f,0x22,0x3f,0x22,0x22,0xfc,0x40,0xfe,0x4a,0x40,0xbc,0x24,0x24,0x3c,0xa4,0xa4,0xbc,0x24,0xe4,0x54,0x88, ++0x0,0x0,0x0,0x2,0x1,0x1,0x7f,0x40,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x2,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x1,0x7f,0x42,0x82,0x2,0x3f,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x20,0x40,0x0,0x0,0xfe,0x2,0x4,0x20,0xf0,0x20,0x20,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x2,0x1,0x7f,0x40,0x80,0xff,0x4,0x4,0x8,0xf,0x18,0x28,0x48,0x8,0xf,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x0,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0xf0,0x10, ++0x2,0x1,0x7f,0x40,0x82,0x1,0x9,0x8,0x28,0x28,0x29,0x4a,0xc,0x18,0x67,0x0,0x0,0x0,0xfe,0x2,0x4,0x10,0x10,0x20,0x48,0x84,0x4,0x4,0x10,0x10,0xf0,0x0, ++0x2,0x1,0x7f,0x42,0x82,0xff,0x4,0xf,0x18,0x2f,0xc8,0xf,0x8,0x8,0x8,0x8,0x0,0x0,0xfe,0x2,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x2,0x1,0x7f,0x40,0x9f,0x10,0x17,0x10,0x1f,0x15,0x25,0x24,0x24,0x45,0x86,0x4,0x0,0x0,0xfe,0x2,0xf4,0x0,0xe0,0x8,0xfc,0x0,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x2,0x1,0x7f,0x42,0xa9,0x28,0x47,0x0,0x3f,0x21,0x3f,0x21,0x3f,0x21,0x21,0x21,0x0,0x0,0xfe,0x2,0x14,0x28,0xe4,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x28,0x10, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0xe4,0x4,0x7,0x0,0x3f,0x0,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0x4e,0x40,0xf8,0x8,0xe8,0x10, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x17,0x21,0xcf,0x1,0x3f,0x1,0x3,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xd0,0xe,0xe4,0x0,0xf8,0x0,0x0, ++0x2,0x1,0x7f,0x40,0xa5,0x24,0x25,0x3c,0x4,0xff,0x24,0x25,0x25,0x25,0x45,0x5,0x0,0x0,0xfe,0x2,0xfc,0x40,0xf8,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4, ++0x1,0x7f,0x41,0xbf,0x1,0xa,0x4,0x1f,0x30,0xdf,0x10,0x1f,0x9,0x11,0x25,0x2,0x0,0xfe,0x2,0xf8,0x0,0xa0,0x40,0xf0,0x1e,0xf4,0x10,0xf0,0x20,0x18,0x8,0x0, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x22,0xc4,0xc,0x35,0x6,0x4,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x1e,0xa4,0x40,0x20,0x1c,0x8, ++0x1,0x7f,0x40,0xbf,0x24,0x3f,0x0,0xff,0x0,0x1f,0x10,0x1f,0x4,0xc,0x75,0x6,0x0,0xfe,0x2,0xfc,0x48,0xf8,0x0,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x50,0x20,0x1c, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x8,0x1f,0x28,0xcf,0x9,0xd,0x13,0x20,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x2e,0xe4,0x0,0xe0,0x0,0xf8, ++0x1,0x7f,0x44,0x9f,0x4,0x1f,0x4,0xff,0x9,0x1f,0x27,0xc0,0xf,0x8,0x8,0xf,0x0,0xfe,0x42,0xf4,0x40,0xf0,0x44,0xfe,0x20,0xf0,0x8,0xe6,0xe0,0x20,0x20,0xe0, ++0x0,0x40,0x30,0x10,0x0,0x0,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xfc,0x0, ++0x0,0x40,0x37,0x10,0x2,0x2,0xf7,0x10,0x10,0x10,0x11,0x12,0x14,0x28,0x47,0x0,0x0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x50,0x50,0x90,0x10,0x10,0x50,0x26,0xfc,0x0, ++0x1,0x41,0x31,0x12,0x4,0x0,0xf0,0x1f,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x46,0xfc,0x0, ++0x0,0x40,0x27,0x24,0x4,0x5,0xe5,0x25,0x25,0x25,0x25,0x24,0x24,0x50,0x8f,0x0,0x0,0x8,0xfc,0x8,0x8,0xe8,0x28,0x28,0x28,0xe8,0x28,0x8,0x18,0x6,0xfc,0x0, ++0x1,0x41,0x31,0x11,0x2,0x4,0xf0,0x10,0x10,0x10,0x10,0x10,0x10,0x28,0x47,0x0,0x0,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x80,0x86,0xfc,0x0, ++0x2,0x42,0x33,0x14,0x8,0x2,0xf3,0x16,0x12,0x12,0x12,0x11,0x10,0x28,0x47,0x0,0x0,0x8,0xfc,0x40,0x48,0x7c,0xc8,0x48,0x68,0x50,0x4,0xfc,0x0,0x6,0xfc,0x0, ++0x1,0x41,0x21,0x21,0x2,0x4,0xf0,0x11,0x11,0x12,0x14,0x11,0x20,0x48,0x87,0x0,0x0,0x0,0x8,0xfc,0x8,0x10,0x40,0x50,0x48,0x44,0x44,0x40,0x80,0x6,0xfc,0x0, ++0x4,0x44,0x2f,0x24,0x4,0x4,0xe4,0x24,0x24,0x24,0x28,0x32,0x21,0x50,0x8f,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x20,0x6,0xfc,0x0, ++0x0,0x43,0x30,0x10,0x1,0x6,0xf0,0x13,0x10,0x10,0x10,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0x60,0x98,0x4,0x10,0xf8,0x40,0x40,0x48,0xfc,0x0,0x6,0xfc,0x0, ++0x0,0x40,0x31,0x12,0x4,0x7,0xf0,0x13,0x12,0x12,0x12,0x13,0x12,0x28,0x47,0x0,0x80,0x80,0x10,0x8,0x4,0xfc,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0, ++0x0,0x40,0x27,0x24,0x4,0x7,0xe4,0x24,0x25,0x29,0x29,0x31,0x21,0x50,0x8f,0x0,0x0,0x18,0xe0,0x0,0x8,0xfc,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x6,0xfc,0x0, ++0x1,0x41,0x31,0x12,0x4,0x1,0xf6,0x10,0x13,0x12,0x12,0x17,0x10,0x28,0x47,0x0,0x0,0xf8,0x10,0xa0,0x40,0xb0,0x4e,0x40,0xf8,0x40,0x48,0xfc,0x40,0x46,0xfc,0x0, ++0x0,0x40,0x2f,0x20,0xf,0x8,0xe8,0x2f,0x28,0x28,0x2f,0x28,0x28,0x50,0x8f,0x0,0xa0,0x90,0xfc,0x80,0xf8,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x98,0x6,0xfc,0x0, ++0x0,0x4f,0x30,0x17,0x4,0x4,0xf6,0x15,0x14,0x14,0x14,0x15,0x14,0x28,0x47,0x0,0x4,0xfe,0x0,0xbc,0xa4,0xa4,0xb4,0xac,0xa4,0xa4,0xa4,0xac,0xa4,0x2,0xfc,0x0, ++0x0,0x40,0x30,0x17,0x0,0x2,0xf1,0x10,0x11,0x16,0x10,0x11,0x10,0x28,0x47,0x0,0x40,0x50,0x48,0xfc,0x40,0x48,0x50,0x40,0x50,0x4c,0x44,0x40,0x80,0x6,0xfc,0x0, ++0x0,0x42,0x31,0x10,0x3,0x2,0xf2,0x13,0x12,0x12,0x13,0x12,0x12,0x28,0x47,0x0,0x40,0x48,0x50,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x18,0x6,0xfc,0x0, ++0x0,0x48,0x25,0x22,0x5,0x9,0xe3,0x25,0x29,0x31,0x21,0x25,0x22,0x50,0x8f,0x0,0x10,0x90,0x10,0x10,0x52,0x54,0x58,0x90,0x28,0x28,0x28,0x44,0x82,0x6,0xfc,0x0, ++0x0,0x41,0x32,0x17,0x1,0x2,0xf5,0x11,0x11,0x12,0x14,0x10,0x13,0x28,0x47,0x0,0x80,0x10,0x8,0xfc,0x10,0xc,0x4,0xf0,0x10,0xa0,0x40,0xa0,0x1c,0x6,0xfc,0x0, ++0x0,0x40,0x37,0x10,0x0,0xf,0xf1,0x16,0x10,0x17,0x10,0x10,0x17,0x28,0x47,0x0,0x40,0x48,0xfc,0x40,0x44,0xfe,0x10,0x4c,0x40,0xfc,0x40,0x44,0xfe,0x0,0xfe,0x0, ++0x0,0x43,0x30,0x17,0x0,0x1,0xf6,0x10,0x1f,0x11,0x13,0x10,0x11,0x2a,0x47,0x0,0x18,0xe0,0x48,0xfc,0xe0,0x50,0x4e,0x84,0xfe,0x10,0x10,0xe0,0x10,0x8,0xfe,0x0, ++0x0,0x40,0x2f,0x28,0x13,0x2,0xe2,0x23,0x22,0x23,0x22,0x22,0x23,0x52,0x8f,0x0,0x80,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x0,0xf8,0x8,0x8,0xf8,0x6,0xfc,0x0, ++0x0,0x47,0x20,0x13,0x0,0xf,0xf0,0x12,0x11,0x11,0x12,0x14,0x11,0x28,0x47,0x0,0x8,0xfc,0x8,0xf8,0x8,0xfe,0x40,0x44,0x68,0x50,0x48,0x44,0x40,0x86,0xfc,0x0, ++0x0,0x42,0x32,0x12,0x3,0x0,0xf7,0x10,0x17,0x14,0x14,0x14,0x14,0x28,0x47,0x0,0x40,0x48,0x48,0x48,0xf8,0x0,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xac,0x2,0xfc,0x0, ++0x0,0x40,0x33,0x12,0x3,0x2,0xf3,0x10,0x17,0x10,0x13,0x10,0x17,0x28,0x47,0x0,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0, ++0x1,0x40,0x37,0x10,0x7,0x4,0xf4,0x14,0x15,0x16,0x15,0x14,0x17,0x28,0x47,0x0,0x10,0xa4,0xfe,0xa0,0xfc,0xa4,0xa4,0xa4,0x1c,0x4,0xf4,0x4,0xfc,0x0,0xfe,0x0, ++0x0,0x47,0x34,0x14,0x7,0x4,0xf4,0x17,0x14,0x14,0x17,0x14,0x14,0x28,0x47,0x0,0x4,0xbe,0x84,0x84,0xbc,0x4,0x0,0x7c,0x44,0x44,0xa8,0x10,0x28,0x44,0xfe,0x0, ++0x2,0x42,0x2f,0x22,0xf,0x2,0xff,0x24,0x27,0x24,0x24,0x28,0x29,0x50,0x8f,0x0,0x10,0x10,0x94,0x3e,0xa4,0x44,0xe4,0x14,0x94,0x88,0x94,0x94,0xa2,0x42,0xfe,0x0, ++0x1,0x47,0x31,0x17,0x1,0xf,0xf0,0x13,0x12,0x13,0x12,0x1f,0x12,0x2a,0x47,0x0,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x18,0xfe,0x0, ++0x3,0x42,0x33,0x12,0x3,0x0,0xf7,0x10,0x14,0x12,0x12,0x14,0x11,0x28,0x47,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xbc,0x84,0xa4,0x94,0x94,0xa4,0x8c,0x86,0xfc,0x0, ++0x1,0x46,0x34,0x15,0x6,0x4,0xf3,0x12,0x12,0x13,0x12,0x12,0x13,0x28,0x47,0x0,0x4,0xfe,0x24,0x24,0x54,0x88,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x6,0xfc,0x0, ++0x7,0x44,0x27,0x24,0x7,0x2,0xe7,0x2c,0x37,0x24,0x27,0x24,0x27,0x54,0x8f,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0,0xfe,0x0, ++0x0,0x42,0x31,0x17,0x0,0x1,0xf6,0x12,0x13,0x14,0x1a,0x11,0x12,0x2c,0x47,0x0,0x40,0x48,0x50,0xfc,0xe0,0x50,0x4c,0x8,0xfe,0xa8,0xa8,0x3e,0x8,0x8,0xfe,0x0, ++0x0,0x40,0x20,0x27,0x4,0x7,0xe4,0x25,0x26,0x25,0x2a,0x28,0x33,0x50,0x8f,0x0,0x48,0x7c,0x40,0xfc,0x84,0xf0,0x84,0x78,0xa0,0x30,0x68,0xa4,0x24,0x60,0xfe,0x0, ++0x4,0x47,0x29,0x32,0xf,0xa,0xea,0x2f,0x2a,0x2a,0x2f,0x2a,0x2a,0x51,0x8f,0x0,0x4,0xfe,0x24,0x24,0xac,0xc4,0xa8,0xbe,0xc8,0x88,0xfe,0x88,0x88,0x88,0xfe,0x0, ++0x0,0x43,0x3c,0x2a,0x5,0x6,0xeb,0x25,0x39,0x23,0x25,0x39,0x25,0x52,0x8f,0x0,0x90,0x24,0xfe,0xc4,0x44,0x7c,0x44,0x44,0x7c,0x28,0x28,0x2a,0x4e,0x80,0xfe,0x0, ++0x0,0x40,0x2f,0x29,0x12,0x1,0xef,0x21,0x2e,0x21,0x2e,0x21,0x2e,0x50,0x8f,0x0,0x80,0x40,0xfe,0x12,0xc,0x10,0xfc,0x88,0x50,0xe0,0x50,0xce,0x40,0xc6,0xfc,0x0, ++0x2,0x44,0x22,0x2f,0x9,0x8,0xe9,0x2f,0x24,0x26,0x24,0x26,0x24,0x56,0x88,0x7,0x48,0x90,0x48,0xfc,0x24,0xc4,0x24,0xfc,0x90,0xd0,0x90,0xd4,0x94,0xdc,0x0,0xfe, ++0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x7f,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0, ++0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0x7f,0x0,0x0,0x3f,0x0,0x0,0x7f,0x0,0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x10,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x5,0x19,0x62,0x4,0x19,0x62,0xc,0x72,0x1,0x0,0xf0,0x10,0xe0,0x44,0xfe,0x8,0x10,0xa0,0xc0,0xa0,0x90,0x8e,0x84,0x80,0x0, ++0x4,0x7,0x8,0x1f,0x0,0xff,0x2,0x22,0x27,0x39,0x21,0x2f,0x29,0x32,0x24,0x8,0x0,0xf0,0x20,0xe0,0x44,0xfe,0x0,0x20,0xe4,0x28,0x30,0xe0,0x22,0xa2,0x5e,0x0, ++0x0,0x3f,0x20,0x20,0x3f,0x22,0x22,0x22,0x3f,0x22,0x22,0x22,0x44,0x44,0x88,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x0,0x20,0xf0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x2,0x3f,0x22,0x22,0x22,0x22,0x3e,0x28,0x28,0x24,0x24,0x22,0x41,0x40,0x80,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x0,0x28,0x24,0x46,0x82,0x80,0x60,0x1e,0x4, ++0x0,0x3f,0x20,0x3f,0x22,0x24,0x29,0x32,0x24,0x2d,0x34,0x24,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0x28,0xfc,0x20,0x20,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x3f,0x20,0x3f,0x20,0x2f,0x2a,0x2a,0x2c,0x2a,0x2a,0x2e,0x4a,0x48,0x88,0x8,0x4,0xfe,0x4,0xfc,0x0,0xfe,0x8,0xe8,0xa8,0xa8,0xa8,0xa8,0xe8,0x8,0x28,0x10, ++0x3f,0x20,0x3f,0x20,0x27,0x20,0x2f,0x20,0x21,0x3f,0x22,0x24,0x5f,0x44,0x84,0xc,0xfc,0x4,0xfc,0x0,0xe0,0x48,0xfc,0x80,0x80,0x7c,0x8,0x10,0x7e,0x10,0x10,0x30, ++0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x32,0x25,0x2c,0x34,0x24,0x44,0x45,0x86,0x4,0x4,0xfe,0x4,0xfc,0x20,0xbc,0xa0,0xa8,0xfc,0x20,0xa8,0xbc,0xa0,0x60,0x3e,0x0, ++0x0,0x3f,0x20,0x3f,0x22,0x24,0x28,0x33,0x24,0x2d,0x34,0x27,0x44,0x44,0x84,0x5,0x4,0xfe,0x4,0xfc,0x20,0xa8,0x20,0xfc,0xa8,0x24,0x40,0xfe,0x88,0x70,0x48,0x84, ++0x3f,0x20,0x3f,0x22,0x2f,0x20,0x27,0x20,0x3f,0x2a,0x3f,0x24,0x5f,0x44,0xbf,0x4,0xfc,0x4,0xfc,0x20,0xf8,0x80,0xf0,0x80,0xfc,0xa8,0x7c,0x10,0x7c,0x10,0xfe,0x10, ++0x0,0x7d,0x4,0x4,0x4,0x7c,0x43,0x40,0x41,0x7c,0x4,0x4,0x4,0x4,0x2b,0x10,0x8,0xfc,0x8,0x30,0x58,0x86,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x8,0x7e,0x12,0x22,0x1c,0x14,0x62,0x3f,0x0,0x1f,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0xfc,0x44,0x48,0x30,0x48,0x86,0xf0,0x10,0xf0,0x0,0xf8,0x8,0x8,0x50,0x20, ++0x0,0x7f,0x5,0x5,0x5,0x7d,0x41,0x41,0x41,0x7d,0x7,0x4,0x4,0x4,0x28,0x10,0x4,0xfe,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xfe,0x8,0x8,0x8,0x8,0x8, ++0x14,0x14,0x7f,0x15,0x15,0x7f,0x54,0x54,0x54,0x7f,0x15,0x15,0x15,0x27,0x24,0x44,0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x54,0x7c,0x44,0x40,0x42,0x42,0x3e,0x0, ++0x0,0xf0,0x1f,0x12,0x12,0x77,0x44,0x44,0x44,0x77,0x14,0x14,0x14,0x17,0xa4,0x40,0x4,0xbe,0xc4,0x4,0x4,0xbc,0xa0,0xa0,0xa4,0xbe,0x84,0x84,0x84,0x84,0xa8,0x10, ++0x79,0xd,0x79,0x47,0x79,0xd,0x31,0xff,0x0,0xf,0x8,0x3f,0x24,0x2f,0x21,0x21,0x3c,0x44,0x3c,0xe0,0x3c,0x44,0x18,0xfe,0x0,0xe0,0x20,0xf8,0x48,0xe8,0x8,0x18, ++0x1,0x11,0x11,0x11,0x11,0x1f,0x11,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x10,0x10,0x10,0x10,0xf0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x26,0x24,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x11,0x10,0xfc,0x24,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x84,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x17,0x10,0x10,0xfc,0x24,0x24,0x27,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x45,0x82,0x4,0x8,0xfc,0x40,0x40,0x40,0x44,0xfe,0x50,0x50,0x50,0x90,0x90,0x92,0x12,0xe,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x10,0x28,0x44,0x84,0x0,0x4,0xfe,0x0, ++0x11,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x0,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x25,0x26,0x24,0x24,0x45,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x40,0xa0,0xa0,0x10,0xe,0x44,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80, ++0x10,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x44,0x28,0x10,0x29,0x46,0x80,0x0,0x20,0x28,0x3c,0xe0,0x20,0x20,0x20,0xfe,0x22,0x62,0x6a,0xa4,0x20,0x20,0x20,0x20, ++0x10,0x12,0x11,0x11,0xfc,0x27,0x24,0x24,0x24,0x44,0x28,0x10,0x29,0x45,0x82,0x4,0x40,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x94,0x4,0x4,0x28,0x10, ++0x10,0x13,0x10,0x10,0xfc,0x24,0x24,0x25,0x24,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0x88,0x88,0xfe,0x0, ++0x10,0x11,0x10,0x10,0xfc,0x24,0x27,0x24,0x24,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x0,0xf8,0x8,0x50,0x20,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x44,0x84,0x0,0x0,0x8,0x48,0x28,0x28,0x28,0x8,0x8,0x8,0x8,0x48,0x90,0x10,0x28,0x46,0x82, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x28,0x44,0x87,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x27,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xec,0x44, ++0x2,0x1,0x7f,0x0,0x8,0x4,0xff,0x1,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x0,0x20,0x44,0xfe,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18, ++0x10,0x10,0x17,0x10,0xfc,0x24,0x24,0x26,0x25,0x44,0x28,0x10,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x94,0x98,0x90,0x90,0x90,0x90,0x94,0xfe,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x24,0x24,0x27,0x24,0x47,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x40,0x5c,0xe0,0x48,0x52,0x62,0x9e,0x0,0xf8,0x90,0x90,0x90,0x92,0x12,0xe, ++0x10,0x11,0x11,0x11,0xfd,0x26,0x24,0x27,0x24,0x44,0x28,0x10,0x29,0x46,0x84,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x70,0xa8,0xa8,0x24,0x22,0x20,0x20, ++0x2,0x1,0x7f,0x4,0x14,0x24,0x44,0x5,0x2,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x0,0x8,0xfc,0x40,0x50,0x4c,0x44,0x40,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18, ++0x10,0x10,0x10,0x13,0xfc,0x24,0x25,0x26,0x24,0x44,0x28,0x10,0x28,0x44,0x81,0x6,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x11,0x10,0x10,0x13,0xfc,0x24,0x24,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x81,0x2,0x4,0x88,0x0,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x10,0x10,0x13,0x12,0xfc,0x24,0x25,0x24,0x24,0x47,0x28,0x10,0x28,0x44,0x84,0x0,0x40,0x20,0xfe,0x2,0x4,0x38,0xc0,0x40,0x44,0xfe,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x11,0x28,0x44,0x87,0x0,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x44,0x28,0x10,0x28,0x44,0x84,0x0,0x20,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x44,0x28,0x10, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x12,0x2a,0x46,0x82,0x2,0x4,0xfe,0x4,0x4,0x4,0xfc,0x24,0x20,0xfe,0x22,0x22,0x52,0x8a,0x2,0xa,0x4, ++0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x4,0xbe,0x84,0x24,0x24,0x24,0xfc,0x24,0x74,0x6c,0xac,0x24,0x24,0x4,0x14,0x8, ++0x10,0x8,0x41,0x25,0x9,0x72,0x10,0x17,0x1,0xff,0x4,0x8,0x6,0x1,0x6,0x38,0x40,0x40,0x50,0x4c,0x44,0x50,0xe0,0x0,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x18, ++0x10,0x10,0x10,0x11,0xfc,0x24,0x25,0x25,0x25,0x45,0x28,0x10,0x28,0x45,0x82,0x0,0x88,0x48,0x10,0xfc,0x24,0x24,0xfc,0x20,0x20,0xfe,0x62,0x62,0xaa,0x24,0x20,0x20, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x82,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xc,0xf0,0x20,0xfc,0x20,0xfe,0x20,0x22,0x22,0x1e, ++0x20,0x27,0x24,0x25,0xf5,0x56,0x55,0x55,0x55,0x95,0x55,0x27,0x25,0x54,0x94,0x4,0x0,0x84,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8, ++0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x10,0x10,0x13,0x10,0xfc,0x25,0x24,0x24,0x27,0x44,0x28,0x11,0x2a,0x44,0x80,0x0,0x20,0x24,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x40,0xa4,0xa8,0x90,0x88,0xc6,0x80, ++0x20,0x20,0x27,0x20,0xfb,0x48,0x4f,0x48,0x4b,0x90,0x52,0x22,0x23,0x52,0x84,0x8,0x40,0x48,0xfc,0x40,0xf8,0x48,0xfe,0x48,0xf8,0x40,0x48,0x7c,0x40,0xc0,0x60,0x1e, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x25,0x24,0x27,0x4a,0x2a,0x13,0x2a,0x46,0x83,0x2,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x44,0x28,0x13,0x28,0x44,0x80,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10, ++0x11,0x10,0x10,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x0,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20, ++0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x3f,0x21,0x22,0x24,0x21,0x22,0x24,0x20,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xf8,0x8,0x88,0x48,0x8,0x88,0x48,0x18, ++0x20,0x23,0x22,0x22,0xfb,0x4a,0x4a,0x4b,0x48,0x97,0x54,0x24,0x24,0x54,0x8f,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0xa4,0xa4,0xa4,0xa4,0xfe,0x0, ++0x10,0x10,0x13,0x11,0xfc,0x25,0x24,0x27,0x24,0x44,0x28,0x11,0x2a,0x44,0x84,0x3,0x8,0x1c,0xe0,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x13,0x10,0xfd,0x25,0x25,0x24,0x27,0x4a,0x29,0x10,0x28,0x44,0x84,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x7f,0x12,0xc,0x7f,0x15,0x24,0x4c,0x2,0xff,0x4,0x8,0x4,0x3,0x4,0x38,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0x4,0xfe,0x20,0x20,0x40,0x80,0x60,0x10, ++0x10,0x10,0x13,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x2b,0x45,0x85,0x1,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8, ++0x10,0x10,0x13,0x10,0xfc,0x25,0x25,0x25,0x25,0x45,0x28,0x13,0x28,0x44,0x84,0x3,0x88,0x88,0xfe,0x88,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x11,0x11,0xfd,0x25,0x25,0x25,0x25,0x45,0x29,0x11,0x29,0x45,0x81,0x0,0x20,0x44,0xfe,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x0, ++0x20,0x23,0x21,0x20,0xfb,0x4a,0x4c,0x4b,0x48,0x88,0x51,0x22,0x24,0x50,0x88,0x3,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0x80,0xfc,0x88,0x50,0x20,0xd8,0x6, ++0x10,0x10,0x13,0x12,0xfc,0x24,0x24,0x24,0x24,0x44,0x28,0x13,0x28,0x44,0x85,0x2,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x80,0xfc,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2, ++0x10,0x11,0x11,0x11,0xfc,0x27,0x24,0x24,0x25,0x45,0x29,0x11,0x28,0x44,0x85,0x0,0x20,0x24,0x24,0xfc,0x20,0xfe,0x0,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfe,0x2, ++0x4,0x3f,0x4,0x7f,0xe,0x15,0x24,0x3f,0x21,0x21,0x3f,0x22,0x26,0x41,0x46,0x98,0x20,0x24,0x3e,0xe8,0x10,0x28,0x44,0xfe,0x0,0x4,0xfe,0x10,0x20,0xc0,0x30,0x8, ++0x20,0x23,0x20,0x21,0xf9,0x4f,0x49,0x49,0x49,0x89,0x51,0x20,0x22,0x52,0x88,0x0,0x8,0xfc,0x20,0x3c,0x20,0xfe,0x0,0x8,0xfc,0x0,0xfe,0x2,0xaa,0xaa,0x2,0xc, ++0x10,0x10,0x11,0x10,0xfd,0x24,0x27,0x24,0x25,0x45,0x29,0x11,0x29,0x45,0x85,0x1,0x20,0x28,0xfc,0x20,0x24,0xa8,0xfe,0x0,0xfc,0x4,0x74,0x54,0x74,0x4,0xfc,0x4, ++0x10,0x13,0x10,0x10,0xfd,0x25,0x25,0x25,0x24,0x45,0x28,0x13,0x28,0x45,0x82,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x24,0x22,0x20, ++0x10,0x11,0x10,0x13,0xfe,0x24,0x24,0x24,0x24,0x44,0x29,0x11,0x29,0x45,0x84,0x0,0x20,0x24,0xa8,0xfe,0x2,0xfc,0x88,0x88,0xf8,0x20,0xfc,0x24,0x24,0x2c,0x20,0x20, ++0x10,0x11,0x11,0x11,0xfd,0x25,0x24,0x24,0x25,0x44,0x28,0x11,0x28,0x45,0x86,0x0,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x40,0x84,0xf8,0x20,0x48,0xfc,0xa8,0x26,0x22,0x60, ++0x10,0x11,0x10,0x10,0xff,0x24,0x25,0x25,0x25,0x45,0x29,0x10,0x2b,0x44,0x84,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20, ++0x10,0x13,0x10,0x11,0xfc,0x25,0x25,0x25,0x24,0x47,0x28,0x11,0x29,0x45,0x85,0x1,0x20,0xfe,0x20,0xfc,0x0,0xfc,0x4,0xfc,0x88,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x10,0x11,0xfd,0x25,0x25,0x25,0x24,0x45,0x29,0x11,0x29,0x45,0x84,0x3,0x20,0xfe,0x0,0xfc,0x54,0x74,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe, ++0x0,0x3e,0x23,0x3e,0x20,0x3f,0x52,0x52,0x9e,0x1,0xff,0x4,0xc,0x3,0x4,0x18,0x40,0x20,0xfc,0x88,0x50,0xfc,0x20,0xf8,0x20,0x20,0xfe,0x20,0x40,0x80,0x60,0x10, ++0x2,0xfa,0xaa,0xaa,0xff,0xaa,0xaa,0xfa,0x22,0xfa,0x2a,0x2a,0x49,0x4a,0xac,0x10,0x0,0x3e,0x2a,0xaa,0xfe,0xaa,0xaa,0xbe,0x88,0xbe,0x8a,0x8a,0x12,0x92,0x6a,0x4, ++0x40,0x40,0x47,0x44,0xf4,0x57,0x54,0x55,0x56,0x94,0x54,0x25,0x24,0x54,0x89,0x10,0x40,0x24,0xfe,0x88,0x88,0xfe,0x88,0xdc,0xaa,0x40,0x90,0x20,0x48,0x84,0xfc,0x4, ++0x20,0x21,0x20,0x23,0xfa,0x4c,0x49,0x49,0x4f,0x89,0x53,0x23,0x25,0x55,0x89,0x1,0x8,0xfc,0x20,0xfe,0xaa,0x70,0xa8,0x20,0xfc,0x24,0x3c,0xa4,0x7c,0x24,0x3c,0x24, ++0x0,0x3f,0x4,0x4,0x4,0x8,0x8,0x11,0x21,0x49,0x89,0x11,0x11,0x21,0x5,0x2,0x0,0xf0,0x10,0x24,0x7e,0x4,0x4,0x14,0x8,0x0,0x20,0x10,0x10,0xc,0x4,0x0, ++0x1,0x9,0x9,0x11,0x23,0x0,0x1,0xff,0x2,0xc,0x31,0xc9,0x9,0x11,0x25,0x2,0x0,0x20,0x10,0x8,0x8,0x0,0x4,0xfe,0x80,0x60,0x1e,0x24,0x20,0x18,0x8,0x0, ++0x0,0x0,0x3f,0x0,0x11,0x9,0x3f,0x0,0x0,0x1,0xff,0x1,0x1,0x1,0x5,0x2,0x10,0x78,0x80,0x10,0x10,0x20,0xf0,0x40,0x80,0x4,0xfe,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x1,0xff,0x1,0x1,0x5,0x2,0x0,0x8,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0,0x0, ++0x4,0xff,0x8,0x12,0x3c,0x8,0x14,0x3e,0x0,0x1f,0x0,0x1,0xff,0x1,0x5,0x2,0x40,0xfe,0x20,0x48,0xf0,0x20,0x50,0xf8,0x0,0xe0,0x40,0x84,0xfe,0x0,0x0,0x0, ++0x0,0x3f,0x0,0x0,0x1,0x1,0x1,0x1,0x7,0x19,0x61,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0xc,0x30,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3f,0x0,0x0,0x11,0x9,0x5,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x2,0x0,0xf0,0x20,0x40,0x80,0x0,0x0,0x0,0x0,0x80,0x40,0x30,0xc,0x0,0x0,0x0, ++0x0,0x0,0xfc,0x5,0xa,0x10,0x13,0x1e,0x32,0xd3,0x12,0x12,0x12,0x12,0x51,0x20,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x8,0x28,0x12,0x2,0xfe,0x0, ++0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x17,0x8,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x0,0x4,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x9c,0x4,0x4,0xfc,0x4,0x0, ++0x8,0xfc,0x8,0x49,0x49,0x4b,0x4d,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10, ++0x8,0xfc,0x8,0x49,0x4a,0x48,0x4b,0x48,0x7c,0x4,0x5,0x1c,0xe4,0x4,0x17,0x8,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xfd,0x8,0x48,0x48,0x48,0x48,0x4b,0x7c,0x5,0x4,0x1c,0xe7,0x4,0x14,0x8,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x10,0x10,0xfe,0x12,0x34,0xc,0x32,0xc1,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x0,0xfc,0x8,0x50,0x20,0xd8,0x6,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8, ++0x8,0xfc,0x8,0x48,0x49,0x4b,0x48,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xfc,0x8,0x4b,0x48,0x48,0x48,0x4b,0x7c,0x7,0x4,0x1c,0xe4,0x5,0x15,0xa,0x80,0x80,0xbc,0xc0,0x50,0x24,0xd4,0xc,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe, ++0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x4,0x7,0x1c,0xe4,0x4,0x14,0x8,0xa0,0xa0,0x24,0x28,0x30,0x60,0xa2,0x1e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x9,0xfc,0x8,0x4b,0x48,0x48,0x48,0x48,0x7f,0x4,0x4,0x1c,0xe4,0x4,0x15,0xa,0x4,0x88,0x50,0xfe,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x0,0xfb,0x8,0x48,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x8,0x4,0xfe,0x0,0x0,0xdc,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54,0x0, ++0x8,0xfc,0xb,0x48,0x48,0x48,0x48,0x48,0x7c,0x4,0x4,0x1f,0xe4,0x4,0x15,0xa,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2, ++0x8,0xfd,0x9,0x49,0x49,0x49,0x49,0x49,0x7c,0x7,0x4,0x1c,0xe5,0x6,0x14,0x8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20,0x20, ++0x8,0xfc,0x9,0x49,0x4b,0x4d,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0xa0,0x90,0x4,0xfe,0x10,0x10,0xfc,0x10,0x10,0xfc,0x10,0x10,0x14,0xfe,0x0,0x0, ++0x8,0xfc,0x9,0x4b,0x48,0x4f,0x48,0x49,0x7e,0x5,0x4,0x1c,0xe5,0x4,0x14,0xb,0x40,0x80,0x8,0xfc,0x44,0xfe,0x90,0x28,0x46,0x90,0x20,0x44,0x88,0x30,0xc0,0x0, ++0x0,0x79,0x49,0x57,0x48,0x69,0x56,0x41,0x5f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x40,0x7c,0x40,0xfe,0x48,0x50,0x60,0x80,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8, ++0x0,0xfe,0x14,0x8,0xfe,0x1a,0x28,0x49,0x1f,0x0,0x8,0xf,0x0,0x7f,0x0,0x0,0x80,0x88,0xfc,0x88,0x50,0x20,0xd0,0xe,0xe0,0x20,0x24,0xfe,0x4,0xf4,0x14,0x8, ++0x8,0x7e,0x8,0x7e,0x8,0xff,0x10,0x3e,0x42,0x9f,0x0,0x8,0xf,0x0,0x7f,0x0,0x40,0x44,0xfe,0x88,0x50,0x20,0x58,0x86,0x0,0xf0,0x10,0x14,0xfe,0x4,0xf4,0x8, ++0x8,0xff,0xa,0x4a,0x4a,0x4b,0x4a,0x48,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x15,0x9,0x40,0xbe,0x12,0x12,0x92,0x2a,0x44,0x0,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x5,0x1d,0xe5,0x5,0x16,0x8,0x20,0x10,0xfe,0x2,0xfe,0x0,0xee,0x22,0x22,0xaa,0x66,0x66,0xaa,0x22,0xaa,0x44, ++0x8,0xfd,0x8,0x48,0x49,0x49,0x49,0x49,0x7c,0x5,0x4,0x1f,0xe4,0x5,0x16,0x8,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60, ++0x8,0xfc,0x9,0x49,0x49,0x49,0x49,0x49,0x7d,0x5,0x4,0x1c,0xe5,0x6,0x14,0x8,0x20,0x44,0xfe,0x44,0x74,0x54,0xb4,0x24,0x44,0xfc,0x0,0xa0,0xa4,0x8a,0x88,0x78, ++0x13,0xfa,0x13,0x52,0x52,0x52,0x53,0x52,0x7a,0xb,0xa,0x3a,0xcb,0xa,0x2c,0x11,0xfc,0x4,0xfc,0x0,0xf8,0x10,0xfe,0x20,0x60,0xdc,0x44,0x88,0xfe,0x88,0x88,0x98, ++0x8,0xfd,0x8,0x4b,0x48,0x49,0x49,0x49,0x7d,0x5,0x4,0x1d,0xe4,0x7,0x14,0x9,0x50,0xdc,0x50,0xde,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x88,0xfc,0x88,0xfe,0x88,0x4, ++0x10,0xff,0x10,0x57,0x54,0x57,0x51,0x53,0x79,0xb,0x9,0x3f,0xc9,0xb,0x2d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4, ++0x8,0x8,0x10,0x12,0x24,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0x10,0x11,0x22,0x7e,0x8,0x13,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x8,0x8,0x10,0x12,0x24,0x7d,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0x8,0x8,0x8,0x8,0xfe,0x8,0x8,0x88,0x48,0x48,0x8,0x8,0x8,0x28,0x10, ++0x8,0x8,0x10,0x12,0x25,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xf,0x71,0x20,0x0,0x80,0x80,0x84,0xfe,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0, ++0x8,0x8,0x10,0x12,0x25,0x7c,0x8,0x11,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x2,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xc8,0x48,0xa8,0x88,0x8a,0xa,0xa,0x4, ++0x8,0x8,0x10,0x13,0x25,0x7d,0x9,0x11,0x21,0x7d,0x21,0x1,0xe,0x72,0x24,0x8,0x40,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x8,0x8,0x11,0x12,0x24,0x7c,0xb,0x10,0x20,0x7e,0x20,0x0,0xe,0x71,0x21,0x0,0x0,0x8,0xfc,0x0,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x80,0x88,0x4,0xfc,0x4, ++0x9,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x0,0x20,0x20,0x20,0x20,0x24,0x2c,0xf0,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0, ++0x8,0x9,0x10,0x10,0x24,0x7c,0x9,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x8,0xfc,0x8,0x50,0x20,0x10,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x8,0x8,0x10,0x12,0x27,0x7c,0x8,0x10,0x20,0x7e,0x20,0x0,0xe,0x70,0x20,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x10,0x11,0x21,0x25,0x49,0xff,0x11,0x21,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x0,0x48,0x48,0x48,0x48,0x48,0xfe,0x48,0x48,0x48,0x48,0x48,0x78,0x0,0x0,0xfc,0x0, ++0x10,0x10,0x20,0x24,0x4f,0xf8,0x10,0x21,0x41,0xfd,0x42,0x2,0x1c,0xe4,0x48,0x13,0xa0,0x90,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x8,0x90,0x60,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x20,0x25,0x4a,0xf8,0x13,0x20,0x40,0xfc,0x41,0x0,0x1c,0xe0,0x43,0x0,0x80,0x80,0xf8,0x8,0x10,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x20,0x27,0x48,0xf8,0x13,0x22,0x46,0xfb,0x40,0x0,0x1c,0xe1,0x41,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x14,0x10,0x10, ++0x8,0x8,0x11,0x11,0x25,0x7d,0x9,0x10,0x21,0x7d,0x21,0x1,0xd,0x71,0x20,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0, ++0x10,0x10,0x20,0x20,0x48,0xf9,0x13,0x20,0x40,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x27,0x24,0x48,0xf9,0x13,0x24,0x43,0xfd,0x41,0x0,0x1c,0xe0,0x40,0x0,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xf8,0x6,0xfc,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x10,0x10,0x21,0x25,0x7f,0xf8,0x11,0x23,0x45,0xf9,0x41,0x1,0x1d,0xe1,0x41,0x1,0x80,0x88,0x7c,0x0,0xff,0x84,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x11,0x11,0x23,0x24,0x40,0xf8,0x11,0x26,0x43,0xfa,0x42,0x7,0x18,0xe0,0x40,0x0,0x0,0xf8,0x10,0xa0,0x40,0xa0,0x58,0x46,0xf8,0x40,0x48,0xfc,0x40,0x40,0x40,0x40, ++0x10,0x17,0x20,0x23,0x4a,0xfa,0x13,0x22,0x42,0xfb,0x42,0x1,0x18,0xe1,0x42,0x4,0x4,0xfe,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x40,0x40,0x80,0x60,0x1e,0x4, ++0x8,0x9,0x10,0x10,0x24,0x7d,0x9,0x11,0x21,0x7f,0x21,0x1,0xf,0x71,0x21,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x12,0x11,0x20,0x27,0x48,0xf8,0x13,0x22,0x42,0xfb,0x40,0x4,0x19,0xe2,0x44,0x8,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0xc4,0x54,0x48,0x40,0x40, ++0x10,0x10,0x21,0x24,0x48,0xfb,0x10,0x21,0x42,0xfc,0x40,0x1,0x1c,0xe0,0x41,0x6,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x90,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x27,0x20,0x48,0xf9,0x17,0x20,0x43,0xfa,0x42,0x2,0x1b,0xe2,0x40,0x0,0x40,0x48,0xfc,0x40,0xb0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x10,0x10,0x20,0x23,0x48,0xf8,0x10,0x23,0x40,0xfc,0x40,0x3,0x1c,0xe0,0x40,0x0,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50, ++0x10,0x12,0x21,0x21,0x48,0xff,0x14,0x24,0x45,0xfd,0x45,0x5,0x1d,0xe4,0x44,0x4,0x40,0x48,0x48,0x50,0x44,0xfe,0x4,0x4,0xf4,0x14,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x8,0x9,0x11,0x13,0x25,0x7d,0x9,0x11,0x20,0x7d,0x21,0x1,0xd,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0x16,0xd8,0x10,0x52,0x92,0xe, ++0x10,0x13,0x20,0x2f,0x49,0xf9,0x11,0x27,0x41,0xf9,0x41,0x7,0x18,0xe0,0x47,0x0,0x18,0xe0,0x44,0xfe,0x50,0x50,0x50,0xfc,0x50,0x50,0x54,0xfe,0x40,0x48,0xfc,0x0, ++0x10,0x17,0x20,0x22,0x41,0xf7,0x14,0x28,0x41,0xfc,0x41,0x0,0x1c,0xe0,0x41,0x6,0x1c,0xe0,0x0,0x48,0x50,0xfe,0x2,0x4,0xf0,0x10,0x10,0xa0,0x40,0xa0,0x1e,0x4, ++0x11,0x11,0x21,0x25,0x4a,0xfb,0x14,0x21,0x42,0xfc,0x41,0x1,0x1d,0xe1,0x41,0x1,0x10,0x10,0xd0,0x58,0x56,0x52,0x90,0x50,0x3e,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x12,0x21,0x20,0x47,0xf8,0x1f,0x20,0x41,0xfb,0x45,0x1,0x1d,0xe1,0x41,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xfe,0x14,0x10,0x50,0x24,0x4,0xfc, ++0x10,0x10,0x24,0x27,0x4c,0xf3,0x12,0x22,0x43,0xfe,0x43,0x2,0x1e,0xe2,0x43,0x2,0x80,0x40,0x40,0xfe,0x2,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x11,0x11,0x22,0x24,0x4a,0xf9,0x11,0x20,0x47,0xfc,0x44,0x7,0x1c,0xe4,0x47,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0x4,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x11,0x11,0x2f,0x21,0x49,0xf8,0x13,0x22,0x42,0xfb,0x40,0x7,0x18,0xe0,0x40,0x0,0x10,0x14,0xfe,0x10,0xf0,0x40,0xf8,0x48,0x48,0xf8,0x40,0xfe,0x40,0x40,0x40,0x40, ++0x11,0x11,0x21,0x21,0x4f,0xf9,0x13,0x23,0x45,0xfd,0x49,0x1,0x1d,0xe1,0x41,0x1,0x0,0x4,0x3e,0x24,0xe4,0x24,0x3c,0xa4,0x64,0x24,0x3c,0x24,0x24,0x24,0x3c,0x24, ++0x13,0x12,0x22,0x23,0x4a,0xfa,0x13,0x20,0x47,0xf8,0x2,0x2,0x1a,0xe3,0x44,0x18,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x40,0x48,0x7c,0x40,0x40,0xc6,0x3c, ++0x10,0x10,0x27,0x24,0x4c,0xfc,0x17,0x24,0x44,0xff,0x44,0x4,0x1c,0xe7,0x44,0x1,0x10,0x90,0xd0,0x90,0xb8,0xb6,0xd2,0x90,0x94,0x94,0x98,0x88,0x90,0xa0,0x40,0x80, ++0x10,0x10,0x23,0x22,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x40,0x48,0xfc,0x48,0xf8,0x40,0xfe,0x0,0xf8,0x8,0x48,0x48,0x88,0xb0,0xc,0x4, ++0x10,0x10,0x23,0x22,0x4a,0xfb,0x12,0x22,0x43,0xf8,0x41,0x5,0x1d,0xe5,0x48,0x0,0x0,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x80,0x40,0x24,0x2,0xa,0xf8,0x0, ++0x12,0x13,0x22,0x25,0x4d,0xf5,0x15,0x25,0x45,0xfd,0x44,0x4,0x1c,0xe4,0x44,0x7,0x4,0xfe,0x20,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0x60,0x98,0x6, ++0x11,0x11,0x21,0x22,0x4b,0xf6,0x1a,0x22,0x43,0xfa,0x43,0x2,0x1a,0xe2,0x42,0x3,0x8,0x7c,0x8,0x8,0xfe,0x40,0x48,0xfc,0x20,0x24,0xfe,0x20,0x20,0x50,0x8e,0x4, ++0x10,0x14,0x22,0x22,0x48,0xf8,0x16,0x22,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x20,0x48,0xfc,0x88,0x88,0x88,0xf8,0x80,0xf8,0x88,0x88,0x88,0xf8,0x0,0x86,0x7c, ++0x10,0x13,0x22,0x27,0x4a,0xfb,0x12,0x22,0x43,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x8,0xf8,0x40,0xfc,0x20,0x92,0xe,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x10,0x13,0x20,0x22,0x49,0xf8,0x17,0x20,0x41,0xfd,0x41,0x1,0x1d,0xe1,0x41,0x1,0x8,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x27,0x20,0x4b,0xfa,0x13,0x22,0x43,0xfa,0x43,0x2,0x1f,0xe1,0x42,0x4,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x10,0x17,0x24,0x25,0x4c,0xf7,0x15,0x25,0x45,0xfc,0x47,0x4,0x1c,0xe4,0x48,0x0,0x4,0xfe,0x0,0xf8,0x0,0xfe,0x48,0x30,0x8e,0x10,0xfe,0x90,0x50,0x10,0x50,0x20, ++0x10,0x10,0x27,0x20,0x49,0xf9,0x11,0x20,0x43,0xfa,0x42,0x2,0x1a,0xe2,0x42,0x2,0x40,0x24,0xfe,0x0,0xf8,0x8,0xf8,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x14,0x8, ++0x10,0x10,0x2f,0x21,0x4a,0xfa,0x12,0x23,0x40,0xff,0x44,0x4,0x1d,0xe4,0x44,0x4,0x80,0x44,0xfe,0x10,0xa8,0x48,0xa8,0xf8,0x44,0xfe,0x44,0x94,0xf4,0x4,0x14,0x8, ++0x10,0x12,0x21,0x20,0x4b,0xf8,0x11,0x22,0x44,0xfb,0x42,0x2,0x1a,0xe2,0x4f,0x0,0x0,0x8,0x10,0x0,0xfc,0x0,0x10,0x8,0x4,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x11,0x10,0x2f,0x20,0x4b,0xf8,0x17,0x20,0x40,0xfb,0x40,0x1,0x1a,0xe4,0x48,0x0,0x10,0xa4,0xfe,0xa0,0xf8,0xa8,0xfe,0xa8,0xa8,0xf8,0xa0,0xb0,0xa8,0xae,0xa4,0xa0, ++0x10,0x10,0x27,0x24,0x48,0xf9,0x11,0x21,0x41,0xf9,0x41,0x7,0x18,0xe1,0x42,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x17,0x20,0x28,0x4f,0xf4,0x14,0x27,0x40,0xfb,0x40,0xf,0x19,0xe2,0x45,0x0,0x8,0xfc,0xa0,0xa4,0xfe,0xa4,0xa4,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80, ++0x13,0x12,0x23,0x22,0x4b,0xf8,0x17,0x24,0x47,0xf8,0x43,0x2,0x19,0xe0,0x43,0xc,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0xa4,0xfc,0x0,0xf8,0x8,0xb0,0x40,0xb0,0xe, ++0x10,0x17,0x24,0x2f,0x54,0xf7,0x14,0x21,0x43,0xf8,0x40,0x7,0x19,0xe2,0x45,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x84,0x10,0xe0,0x40,0x88,0xfc,0x50,0x4c,0x44,0x80, ++0x10,0x17,0x24,0x22,0x4a,0xf4,0x10,0x20,0x41,0xfa,0x45,0x0,0x19,0xe0,0x40,0x7,0x4,0xbe,0xa4,0x94,0x94,0xa4,0x50,0x88,0x24,0x42,0x90,0x60,0x88,0x30,0xc0,0x0, ++0x12,0x12,0x24,0x22,0x4a,0xf7,0x14,0x27,0x44,0xf7,0x40,0xf,0x18,0xe1,0x46,0x0,0x48,0x48,0x90,0x48,0x48,0xfc,0x44,0xfc,0x44,0xfc,0x40,0xfe,0xe0,0x50,0x4e,0x40, ++0x12,0x12,0x22,0x2f,0x42,0xfa,0x17,0x20,0x47,0xfd,0x45,0x5,0x1d,0xe7,0x40,0x0,0x4,0xfe,0x10,0xa4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x28,0x26,0xc2, ++0x10,0x10,0x2f,0x20,0x4a,0xf9,0x13,0x22,0x43,0xfa,0x43,0x1,0x1a,0xe4,0x41,0x0,0x40,0x44,0xfe,0xa0,0xa8,0x10,0xfe,0xc,0xf8,0x8,0xf8,0x50,0x4c,0x44,0x40,0x80, ++0x12,0x11,0x27,0x24,0x4d,0xfc,0x17,0x24,0x43,0xfa,0x42,0x3,0x1a,0xe2,0x43,0x2,0x8,0x10,0xfc,0x44,0x54,0x44,0xfc,0x4,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x1f,0x20,0x27,0x4c,0xff,0x14,0x27,0x40,0xff,0x44,0x7,0x1c,0xe7,0x40,0xf,0x4,0xfe,0x0,0xfc,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe, ++0x10,0x11,0x25,0x23,0x4a,0xf9,0x10,0x2e,0x42,0xfa,0x42,0x2,0x1a,0xe5,0x48,0x0,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xf8,0x88,0xf8,0x80,0xf8,0x88,0xf8,0x86,0x7c, ++0x10,0x11,0x21,0x25,0x49,0xf8,0x17,0x24,0x44,0xff,0x40,0x7,0x18,0xe1,0x46,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0xbc,0xa4,0xa4,0xbc,0x40,0xfe,0xe0,0x50,0x4e,0x40, ++0x10,0x13,0x22,0x26,0x4b,0xf8,0x17,0x20,0x43,0xfa,0x43,0x1,0x1b,0xe5,0x49,0x1,0x8,0xfc,0xa8,0xa8,0xf8,0x4,0xfe,0x0,0xf8,0x8,0xf8,0x44,0x48,0x30,0x8e,0x4, ++0x11,0x15,0x27,0x29,0x47,0xfb,0x15,0x29,0x43,0xfa,0x42,0x2,0x1a,0xe0,0x41,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0x2a,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x0,0x2,0x2,0x4,0x4,0x8,0x10,0x3f,0x0,0x1,0x2,0x4,0x8,0x10,0x3f,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0xc0,0x80,0x0,0x0,0x0,0x20,0x10,0xf8,0x8, ++0x11,0x25,0x79,0x11,0x29,0x7d,0x1,0xff,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x40,0x3,0x10,0x24,0x78,0x10,0x28,0x7c,0x10,0xfe,0x80,0x88,0x48,0x50,0x50,0x22,0xd2,0xe, ++0x0,0x0,0x4,0x4,0x4,0x9,0x9,0x12,0x9,0x9,0x4,0x4,0x4,0x0,0x0,0x0,0x0,0x0,0x90,0x90,0x90,0x20,0x20,0x40,0x20,0x20,0x90,0x90,0x90,0x0,0x0,0x0, ++0x11,0x11,0x22,0x44,0x22,0x11,0x11,0x0,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x20,0x10,0x10,0x20,0x40,0x20,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x21,0x42,0x21,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x21,0x21,0x3f,0x20,0x20,0x1f,0x84,0x8,0x10,0x8,0x88,0xf0,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0xa,0x2,0xfe, ++0x0,0x8,0x7d,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x10,0x1c,0x70,0x21,0x0,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0xe,0x0, ++0x0,0x8,0x7c,0x13,0x10,0x10,0x7d,0x10,0x10,0x17,0x10,0x1c,0x70,0x20,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x44,0x54,0x48,0x40, ++0x0,0x8,0x7c,0x10,0x11,0x12,0x7c,0x13,0x10,0x10,0x10,0x1c,0x71,0x21,0x2,0x4,0x10,0x90,0x90,0x90,0x8,0x4,0x2,0xf8,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x0,0x8,0x7c,0x17,0x10,0x11,0x7d,0x11,0x10,0x10,0x10,0x1c,0x71,0x22,0x4,0x8,0x80,0x40,0x24,0xfe,0x8,0x8,0x8,0x10,0x90,0xa0,0x40,0xa0,0x10,0x8,0xe,0x4, ++0x0,0xb,0x7c,0x10,0x10,0x10,0x7c,0x13,0x10,0x10,0x10,0x10,0x1c,0x70,0x27,0x0,0x8,0xfc,0x40,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x50,0x48,0x48,0x40,0xfe,0x0, ++0x0,0x8,0x7f,0x10,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10, ++0x0,0x8,0x7c,0x10,0x17,0x10,0x7c,0x10,0x11,0x11,0x11,0x1e,0x72,0x24,0x8,0x10,0x80,0xa0,0x98,0x88,0xfe,0xa0,0xa0,0xa4,0x24,0x28,0x30,0x20,0x62,0xa2,0x1e,0x0, ++0x0,0x8,0x7c,0x10,0x10,0x10,0x7c,0x10,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x1,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x44,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x8,0xfc,0x21,0x21,0x23,0xfd,0x21,0x21,0x21,0x25,0x39,0xe1,0x41,0x1,0x1,0xa0,0xa8,0xa4,0x24,0x20,0x3e,0xe0,0x20,0x20,0x20,0x10,0x10,0x12,0xa,0xa,0x4, ++0x0,0x8,0x7c,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x9,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x11,0x1d,0x71,0x21,0x1,0x4,0xfe,0x4,0x4,0xfc,0x24,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x4a,0x8a,0x6, ++0x2,0x12,0xfa,0x2f,0x22,0x22,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe4,0x4a,0x11,0x0,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4,0x0,0x0, ++0x0,0xb,0x7d,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x73,0x20,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0xe,0xf8,0x8,0x8,0x8, ++0x1,0x11,0xf9,0x21,0x27,0x21,0xf9,0x21,0x21,0x21,0x2f,0x20,0x39,0xe2,0x44,0x8,0x10,0x10,0x10,0x10,0xfc,0x10,0x10,0x10,0x10,0x14,0xfe,0x0,0x10,0x8,0x4,0x4, ++0x0,0xb,0x7c,0x10,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x1d,0x70,0x20,0x0,0x3,0x4,0xfe,0x20,0x40,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x0,0x17,0xf8,0x22,0x22,0x24,0xf7,0x21,0x21,0x22,0x2a,0x34,0xe4,0x4a,0x1,0x0,0x0,0xc0,0xbe,0xa2,0xa4,0xa4,0xe8,0xa4,0xa4,0xa2,0xa2,0xa2,0xb4,0xa8,0x20,0x20, ++0x1,0x11,0xfa,0x24,0x29,0x21,0xfa,0x26,0x2a,0x22,0x22,0x3a,0xe2,0x42,0x2,0x2,0x0,0x8,0x7c,0x0,0x0,0x4,0xfe,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x1,0x11,0xf9,0x25,0x23,0x21,0xf9,0x21,0x23,0x2d,0x21,0x39,0xe2,0x42,0x4,0x18,0x20,0x20,0x24,0x2c,0x30,0x20,0x20,0x30,0x2c,0x24,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x1,0x11,0xf9,0x22,0x25,0x20,0xf8,0x20,0x23,0x2c,0x23,0x3a,0xe2,0x42,0x3,0x2,0x0,0x0,0xfc,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x1f,0x21,0x49,0x11,0x23,0x0,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x0,0x8,0xfc,0x8,0x20,0x18,0x8,0x0,0xfc,0x0,0x10,0xf8,0x40,0x24,0xfe,0x0, ++0x0,0x13,0xfa,0x24,0x23,0x20,0xf8,0x21,0x23,0x20,0x28,0x37,0xe0,0x40,0x0,0x0,0x0,0xfe,0x42,0x44,0xfc,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x14,0xfa,0x21,0x20,0x26,0xfa,0x22,0x22,0x22,0x22,0x3a,0xe2,0x45,0x8,0x0,0x20,0x20,0x24,0xfe,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0, ++0x1,0x9,0x7f,0x11,0x11,0x11,0x7d,0x11,0x11,0x11,0x11,0x17,0x1c,0x71,0x22,0x4,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x1,0x11,0xff,0x21,0x20,0x23,0xfa,0x22,0x22,0x22,0x27,0x38,0xe0,0x41,0x2,0xc,0x10,0x14,0xfe,0x10,0x40,0xf8,0x48,0x48,0x48,0x48,0xfe,0x40,0xa0,0x10,0xe,0x4, ++0x0,0x10,0xfb,0x20,0x20,0x21,0xfb,0x20,0x23,0x22,0x22,0x3a,0xe3,0x42,0x0,0x0,0x40,0x48,0xfc,0x40,0xa0,0x14,0xfe,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x0,0x10,0xf8,0x23,0x22,0x22,0xfb,0x22,0x22,0x22,0x22,0x3a,0xe2,0x44,0x9,0x2,0x48,0x7c,0x40,0xfe,0x42,0x78,0xc4,0x7c,0x0,0xf0,0x90,0x90,0x90,0x92,0x12,0xe, ++0x0,0xb,0x7e,0x12,0x13,0x12,0x7e,0x13,0x12,0x12,0x13,0x1e,0x72,0x22,0x3,0x2,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x20,0x24,0xa8,0x30,0x20,0xa2,0x22,0x1e, ++0x0,0x8,0x7d,0x11,0x12,0x10,0x7c,0x11,0x12,0x11,0x11,0x1e,0x70,0x21,0x2,0xc,0x40,0x40,0x48,0x50,0x40,0xa0,0x98,0x48,0x44,0x48,0x50,0xa0,0xa0,0x10,0xe,0x4, ++0x0,0x14,0xff,0x24,0x28,0x23,0xf8,0x20,0x27,0x20,0x21,0x39,0xe2,0x44,0x1,0x0,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x40,0x50,0x48,0x44,0x44,0x40,0x80, ++0x0,0x14,0xff,0x24,0x2a,0x23,0xfa,0x24,0x24,0x2a,0x21,0x39,0xe2,0x44,0x8,0x10,0x80,0x40,0xfe,0x2,0x4,0xbc,0xa4,0xa4,0xa4,0xa4,0x34,0x28,0x22,0x22,0x1e,0x0, ++0x0,0x17,0xfc,0x28,0x21,0x22,0xf8,0x20,0x2f,0x20,0x20,0x39,0xe2,0x44,0x8,0x0,0x0,0xfe,0x2,0xa4,0x18,0x8,0x40,0x44,0xfe,0x40,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x0,0x13,0xfa,0x22,0x23,0x22,0xfa,0x23,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x7,0xfc,0x25,0x24,0x25,0xf8,0x20,0x23,0x22,0x23,0x3a,0xe3,0x42,0x3,0x2,0x4,0xfe,0x4,0xf4,0x4,0xf4,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x0,0x10,0xf9,0x22,0x25,0x28,0xff,0x24,0x24,0x27,0x24,0x3c,0xe7,0x44,0x4,0x5,0x40,0xc0,0x20,0x10,0xe8,0x6,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x88,0xa8,0x90, ++0x0,0x17,0xfa,0x21,0x20,0x23,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x1c,0xe0,0x48,0x50,0x20,0xfc,0x80,0xfe,0x0,0xf8,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x17,0xfc,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x24,0x3f,0xe4,0x44,0x4,0x4,0x4,0xbe,0x84,0x84,0x84,0xbc,0x4,0x0,0xbc,0x4,0x24,0xa8,0x10,0x28,0x46,0x84, ++0x1,0x11,0xfa,0x21,0x21,0x20,0xf8,0x23,0x22,0x22,0x22,0x3a,0xe3,0x42,0x3,0x2,0x24,0x24,0x48,0x24,0x24,0x40,0x84,0xfe,0x4,0x94,0x64,0x94,0xc,0x4,0xfc,0x4, ++0x0,0x17,0xfa,0x21,0x27,0x24,0xf8,0x27,0x21,0x21,0x22,0x3a,0xe4,0x48,0x1,0x6,0x38,0xc0,0x48,0x50,0xfe,0x82,0x84,0xfe,0x0,0xf0,0x10,0xa0,0x40,0xa0,0x1e,0x4, ++0x0,0x10,0xfb,0x22,0x22,0x22,0xfb,0x22,0x22,0x22,0x23,0x3d,0xe5,0x49,0x11,0x1,0x40,0x24,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x11,0xff,0x21,0x21,0x20,0xff,0x24,0x27,0x20,0x27,0x38,0xe7,0x40,0xf,0x0,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xfc,0x40,0xfe,0x0, ++0x1,0x11,0xff,0x21,0x21,0x2f,0xf8,0x23,0x22,0x23,0x22,0x3b,0xe0,0x41,0x2,0x4,0x10,0x10,0xfc,0x10,0x14,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x0,0x10,0xc,0x4, ++0x0,0x17,0xfd,0x25,0x26,0x26,0xfb,0x24,0x20,0x2f,0x20,0x39,0xe0,0x40,0x1,0x6,0x0,0xbc,0xac,0xac,0xb4,0xb4,0x18,0xa4,0x40,0xfe,0x90,0x10,0xa0,0x40,0xb0,0xc, ++0x0,0x14,0xfc,0x27,0x21,0x21,0xfb,0x22,0x27,0x2a,0x23,0x3a,0xe2,0x43,0x2,0x2,0x40,0x44,0x44,0xfc,0x44,0x20,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0,0x0, ++0x0,0x10,0xfb,0x22,0x22,0x22,0xfa,0x23,0x22,0x22,0x23,0x38,0xe5,0x45,0x9,0x0,0x40,0x84,0xfe,0x44,0x74,0x94,0xd4,0x24,0x44,0x84,0xfc,0x40,0x24,0x2a,0xa,0xf8, ++0x4,0x2,0xf2,0x2f,0x24,0x24,0xf7,0x25,0x25,0x25,0x35,0xe9,0x49,0x15,0x22,0x1,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x12,0x54,0x50,0x5e,0x50,0x50,0xb0,0x90,0xe, ++0x0,0x17,0xf9,0x20,0x2f,0x20,0xfb,0x22,0x23,0x22,0x23,0x38,0xef,0x40,0x0,0x0,0x40,0xfc,0x10,0xa0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x40,0xfe,0x40,0x40,0x40, ++0x0,0x14,0xfa,0x20,0x2f,0x21,0xf8,0x27,0x20,0x23,0x20,0x3f,0xe0,0x40,0x3,0xc,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfe,0x40,0xa0,0x18,0x6, ++0x2,0x13,0xfa,0x27,0x28,0x25,0xfa,0x24,0x2a,0x21,0x27,0x38,0xe1,0x42,0xc,0x0,0x0,0xbc,0x4,0xa8,0x90,0x28,0x46,0x40,0x48,0x50,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x0,0x10,0xff,0x24,0x24,0x27,0xfc,0x24,0x27,0x24,0x27,0x3c,0xe7,0x48,0x13,0x0,0x78,0x40,0xfe,0x82,0xf4,0x88,0xf8,0x0,0xfe,0xc0,0x68,0xb0,0x68,0xa6,0x24,0x40, ++0x0,0xf,0xf8,0x28,0x28,0x2f,0xf2,0x22,0x2b,0x2a,0x2a,0x3a,0xcb,0x5e,0x0,0x0,0x20,0xa0,0xbe,0xc4,0xa4,0xa8,0x10,0x28,0xc4,0x82,0x7c,0x44,0xc4,0x44,0x7c,0x44, ++0x3e,0x23,0x3e,0x20,0x3f,0x22,0x62,0xbe,0x0,0x7f,0x1,0x3f,0x1,0x1,0xff,0x0,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0xfc,0x0,0xf8,0x40,0x24,0xfe,0x0, ++0x1,0x5,0xf7,0x29,0x2f,0x23,0xf5,0x29,0x23,0x22,0x22,0x3a,0xe2,0x40,0x1,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0xf,0x78,0x4b,0x68,0x4b,0x6a,0x4b,0x48,0xff,0x80,0x3f,0x1,0x1f,0x1,0x1,0xff,0xe4,0x3e,0xa4,0x2c,0xa4,0xac,0xa4,0x24,0xfe,0x2,0xf8,0x0,0xf0,0x40,0x24,0xfe, ++0x0,0x3e,0x22,0x3e,0x22,0x3e,0x0,0xff,0x9,0x28,0x2f,0x28,0x38,0x48,0x84,0x3,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x26,0xfc, ++0x20,0x23,0x22,0xfa,0x23,0x22,0xfa,0x23,0x20,0xfb,0x2a,0x2a,0x3a,0x22,0x2f,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xf8,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x20,0x20,0x27,0xfa,0x21,0x21,0xf8,0x23,0x22,0xfa,0x2b,0x2a,0x3a,0x22,0x23,0x22,0x8,0x3c,0xc0,0x48,0x48,0x50,0x84,0x3e,0x4,0x4,0xbc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x30,0x38,0x54,0x50,0x90,0x11,0x11,0x12,0x14,0x18,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x10,0x12,0x12,0xe,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x30,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x80,0x84,0xfe,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x4,0x28,0x10, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x39,0x54,0x50,0x90,0x10,0x11,0x12,0x14,0x18,0x0,0x8,0xfc,0x8,0x88,0x50,0x50,0x10,0xa0,0xa0,0x40,0xa0,0x20,0x18,0xe,0x4, ++0x10,0x10,0x13,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x17,0x10,0x10,0x10,0x0,0x10,0xf8,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x19,0x12,0x0,0x4,0xfe,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x10,0x12,0x12,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x24,0x2c,0xb0,0x20,0x20,0x20,0x20,0x22,0xa2,0x22,0x1e,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x3a,0x54,0x50,0x90,0x10,0x10,0x10,0x13,0x1c,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x42,0x48,0x48,0x50,0x50,0x20,0xc0,0x0,0x0, ++0x1,0x1,0x1,0xff,0x3,0x5,0x9,0x31,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0xf4,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x10,0x10,0x10,0x10,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x13,0x12,0x12,0x12,0x12,0x40,0x40,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0xa4,0x9c,0xc,0x4,0x4,0x14,0x8, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x90,0x10,0x10,0x11,0x12,0x14,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x28,0x48,0x48,0x60,0xa0,0xa2,0x22,0x1e,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x32,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x80,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x11,0x11,0x11,0x11,0xfd,0x11,0x31,0x3b,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x0,0x8,0x18,0x20,0x40,0x80,0x4,0xfe,0x40,0x20,0x20,0x10,0x10,0x4e,0x84,0x0, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x52,0x92,0x14,0x14,0x18,0x11,0x10,0x0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xa8,0xa8,0x48,0x44,0x84,0x2,0x0, ++0x2,0x4,0x1f,0x10,0x12,0x11,0x10,0x1f,0x1,0x1,0x7f,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0x10,0x60,0x4,0xfe,0x4,0x4,0xf4,0x94,0x48,0x30,0xe,0x0, ++0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x80,0x40,0x40,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x8,0x8,0x50,0x20, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x11,0x10,0x0,0x8,0xfc,0x48,0x48,0x48,0x48,0x48,0xf8,0x8,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x10,0x10,0xfc,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0xfc,0x8,0x90,0x60,0x20,0xfe,0x22,0x24,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x1,0x1,0x7f,0x5,0x9,0x11,0x20,0xdf,0x0,0x0,0x7f,0x1,0x9,0x11,0x25,0x2,0x0,0x8,0xfc,0x40,0x30,0xe,0x24,0xf0,0x0,0x8,0xfc,0x0,0x20,0x18,0x8,0x0, ++0x11,0x11,0x11,0x17,0xfd,0x10,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x14,0xfe,0x10,0x8,0xfc,0x88,0x88,0x88,0x88,0xa8,0x90,0x80,0x80,0x80, ++0x10,0x10,0x17,0x10,0xfc,0x10,0x31,0x39,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x0,0x4,0xfe,0x80,0x80,0x80,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x10,0xff,0x10,0x30,0x38,0x54,0x50,0x91,0x11,0x12,0x12,0x14,0x18,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa0,0xa4,0xa4,0xa8,0x28,0x30,0x62,0xa2,0x1e,0x0, ++0x10,0x13,0x12,0x12,0xfe,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x12,0x13,0x10,0x8,0xfc,0x0,0x40,0x40,0x78,0x88,0x10,0x20,0x20,0x50,0x8c,0x4,0x0,0xfe,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x12,0x31,0x38,0x57,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x0,0x8,0xfc,0x40,0x40,0x48,0x50,0x44,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x53,0x92,0x12,0x12,0x14,0x14,0x18,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x11,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20, ++0x10,0x11,0x11,0x11,0xfd,0x11,0x30,0x3b,0x54,0x50,0x91,0x10,0x10,0x10,0x10,0x10,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfe,0x80,0x88,0xfc,0x8,0x8,0x88,0x50,0x20, ++0x10,0x10,0x10,0x10,0xfd,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3a,0x57,0x52,0x91,0x11,0x12,0x12,0x14,0x10,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x10,0x10,0x8,0x4,0x4,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x20,0x60,0x20,0x30,0x2c,0x24,0x20,0x20,0x20, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x8,0x1c,0xe0,0x0,0x8,0xfc,0x0,0xf8,0x88,0x88,0xa8,0x90,0x82,0x82,0x7e,0x0, ++0x10,0x10,0x10,0x10,0xfd,0x12,0x34,0x38,0x54,0x53,0x90,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0xa0,0x40,0x20, ++0x10,0x10,0x10,0x11,0xfd,0x12,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x10,0x10,0x10,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0xe4,0x24,0x4,0x28,0x10, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x3a,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x10,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x10,0x52,0x8a,0x26,0x12,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x32,0x3b,0x54,0x50,0x90,0x11,0x12,0x14,0x10,0x10,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x24,0x22,0x22,0xa0,0x40, ++0x10,0x10,0x10,0x13,0xfe,0x14,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x11,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0x10,0x30,0x40,0x80,0x0,0x4,0x4,0xfc,0x0, ++0x10,0x13,0x12,0x11,0xfc,0x10,0x30,0x3b,0x54,0x50,0x93,0x10,0x10,0x10,0x17,0x10,0x0,0xf8,0x8,0x10,0xa0,0x40,0xb0,0xe,0x44,0x50,0xf8,0x40,0x40,0x48,0xfc,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x52,0x94,0x18,0x10,0x10,0x10,0x10,0x40,0x40,0x48,0xf8,0x50,0x64,0xfe,0x80,0xfc,0x40,0x88,0xfc,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x54,0x51,0x92,0x14,0x18,0x10,0x10,0x10,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x32,0x3a,0x55,0x50,0x90,0x10,0x10,0x10,0x17,0x10,0x0,0x8,0xfc,0x90,0x90,0x90,0x94,0x94,0x94,0x98,0x90,0x90,0x90,0x94,0xfe,0x0, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x30,0x39,0x54,0x53,0x90,0x10,0x10,0x11,0x12,0x14,0x80,0x80,0x9c,0xe0,0x50,0x20,0x52,0x8e,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe, ++0x10,0x10,0x17,0x10,0xfc,0x11,0x32,0x3b,0x54,0x50,0x97,0x10,0x10,0x10,0x1f,0x10,0x0,0x4,0xfe,0x40,0x80,0x10,0x8,0xfc,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x10,0x10,0x10,0x10,0xfc,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x10,0x10,0x11,0x16,0x40,0x44,0x7e,0x40,0x48,0xfc,0x8,0x48,0x48,0x48,0x48,0x48,0x80,0xb0,0xc,0x4, ++0x10,0x10,0x14,0x12,0xfd,0x10,0x37,0x38,0x54,0x50,0x90,0x10,0x11,0x11,0x12,0x14,0x40,0x40,0x44,0x48,0x50,0x44,0xfe,0xa0,0xa0,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x10,0x10,0x12,0x12,0xff,0x10,0x33,0x38,0x54,0x53,0x92,0x12,0x12,0x12,0x11,0x10,0x40,0x40,0x48,0x48,0xf8,0x0,0xf8,0x8,0x8,0xf8,0x8,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x17,0x11,0xfd,0x12,0x3a,0x37,0x51,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x6,0xfc,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x10,0x37,0x38,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x11,0xfe,0x12,0x32,0x3a,0x57,0x52,0x92,0x12,0x12,0x12,0x13,0x12,0x0,0x40,0xc0,0x4,0x3e,0x4,0x4,0x4,0xbc,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x50,0x97,0x10,0x10,0x10,0x10,0x10,0xa0,0xa0,0xa4,0x28,0x30,0x60,0xa4,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x10,0x10,0x11,0x12,0xfe,0x14,0x31,0x39,0x53,0x55,0x91,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0x7c,0x0,0x80,0x84,0x7e,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x57,0x90,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x8,0xfc,0x80,0x80,0x10,0x8,0xfc,0x4, ++0x10,0x10,0x1e,0x22,0x24,0x54,0x8,0x11,0x21,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x10,0x10,0xfc,0x10,0x50,0x90,0xfc,0x10,0x14,0xfe,0x80,0x40,0x30,0xe,0x4,0x0, ++0x2,0x1,0x7f,0x4,0x14,0x14,0x24,0x45,0x1,0xff,0x3,0x5,0x9,0x11,0x61,0x1,0x0,0x8,0xfc,0x40,0x50,0x48,0x44,0x44,0x0,0xfe,0x80,0x40,0x30,0xe,0x4,0x0, ++0x1,0x11,0x9,0x3f,0x2,0x7f,0x4,0x8,0x31,0xc1,0x3f,0x1,0x9,0x11,0x25,0x2,0x0,0x10,0x20,0xf8,0x0,0xfc,0x40,0x30,0xe,0x4,0xf8,0x0,0x20,0x18,0x8,0x0, ++0x10,0x10,0x12,0x13,0xfe,0x14,0x30,0x38,0x57,0x50,0x91,0x10,0x10,0x10,0x11,0x12,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0x84,0xfe,0x88,0x8,0x90,0x60,0x90,0xc,0x4, ++0x10,0x10,0x17,0x10,0xfc,0x12,0x32,0x38,0x54,0x51,0x96,0x10,0x10,0x10,0x12,0x11,0x0,0x4,0xbe,0x84,0x84,0xa4,0x94,0x94,0x84,0x8c,0xb4,0x84,0x84,0x84,0x94,0x8, ++0x8,0x8,0x8,0xfe,0x1c,0x2a,0x49,0x0,0xf,0x8,0xa,0x9,0x8,0x10,0x10,0x60,0x20,0x20,0x24,0xfe,0x70,0xa8,0x26,0x20,0xf0,0x20,0x20,0xa0,0xa0,0x22,0x22,0x1e, ++0x10,0x11,0x11,0x11,0xfd,0x12,0x30,0x3b,0x54,0x51,0x91,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x17,0x12,0xfd,0x11,0x33,0x38,0x54,0x50,0x97,0x10,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x48,0x50,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x10,0x10,0x10,0x11,0xfe,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x34,0x28, ++0x10,0x10,0x10,0x17,0xfc,0x11,0x30,0x3f,0x54,0x50,0x90,0x17,0x10,0x10,0x10,0x10,0x80,0x40,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x40,0x48,0xfc,0x40,0x40,0x40,0x40, ++0x10,0x12,0x11,0x11,0xfc,0x12,0x32,0x38,0x55,0x51,0x92,0x16,0x12,0x12,0x10,0x13,0x10,0x10,0x10,0x10,0x54,0x52,0x90,0x14,0x14,0x18,0x8,0x10,0x20,0x40,0x80,0x0, ++0x10,0x13,0x10,0x10,0xfd,0x10,0x30,0x3b,0x54,0x51,0x91,0x12,0x10,0x10,0x11,0x16,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x48,0x48,0x50,0xa0,0x90,0xe,0x4, ++0x10,0x10,0x10,0x13,0xfc,0x10,0x37,0x38,0x55,0x53,0x95,0x19,0x11,0x11,0x11,0x11,0x40,0x40,0x44,0xf8,0x50,0x64,0xfe,0x80,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x8,0x8,0x7e,0x8,0x1c,0x2a,0x49,0x4,0x8,0x10,0x2f,0xc4,0x4,0x4,0x8,0x10,0x20,0x28,0xfc,0x20,0x70,0xac,0x20,0xc0,0x20,0x10,0xee,0x24,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x13,0x10,0xfc,0x13,0x31,0x38,0x56,0x51,0x90,0x17,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0x40,0xfe,0x22,0xa4,0x20,0x20,0x24,0xfe,0x40,0x58,0x86,0x2, ++0x8,0xa,0x7f,0x14,0x14,0x3f,0x4,0x7f,0x4,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x8,0xc,0x70,0x40,0x44,0x7e,0x48,0x48,0x88,0x8,0xfe,0x80,0x40,0x30,0xe,0x0, ++0x10,0x10,0x10,0x10,0xff,0x12,0x33,0x3a,0x57,0x52,0x90,0x1f,0x10,0x10,0x10,0x10,0x44,0x7e,0x40,0x48,0xfc,0x8,0xf8,0x8,0xf8,0x48,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x10,0x13,0x12,0x12,0xfe,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x13,0x1c,0x4,0xfe,0x94,0x94,0x94,0xfc,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0xc0,0x0,0x0, ++0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3a,0x57,0x52,0x92,0x1f,0x10,0x10,0x17,0x10,0x10,0x38,0xc0,0x44,0xfe,0x48,0x48,0x48,0xfc,0x48,0x48,0xfe,0x40,0x48,0xfc,0x0, ++0x10,0x10,0x10,0x17,0xf8,0x10,0x33,0x3a,0x56,0x52,0x93,0x10,0x12,0x14,0x19,0x10,0x80,0x40,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x40,0x48,0x46,0x42,0x80, ++0x10,0x10,0x17,0x10,0xff,0x12,0x32,0x3b,0x54,0x53,0x90,0x1f,0x10,0x10,0x11,0x10,0x80,0x48,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x0,0xf8,0x10,0xfe,0x40,0x40,0x40,0x80, ++0x10,0x10,0x17,0x11,0xfd,0x12,0x37,0x39,0x55,0x51,0x95,0x15,0x12,0x15,0x18,0x10,0x10,0x14,0x7e,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x16,0xfc,0x0, ++0x10,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x52,0x91,0x10,0x11,0x16,0x11,0x10,0x40,0x48,0xfc,0x48,0x48,0xfe,0x48,0x48,0xf8,0x48,0x50,0xe0,0x50,0x4e,0x44,0x80, ++0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x13,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x13,0x10,0xfd,0x10,0x37,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x11,0x16,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfc,0x10,0x8,0xf6,0x40,0xf8,0x40,0xb0,0xc,0x4, ++0x11,0x11,0x13,0x11,0xfd,0x11,0x31,0x39,0x55,0x51,0x9f,0x12,0x12,0x12,0x13,0x10,0x10,0x10,0xfc,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x50,0x88,0x0,0xfc,0x0, ++0x20,0x20,0x20,0x2f,0xf8,0x20,0x37,0x6d,0x64,0xa5,0x24,0x24,0x27,0x24,0x24,0x24,0x40,0x40,0x44,0xfe,0x40,0x44,0xfe,0x14,0xa4,0xf4,0x44,0x44,0xfc,0x44,0x54,0x8, ++0x10,0x10,0x10,0x17,0xfc,0x11,0x32,0x3c,0x57,0x52,0x93,0x12,0x13,0x10,0x1f,0x10,0x40,0x40,0x48,0xfc,0xe0,0x50,0x4e,0x44,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x53,0x90,0x10,0x11,0x12,0x14,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x58,0xe8,0x48,0xf8,0xc0,0xe0,0x50,0x4e,0x44,0x40, ++0x11,0x15,0x15,0x15,0xfd,0x15,0x30,0x3b,0x56,0x52,0x92,0x12,0x12,0x10,0x11,0x16,0x20,0x20,0x24,0x3e,0x50,0x88,0x8,0xfc,0x8,0x48,0x48,0x48,0xa8,0xa2,0x22,0x1e, ++0x10,0x13,0x12,0x12,0xfb,0x10,0x37,0x3a,0x57,0x52,0x93,0x12,0x12,0x1f,0x10,0x10,0x8,0xfc,0x8,0x8,0xf8,0x0,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xe,0xf8,0x8,0x8, ++0x10,0x10,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x57,0x94,0x14,0x14,0x14,0x17,0x14,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xbc,0xa4, ++0x10,0x10,0x3e,0x48,0x8,0x7e,0x14,0x22,0x41,0x1,0xff,0x3,0x5,0x39,0xc1,0x1,0x8,0xfc,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x0,0x4,0xfe,0x80,0x40,0x30,0xe,0x0, ++0x10,0x10,0x17,0x11,0xf9,0x17,0x31,0x3b,0x53,0x55,0x95,0x19,0x11,0x11,0x11,0x11,0x10,0xd0,0x10,0x10,0x54,0xd4,0x38,0x90,0x50,0x28,0x28,0x28,0x28,0x44,0x82,0x0, ++0x10,0x10,0x13,0x12,0xfe,0x13,0x32,0x3a,0x57,0x52,0x92,0x13,0x1e,0x12,0x12,0x13,0x40,0xbc,0x24,0x24,0x24,0xa6,0x40,0x3c,0x84,0x24,0x28,0xa8,0x10,0x28,0x46,0x84, ++0x10,0x14,0x12,0x12,0xfc,0x10,0x36,0x3a,0x56,0x52,0x92,0x12,0x12,0x15,0x18,0x10,0x20,0x44,0xfe,0x84,0x84,0xfc,0x80,0xfc,0x84,0x84,0x84,0xfc,0x80,0x6,0xfc,0x0, ++0x10,0x10,0x17,0x10,0xfd,0x10,0x37,0x38,0x54,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x80,0x48,0xfc,0x0,0x10,0xa4,0xfe,0x40,0x48,0xfc,0x40,0x50,0x4c,0x44,0x40,0x80, ++0x10,0x14,0x12,0x14,0xfc,0x15,0x35,0x3d,0x55,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x0,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x11,0x10,0x13,0x10,0xfc,0x13,0x30,0x38,0x57,0x50,0x91,0x12,0x14,0x18,0x13,0x10,0x8,0x90,0xfc,0x40,0x50,0xf8,0x40,0x44,0xfe,0x80,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x14,0x12,0x10,0xfc,0x17,0x30,0x39,0x56,0x55,0x98,0x13,0x10,0x10,0x10,0x10,0x80,0x44,0x48,0x10,0x4,0xfe,0xa0,0x10,0x48,0xf6,0x40,0xf8,0x40,0x40,0x40,0x40, ++0x10,0x14,0x17,0x14,0xf8,0x13,0x30,0x3b,0x56,0x53,0x92,0x13,0x12,0x10,0x1f,0x10,0x80,0x40,0xfe,0x2,0x14,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0xfe,0x0, ++0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x10,0x17,0x11,0x11,0xfd,0x12,0x3a,0x35,0x54,0x5b,0x92,0x12,0x12,0x12,0x1f,0x10,0x0,0xf8,0x10,0x1c,0xe4,0xa4,0x44,0xb4,0x8,0xfc,0xa8,0xa8,0xa8,0xa8,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xff,0x10,0x37,0x39,0x52,0x55,0x98,0x17,0x10,0x11,0x16,0x10,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0x38,0xce,0x44,0xfc,0xe0,0x58,0x44,0x40, ++0x10,0x13,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x93,0x12,0x12,0x12,0x13,0x10,0x8,0xfc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0xdc,0x50,0x50,0x54,0xfe,0x0, ++0x10,0x13,0x12,0x13,0xfe,0x13,0x38,0x37,0x50,0x54,0x92,0x11,0x16,0x10,0x12,0x11,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xbe,0x84,0xa4,0x94,0x8c,0xb4,0x84,0x94,0x8, ++0x11,0x11,0x11,0xfa,0x17,0x32,0x3b,0x56,0x53,0x92,0x10,0x17,0x10,0x10,0x10,0x10,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x10,0x11,0x13,0x12,0xff,0x12,0x3b,0x36,0x52,0x57,0x90,0x11,0x12,0x14,0x11,0x10,0x84,0x4,0xc4,0x44,0xc4,0x7e,0xc4,0x64,0x54,0xd4,0xc4,0x44,0x44,0x44,0x54,0x88, ++0x10,0x10,0x13,0x12,0xff,0x12,0x33,0x38,0x57,0x51,0x92,0x14,0x1b,0x10,0x10,0x10,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x10,0x48,0x46,0xf8,0x40,0x40,0x40, ++0x10,0x10,0x17,0x10,0xfd,0x11,0x37,0x39,0x55,0x50,0x91,0x13,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x0,0xf8,0x8,0xfe,0x8,0xf8,0x84,0x48,0x30,0x10,0x4e,0x84,0x0, ++0x10,0x10,0x17,0x10,0xfb,0x12,0x33,0x38,0x57,0x54,0x95,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x22,0x14,0xff,0x8,0x49,0x49,0x7f,0x8,0x11,0x21,0xff,0x3,0xd,0x31,0xc1,0x1,0x4,0x7e,0xc4,0x7c,0x44,0x7c,0x44,0x94,0x8,0x0,0xfe,0x80,0x40,0x30,0xe,0x0, ++0x10,0x10,0x17,0x14,0xf8,0x11,0x31,0x39,0x55,0x51,0x91,0x1f,0x10,0x11,0x12,0x14,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x10,0x17,0x14,0xf8,0x11,0x32,0x38,0x55,0x52,0x97,0x1a,0x12,0x12,0x13,0x12,0x80,0x40,0xfe,0x2,0xa4,0x10,0x48,0xa0,0x10,0x8,0xfe,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x14,0x12,0x12,0xf8,0x16,0x33,0x3a,0x56,0x53,0x92,0x12,0x12,0x13,0x12,0x10,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x44,0x44,0x7c,0xc4,0x44,0x7c,0x44, ++0x10,0x13,0x12,0x12,0xff,0x12,0x33,0x3a,0x57,0x53,0x95,0x15,0x15,0x15,0x19,0x11,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x11,0x11,0x1f,0x11,0xfd,0x10,0x37,0x3c,0x57,0x50,0x97,0x10,0x13,0x10,0x1f,0x10,0x10,0x14,0xfe,0x10,0xf0,0x44,0xfe,0x44,0xfc,0x40,0xfc,0x40,0xf8,0x40,0xfe,0x0, ++0x10,0x10,0x17,0x10,0xfa,0x11,0x37,0x38,0x57,0x54,0x95,0x15,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x0,0xfc,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x13,0xfe,0x12,0x32,0x3a,0x57,0x52,0x93,0x12,0x14,0x15,0x18,0x10,0x10,0x18,0x14,0xfe,0x10,0x90,0xd2,0x92,0xf4,0x94,0xd8,0xa8,0x9a,0xaa,0xc6,0x4, ++0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x50,0x9f,0x11,0x11,0x10,0x10,0x10,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xfc,0x0,0xfe,0x0,0xf8,0x8,0x48,0x30, ++0x10,0x12,0x11,0x14,0xff,0x14,0x31,0x39,0x55,0x51,0x90,0x17,0x10,0x10,0x17,0x10,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xfc,0x40,0x44,0xfe,0x0, ++0x44,0x29,0x10,0x2f,0x48,0x19,0x2b,0x4d,0x9,0x29,0x11,0xff,0x5,0x19,0x61,0x1,0x48,0xf0,0x54,0xfe,0x80,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0x30,0xe,0x0, ++0x22,0x22,0x23,0x24,0xff,0x25,0x75,0x6f,0x65,0xa5,0x27,0x25,0x25,0x25,0x29,0x30,0x4,0x4,0xd4,0x8c,0xcc,0x64,0x54,0xd4,0x46,0x7c,0xc4,0x44,0x44,0x44,0x44,0x84, ++0x10,0x13,0x10,0x11,0xff,0x12,0x32,0x3b,0x56,0x53,0x92,0x12,0x17,0x10,0x10,0x10,0x8,0xc8,0x88,0x10,0xfe,0x64,0x54,0xd4,0x54,0xd4,0x48,0x68,0xc8,0x54,0x52,0x60, ++0x22,0x22,0x22,0x2f,0xf2,0x22,0x7f,0x6a,0xa2,0x2b,0x2a,0x2a,0x2e,0x2a,0x31,0x20,0x10,0x18,0x14,0x94,0x7e,0x50,0xd0,0x54,0x54,0xc8,0x6a,0x56,0x20,0x6,0xfc,0x0, ++0x14,0xff,0x14,0x3f,0x41,0xbd,0x25,0x3d,0x2,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x24,0x3e,0x44,0xa4,0x28,0x10,0x28,0x46,0x0,0xfe,0x80,0x40,0x30,0xe,0x0, ++0x1,0x3f,0x9,0x7f,0x40,0x9f,0x8,0x1f,0x68,0xf,0x1,0xff,0x5,0x19,0x61,0x1,0x0,0xf8,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x4,0xfe,0x40,0x30,0xe,0x0, ++0x20,0x20,0x2f,0x28,0xfa,0x29,0x6f,0x78,0x6a,0xaa,0x2b,0x28,0x28,0x28,0x29,0x32,0x0,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x94,0x14,0x22, ++0x10,0x10,0x10,0x11,0xfd,0x13,0x35,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x12,0x14,0xa0,0x90,0x84,0xfe,0x10,0x10,0xfc,0x10,0xfc,0x10,0x14,0xfe,0x0,0xa8,0xa6,0x2, ++0x10,0x10,0x11,0x12,0xfd,0x10,0x3a,0x36,0x53,0x50,0x97,0x14,0x14,0x15,0x14,0x14,0x40,0xa0,0x10,0x48,0xf6,0xa0,0x48,0xa8,0xf8,0x44,0xfe,0x44,0xa4,0xf4,0x14,0x8, ++0x11,0x11,0x12,0x17,0xfc,0x17,0x3c,0x37,0x50,0x5f,0x90,0x13,0x12,0x13,0x12,0x13,0x0,0xf0,0x24,0xfe,0x44,0xfc,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8, ++0x11,0x10,0x17,0x10,0xff,0x12,0x33,0x3a,0x56,0x52,0x93,0x10,0x1f,0x12,0x11,0x10,0x10,0xa0,0xfc,0xa0,0xf8,0xa8,0x38,0x8,0xe8,0x8,0xf8,0x10,0xfe,0x10,0x50,0x20, ++0x10,0x13,0x12,0x13,0xfe,0x13,0x32,0x3b,0x56,0x52,0x92,0x12,0x13,0x14,0x18,0x10,0x4,0xfe,0x4,0xfc,0x20,0xac,0x70,0xac,0x20,0xa8,0xfc,0x20,0xfe,0x20,0x20,0x20, ++0x10,0x13,0x10,0x10,0xff,0x10,0x33,0x38,0x57,0x54,0x95,0x17,0x15,0x15,0x14,0x14,0x0,0xf8,0x90,0x60,0xfe,0xc4,0x48,0x44,0xfe,0xa4,0x14,0xfc,0x14,0xf4,0x14,0x8, ++0x20,0x22,0x22,0x22,0xf4,0x2f,0x32,0x6c,0x64,0xaf,0x20,0x23,0x2c,0x20,0x21,0x20,0x40,0x78,0x48,0x48,0xf8,0x8,0xfe,0x20,0x54,0xb8,0x50,0xb8,0x54,0x92,0x10,0x30, ++0x10,0x13,0x10,0x17,0xfd,0x14,0x31,0x38,0x57,0x52,0x92,0x13,0x12,0x12,0x13,0x12,0x10,0xf8,0x40,0xfe,0x52,0xe4,0x50,0x40,0xf8,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8, ++0x10,0x10,0x11,0x13,0xfe,0x13,0x33,0x3a,0x56,0x52,0x92,0x12,0x14,0x14,0x18,0x10,0x80,0xf8,0x10,0xfe,0x88,0x24,0xfe,0x0,0xfc,0x0,0xfc,0x0,0xfc,0x84,0xfc,0x84, ++0x10,0x1f,0x10,0x17,0xfd,0x15,0x35,0x3f,0x50,0x53,0x90,0x1f,0x11,0x12,0x15,0x10,0x40,0xfe,0x0,0xfc,0x14,0xf4,0x14,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0x80, ++0x0,0x3e,0x23,0x3e,0x20,0x3f,0x62,0xa2,0x3e,0x1,0xff,0x3,0xd,0x31,0xc1,0x1,0x20,0x28,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x24,0xfe,0x80,0x40,0x30,0xe,0x0, ++0x10,0x14,0x17,0x15,0xf9,0x12,0x35,0x3b,0x52,0x54,0x9b,0x10,0x11,0x12,0x14,0x10,0x80,0x40,0xfe,0x2,0xbc,0xa8,0xb0,0x10,0xe8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0, ++0x0,0x22,0x14,0xff,0x14,0x7f,0x55,0x55,0x67,0x41,0x7f,0x41,0x41,0x7f,0x40,0x1,0x20,0x28,0x24,0xa4,0x20,0xfe,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4, ++0x8,0x7f,0x8,0x3e,0x8,0x7f,0x10,0x1e,0x22,0x4a,0x5,0xff,0x1,0x2,0xc,0x70,0x40,0x44,0x7e,0x48,0x88,0x28,0x10,0x28,0x46,0x90,0x8,0xfe,0x0,0x80,0x70,0xe, ++0x0,0x4,0xfe,0x20,0x20,0x3d,0x26,0x45,0x64,0x98,0x8,0x10,0x10,0x20,0x41,0x6,0x8,0xfc,0x88,0x88,0x88,0xe,0x0,0xf8,0x8,0x88,0x50,0x20,0x50,0x90,0xe,0x4, ++0x0,0x5,0xff,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x21,0x47,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0xf8,0x8,0x8,0x8,0x8,0xfe,0x0, ++0x0,0x4,0xfe,0x21,0x22,0x3c,0x24,0x45,0x64,0x98,0x9,0x11,0x12,0x24,0x41,0x0,0x80,0x84,0xfe,0x0,0xf8,0x10,0x24,0xfe,0x94,0x94,0x24,0x24,0x44,0x84,0x28,0x10, ++0x0,0x4,0xfe,0x20,0x21,0x3e,0x24,0x44,0x67,0x98,0x8,0x11,0x10,0x20,0x41,0x6,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x60,0x80,0x0, ++0x0,0x5,0xff,0x21,0x21,0x3c,0x25,0x45,0x65,0x99,0x9,0x11,0x11,0x20,0x40,0x3,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x4,0x24,0x24,0x24,0x24,0x24,0x50,0x8c,0x4, ++0x0,0x4,0xfe,0x20,0x21,0x3e,0x25,0x44,0x64,0x99,0x9,0x11,0x11,0x20,0x47,0x0,0x20,0x20,0x50,0x88,0x4,0xa,0xfc,0x0,0x44,0x24,0x24,0x28,0x28,0x10,0xfe,0x0, ++0x0,0x5,0xfe,0x21,0x20,0x3c,0x25,0x44,0x64,0x98,0xb,0x10,0x10,0x20,0x40,0x0,0x1c,0xe0,0x0,0x24,0xa8,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x1,0x4,0xfe,0x21,0x21,0x3d,0x25,0x45,0x65,0x99,0x8,0x10,0x13,0x20,0x40,0x0,0x4,0x88,0x10,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20, ++0x0,0x5,0xfe,0x20,0x20,0x3b,0x2a,0x4a,0x6a,0x9a,0xb,0x12,0x10,0x20,0x4f,0x0,0x0,0xfc,0x8,0x10,0x20,0xbe,0xa2,0xb4,0xb4,0xa8,0xb6,0x22,0xa0,0x44,0xfe,0x0, ++0x0,0x4,0xff,0x22,0x24,0x3d,0x25,0x45,0x65,0x99,0x9,0x17,0x10,0x21,0x42,0x4,0x80,0x40,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x0,0xb,0xfc,0x21,0x20,0x3b,0x2a,0x4d,0x68,0x99,0x9,0x11,0x10,0x20,0x47,0x0,0x20,0xfe,0x20,0xfc,0x0,0xfe,0x2,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0, ++0x10,0x10,0x15,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x9,0x8,0x0,0x4,0xfe,0x24,0x24,0xa4,0xa4,0xa4,0x24,0x24,0x24,0x44,0x44,0x84,0x28,0x10, ++0x20,0x21,0x29,0xfd,0x41,0x51,0x91,0xfd,0x11,0x11,0x1d,0xf2,0x52,0x14,0x18,0x10,0x4,0xfe,0x0,0x0,0x4,0x7e,0x44,0x44,0x44,0x54,0x48,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x14,0xfe,0x23,0x28,0x48,0x7e,0x9,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x15,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x48,0x8,0x8,0x8,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10, ++0x10,0x10,0x14,0xfe,0x20,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x49,0xa,0xa,0xc,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x10,0x14,0xfe,0x20,0x28,0x48,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0x9,0xa,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0,0x48,0x48,0x84,0x6,0x2, ++0x10,0x10,0x14,0xfe,0x20,0x29,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0xb,0x20,0xa0,0xa0,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x8e,0x4, ++0x20,0x20,0x28,0xfc,0x41,0x52,0x94,0xfc,0x11,0x10,0x18,0xf1,0x50,0x10,0x11,0x16,0x40,0x40,0xa0,0xa0,0x18,0x26,0x40,0x80,0x10,0x20,0x40,0x88,0x10,0x60,0x80,0x0, ++0x10,0x10,0x15,0xfe,0x20,0x29,0x48,0x7e,0x8,0x9,0xe,0xf8,0x48,0x8,0x8,0x8,0x8,0x1c,0xe0,0x20,0x24,0x24,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x8,0xe,0xf8,0x49,0xa,0x8,0x8,0x8,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40, ++0x10,0x11,0x14,0xfe,0x20,0x28,0x48,0x7e,0x9,0x8,0xe,0xf8,0x48,0x8,0x8,0x8,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x10,0x10,0x14,0xfe,0x21,0x28,0x48,0x7d,0x8,0x8,0xe,0xf8,0x4b,0x8,0x8,0x8,0x10,0x18,0x14,0x14,0xfe,0x10,0x10,0xf0,0x90,0x90,0x90,0xf0,0x88,0xa,0x6,0x2, ++0x10,0x13,0x14,0xfe,0x20,0x29,0x49,0x7e,0x8,0x8,0xf,0xf8,0x48,0x8,0xb,0x8,0x4,0xfe,0x40,0x40,0x88,0x4,0xfe,0x22,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x14,0xfe,0x20,0x29,0x4a,0x7e,0x8,0x8,0xe,0xf8,0x48,0x8,0xb,0x8,0x20,0x20,0x50,0x50,0x88,0x4,0xfa,0x20,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x14,0xff,0x21,0x2a,0x48,0x7e,0x8,0x9,0xf,0xf9,0x49,0x9,0x9,0x9,0x80,0x80,0xfc,0x4,0x88,0x50,0x20,0x50,0x88,0x6,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x15,0xff,0x21,0x29,0x49,0x7f,0x9,0x9,0xf,0xf9,0x4b,0x9,0x8,0x8,0x4,0xfe,0x20,0x28,0xe8,0x28,0x28,0x28,0xe8,0x28,0x28,0x3a,0xea,0x2e,0x20,0x20, ++0x8,0x8,0x7e,0x8,0x7e,0x14,0x22,0x42,0x3f,0x5,0x9,0x1f,0x1,0xff,0x1,0x1,0x20,0x20,0xfc,0x20,0xfc,0x50,0x88,0x6,0xf8,0x0,0x20,0xf0,0x4,0xfe,0x0,0x0, ++0x20,0x20,0x2b,0xfe,0x42,0x52,0x93,0xfe,0x12,0x13,0x1e,0xf2,0x52,0x12,0x12,0x12,0x0,0x4,0xfe,0x4,0x94,0x94,0xfc,0x44,0x24,0xfc,0x84,0x84,0xf4,0x4,0x14,0x8, ++0x20,0x2f,0x24,0xfd,0x42,0x55,0x90,0xf8,0x17,0x10,0x18,0xf5,0x52,0x15,0x18,0x10,0x0,0xfc,0xa4,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84, ++0x20,0x21,0x29,0xfe,0x42,0x51,0x91,0xfc,0x11,0x11,0x1d,0xf1,0x51,0x11,0x11,0x11,0x0,0x24,0x24,0x48,0x48,0x24,0x24,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x13,0xfe,0x21,0x28,0x4b,0x7e,0x8,0x9,0xe,0xf9,0x48,0x8,0x8,0xb,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfc,0x22,0xfc,0x20,0x58,0x86,0x2, ++0x20,0x20,0x2b,0xfe,0x42,0x53,0x92,0xfe,0x13,0x12,0x1e,0xf2,0x52,0x12,0x14,0x10,0x40,0x24,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x92,0x94,0xf8,0x90,0xb2,0xd2,0x8e, ++0x20,0x22,0x29,0xff,0x41,0x52,0x94,0xfa,0x13,0x12,0x1a,0xf5,0x51,0x11,0x12,0x14,0x40,0x48,0x50,0xfe,0x50,0x4c,0x44,0x8,0xbe,0x88,0xa8,0xa8,0x3e,0x8,0x8,0x8, ++0x1,0x7f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0xff,0x1,0x1f,0x10,0x10,0x1f,0x10,0x0,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x4,0x4,0x4,0x4,0x7f,0x4,0x2,0x2,0xff,0x1,0x1,0x0,0x1,0x6,0x38,0x0,0x0,0x80,0x48,0xfc,0x0,0x0,0x4,0xfe,0x0,0x10,0x20,0xc0,0x80,0x44,0x24,0x1c, ++0x8,0x8,0x14,0x13,0x21,0x40,0xbf,0x22,0x22,0x2a,0x24,0x20,0x22,0x22,0x1e,0x0,0x40,0x50,0x48,0x48,0x40,0x7e,0xc0,0x24,0x24,0x28,0x28,0x10,0x12,0x2a,0x4a,0x84, ++0x0,0x7f,0x1,0xf,0x8,0xf,0x8,0xf,0x8,0xf,0x1,0xff,0x1,0x0,0x7,0x38,0x8,0xfc,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x44,0xfe,0x20,0xc4,0x44,0x3c, ++0x8,0x9,0xff,0x8,0x9,0x7f,0x41,0x7f,0x41,0x7f,0x8,0x9,0xff,0x8,0x8,0x9,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4, ++0x1,0x3f,0x21,0x3f,0x0,0xff,0x21,0x3f,0x21,0x3f,0x21,0x21,0xff,0x41,0x1,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0xb2,0x4a,0x8a,0x4, ++0x22,0x22,0xff,0x22,0x3e,0x22,0x3e,0x22,0x22,0xff,0x54,0x53,0x61,0x40,0x7f,0x1,0x20,0x28,0xa4,0x24,0x20,0xfe,0x20,0x20,0x24,0xa4,0x28,0x10,0x32,0x4a,0x8a,0x4, ++0x1,0x7f,0x41,0x7f,0x41,0x7f,0x28,0x2a,0x3f,0x48,0xbe,0x8,0xf,0xf8,0x40,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4, ++0x1,0xff,0x21,0x22,0x3d,0x55,0x49,0x55,0x82,0x7f,0x55,0x55,0x55,0xff,0x0,0x1,0x20,0xa8,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0xca,0x8a,0x4, ++0x2,0x7f,0x14,0x55,0x36,0x14,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,0x1,0x20,0x28,0x24,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x28,0x10,0x32,0x4a,0x8a,0x4, ++0x0,0x0,0x1f,0x50,0x57,0x55,0x75,0x17,0xf4,0x54,0x57,0x95,0x25,0x27,0x40,0x80,0x28,0x24,0xfe,0x20,0xa0,0x20,0x24,0xa4,0xa8,0xa8,0x90,0x10,0x12,0xaa,0x4a,0x84, ++0x0,0x3,0x7e,0x40,0x62,0x52,0x54,0x48,0x48,0x54,0x52,0x62,0x40,0x44,0x7e,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2, ++0x8,0xb,0x14,0x14,0x22,0x51,0x88,0x0,0x7e,0x2,0x24,0x14,0x8,0x4,0x4,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2, ++0x40,0x23,0xfe,0x0,0x44,0x28,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x7c,0x44,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2, ++0x8,0x7f,0x8,0x7f,0x22,0x3e,0x14,0x7f,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x4,0x8,0x74,0x8,0x74,0x8,0x10,0x60,0x4,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c, ++0x44,0x29,0xfe,0x92,0xd6,0xba,0x92,0xfe,0x4,0x7e,0x44,0x7c,0x44,0x44,0x7c,0x0,0x4,0xfe,0x80,0x88,0xfc,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xaa,0xca,0x86,0x2, ++0x0,0x7f,0x42,0x7e,0x41,0x7e,0x62,0xbe,0x0,0xff,0x8,0xf,0x9,0x8,0xe,0x10,0x20,0xfc,0x88,0x50,0xfe,0x0,0xf8,0x20,0x24,0xfe,0x0,0xe0,0x20,0xa4,0x24,0x1c, ++0x1,0x1,0x1,0x1,0x1,0x3f,0x0,0x8,0x8,0x4,0x2,0x1,0x2,0xc,0x30,0xc0,0x0,0x8,0xfc,0x0,0x0,0xf0,0x10,0x20,0x20,0x40,0x80,0x0,0xc0,0x30,0xe,0x4, ++0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x20,0xdf,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x20,0xf0,0x20,0x20,0x22,0x22,0x1e,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x2,0x7f,0x4,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x20,0xf0,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x4,0x7f,0x44,0x44,0x44,0x44,0x7c,0x47,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x1,0x1,0xff,0x1,0x2,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x80,0x60,0x1c,0x8, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x0,0x0,0xff,0x2,0x4,0x8,0x1f,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xf8,0x0,0x4,0xfe,0x0,0x40,0x20,0xf0,0x10, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x1,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x3f,0x20,0x20,0x21,0x21,0x42,0x44,0x88,0x10,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x80,0x40,0x40,0x20,0x10,0xe,0x4, ++0x0,0x4,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7d,0x41,0x2,0x4,0x8,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x0,0x4,0x7e,0x44,0x45,0x46,0x44,0x7c,0x44,0x44,0x45,0x44,0x7c,0x44,0x0,0x0,0x80,0x80,0x84,0xfe,0x4,0x84,0x44,0x44,0x14,0x64,0x84,0x4,0x4,0x44,0x28,0x10, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x1,0x9,0xa,0x12,0x24,0x4,0x8,0x10,0x60,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0x8,0x18,0xa0,0xc0,0x40,0x20,0x10,0xe,0x4, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x21,0x61,0xa2,0x24,0x20,0x3f,0x0,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x4,0x4,0xc4,0x44,0x4,0xc4,0x28,0x10, ++0x10,0x1e,0x22,0x34,0x48,0x16,0x21,0x40,0x9f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x40,0x40,0x60,0x58,0x40,0x46,0xfc,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x4,0x78,0x42,0x42,0x4e,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x84,0x84,0x84,0xa4,0x98,0x80,0x80,0x80, ++0x0,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x2,0x1,0x7f,0x8,0x4,0x4,0xff,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x0,0x8,0xfc,0x20,0x20,0x44,0xfe,0x0, ++0x10,0xc,0x0,0x3c,0x4,0x5,0x7e,0x16,0x15,0x15,0x24,0x24,0x44,0x84,0x14,0x8,0x0,0x4,0x7e,0x44,0xc4,0x44,0x7c,0x44,0x44,0x44,0xfc,0x84,0x40,0x30,0xe,0x4, ++0x0,0x5,0x7f,0x45,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0, ++0x2,0x3f,0x2,0xff,0x1,0xa,0xf,0x38,0xc7,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0xe0,0x44,0xfe,0x0,0x70,0x84,0x4,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x0,0x3f,0x20,0x3e,0x22,0x22,0x2a,0x44,0x41,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x90,0xfc,0x80,0x88,0x50,0x60,0x40,0xa2,0x12,0xe, ++0x0,0x8,0x7d,0x49,0x4b,0x4d,0x49,0x79,0x49,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0xa0,0xa4,0x2c,0x30,0x20,0x62,0xa2,0x1e,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x0,0x3f,0x20,0x3f,0x20,0x3f,0x2,0x22,0x12,0x16,0xa,0x72,0x2,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x80,0x90,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0, ++0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0x3f,0x22,0x42,0xff,0x4,0xc,0x3,0x4,0x18,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x4,0x8,0xfe,0x20,0x40,0x80,0x60,0x10, ++0x0,0x3,0x7a,0x4a,0x48,0x4b,0x48,0x79,0x4b,0x48,0x48,0x4b,0x78,0x48,0x0,0x0,0x0,0xfe,0x2,0x44,0x40,0xfc,0x80,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x0,0x78,0x4f,0x48,0x4b,0x4a,0x7a,0x4b,0x4a,0x4a,0x4b,0x7a,0x4a,0x2,0x2,0x50,0x48,0x40,0xfe,0x48,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x48,0x48,0x68,0x50, ++0x0,0x8,0x7c,0x48,0x49,0x4a,0x4c,0x7b,0x48,0x48,0x4b,0x4a,0x7a,0x4a,0x3,0x2,0x40,0x40,0xa0,0xa0,0x90,0x4e,0x4,0xf0,0x20,0x48,0xfc,0x8,0x8,0x8,0xf8,0x8, ++0x1f,0x10,0x1f,0x10,0x1f,0x8,0x1f,0x22,0xd4,0x8,0x37,0xc0,0x1f,0x10,0x10,0x1f,0xf0,0x10,0xf0,0x10,0xf0,0x40,0x60,0x58,0x40,0x46,0xfc,0x8,0xfc,0x8,0x8,0xf8, ++0x0,0x8,0x7f,0x4c,0x4b,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0x7b,0x40,0xf,0x0,0x80,0x40,0xfe,0x2,0xfc,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfe,0x0, ++0x0,0xb,0x7c,0x4a,0x49,0x49,0x4a,0x7d,0x48,0x48,0x4f,0x48,0x78,0x49,0x2,0x4,0x20,0xa8,0xb4,0xa8,0x10,0x10,0xe,0xf4,0x40,0x44,0xfe,0x40,0xa0,0x10,0xc,0x4, ++0x0,0xb,0x7d,0x48,0x4f,0x4c,0x48,0x7b,0x48,0x48,0x49,0x49,0x7a,0x4c,0x1,0x6,0x1c,0xe0,0x24,0xa8,0xfe,0x42,0x44,0xfe,0x80,0xf8,0x8,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x3,0x7a,0x4c,0x4b,0x4a,0x4b,0x7a,0x4b,0x48,0x48,0x4f,0x78,0x49,0x2,0x4,0x0,0xfc,0x4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0xfe,0x0,0x10,0xc,0x4, ++0x2,0x11,0x7f,0x50,0x57,0x54,0x54,0x77,0x50,0x5f,0x50,0x51,0x7f,0x51,0x5,0x2,0x10,0x10,0xd4,0x1e,0xa4,0xc4,0xa4,0xa4,0x24,0xa8,0x90,0x50,0xa8,0x28,0x44,0x82, ++0x0,0x7,0x70,0x5f,0x50,0x57,0x55,0x75,0x57,0x50,0x57,0x50,0x7f,0x55,0x4,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xfc,0x54,0x54,0xfc,0x40,0xfc,0x40,0xfe,0x24,0x92,0x92, ++0x0,0x7,0x78,0x4a,0x49,0x4a,0x48,0x79,0x49,0x4b,0x4d,0x49,0x79,0x49,0x1,0x1,0x84,0xbe,0x84,0x94,0x8c,0x94,0xa4,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x10,0xfe,0x0, ++0x1,0x7,0x78,0x4b,0x48,0x4f,0x48,0x7b,0x49,0x4f,0x4d,0x4f,0x7a,0x4b,0x0,0x1,0x10,0xfc,0x40,0xf8,0x40,0xfc,0x10,0xd8,0x14,0xfe,0x10,0x94,0x8,0x9a,0xaa,0x84, ++0x3f,0x20,0x3f,0x20,0x3f,0x1,0xff,0x4,0x3f,0x4,0x3f,0x4,0x7f,0xd,0x74,0x6,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfe,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x10,0xe0,0x1e, ++0x1,0x1,0x3f,0x1,0x8,0xff,0x8,0x8,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x10,0xf8,0x0,0x24,0xfe,0x20,0x20,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18, ++0x12,0x12,0xff,0x12,0x13,0x10,0x1f,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x20,0x24,0xfe,0x20,0xe0,0x0,0xf8,0x0,0xf0,0x10,0x10,0x10,0x10,0xc0,0x20,0x18, ++0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x54,0x54,0x54,0x10,0x28,0x25,0x42,0x84,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x90,0x90,0x90,0x90,0x92,0x12,0x12,0x1e, ++0x4,0x7e,0x44,0x54,0x55,0x57,0x54,0x54,0x55,0x55,0x55,0x11,0x29,0x25,0x45,0x81,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0xfd,0x10,0x1d,0xf0,0x11,0x62,0x1f,0x10,0x11,0x11,0x11,0x2,0xc,0x30,0x40,0x48,0xfc,0x48,0xc8,0xa8,0xa,0x6,0xf0,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x8,0x8,0x2e,0x28,0x28,0x2e,0xf0,0x0,0x1f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x80,0x84,0x98,0xe0,0x82,0x82,0x7e,0x10,0xf8,0x10,0x10,0x10,0x10,0xc0,0x30,0x8, ++0x4,0x7e,0x44,0x57,0x54,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x81,0x40,0x20,0x4,0xfe,0x40,0x44,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2, ++0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x55,0x55,0x56,0x54,0x10,0x28,0x24,0x44,0x80,0x4,0xfe,0x84,0x84,0xfc,0xa0,0x90,0x8,0x4e,0x24,0x20,0x0,0xc0,0x30,0x18,0x8, ++0x0,0x7d,0x45,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x11,0x2a,0x24,0x48,0x80,0x4,0xfe,0x0,0x0,0x7c,0x0,0x0,0xfe,0x52,0x54,0x48,0x48,0x44,0x54,0x62,0x40, ++0x1,0x1,0x7f,0x9,0x5,0xff,0x5,0x9,0x3f,0xd0,0x11,0x11,0x11,0x12,0x4,0x38,0x0,0x8,0xfc,0x20,0x44,0xfe,0x40,0x20,0xf8,0x16,0x10,0x10,0x10,0xc0,0x20,0x18, ++0x4,0x7e,0x44,0x57,0x54,0x55,0x54,0x54,0x54,0x54,0x54,0x13,0x28,0x24,0x44,0x80,0x20,0x28,0x24,0xfe,0x20,0x24,0xa8,0xb0,0x30,0x68,0xa8,0x24,0x22,0x20,0xa0,0x40, ++0x1,0x1,0x7f,0x9,0x9,0x15,0x7f,0x40,0x9f,0x10,0x11,0x11,0x11,0x2,0x4,0x38,0x0,0x8,0xfc,0x20,0x20,0x50,0xfe,0x2,0xf4,0x10,0x10,0x10,0x10,0xc0,0x20,0x18, ++0x4,0x7e,0x44,0x54,0x55,0x54,0x54,0x55,0x54,0x54,0x54,0x11,0x28,0x24,0x44,0x83,0x20,0x24,0xac,0xb0,0x20,0x50,0x4c,0xa4,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4, ++0x0,0x7c,0x47,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x13,0x29,0x24,0x44,0x80,0x30,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x8,0xfe,0x8,0x88,0xa8,0x10, ++0x10,0x11,0x15,0x1f,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x44,0x7c,0x44,0x1,0x6,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x34,0x50,0x50,0x92,0x12,0xe, ++0x8,0x49,0x49,0x49,0x7f,0x0,0x7f,0x1,0x1,0x3f,0x21,0x20,0x23,0x2c,0x30,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6, ++0x0,0x1,0xff,0x8,0x8,0x2a,0x2a,0x2a,0x5d,0x88,0x8,0xf,0xf8,0x40,0x0,0x3,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0xd4,0x18,0xa8,0x28,0x4a,0x8a,0x6, ++0x8,0xa,0x7f,0x8,0x8,0xff,0x25,0x14,0x64,0x14,0xff,0x4,0x8,0xc,0x12,0x61,0x4,0x7e,0x44,0x54,0x54,0xd4,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6, ++0x8,0x8,0x14,0x14,0x22,0x7f,0x80,0x71,0x55,0x75,0x55,0x75,0x51,0x55,0x52,0x3,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6, ++0x14,0x14,0x7f,0x14,0x7f,0x14,0xff,0x8,0x7f,0x49,0x7f,0x49,0xff,0x41,0x45,0x43,0x4,0x7e,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x54,0x18,0x28,0xa8,0x4a,0x8a,0x6, ++0x22,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0x7f,0x8,0x7f,0x8,0xff,0x1,0x4,0x7e,0xc4,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x18,0x28,0x28,0x4a,0x8a,0x6, ++0xa,0xf,0x8,0x7f,0x49,0x4e,0x79,0x4f,0x40,0x4a,0x6a,0x5b,0x4a,0x4a,0xbf,0x1,0x4,0x7e,0x44,0xd4,0x54,0x54,0x54,0x54,0x54,0x54,0x98,0x28,0x28,0x4a,0x8a,0x6, ++0x8,0x8,0x8,0x17,0x30,0x50,0x91,0x19,0x9,0xf,0x11,0x21,0xff,0x1,0x1,0x1,0xa0,0x94,0x9e,0xe0,0x80,0x44,0x34,0xc,0x20,0xf0,0x0,0x4,0xfe,0x0,0x0,0x0, ++0x7d,0x5,0x7d,0x44,0x41,0x7d,0x5,0x28,0x13,0x11,0x1f,0x21,0xff,0x1,0x1,0x1,0xfc,0x4,0xfc,0x20,0xfc,0x24,0xfc,0x28,0xfc,0x2,0xf8,0x0,0xfe,0x0,0x0,0x0, ++0x8,0x8,0x28,0x28,0x3e,0x48,0x48,0x88,0xe,0x18,0x68,0x8,0x8,0x8,0x8,0x8,0x80,0x80,0x80,0x84,0x8c,0x90,0xa0,0xc0,0x80,0x80,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x8,0x8,0x2b,0x28,0x3e,0x48,0x49,0x88,0xe,0x18,0x6b,0x8,0x8,0x8,0x8,0x8,0x8,0x1c,0xe0,0x40,0x40,0x5c,0xe0,0x40,0x44,0x7e,0xc0,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x8,0x28,0x28,0x3e,0x4b,0x48,0x88,0xe,0x19,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0xb,0x28,0x28,0x3f,0x48,0x48,0x88,0xf,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x8,0xfc,0x40,0x48,0xfc,0x88,0x88,0x88,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x28,0x28,0x3e,0x49,0x48,0x8b,0xe,0x18,0x69,0x9,0x9,0x9,0x9,0x9,0x20,0x20,0xa0,0xa8,0xfc,0x20,0x24,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0x2b,0x28,0x3e,0x49,0x4f,0x88,0xd,0x19,0x69,0x9,0x9,0x8,0x8,0x8,0x40,0x48,0xfc,0xa0,0x98,0x8,0xfe,0x8,0xe8,0x28,0x28,0x28,0xe8,0x8,0x28,0x10, ++0x8,0x9,0x29,0x29,0x3f,0x49,0x4b,0x8d,0x9,0x19,0x6f,0x8,0x9,0x9,0xa,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x8,0xfe,0x0,0x10,0x8,0x4,0x4, ++0x10,0x10,0x57,0x51,0x7d,0x92,0x14,0x17,0x19,0x35,0xd5,0x12,0x13,0x12,0x14,0x18,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0, ++0x10,0x10,0x53,0x52,0x7e,0x93,0x12,0x12,0x1f,0x33,0xd3,0x15,0x15,0x19,0x11,0x11,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc, ++0x10,0x10,0x5f,0x50,0x7b,0x92,0x13,0x10,0x1f,0x34,0xd5,0x15,0x15,0x15,0x14,0x14,0x80,0x44,0xfe,0x0,0xf8,0x8,0xf8,0x0,0xfc,0x4,0xf4,0x14,0x14,0xf4,0x14,0x8, ++0x8,0x7f,0x8,0x3e,0x8,0x7e,0x9,0x0,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x4,0xfe,0x44,0x44,0x44,0x94,0x8,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0, ++0x10,0x9,0x41,0x26,0x8,0x70,0x23,0xc,0x7f,0x1,0x3f,0x1,0xff,0x1,0x5,0x2,0x40,0x50,0x4c,0x54,0x60,0xc0,0x0,0xf0,0x0,0x10,0xf8,0x0,0xfe,0x0,0x0,0x0, ++0x0,0xc,0xf2,0x12,0x14,0x78,0x17,0x12,0x1e,0xf2,0x12,0x14,0x24,0x29,0x40,0x0,0x0,0x86,0xb8,0x88,0x48,0x3e,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x28,0x10, ++0x0,0xd,0xf1,0x12,0x14,0x78,0x17,0x10,0x17,0xfc,0x14,0x14,0x24,0x27,0x20,0x40,0x0,0x6,0x38,0x88,0x48,0x3e,0xc8,0x8,0xc8,0x7e,0x48,0x48,0x48,0xc8,0x28,0x10, ++0x0,0x3e,0x23,0x3e,0x21,0x3e,0x62,0xbe,0x0,0x3f,0x1,0x1f,0x1,0xff,0x1,0x3,0x40,0x28,0xfc,0x50,0xfe,0x20,0xf8,0x20,0x20,0xf8,0x0,0xf0,0x4,0xfe,0x0,0x0, ++0x2,0x3f,0x2,0xff,0x2,0xf,0x34,0xc7,0x0,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0xc0,0x84,0xfe,0x0,0xe0,0x8,0xf8,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe, ++0x4,0x1e,0xf0,0x10,0x11,0x10,0x7d,0x11,0x11,0x1e,0xf3,0x10,0x10,0x10,0xf,0x0,0x40,0x40,0x88,0x84,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x22,0x22,0xfe,0x0, ++0x3f,0x1,0x1f,0x1,0x7f,0x1,0x0,0x4,0x79,0x10,0x7c,0x10,0xff,0x10,0x14,0x18,0xf8,0x0,0xf0,0x0,0xf8,0x2,0xfe,0x0,0xf8,0x40,0xf8,0x40,0xfc,0x40,0x42,0x3e, ++0x0,0x18,0xe0,0x2e,0x23,0x24,0xf4,0x2e,0x22,0x22,0xfb,0x24,0x2a,0x31,0x20,0x1f,0x20,0x28,0xfc,0x28,0xfe,0x28,0xf8,0x20,0xf8,0x20,0xfc,0x20,0x22,0xfe,0x2,0xfe, ++0x10,0x10,0x25,0x7e,0x10,0xff,0x28,0x4c,0x92,0x24,0x49,0x12,0x64,0x8,0x30,0xc0,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e, ++0x8,0x8,0x15,0x22,0x7f,0x80,0x71,0x55,0x55,0x75,0x55,0x55,0x75,0x51,0x55,0x52,0x8,0x3c,0xe0,0x20,0x20,0xa8,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x22,0x22,0x1e, ++0x8,0x49,0x2a,0x7f,0x41,0x5d,0x55,0x5d,0x41,0x3f,0x2,0x1f,0x2,0xff,0x2,0x1,0x20,0x20,0x24,0x7e,0xa8,0x10,0x28,0xc6,0x30,0xc0,0x0,0xf0,0x0,0xfa,0x2,0xfe, ++0x1,0x39,0xe2,0x27,0x2a,0x23,0xf2,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x0,0xf0,0x20,0xf8,0x48,0xf8,0x48,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xfa,0x2,0xfe, ++0x2,0x39,0xe7,0x21,0x25,0x23,0xf1,0x2f,0x20,0x23,0xfa,0x23,0x22,0x23,0x20,0x1f,0x10,0x20,0xfc,0x20,0x28,0x30,0x24,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf2,0x2,0xfe, ++0x77,0x55,0x77,0x55,0x77,0x55,0x77,0x24,0x3f,0x64,0x7f,0xa4,0x3f,0x24,0x3f,0x20,0x8,0x3c,0xe0,0x20,0x20,0x28,0xfc,0x20,0xa0,0x24,0xfe,0x20,0x20,0x22,0xa2,0x1e, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x2,0x2,0x2,0x2,0x2,0x4,0x4,0x8,0x10,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0xa,0xa,0x4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x8,0x8,0x8,0x8,0x8,0x10,0x10,0x20,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x88,0x88,0x88,0x88,0x88,0x88,0x8a,0x8a,0x84, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x2,0x2,0x22,0x22,0x22,0x22,0x22,0x3f,0x0,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x8,0x28,0x28,0x28,0x28,0x28,0xea,0x2a,0x4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x12,0x12,0x12,0x12,0x12,0x12,0x22,0x22,0x40,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x4a,0x44, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0xf,0x10,0x6d,0x2,0xd,0x76,0x1,0xc,0x3,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x88,0x8,0x8,0x88,0x78,0xa,0xa,0x4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x7f,0x9,0x49,0x29,0x29,0x9,0x9,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x28,0x48,0x88,0x8,0xa,0xfa,0x4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x22,0x22,0x2f,0x22,0x25,0x28,0x3f,0x20,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x28,0x28,0xa8,0x28,0x28,0xaa,0xea,0x24, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x4,0x7f,0x4,0x3f,0x20,0x3f,0xa,0xa,0x12,0x61,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xe8,0x8,0x88,0x88,0x88,0x8,0x2a,0x2a,0xe4, ++0x10,0x1f,0x20,0x2f,0x40,0xbf,0x0,0x3f,0x26,0x3f,0x0,0x7f,0x49,0x49,0xff,0x0,0x4,0xfe,0x0,0xf8,0x0,0xf8,0x8,0xc8,0x48,0xc8,0x8,0xe8,0x28,0x2a,0xfa,0x4, ++0x10,0x10,0x11,0x1f,0x22,0x42,0x12,0x12,0x12,0x14,0x14,0x8,0x14,0x22,0x43,0x81,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0, ++0x8,0x8,0xa,0xff,0x8,0x7f,0x49,0x49,0x7f,0x49,0x1c,0x2b,0x49,0x88,0x9,0xa,0x40,0x40,0x44,0x7e,0x48,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x10,0x7e,0x42,0x7e,0x42,0x7f,0x10,0xa,0xff,0x10,0x1e,0x22,0x22,0x4b,0x86,0x40,0x40,0x44,0x7e,0x88,0x88,0x48,0x48,0x48,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0x48,0x4b,0x48,0x4b,0x7c,0x41,0x40,0x7a,0x49,0x48,0x4f,0x48,0x48,0x88,0x3,0x40,0x48,0xfc,0x40,0xfe,0x2,0x24,0xa0,0x20,0x20,0x24,0xfe,0x40,0x50,0x8c,0x4, ++0x9,0x49,0x4f,0x49,0x49,0x7d,0x41,0x41,0x78,0x48,0x4b,0x48,0x48,0x49,0x8a,0x8,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x2e,0x24,0x20, ++0x10,0x50,0x57,0x54,0x57,0x7c,0x47,0x44,0x75,0x55,0x55,0x55,0x55,0x55,0x99,0x11,0x40,0x24,0xfe,0x4,0xfc,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x24,0x2c, ++0x0,0x0,0x3f,0x11,0x9,0x9,0x7f,0x2,0xff,0x4,0x7,0xa,0x11,0x20,0x43,0x1c,0x10,0x78,0x80,0x10,0x10,0x20,0xfc,0x0,0xfe,0x0,0xf0,0x20,0x40,0x80,0x60,0x1e, ++0x4,0xe,0xf0,0x3,0x93,0x55,0x1,0x9,0xff,0x9,0x49,0x29,0x9,0xa,0x2c,0x11,0x24,0x3e,0x20,0xfe,0x22,0xf8,0x24,0x3c,0x0,0x78,0x48,0x48,0x48,0x4a,0x8a,0x6, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x8,0x8,0x28,0x10, ++0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x8,0xfc,0x0,0x0,0x4,0xfe,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x44,0x28,0x10, ++0x2,0x3f,0x22,0x22,0x22,0x3e,0x22,0x22,0x22,0x3e,0x22,0x22,0x42,0x42,0x8a,0x4,0x8,0x18,0x20,0x40,0x84,0xc,0x10,0x20,0x40,0x80,0x4,0xc,0x10,0x20,0x40,0x80, ++0x2,0x1,0xff,0x10,0x10,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x95,0xa,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0x8,0x8,0x8, ++0x4,0x3f,0x24,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x8,0xfc,0x0,0x0,0x0,0x4,0xfe,0x90,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0, ++0x4,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x50,0x50,0x88,0xc8,0xa8,0x6,0x4, ++0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3d,0x25,0x26,0x44,0x44,0x95,0x8,0x40,0x40,0x40,0x44,0xfe,0x80,0x80,0xa0,0xa0,0x20,0x40,0x50,0x48,0x84,0xfc,0x4, ++0x4,0x3e,0x24,0x27,0x24,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x22,0x1e,0x0, ++0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8, ++0x10,0xc,0x3,0xc,0x12,0xff,0x4,0x8,0x1f,0x28,0xcf,0x8,0xf,0x8,0x8,0x8,0x10,0x70,0x80,0x60,0x14,0xfe,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x80,0x80,0x80,0xfe,0x82,0x24,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x4,0x3e,0x24,0x24,0x27,0x3c,0x24,0x24,0x24,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x80,0xa0,0x90,0x94,0xfe,0xa0,0xa4,0xa4,0xa8,0xa8,0xb0,0xa0,0x62,0x22,0x1e,0x0, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x25,0x25,0x27,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x40,0x40,0x44,0xfe,0x80,0xa0,0x20,0x24,0xfe,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40, ++0x4,0x3e,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0xfe,0x40,0x40,0x60,0x50,0x4c,0x44,0x40,0x40, ++0x4,0x3e,0x24,0x24,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0xa,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x24,0x44,0x44,0x94,0x8,0x4,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20,0x20, ++0x0,0x3c,0x24,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x44,0x94,0x8,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20, ++0x1,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x4,0x3e,0x24,0x24,0x25,0x3d,0x26,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x48,0x7c,0x40,0x40,0x40,0x40,0x40, ++0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x96,0x8,0x8,0x1c,0xe0,0x10,0x50,0x50,0x50,0x50,0x48,0x48,0x48,0x44,0x54,0x54,0x72,0x0, ++0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x25,0x3c,0x24,0x25,0x44,0x44,0x94,0xb,0x40,0x40,0xa0,0xa0,0x18,0x36,0x40,0x88,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0, ++0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3c,0x24,0x24,0x44,0x44,0x94,0x8,0x80,0x80,0x84,0xfe,0x4,0x4,0xf4,0x94,0x94,0x94,0x94,0xf4,0x84,0x4,0x14,0x8, ++0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12, ++0x4,0x3f,0x24,0x24,0x24,0x3c,0x24,0x27,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x0,0xfc,0x8,0x10,0x20,0x58,0x86,0x2,0x0,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x50,0x50,0x90,0x92,0x12,0xe,0x0, ++0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x14,0xfc,0x4,0x4,0x74,0x54,0x54,0x54,0x74,0x4,0x4,0x14,0x8, ++0x0,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0xfc,0x4, ++0x4,0x3e,0x24,0x24,0x25,0x3e,0x24,0x24,0x24,0x3f,0x24,0x24,0x44,0x44,0x95,0x8,0x20,0x20,0x50,0x88,0x6,0x10,0xf8,0x0,0x4,0xfe,0x40,0x40,0x48,0x84,0xfc,0x4, ++0x0,0x3d,0x24,0x24,0x24,0x3c,0x25,0x24,0x27,0x3c,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x8,0x90,0x60,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x25,0x24,0x3c,0x24,0x25,0x44,0x44,0x94,0x9,0x40,0x20,0x4,0xfe,0x40,0x48,0x88,0xf4,0x24,0x48,0x88,0x10,0x28,0x44,0x82,0x2, ++0x5,0x3e,0x24,0x27,0x24,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x45,0x45,0x96,0x8,0x8,0x90,0x0,0xfc,0x90,0x90,0x90,0x94,0xfe,0x90,0x90,0x90,0x10,0x10,0x10,0x10, ++0x4,0x3e,0x24,0x24,0x25,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x44,0x95,0xa,0x0,0x88,0x50,0x0,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x4,0x2, ++0x4,0x3e,0x25,0x24,0x24,0x3c,0x27,0x24,0x24,0x3c,0x24,0x24,0x45,0x46,0x94,0x8,0x20,0x20,0x24,0xa4,0xa8,0x20,0xfe,0x20,0x60,0x70,0xa8,0xa8,0x26,0x24,0x20,0x20, ++0x0,0x3c,0x27,0x24,0x24,0x3d,0x26,0x24,0x25,0x3e,0x24,0x25,0x46,0x44,0x94,0x8,0x0,0x4,0xfe,0x40,0x84,0x4c,0x70,0xa0,0x30,0x70,0xa8,0x28,0x26,0x24,0xa0,0x40, ++0x0,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x4,0xfe,0x4,0x4,0x4,0xfc,0x20,0x24,0xfe,0x24,0x24,0x54,0x8c,0x4,0x14,0x8, ++0x4,0x3e,0x24,0x24,0x24,0x3d,0x26,0x24,0x24,0x3d,0x24,0x24,0x44,0x44,0x97,0x8,0x20,0x20,0xa8,0xa8,0xa8,0x74,0x22,0x20,0x28,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x3e,0x25,0x25,0x24,0x3c,0x25,0x24,0x24,0x3c,0x27,0x24,0x44,0x44,0x94,0x8,0x8,0x1c,0xe0,0x4,0xa4,0xa8,0xfc,0x10,0x20,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x4,0x3e,0x25,0x25,0x26,0x3c,0x24,0x24,0x27,0x3c,0x24,0x24,0x44,0x45,0x96,0x8,0x40,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe,0x0, ++0x0,0x7b,0x4a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4a,0x4a,0x4b,0x4a,0xac,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xa8,0xb0,0xa8,0xa8,0xa4,0x24,0x22,0xa0,0x40, ++0x4,0x3e,0x27,0x24,0x25,0x3c,0x27,0x24,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x8,0x7c,0x48,0x4f,0x48,0x79,0x4a,0x4f,0x4a,0x7b,0x4a,0x4b,0x4a,0x48,0xa8,0x10,0x40,0x40,0x44,0xfe,0xa0,0x10,0x48,0xfe,0x48,0xf8,0x48,0xf8,0x48,0x40,0x44,0x3c, ++0x4,0x3e,0x24,0x27,0x24,0x3c,0x24,0x27,0x24,0x3c,0x24,0x27,0x44,0x44,0x94,0x8,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50, ++0x4,0x3e,0x25,0x25,0x25,0x3d,0x25,0x25,0x25,0x3d,0x24,0x24,0x44,0x45,0x96,0x8,0x20,0xa4,0x2e,0x24,0x24,0xac,0x24,0x24,0xfc,0x24,0x50,0x50,0x88,0x6,0x4,0x0, ++0x0,0x7a,0x4b,0x4a,0x4c,0x79,0x48,0x48,0x4b,0x78,0x49,0x49,0x49,0x4a,0xa8,0x10,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0x4,0xfe,0x20,0x20,0x28,0x26,0x22,0xa0,0x40, ++0x0,0x78,0x4b,0x4a,0x4c,0x78,0x4b,0x48,0x48,0x79,0x49,0x49,0x49,0x4a,0xac,0x10,0x40,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x28,0x3c,0x20,0x20,0xa6,0x7c,0x0, ++0x0,0x78,0x4f,0x49,0x49,0x79,0x4a,0x4f,0x49,0x79,0x4d,0x4b,0x49,0x4a,0xac,0x10,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0, ++0x8,0x7c,0x4b,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7b,0x4c,0x4b,0x48,0x48,0xa8,0x13,0x40,0x48,0xfc,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x46,0xf8,0x40,0xa0,0x98,0x8, ++0x0,0x3c,0x27,0x24,0x24,0x3d,0x25,0x25,0x25,0x3d,0x25,0x25,0x45,0x45,0x95,0x9,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x8,0x7c,0x4b,0x48,0x48,0x7b,0x4a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x4a,0xab,0x12,0x0,0x4,0xfe,0x40,0x84,0xfe,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x94,0xfc,0x4, ++0x8,0x7d,0x49,0x49,0x49,0x79,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4a,0x4a,0xaf,0x10,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0, ++0x0,0x7b,0x4a,0x4a,0x4b,0x78,0x4b,0x48,0x4f,0x79,0x49,0x48,0x48,0x48,0xa8,0x10,0x8,0xbc,0xa8,0xa8,0xb8,0x0,0xf8,0x0,0xfe,0x0,0xf8,0x8,0x8,0x88,0x50,0x20, ++0x8,0x7c,0x48,0x49,0x4b,0x7c,0x4b,0x4a,0x4a,0x7b,0x4a,0x4a,0x4b,0x4a,0xaa,0x12,0x40,0x40,0xa0,0x10,0xf8,0x6,0xc4,0x54,0x54,0xd4,0x54,0x54,0xd4,0x44,0x54,0xc8, ++0x0,0x7a,0x49,0x48,0x4b,0x78,0x4f,0x48,0x49,0x7a,0x4c,0x4b,0x48,0x48,0xab,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xf8,0x40,0x48,0xfc,0x0, ++0x0,0x7a,0x49,0x4b,0x48,0x7f,0x48,0x49,0x4a,0x7c,0x4f,0x48,0x49,0x48,0xa9,0x16,0x40,0x48,0x50,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x44,0xfe,0x90,0x10,0xe0,0x18,0x4, ++0x0,0x7b,0x48,0x49,0x49,0x79,0x49,0x48,0x4b,0x7a,0x4a,0x4b,0x4a,0x4a,0xaa,0x12,0x4,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x0,0xfe,0x8a,0x52,0xfe,0x22,0x22,0x2a,0x4, ++0x10,0x8,0xfe,0x11,0x1e,0x22,0x2a,0x44,0x9f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x40,0x44,0xfe,0x18,0xe4,0xa8,0x90,0xc8,0xf6,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x8,0x7c,0x4b,0x4a,0x4c,0x79,0x49,0x49,0x49,0x79,0x49,0x4f,0x48,0x48,0xa9,0x12,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x90,0xc,0x4, ++0x0,0x7a,0x49,0x48,0x4f,0x78,0x4f,0x48,0x49,0x7a,0x4d,0x49,0x48,0x49,0xaa,0x10,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0x4e,0x54,0x50,0xe0,0x50,0x4c,0xc0, ++0x0,0x78,0x4b,0x4a,0x4d,0x78,0x4b,0x48,0x48,0x79,0x48,0x49,0x48,0x48,0xab,0x10,0x40,0x20,0xfe,0x52,0x8c,0x0,0xfe,0x40,0x88,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x8,0x7d,0x48,0x48,0x4b,0x7a,0x4d,0x49,0x49,0x79,0x48,0x49,0x49,0x49,0xa9,0x11,0x20,0xfc,0x88,0x50,0xfe,0x22,0xfc,0x24,0x24,0x2c,0x20,0xfc,0x4,0x4,0xfc,0x4, ++0x1,0x79,0x4f,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4b,0x48,0x4a,0x49,0xae,0x10,0x8,0x8,0xc8,0x3e,0x88,0x8,0xbe,0xa2,0xa2,0x94,0x94,0x8,0x88,0xd4,0x14,0x62, ++0x8,0x7f,0x48,0x4b,0x4a,0x7c,0x48,0x4b,0x48,0x79,0x4a,0x49,0x4a,0x49,0xaa,0x10,0x88,0xfe,0x88,0xfe,0x2,0xf8,0x0,0xfe,0x80,0x44,0xa8,0x70,0xa8,0x26,0xa4,0x40, ++0x9,0x7d,0x49,0x49,0x48,0x7b,0x4a,0x4a,0x4b,0x78,0x4f,0x48,0x48,0x49,0xaa,0x10,0xfc,0x4,0x4,0xfc,0x0,0xde,0x52,0x52,0xde,0x20,0xfe,0x70,0xa8,0x2e,0x24,0x20, ++0x8,0x7f,0x48,0x4b,0x4a,0x7a,0x4a,0x4b,0x48,0x7b,0x4a,0x4b,0x4a,0x4b,0xa8,0x17,0x40,0xfe,0x0,0xfc,0x94,0xf4,0x94,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0xfe, ++0x8,0x7c,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4b,0x7a,0x4b,0x4a,0x4a,0x4a,0xad,0x10,0x40,0x24,0xfe,0x88,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0xd4,0x52,0x50, ++0x0,0x7a,0x49,0x4f,0x48,0x79,0x4a,0x4a,0x4b,0x7a,0x4c,0x4b,0x49,0x4a,0xac,0x10,0x40,0x48,0x50,0xfc,0xe0,0x50,0x48,0x8,0xbe,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8, ++0x0,0x20,0x24,0x3e,0x20,0x21,0x22,0x3f,0x2,0x2,0x1a,0xe2,0x2,0x14,0x9,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x42,0x24,0x18,0x24,0x42,0x1,0xff,0x28,0x3e,0x6a,0xaa,0x2a,0x2a,0x2e,0x9,0xa,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x10,0x12,0xff,0x10,0x28,0x45,0xff,0x2,0x7a,0x4a,0x4a,0x4a,0x7a,0x2,0xb,0x6,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x2,0xf,0x78,0x8,0x8,0xff,0x28,0x4b,0x49,0x49,0x6b,0x49,0x49,0x7f,0x41,0x2,0x40,0x40,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x10,0xa,0x7f,0x0,0x22,0x15,0xff,0x0,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3f,0x22,0x40,0x40,0x40,0x7e,0x82,0x24,0xa0,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x8,0x14,0x22,0x7f,0x80,0x3e,0x23,0x3e,0x0,0x77,0x11,0x55,0x33,0x55,0x11,0x33,0x40,0x40,0x40,0x7e,0x42,0x84,0x20,0x20,0x20,0x20,0x20,0x50,0x50,0x88,0x6,0x4, ++0x4,0x7e,0x44,0x45,0x46,0x6d,0x6d,0x55,0x55,0x55,0x6d,0x6d,0x44,0x44,0x43,0x80,0x80,0x88,0xfc,0x8,0x8,0xe8,0x28,0x28,0xe8,0x28,0x10,0x4,0xfe,0x2,0xfe,0x0, ++0x0,0x23,0x12,0x12,0xff,0x2,0x4a,0x4a,0x4a,0x52,0x52,0x1e,0xf3,0x44,0x4,0x18,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4, ++0x4,0x7e,0x44,0x44,0x44,0x6c,0x6c,0x54,0x54,0x54,0x6f,0x6c,0x44,0x44,0x43,0x80,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xfe,0x50,0x8a,0x2,0xfe,0x0, ++0x0,0x7d,0x45,0x45,0x45,0x6d,0x6d,0x54,0x55,0x54,0x6c,0x6c,0x44,0x44,0x43,0x80,0x20,0xac,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x52,0x8a,0xfe,0x0, ++0x10,0x18,0x14,0xfe,0x10,0x28,0x44,0x82,0x24,0x36,0xff,0x24,0x24,0x5a,0x49,0x92,0x8,0xfc,0x88,0x88,0x88,0xd8,0xd8,0xa8,0xa8,0xa8,0xd8,0xd8,0x8a,0x8a,0xa,0x4, ++0x4,0x7e,0x44,0x44,0x45,0x6c,0x6d,0x54,0x56,0x55,0x6c,0x6d,0x46,0x44,0x43,0x80,0x20,0x20,0xa4,0xa8,0x50,0x88,0x6,0x88,0xaa,0xdc,0x88,0x54,0x22,0x2,0xfe,0x0, ++0x2,0x3f,0x22,0x22,0x22,0x22,0x41,0x80,0x7f,0x21,0x22,0x14,0x8,0x14,0x23,0xc1,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0, ++0x10,0xfe,0x10,0x7c,0x0,0xfe,0x83,0xbe,0x1,0x7c,0x4,0x7c,0x40,0x7c,0x4,0x1b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x92,0x7f,0x28,0x28,0x7e,0x8,0xff,0x8,0xb,0x8,0x7c,0x48,0x48,0x48,0x48,0x86,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x8,0x7f,0x8,0x3e,0x0,0xff,0x91,0x9c,0x25,0x7e,0xaa,0x3e,0x2a,0x3e,0x4a,0x8b,0x8,0xfc,0x88,0x88,0x88,0x88,0x6,0x0,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0xff,0x8,0x4,0x3,0x2,0xc,0x70,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfc,0x80,0x4,0xfe,0x20,0x40,0x80,0x80,0x60,0x1c, ++0x1,0xff,0x18,0x6,0x1,0xe,0xf2,0x2e,0x22,0x2e,0x22,0x2e,0x22,0x3f,0x20,0x40,0x0,0xfe,0x30,0xc0,0x0,0xe0,0x9e,0xe8,0x88,0xe8,0x88,0xe8,0x88,0xf8,0x8,0x8, ++0x4,0x42,0x20,0x4,0xff,0x14,0x55,0x25,0x25,0x55,0x55,0x4c,0x8d,0x6,0x4,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x54,0x48, ++0x20,0x18,0x8,0x0,0xfe,0x20,0x25,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x44,0x30,0x10,0x80,0x40,0x30,0x18,0x8,0x0, ++0x20,0x18,0x8,0x1,0xfe,0x20,0x25,0x3e,0x25,0x25,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x80,0x84,0xfe,0x20,0x24,0xfe,0x20,0xfc,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x20,0x18,0x8,0x1,0xfe,0x21,0x24,0x3e,0x25,0x24,0x24,0x27,0x44,0x44,0x94,0x8,0x80,0x84,0xfe,0x0,0x18,0xe0,0x28,0x3c,0xe0,0x24,0x3e,0xe0,0x20,0x22,0x22,0x1e, ++0x21,0x19,0x9,0xfe,0x24,0x21,0x3d,0x25,0x25,0x27,0x25,0x25,0x45,0x45,0x95,0xa,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x48,0x28,0xfe,0x8,0x8,0x8,0x8,0x28,0x10, ++0x20,0x18,0x8,0x1,0xfe,0x21,0x21,0x3d,0x26,0x24,0x25,0x24,0x44,0x44,0x97,0x8,0x80,0x80,0x84,0xfe,0x20,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x18,0x8,0x0,0xfd,0x22,0x20,0x3c,0x24,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x80,0x84,0xfe,0x0,0xfc,0x84,0x84,0xfc,0x80,0xa4,0xa8,0xb0,0x22,0x22,0x1e, ++0x20,0x18,0x8,0x1,0xfe,0x23,0x20,0x3c,0x25,0x24,0x24,0x24,0x44,0x45,0x95,0xa,0x80,0x84,0xfe,0x40,0x24,0xfe,0x40,0x88,0xfc,0x0,0xa8,0xa8,0xa8,0x2a,0x2a,0x26, ++0x20,0x18,0x9,0x2,0xfe,0x20,0x20,0x3c,0x27,0x24,0x25,0x25,0x45,0x45,0x94,0x8,0x80,0x84,0xfe,0x20,0xf8,0x20,0x50,0x88,0xfe,0x8,0xe8,0x28,0x28,0xe8,0x8,0x18, ++0x10,0x13,0x10,0x14,0x54,0x58,0x53,0x90,0x10,0x10,0x19,0x25,0x22,0x44,0x81,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0x24,0x44,0x44,0x84,0x28,0x10, ++0x10,0x10,0x10,0x17,0x54,0x58,0x53,0x90,0x10,0x17,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0x40,0x44,0xfe,0x44,0x44,0x54,0x48,0x40,0x40, ++0x10,0x10,0x10,0x17,0x54,0x5a,0x52,0x92,0x12,0x13,0x10,0x28,0x24,0x44,0x80,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0xf8,0x48,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x19,0x11,0x11,0x29,0x25,0x45,0x80,0x0,0x40,0x40,0xa0,0xa0,0x10,0x10,0xe,0xf4,0x10,0x10,0x10,0x50,0x24,0x4,0xfc,0x0, ++0x10,0x10,0x17,0x10,0x54,0x54,0x58,0x91,0x13,0x15,0x11,0x29,0x25,0x45,0x41,0x81,0x0,0x4,0xfe,0x40,0x40,0x80,0x80,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x10,0x55,0x54,0x58,0x90,0x17,0x10,0x10,0x28,0x24,0x44,0x40,0x80,0x8,0x1c,0xe0,0x20,0x24,0xac,0xb0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x10,0x13,0x54,0x54,0x58,0x90,0x11,0x10,0x10,0x28,0x24,0x44,0x43,0x80,0x40,0x20,0x24,0xfe,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x10,0x17,0x54,0x58,0x50,0x91,0x13,0x10,0x10,0x28,0x25,0x42,0x47,0x80,0x40,0x20,0x4,0xfe,0x40,0x40,0x80,0x8,0xf0,0x20,0x40,0x80,0x8,0x4,0xfc,0x4, ++0x1,0x2,0x4,0x8,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x1,0x11,0x11,0x22,0xc,0x70,0x0,0x0,0x20,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0,0x8,0x10,0x20,0x80,0x60,0x1c, ++0x10,0x10,0x10,0x15,0x55,0x59,0x53,0x95,0x11,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0xa0,0xa0,0xa0,0x24,0x28,0x30,0x64,0x1c,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x12,0x11,0x10,0x14,0x57,0x58,0x50,0x93,0x10,0x10,0x17,0x28,0x24,0x44,0x40,0x80,0x8,0x10,0xa0,0x8,0xfc,0x40,0x48,0xfc,0x40,0x44,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x10,0x13,0x10,0x14,0x57,0x59,0x51,0x91,0x17,0x10,0x11,0x29,0x25,0x45,0x41,0x81,0x8,0xfc,0x80,0x88,0xfc,0x8,0x8,0x8,0xfe,0x0,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x14,0x55,0x59,0x52,0x95,0x18,0x10,0x13,0x2a,0x26,0x46,0x43,0x82,0x40,0x40,0xa0,0xa0,0x10,0x90,0x48,0xf6,0x14,0x20,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x24,0x22,0x20,0x24,0xac,0xb4,0xa4,0x24,0x25,0x26,0x24,0x24,0x54,0x4c,0x84,0x4,0x4,0xfe,0x4,0x4,0x44,0x24,0xa4,0x84,0x94,0xac,0xa4,0xe4,0x4,0x4,0x14,0x8, ++0x10,0x10,0x10,0x14,0x57,0x5a,0x53,0x92,0x13,0x10,0x10,0x2b,0x24,0x44,0x40,0x80,0x48,0x7c,0x40,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0x40,0x40,0x40, ++0x1,0x11,0x11,0x11,0x22,0xc,0x30,0xc8,0x8,0x2a,0x2a,0x4d,0x14,0x12,0x20,0xc1,0x0,0x10,0x30,0x40,0x80,0x60,0x1e,0x24,0x20,0xa4,0xa8,0x30,0x50,0x48,0x8e,0x4, ++0x21,0x21,0x21,0x2f,0xa9,0xb1,0xa1,0x27,0x24,0x24,0x24,0x24,0x57,0x48,0x80,0x1,0x4,0x3e,0x24,0xe4,0x24,0x3c,0x24,0xa4,0xa4,0xbc,0xa4,0xa4,0xa4,0x44,0x94,0x8, ++0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x10,0x13,0x29,0x24,0x40,0x47,0x80,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x40,0x20,0xfc,0x8,0x88,0x90,0xfe,0x0, ++0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x10,0x1f,0x12,0x12,0x2a,0x26,0x43,0x82,0x8,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x88,0x50,0x20,0x90,0xe,0x4, ++0x10,0x13,0x12,0x12,0x57,0x5a,0x52,0x93,0x12,0x12,0x12,0x17,0x2a,0x2a,0x42,0x82,0x44,0xbe,0x24,0x24,0xa4,0x42,0x0,0xbc,0x4,0x24,0x28,0x90,0x10,0x28,0x4e,0x84, ++0x8,0xb,0xa,0x13,0x30,0x5f,0x90,0x11,0x16,0x11,0x9,0x9,0x12,0x4,0x18,0x60,0x8,0xfc,0x8,0xf8,0x40,0xfe,0xe0,0x50,0x4e,0x40,0x10,0x20,0xc0,0x40,0x30,0xe, ++0x10,0x10,0x17,0x14,0x54,0x5b,0x50,0x93,0x12,0x13,0x12,0x2b,0x24,0x40,0x47,0x80,0x80,0x40,0xfe,0x2,0x4,0xf8,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x13,0x12,0x56,0x5b,0x52,0x92,0x13,0x15,0x15,0x29,0x25,0x45,0x41,0x81,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc, ++0x10,0x10,0x14,0x12,0x56,0x58,0x50,0x96,0x12,0x12,0x12,0x2a,0x26,0x45,0x88,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0xa4,0xa8,0x90,0xc8,0x84,0x6,0xfc,0x0, ++0x20,0x27,0x24,0x25,0xac,0xb5,0xa6,0x20,0x27,0x24,0x24,0x27,0x54,0x4c,0x87,0x4,0x84,0x7e,0x24,0x24,0xa4,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x11,0x11,0x11,0x15,0x55,0x58,0x53,0x92,0x13,0x10,0x13,0x29,0x24,0x44,0x41,0x86,0xf8,0x8,0xf8,0x8,0xf8,0x0,0xfc,0x94,0xfc,0x0,0xfc,0x8,0x90,0x60,0x90,0xe, ++0x20,0x20,0x2f,0x21,0xa8,0xb7,0xa4,0x25,0x26,0x25,0x25,0x25,0x55,0x4c,0x84,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0xa4,0x14,0xc,0xf4,0x14,0x14,0xf4,0x4,0x14,0x8, ++0x0,0x3f,0x21,0x3f,0x20,0x3f,0x40,0x7f,0x95,0x24,0xd,0x11,0x11,0x22,0xc,0x70,0x8,0x8,0x8,0x8,0x7e,0x8,0x28,0xa8,0x8,0xa8,0x10,0x10,0x20,0x80,0x60,0x1c, ++0x20,0x2f,0x24,0x22,0xa8,0xb2,0xa4,0x20,0x23,0x22,0x22,0x23,0x52,0x4a,0x83,0x2,0x84,0xfe,0xa4,0x94,0x84,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x20,0x20,0x27,0x24,0xad,0xb4,0xa7,0x24,0x25,0x26,0x24,0x2f,0x50,0x49,0x86,0x18,0x40,0x84,0xfe,0x44,0x54,0x44,0xfc,0x44,0x54,0x4c,0x44,0xfe,0xa0,0x10,0xe,0x4, ++0x10,0x17,0x12,0x11,0x57,0x59,0x52,0x94,0x1b,0x12,0x12,0x13,0x2a,0x26,0x43,0x82,0x1c,0xe0,0x48,0x50,0xfe,0x50,0x48,0x4e,0xfc,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8, ++0x21,0x28,0x24,0x23,0xa8,0xb0,0xad,0x26,0x24,0x27,0x24,0x27,0x54,0x4a,0x91,0x0,0x4,0x88,0x0,0xfe,0x40,0xc0,0x24,0x68,0xb0,0x70,0xa8,0x26,0xa0,0x46,0xfc,0x0, ++0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd9,0x1,0x9,0x9,0x12,0x4,0x18,0xe0,0x4,0xfe,0x10,0x32,0xdc,0x28,0xdc,0x2a,0xd8,0x0,0x10,0x20,0x80,0x40,0x30,0xe, ++0x27,0x22,0x21,0x27,0xac,0xb7,0xa0,0x27,0x24,0x27,0x24,0x27,0x55,0x4d,0x86,0x4,0xfc,0x48,0x50,0xfc,0xa4,0xfc,0x0,0x88,0x88,0xfe,0x88,0xc8,0x28,0x8,0xa8,0x10, ++0x11,0x9,0x7f,0x48,0xbe,0x1c,0x2a,0x9,0x7f,0x2,0xd,0x39,0xc5,0x2,0x4,0x18,0x10,0x20,0xfe,0x22,0xfc,0x70,0xa8,0x20,0xfc,0x80,0x60,0x38,0x46,0x80,0x40,0x38, ++0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x44,0x44,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x88,0x44,0x42,0x2,0x0,0x0,0x0,0x0,0x0,0x0, ++0x2,0x2,0x7f,0x2,0x3f,0x4,0xff,0x8,0x1f,0x24,0x42,0x80,0x0,0x24,0x22,0x42,0x0,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x20,0xfc,0x20,0x20,0xa0,0x40,0x88,0x44,0x44, ++0x0,0x78,0x48,0x49,0x4a,0x79,0x49,0x49,0x49,0x79,0x49,0x0,0x28,0x24,0x44,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x14,0x8,0x90,0x48,0x46,0x2, ++0x1,0x7f,0x1,0x3f,0x0,0x1f,0x10,0x1f,0x4,0xff,0x0,0x1f,0x10,0x1f,0x24,0x42,0x0,0xfc,0x0,0xf8,0x0,0xf0,0x10,0xf0,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x88,0x44, ++0x2,0x1,0x3f,0x20,0x20,0x3f,0x21,0x21,0x3f,0x21,0x21,0x22,0x42,0x44,0x88,0x30,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x0,0x80,0x80,0x60,0x1c,0x8, ++0x2,0x1,0x3f,0x20,0x20,0x3f,0x24,0x23,0x29,0x26,0x22,0x3f,0x40,0x40,0x80,0x0,0x0,0x8,0xfc,0x8,0x8,0xf8,0x20,0x20,0x20,0x24,0x3e,0xe0,0x20,0x20,0x20,0x20, ++0x2,0x1,0x3f,0x20,0x20,0x3f,0x20,0x2f,0x28,0x28,0x2b,0x2a,0x4a,0x4b,0x88,0x8,0x0,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe,0x4,0x4,0xf4,0x14,0x14,0xf4,0x4,0x8, ++0x1,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x28,0x2f,0x20,0x2f,0x28,0x4f,0x48,0x88,0x7,0x0,0x88,0xfc,0x8,0xf8,0x0,0xf0,0x10,0xf0,0x0,0xf8,0x88,0xf8,0x2,0x2,0xfe, ++0x1,0x0,0x3f,0x20,0x3f,0x22,0x22,0x3e,0x22,0x22,0x3e,0x22,0x42,0x5e,0x82,0x2,0x0,0x88,0xfc,0x8,0xf8,0x40,0x48,0x7c,0x40,0x50,0x78,0x40,0x48,0x7c,0x40,0x40, ++0x2,0x1,0x0,0x1f,0x0,0x1,0x1,0x3,0x5,0x9,0x11,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0xc0,0x80,0x0,0x0,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x13,0x2,0xfe,0xa,0x12,0x12,0x3b,0x56,0x92,0x12,0x12,0x12,0x12,0x11,0x10,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x20,0x10,0x3,0xfc,0x8,0x10,0x10,0x3b,0x54,0x90,0x10,0x11,0x11,0x12,0x14,0x18,0x8,0x7c,0xc0,0x40,0x40,0x40,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x20,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x11,0x11,0x11,0x17,0x10,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x10,0x0,0xfc,0xb,0x10,0x10,0x38,0x57,0x90,0x10,0x10,0x11,0x12,0x17,0x10,0x40,0x40,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x40,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x38,0x57,0x92,0x12,0x12,0x12,0x12,0x13,0x12,0x40,0x40,0x44,0xfe,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x10,0x0,0xfb,0x8,0x10,0x10,0x39,0x55,0x91,0x12,0x12,0x14,0x18,0x11,0x12,0xa0,0x90,0x84,0xfe,0x80,0x80,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x21,0x11,0x1,0xfd,0xa,0x14,0x10,0x38,0x54,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x4,0xfe,0x80,0x80,0x88,0xfc,0x80,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x20,0x10,0x0,0xfc,0x9,0x12,0x10,0x38,0x54,0x90,0x11,0x11,0x12,0x10,0x10,0x10,0x80,0x80,0x80,0xfe,0x2,0x4,0x20,0x20,0xa8,0xa4,0x24,0x22,0x22,0x20,0xa0,0x40, ++0x20,0x10,0x3,0xfa,0xa,0x12,0x13,0x3a,0x56,0x92,0x12,0x12,0x12,0x13,0x12,0x10,0x8,0x3c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x50,0x90,0x4a,0x2a,0x4, ++0x20,0x13,0x0,0xfc,0xb,0x10,0x10,0x3b,0x56,0x92,0x12,0x13,0x12,0x10,0x10,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x24,0xf4,0x24,0x24,0x24,0xe4,0x24,0x4,0x14,0x8, ++0x20,0x10,0x0,0xfc,0xb,0x12,0x12,0x3a,0x56,0x92,0x12,0x12,0x10,0x10,0x11,0x16,0x40,0x48,0x7c,0x40,0xf8,0x8,0x48,0x48,0x48,0x48,0x48,0x48,0xa0,0x98,0xc,0x4, ++0x20,0x10,0x0,0xfc,0xa,0x11,0x10,0x38,0x55,0x92,0x14,0x10,0x11,0x11,0x12,0x14,0x20,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xac,0xa4,0xa0,0x22,0x22,0x1e,0x0, ++0x21,0x11,0x7,0xf9,0x9,0x11,0x11,0x39,0x55,0x91,0x11,0x1f,0x10,0x11,0x12,0x14,0x10,0x10,0xfc,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x21,0x10,0x0,0xfd,0x9,0x11,0x11,0x39,0x55,0x91,0x10,0x17,0x10,0x10,0x10,0x10,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20, ++0x21,0x11,0x7,0xf9,0x17,0x11,0x17,0x39,0x55,0x90,0x17,0x10,0x10,0x10,0x13,0x14,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0x40,0xa0,0x1e,0x4, ++0x21,0x10,0x0,0xfb,0x8,0x10,0x11,0x38,0x54,0x90,0x13,0x10,0x12,0x12,0x14,0x10,0x4,0x88,0x50,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0,0xa4,0x52,0x52,0x0, ++0x20,0x17,0x0,0xff,0x8,0x13,0x1a,0x37,0x51,0x9f,0x10,0x13,0x12,0x12,0x13,0x12,0x40,0xfe,0x40,0xfc,0x0,0xf8,0x8,0xf8,0x10,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8, ++0x20,0x17,0x0,0xff,0xc,0x17,0x11,0x3b,0x55,0x93,0x11,0x1f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xf8,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4, ++0x0,0x7f,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x80,0x60,0x30,0x10,0x0,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0, ++0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x7f,0x0,0xa,0x29,0x28,0x48,0x88,0x7,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0,0x0,0x88,0x84,0x12,0x12,0xf0,0x0, ++0x0,0x0,0x7e,0x3,0x24,0x14,0x8,0x14,0x22,0x40,0x2a,0x29,0x48,0x88,0x7,0x0,0x10,0x10,0x14,0xfe,0x10,0x90,0x50,0x10,0x50,0x20,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x8,0x8,0x7f,0x8,0x3e,0x8,0x7f,0x8,0x8,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x4,0x7e,0x24,0x24,0x24,0x44,0x54,0x88,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x0,0x10,0xf8,0x0,0xfe,0x0,0xf8,0x0,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x0,0xff,0x2,0x4,0x3f,0x24,0x24,0x24,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x4,0xfe,0x0,0x8,0xfc,0x48,0x48,0x48,0x58,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x8,0x8,0x17,0x10,0x30,0x5f,0x90,0x10,0x17,0x10,0x2a,0x29,0x48,0x88,0x7,0x0,0x8,0x1c,0xe0,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x8,0x4,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x20,0x48,0xfc,0x0,0x10,0xf8,0x0,0x4,0xfe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x40,0x30,0x10,0x5,0xa,0x10,0xe0,0x21,0x26,0x0,0x2a,0x29,0x48,0x88,0x7,0x0,0x80,0x80,0xfc,0x4,0x48,0x40,0xa0,0x10,0xe,0x0,0x8,0x84,0x92,0x12,0xf0,0x0, ++0x1,0x7f,0x1,0x3f,0x0,0x7f,0x40,0x8f,0x8,0x8,0x30,0xa,0x29,0x48,0x88,0x7,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x2,0xe4,0x20,0x28,0x38,0x0,0x84,0x92,0x12,0xf0, ++0x8,0x12,0x21,0x4c,0x12,0x30,0x51,0x96,0x12,0x10,0xa,0x29,0x28,0x48,0x88,0x7,0x8,0x7c,0x0,0x4,0xfe,0x88,0x8,0x8,0x28,0x10,0x0,0x88,0x84,0x12,0x12,0xf0, ++0x0,0x7e,0x42,0x7e,0x49,0x7e,0x48,0x49,0x65,0x42,0x0,0x2a,0x29,0x48,0x88,0x7,0x40,0x40,0x44,0xfe,0x48,0x28,0x10,0x28,0x4e,0x84,0x0,0x8,0x84,0x92,0x12,0xf0, ++0x3f,0x22,0x2f,0x22,0x3f,0x22,0x27,0x2a,0x23,0x20,0x3f,0xa,0x29,0x48,0x88,0x7,0xfc,0x20,0xf8,0xa0,0xfc,0x0,0xf0,0x10,0xf0,0x0,0xfc,0x0,0x84,0x92,0x12,0xf0, ++0xe,0x78,0x8,0xff,0x8,0x3e,0x22,0x22,0x22,0x3e,0x0,0x2a,0x29,0x48,0x88,0x7,0x20,0x24,0xfe,0x84,0xfc,0x84,0xfc,0x84,0xfc,0x84,0x0,0x8,0x84,0x92,0x12,0xf0, ++0x8,0xff,0x0,0x7e,0x43,0x7e,0x0,0x7f,0x4,0xff,0x8,0x1a,0x51,0x50,0x90,0xf,0x40,0x40,0x44,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84,0x0,0x84,0x92,0x12,0xf0, ++0x10,0x17,0x12,0xf9,0x17,0x39,0x33,0x55,0x91,0x13,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xd0,0x94,0x7e,0xd0,0x58,0x34,0x52,0x90,0x10,0x0,0x8,0x84,0x92,0x12,0xf0, ++0x41,0x2f,0x11,0x87,0x61,0x2f,0x15,0x26,0xe4,0x24,0x0,0x2a,0x29,0x48,0x88,0x7,0x10,0xfe,0x10,0xfc,0x10,0xfc,0x14,0xac,0x44,0xc,0x0,0x8,0x84,0x92,0x12,0xf0, ++0x8,0xff,0x14,0xff,0x22,0x3e,0x22,0x3e,0x8,0x7f,0x8,0xa,0x51,0x50,0x90,0xf,0x40,0x7e,0xa8,0x10,0xee,0x0,0x7c,0x44,0x54,0x54,0x28,0x44,0x84,0x92,0x12,0xf0, ++0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x1,0x1,0x3f,0x1,0xff,0x1,0x3f,0x1,0x7f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x0,0x8,0xfc,0x8,0xfe,0x8,0xf8,0x0,0xfc,0x0,0x4,0xfe,0x0,0x0,0x0,0x0, ++0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0xc2,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0x8,0x18,0xa0,0x40,0x30,0xe,0x4,0xf0,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x22,0x11,0x9,0x0,0x7f,0x41,0x81,0x1,0x3d,0x5,0x9,0x11,0x21,0xc1,0x5,0x2,0x8,0x18,0x20,0x40,0xfe,0x2,0x4,0x10,0xa0,0x40,0x20,0x10,0xe,0x4,0x0,0x0, ++0x1,0x1,0x7d,0x5,0x9,0x11,0x25,0x42,0x8,0x9,0xfa,0x1c,0x2c,0xcb,0x28,0x10,0x8,0x10,0xa0,0xc0,0x40,0x30,0xe,0x4,0x20,0x24,0xe8,0x70,0xa8,0x26,0xa4,0x40, ++0x4,0xfe,0x10,0x10,0x20,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xa,0xa,0x6,0x0, ++0x4,0xfd,0x10,0x10,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x1,0xfe,0x10,0x20,0x20,0x21,0x7c,0xa4,0x24,0x24,0x24,0x25,0x3d,0x22,0x0,0x0,0xf8,0x10,0x20,0x40,0x84,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x44,0x54,0x88, ++0x1,0x7f,0x1,0x3f,0x1,0x7f,0x1,0xff,0x4,0x4,0xf,0x18,0x28,0xc8,0xf,0x8,0x0,0xfc,0x0,0xf8,0x0,0xfc,0x0,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x4,0xfe,0x13,0x10,0x20,0x21,0x3d,0x67,0xa4,0x24,0x24,0x27,0x24,0x3c,0x20,0x0,0x40,0x48,0xfc,0x80,0xa0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x4,0xfe,0x11,0x10,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x24,0x24,0x3c,0x20,0x0,0x20,0x24,0xfe,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x22,0x1e,0x0, ++0x4,0xfe,0x10,0x10,0x20,0x21,0x3d,0x64,0xa4,0x24,0x24,0x24,0x25,0x3e,0x24,0x0,0x4,0xfe,0x8,0x88,0x88,0x8,0xfe,0x28,0x28,0x48,0x48,0x88,0x8,0x8,0x28,0x10, ++0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x3d,0x21,0x2,0x4,0x0,0x1c,0xe0,0x0,0x0,0x4,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x4,0xfe,0x13,0x10,0x20,0x24,0x3f,0x64,0xa4,0x24,0x24,0x24,0x25,0x3f,0x22,0x0,0x8,0x3c,0xc0,0x40,0x20,0x20,0xfc,0x8,0x10,0x20,0x40,0x80,0x0,0x0,0x86,0x7c, ++0x4,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3b,0x24,0x8,0x10,0x8,0xfc,0x8,0x8,0x18,0x98,0xa8,0xa8,0x48,0x48,0xa8,0x98,0x1a,0xa,0xa,0x4, ++0x4,0xfe,0x10,0x11,0x20,0x20,0x3c,0x67,0xa4,0x24,0x24,0x24,0x25,0x3d,0x20,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x40,0x80,0x8,0xfc,0x4,0x0, ++0x4,0xfe,0x13,0x10,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x21,0x6,0x88,0x88,0xfe,0x88,0x88,0x0,0x4,0x4,0x88,0x88,0x50,0x20,0x50,0x88,0xe,0x4, ++0x8,0xff,0x12,0x12,0x23,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x3a,0x24,0x9,0x12,0x8,0xfc,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x84,0x28,0x10, ++0x4,0x4,0x7f,0x5,0x5,0x9,0x37,0xc1,0x0,0xff,0x4,0xf,0x18,0x28,0xcf,0x8,0x40,0x28,0xfc,0x0,0x30,0xc4,0x4,0xfc,0x4,0xfe,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x4,0xfe,0x10,0x10,0x21,0x22,0x3c,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x80,0x80,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40, ++0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa5,0x24,0x24,0x24,0x24,0x3c,0x23,0x0,0x20,0x20,0x50,0x50,0x88,0x4,0x2,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0xfe,0x11,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x0,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x50,0x4a,0xaa,0x4, ++0x4,0xfe,0x10,0x13,0x20,0x20,0x3d,0x65,0xa4,0x24,0x24,0x24,0x24,0x3c,0x27,0x0,0x40,0x20,0x24,0xfe,0x0,0x8,0x8,0x8,0x90,0x90,0x90,0x90,0x20,0x24,0xfe,0x0, ++0x4,0xfe,0x10,0x13,0x22,0x24,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0, ++0x0,0x0,0xfc,0x13,0x20,0x20,0x23,0x7a,0xaa,0x2b,0x28,0x28,0x28,0x38,0x1,0x2,0x90,0x90,0x94,0xfe,0x94,0x94,0xfc,0x90,0x90,0xfe,0x92,0x92,0x9a,0x94,0x10,0x10, ++0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6f,0xaa,0x2a,0x2a,0x2a,0x3a,0x22,0x4,0x8,0x44,0xe4,0x44,0x54,0x54,0x54,0x54,0xf4,0x54,0x54,0x54,0x54,0x44,0x44,0x54,0x48, ++0x4,0xfe,0x13,0x10,0x20,0x20,0x3c,0x67,0xa5,0x25,0x25,0x25,0x25,0x3d,0x20,0x0,0x88,0x88,0xfe,0x88,0x88,0x20,0x24,0xfe,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x8,0xfc,0x17,0x10,0x22,0x21,0x39,0x68,0xaf,0x28,0x28,0x29,0x29,0x3a,0x24,0x8,0x40,0x48,0xfc,0x40,0x48,0x48,0x50,0x44,0xfe,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x4,0xfe,0x10,0x13,0x20,0x20,0x3c,0x65,0xa4,0x27,0x24,0x24,0x24,0x3d,0x21,0x6,0x40,0x48,0x7c,0xc0,0x28,0x12,0x6a,0x86,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe, ++0x4,0x4,0x27,0x24,0x24,0x3f,0xe0,0x0,0x7f,0x4,0x8,0x1f,0x28,0xc8,0xf,0x8,0x40,0x40,0x4c,0x70,0x42,0x42,0x3e,0x0,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10, ++0x8,0xff,0x12,0x12,0x22,0x22,0x3a,0x6a,0xaa,0x2a,0x2a,0x2a,0x2a,0x3a,0x22,0x2,0x4,0xfe,0x4,0x4,0xf4,0x4,0x4,0xf4,0x94,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x4,0xfe,0x10,0x11,0x21,0x21,0x3d,0x65,0xa5,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x20,0x20,0x44,0xfe,0x4,0x8c,0x54,0x54,0x24,0x54,0x4c,0x8c,0x4,0x4,0xfc,0x4, ++0x0,0x4,0xfe,0x11,0x21,0x22,0x20,0x7c,0xa4,0x25,0x27,0x25,0x25,0x3d,0x21,0x1,0x80,0x88,0xfc,0x8,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0xfe,0x13,0x10,0x20,0x23,0x3c,0x64,0xa4,0x24,0x27,0x24,0x24,0x3c,0x22,0x1,0x10,0x58,0x94,0x94,0x90,0xfe,0x90,0x90,0xb4,0xd4,0x98,0x90,0xaa,0xca,0x8a,0x4, ++0x8,0xfc,0x13,0x10,0x21,0x24,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x3,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x58,0x84,0x2, ++0x4,0xfe,0x10,0x10,0x20,0x25,0x3e,0x64,0xa4,0x24,0x24,0x24,0x24,0x3c,0x20,0x0,0x60,0x50,0x44,0xfe,0x90,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80, ++0x4,0xfe,0x13,0x10,0x21,0x20,0x3c,0x67,0xa4,0x25,0x25,0x25,0x25,0x3d,0x21,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x64,0xa5,0x25,0x25,0x25,0x25,0x3d,0x22,0x4,0x40,0x20,0xfe,0x2,0x4,0xfc,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0xa6,0x7c, ++0x8,0xfc,0x11,0x13,0x20,0x27,0x38,0x69,0xaa,0x2d,0x28,0x28,0x2b,0x38,0x20,0x3,0x40,0x90,0x8,0xfc,0x40,0xfe,0x90,0x28,0x46,0x94,0x20,0xc8,0x10,0x20,0xc0,0x0, ++0x4,0xff,0x10,0x11,0x20,0x23,0x3c,0x65,0xa5,0x25,0x27,0x25,0x25,0x3d,0x20,0x0,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x44,0x24,0xfe,0x44,0x24,0xfe,0x4,0x18, ++0x8,0xfd,0x11,0x11,0x21,0x29,0x3d,0x69,0xaa,0x2c,0x2a,0x2b,0x2a,0x3b,0x20,0x0,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x44,0xb4,0x14,0x4,0xfc,0x4,0x8, ++0x4,0xfe,0x11,0x10,0x20,0x23,0x3e,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x20,0x0,0x40,0x24,0xfe,0x88,0x50,0xfe,0x22,0x24,0xfe,0x24,0x24,0x34,0x28,0x20,0x20,0x20, ++0x4,0xfe,0x13,0x12,0x24,0x21,0x3c,0x65,0xa5,0x25,0x25,0x25,0x24,0x3c,0x23,0x0,0x40,0x20,0xfe,0x2,0x4,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x0,0x4,0xfe,0x0, ++0x8,0xfc,0x13,0x12,0x22,0x23,0x3a,0x6a,0xab,0x2b,0x2b,0x2d,0x29,0x39,0x21,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc, ++0x9,0xfd,0x11,0x12,0x26,0x21,0x39,0x6a,0xa8,0x2f,0x28,0x28,0x29,0x3a,0x2c,0x0,0x8,0x8,0xfc,0x48,0xa8,0x3e,0x8,0x48,0x44,0xfe,0xc0,0xe0,0x50,0x4e,0x44,0x40, ++0x8,0xfc,0x17,0x11,0x22,0x24,0x39,0x6b,0xa8,0x28,0x29,0x2b,0x2d,0x39,0x21,0x1,0x40,0x24,0xfe,0x8,0x46,0x92,0x8,0xfc,0x80,0x88,0x50,0x20,0x10,0x48,0x8e,0x4, ++0x5,0xfe,0x10,0x10,0x21,0x23,0x3d,0x64,0xa5,0x24,0x27,0x24,0x24,0x3d,0x22,0x0,0xfc,0x88,0x70,0x88,0x6,0xfc,0x54,0x88,0x54,0x22,0xfe,0x70,0xa8,0x26,0x20,0x20, ++0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x40,0x40,0xbf,0x4,0xf,0x18,0x68,0xf,0x78,0x48,0x48,0x48,0x86,0x78,0x48,0x30,0x48,0x86,0xfc,0x0,0xf0,0x10,0x10,0xf0, ++0xa,0xff,0x11,0x14,0x22,0x20,0x39,0x6a,0xaa,0x28,0x2f,0x28,0x29,0x3a,0x24,0x0,0x4,0x7e,0x40,0x7c,0x44,0xfc,0x40,0x7e,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x9,0xfd,0x17,0x10,0x27,0x24,0x3f,0x68,0xaf,0x28,0x29,0x29,0x2f,0x39,0x25,0x2,0x10,0x10,0xd0,0x1e,0xe4,0x44,0xd4,0x14,0xd4,0x94,0x8,0xc8,0x14,0x14,0x22,0x40, ++0x8,0xff,0x10,0x12,0x21,0x21,0x3b,0x6c,0xab,0x2a,0x2a,0x2b,0x29,0x38,0x27,0x0,0x20,0xa8,0xb0,0xa4,0x18,0x10,0xf8,0x6,0xf8,0x8,0x8,0xf8,0x10,0xa4,0xfe,0x0, ++0xb,0xfc,0x11,0x11,0x21,0x25,0x3f,0x64,0xa5,0x25,0x25,0x25,0x25,0x3c,0x23,0x0,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0, ++0x1,0xff,0x21,0x22,0x23,0x44,0x7b,0xd6,0x55,0x58,0x57,0x50,0x51,0x72,0x44,0x0,0x10,0xfe,0x10,0x20,0xbc,0xa4,0x18,0x8,0xf4,0x2,0xfc,0x40,0x50,0x4c,0x44,0xc0, ++0x1,0xff,0x21,0x27,0x24,0x49,0x70,0xd7,0x50,0x51,0x56,0x50,0x57,0x70,0x47,0x0,0x10,0xfe,0x10,0xfe,0x2,0xf4,0x0,0xfc,0x80,0x48,0x70,0xb0,0x68,0xa6,0x20,0x60, ++0x1,0xff,0x21,0x2b,0x24,0x41,0x79,0xd5,0x55,0x51,0x55,0x57,0x54,0x78,0x48,0x0,0x10,0xfe,0x28,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0xfe,0x88,0x48,0x8,0x18, ++0x1,0x2,0xc,0x3f,0xc0,0x1f,0x10,0x1f,0x2,0xff,0x2,0x4,0x4,0x9,0x12,0x60,0x0,0x80,0x60,0xf8,0x6,0xf0,0x10,0xf0,0x24,0xfe,0x80,0xa0,0xc0,0x84,0x84,0x7c, ++0x4,0x24,0x14,0x4,0xff,0x9,0x5,0x3f,0x21,0x21,0x23,0x25,0x29,0x21,0x21,0x21,0x40,0x48,0x50,0x44,0xfe,0x20,0x48,0xfc,0x8,0x8,0x88,0x68,0x28,0x8,0x28,0x10, ++0x14,0x55,0x36,0x14,0xff,0x49,0x2a,0x7f,0x49,0x49,0x5d,0x6b,0x49,0x49,0x49,0x43,0x20,0x28,0x24,0x24,0xfe,0x20,0x20,0x3c,0x54,0x54,0x54,0x48,0x54,0x94,0x24,0x42, ++0x28,0xaa,0x6c,0x29,0xfe,0x54,0x39,0x7d,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x45,0x20,0x28,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x24,0x2c, ++0x0,0x5,0x7e,0x44,0x44,0x7c,0x44,0x47,0x7c,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x3,0x7c,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x24,0x3e,0x24,0x24,0xfc,0x4,0x4,0x4,0x4,0x44,0x28,0x10, ++0x0,0x1,0x7d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x45,0x45,0x7d,0x45,0x1,0x0,0x4,0xfe,0x0,0x4,0x84,0x48,0x28,0x10,0x28,0x28,0x44,0x84,0x0,0x4,0xfe,0x0, ++0x0,0x0,0x78,0x4f,0x48,0x7a,0x4a,0x4a,0x7a,0x4a,0x4b,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x44,0xfe,0x40,0x48,0x48,0x48,0x48,0x48,0xf8,0x48,0x42,0x42,0x3e,0x0, ++0x0,0x8,0x7c,0x48,0x49,0x79,0x4a,0x4a,0x7c,0x48,0x48,0x48,0x78,0x48,0x3,0xc,0x40,0x40,0x40,0x40,0x50,0x48,0x46,0x4a,0x48,0x50,0x50,0x20,0x40,0x80,0x0,0x0, ++0x0,0x8,0x7c,0x4b,0x4a,0x7c,0x48,0x48,0x78,0x48,0x48,0x48,0x79,0x49,0x2,0xc,0x40,0x40,0x40,0xfe,0x42,0x44,0x40,0x40,0x60,0xa0,0xa0,0xa0,0x22,0x22,0x1e,0x0, ++0x11,0x11,0x1f,0x21,0x5f,0x1,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0x10,0xf8,0x0,0xf0,0x4,0xfe,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x10,0x1e,0x12,0x32,0x4a,0x4,0x8,0x30,0xdf,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x88,0x88,0xa8,0x90,0x82,0x7e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x0,0x4,0x7e,0x44,0x44,0x7d,0x47,0x44,0x7c,0x45,0x45,0x45,0x7d,0x45,0x1,0x1,0x20,0x20,0x40,0x40,0x88,0x4,0xfe,0x2,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0x0,0x7d,0x44,0x44,0x7c,0x47,0x44,0x7c,0x44,0x45,0x44,0x7c,0x44,0x3,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x8,0x7c,0x48,0x4a,0x7a,0x4a,0x4a,0x7a,0x4a,0x4a,0x4a,0x7a,0x4b,0x6,0x0,0x10,0x90,0x90,0x90,0x90,0x92,0xf6,0x98,0x90,0x90,0x90,0x90,0xf2,0x92,0x1e,0x0, ++0x0,0x4,0x7e,0x45,0x46,0x7c,0x44,0x44,0x7f,0x44,0x44,0x45,0x7c,0x44,0x0,0x3,0x40,0x40,0xfc,0x8,0x90,0x60,0x40,0xa0,0x3e,0x42,0x84,0x44,0x28,0x10,0x60,0x80, ++0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x49,0x7a,0x48,0x4f,0x48,0x78,0x48,0x0,0x0,0x40,0x40,0x90,0x8,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x0,0x0,0x78,0x4f,0x48,0x7a,0x49,0x48,0x7f,0x48,0x48,0x49,0x79,0x4a,0x4,0x0,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x64,0xfe,0xc0,0xe0,0x50,0x48,0x4e,0x44,0x40, ++0x0,0x8,0x7c,0x49,0x4a,0x7c,0x49,0x48,0x7a,0x4a,0x49,0x49,0x79,0x48,0x7,0x0,0x40,0x40,0xa0,0x10,0xe,0x24,0xf0,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0, ++0x2,0x9,0x7c,0x4b,0x48,0x78,0x4b,0x4a,0x7a,0x4b,0x48,0x49,0x7a,0x44,0x0,0x0,0x8,0x10,0xa0,0xf8,0x48,0x48,0xf8,0x40,0x44,0xfe,0xc4,0x44,0x54,0x48,0x40,0x40, ++0x0,0x8,0x7c,0x49,0x4b,0x78,0x49,0x4a,0x78,0x49,0x49,0x4a,0x7c,0x48,0x1,0x6,0x40,0x40,0x90,0x8,0xfc,0x90,0xc,0x84,0xf8,0x8,0x10,0xa0,0x40,0xa0,0x18,0x6, ++0x0,0xb,0x7e,0x4a,0x4a,0x7a,0x4a,0x4b,0x7a,0x4a,0x4a,0x4a,0x7a,0x42,0x5,0x8,0x4,0xfe,0x20,0x20,0xf8,0x20,0x20,0xfc,0x20,0x20,0xf8,0x20,0x20,0x24,0xfe,0x0, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7d,0x44,0x44,0x44,0x7c,0x41,0x2,0xc,0x44,0x9e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe,0x0, ++0x0,0x8,0x7c,0x49,0x49,0x7b,0x4d,0x49,0x79,0x49,0x49,0x49,0x79,0x49,0x1,0x1,0xc0,0xa0,0x84,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x0,0x8,0x7f,0x4a,0x4a,0x7b,0x4a,0x4a,0x7b,0x48,0x49,0x4f,0x78,0x48,0x0,0x0,0x40,0x84,0xfe,0x44,0x44,0xfc,0x44,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x1,0x1,0x41,0x7f,0x40,0x9f,0x9,0x32,0xc,0x3f,0xd0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x0,0xfe,0x2,0xf4,0x20,0x98,0x60,0xf0,0x1e,0xf0,0x10,0xf0,0x10,0xf0, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x7c,0x47,0x44,0x44,0x7c,0x44,0x1,0x6,0x24,0xae,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0x3,0x78,0x4a,0x49,0x79,0x4a,0x4d,0x78,0x48,0x4b,0x48,0x78,0x48,0x1,0x6,0x28,0xb0,0xa4,0xa8,0x10,0x8,0xe,0xf4,0x40,0x48,0xfc,0x40,0xa0,0xa0,0x1c,0x8, ++0x7e,0x24,0x18,0xfe,0x2b,0x28,0x48,0x89,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x44,0x7e,0x88,0x50,0x20,0x50,0x8e,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x0,0x0,0x7b,0x48,0x4f,0x78,0x49,0x4b,0x78,0x4b,0x4a,0x4a,0x7a,0x4a,0x7,0x0,0x40,0x48,0xfc,0x40,0xfe,0x80,0x10,0xf8,0x0,0xfc,0x94,0x94,0x94,0x94,0xfe,0x0, ++0x0,0x7b,0x4a,0x4c,0x49,0x79,0x49,0x49,0x79,0x48,0x48,0x4f,0x78,0x48,0x1,0x2,0x0,0xfe,0x2,0x4,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x24,0xfe,0x0,0x88,0x6,0x2, ++0x0,0x7,0x78,0x48,0x4b,0x7a,0x4a,0x4b,0x78,0x49,0x48,0x4f,0x79,0x4a,0x4,0x0,0x4,0xfe,0x90,0x94,0xfe,0x94,0x94,0xfc,0x0,0xf8,0x0,0xfe,0x50,0x4c,0x44,0xc0, ++0x0,0x9,0x7c,0x48,0x4b,0x7a,0x4d,0x49,0x79,0x49,0x48,0x49,0x78,0x48,0x3,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xfc,0x4,0x4,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x0,0xb,0x7c,0x48,0x4f,0x7a,0x4a,0x4b,0x7a,0x4a,0x4b,0x4a,0x7a,0x4f,0x0,0x0,0x10,0x90,0x90,0x9e,0xe4,0x54,0x54,0xd4,0x54,0x4c,0xc8,0x54,0xf4,0x54,0x62,0x40, ++0x0,0x2,0x79,0x4f,0x49,0x7a,0x4c,0x4a,0x7b,0x4a,0x4a,0x4d,0x79,0x42,0x4,0x0,0x40,0x48,0x50,0xfe,0x50,0x48,0x46,0x8,0xbc,0xa8,0xa8,0x28,0x7e,0x8,0x8,0x8, ++0x8,0xff,0x8,0x7f,0x22,0x3e,0x14,0x1f,0xf0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x10,0xfe,0x10,0x7c,0x44,0x28,0x10,0x28,0x46,0xf0,0x10,0xf0,0x10,0xf0,0x10,0xf0, ++0x0,0x3,0x7c,0x54,0x54,0x54,0x54,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x0,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x0,0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x0,0xff,0x8,0x8,0x8,0x8,0x10,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20, ++0x0,0x4,0x7e,0x54,0x54,0x57,0x54,0x7c,0x54,0x54,0x54,0x55,0x7d,0x42,0x4,0x8,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x40,0x40,0xa0,0xa0,0x10,0x10,0x8,0xe,0x4, ++0x0,0x4,0x7e,0x54,0x54,0x55,0x56,0x7c,0x54,0x54,0x54,0x54,0x7c,0x44,0x1,0x2,0x40,0x40,0x40,0x84,0xfe,0x8,0x88,0x88,0x50,0x50,0x20,0x50,0x50,0x88,0x6,0x4, ++0x0,0x4,0x7f,0x55,0x55,0x55,0x55,0x7d,0x55,0x55,0x55,0x55,0x7e,0x42,0x4,0x1,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x28,0x28,0x10,0x28,0x28,0x44,0x82, ++0x0,0x4,0x7e,0x54,0x55,0x56,0x54,0x7c,0x57,0x54,0x54,0x55,0x7c,0x44,0x0,0x3,0x40,0x40,0xa0,0xa0,0x18,0x16,0x20,0xc8,0x10,0x20,0x44,0x88,0x10,0x20,0xc0,0x0, ++0x1,0x2,0xc,0x17,0xe0,0x1f,0x9,0x11,0x25,0x2,0x1f,0x11,0x1f,0x11,0x1f,0x10,0x0,0x80,0x60,0xd0,0xe,0xf0,0x20,0x18,0x8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x0,0x4,0x7f,0x56,0x55,0x55,0x55,0x7d,0x55,0x56,0x54,0x54,0x7c,0x45,0x2,0x4,0x40,0x20,0xfe,0x2,0x4,0xde,0x54,0x54,0x54,0xd4,0x5c,0x94,0x90,0x12,0xe,0x0, ++0x0,0x5,0x7e,0x54,0x57,0x54,0x55,0x7d,0x55,0x55,0x55,0x54,0x7d,0x44,0x3,0x0,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0xff,0x0,0x1,0x3,0x5,0x19,0x61,0x1,0x1,0x8,0xfc,0x48,0x48,0x48,0xf8,0x4,0xfe,0x80,0x0,0x0,0x60,0x18,0x4,0x0,0x0, ++0x0,0x3f,0x24,0x24,0x24,0x3f,0x0,0x3f,0x1,0x11,0x11,0x11,0x11,0x11,0xff,0x0,0x8,0xfc,0x48,0x48,0x48,0xf8,0x0,0xfc,0x0,0x10,0xf8,0x0,0x0,0x4,0xfe,0x0, ++0x0,0x7f,0x44,0x44,0x7f,0x1,0x1,0xff,0x1,0x1,0x1f,0x10,0x10,0x10,0x1f,0x10,0x4,0xfe,0x44,0x44,0xfc,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x0,0x3f,0x0,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x0,0xf8,0x0,0xf8,0x0,0xf0,0x10,0x10,0xf0, ++0x0,0x7f,0x44,0x44,0x7f,0x2,0xff,0x4,0x9,0x3f,0xd1,0x1f,0x11,0x1f,0x1,0x0,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x40,0x20,0xf8,0x16,0xf0,0x10,0xf4,0x4,0xfc, ++0x0,0x7f,0x44,0x44,0x7f,0x1,0x3f,0x1,0xff,0x2,0x4,0x1f,0x0,0x24,0x22,0x42,0x4,0xfe,0x44,0x44,0xfc,0x0,0xf8,0x0,0xfe,0x0,0x20,0xf0,0x0,0x88,0x44,0x44, ++0x0,0x7f,0x44,0x44,0x7f,0x1,0xff,0x1,0x3f,0x24,0x2f,0x21,0x3f,0x21,0x21,0x20,0x4,0xfe,0x44,0x44,0xfc,0x0,0xfe,0x8,0xfc,0x48,0xe8,0x8,0xf8,0x8,0x28,0x10, ++0x0,0x7f,0x44,0x44,0x7f,0x11,0x11,0x5b,0x52,0x97,0x1a,0x13,0x12,0x12,0x13,0x12,0x4,0xfe,0x44,0x44,0xfc,0x40,0x24,0xfe,0x20,0xfc,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x0,0x7f,0x44,0x7f,0x22,0xff,0x22,0x3e,0x8,0x7f,0x49,0x7f,0x8,0xff,0x8,0x8,0x4,0xfe,0x44,0xfc,0x0,0xf8,0x8,0x48,0x48,0x48,0x7c,0x4,0xf4,0x4,0x14,0x8, ++0x0,0x3f,0x24,0x3f,0x8,0x7f,0x51,0x49,0x7f,0x40,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x8,0xfc,0x48,0xf8,0x20,0xfc,0x14,0x24,0xfc,0x4,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x1,0x1,0x3f,0x1,0x1,0x7f,0x4,0x8,0x1f,0x0,0x3f,0x24,0x24,0x24,0xff,0x0,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x20,0xf0,0x8,0xfc,0x48,0x48,0x48,0xfe,0x0, ++0x9,0x71,0x4d,0x45,0x75,0x49,0x41,0x75,0x42,0x3f,0x24,0x24,0x24,0x24,0xff,0x0,0x4,0x3e,0xc4,0x84,0x5c,0x44,0x24,0x1c,0x4,0xf8,0x48,0x48,0x48,0x48,0xfe,0x0, ++0x0,0x45,0x29,0xff,0x1,0x28,0x44,0x1,0x7f,0x45,0x65,0x55,0x4c,0x44,0xff,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x54,0x74,0x94,0x8, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x82,0x82,0x82,0x7e,0x0, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x11,0x15,0x19,0x10,0x0,0x0,0x0,0xfc,0x8,0x10,0x20,0x20,0x40,0x40,0x80,0x80,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0x40,0x40,0x40,0x60,0x50,0x48,0x44,0x44,0x40,0x40,0x40,0x40,0x40,0x40, ++0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x4,0x4,0x4,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x4,0x4,0x14,0x8, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x10,0x0,0x0,0x0,0xfc,0x4,0x8,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x91,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x12,0x4,0x4,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x4,0x4, ++0x10,0x12,0x1f,0x20,0x24,0x7e,0x90,0x12,0xff,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x4,0xc,0x10,0x20,0x40,0x84,0xc,0x10,0x20,0x42,0x6,0x8,0x10,0x60,0x80,0x0, ++0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x14,0x8, ++0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x6,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x48,0x50,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x40,0x40,0x40,0x40,0x44,0xfe,0x88,0x88,0x88,0x8,0x88,0x50,0x20,0x50,0x8c,0x4, ++0x10,0x14,0x1f,0x20,0x20,0x7c,0x90,0x14,0xfe,0x11,0x12,0x10,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x10,0x10,0x20,0x20,0x60,0xa8,0x26,0x22,0x20,0x20,0x20,0x20,0x20, ++0x10,0x14,0x1e,0x20,0x20,0x7f,0x90,0x14,0xfe,0x10,0x10,0x15,0x19,0x12,0x4,0x8,0x40,0x40,0x40,0x40,0x44,0xfe,0x40,0x40,0xa0,0xa0,0x90,0x10,0x88,0x48,0x46,0x4, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x8,0xfc,0x0,0x0,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0, ++0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x4,0x44,0x48,0x48,0x30,0x10,0x28,0x48,0x86,0x4, ++0x10,0x14,0x1e,0x20,0x21,0x7e,0x94,0x10,0xfe,0x11,0x10,0x12,0x14,0x18,0x10,0x0,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0x40,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80, ++0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x20,0x24,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x84,0x84,0x4,0x4,0x28,0x10, ++0x10,0x14,0x1e,0x21,0x20,0x7c,0x90,0x14,0xfe,0x10,0x10,0x12,0x15,0x19,0x12,0x4,0x40,0x20,0x4,0xfe,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x10,0x14,0x1e,0x20,0x24,0x7e,0x90,0x14,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x8,0x88,0x48,0x48,0x8,0x88,0x48,0x48,0xe,0x78,0x88,0x8,0x8,0x8,0x8,0x8, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x11,0x2,0x20,0x20,0x20,0x20,0xa4,0xac,0xb0,0x20,0x20,0x50,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x11,0xfe,0x10,0x10,0x12,0x14,0x18,0x13,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x28,0xfc,0x20,0x30,0x28,0x28,0x20,0x24,0xfe,0x0, ++0x10,0x13,0x1e,0x20,0x20,0x7c,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x17,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x14,0x1f,0x20,0x20,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x10,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x8,0x8,0x8,0x28,0x10, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x15,0x19,0x11,0x0,0x4,0xfe,0x0,0x8,0x7c,0x48,0x48,0x48,0x48,0x48,0x78,0x48,0x0,0x4,0xfe,0x0, ++0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x13,0xfd,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x40,0x44,0xfe,0x80,0xa0,0x24,0xfe,0x24,0x24,0x24,0x24,0x34,0x28,0x20,0x20, ++0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x14,0xfe,0x10,0x10,0x13,0x15,0x19,0x12,0x4,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xfc,0x84,0xa4,0xa8,0x28,0x10,0x28,0x46,0x84, ++0x10,0x14,0x1e,0x20,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x20,0x28,0x24,0x20,0xfe,0x20,0x20,0x24,0x24,0x24,0x18,0x50,0x92,0x2a,0x4a,0x84, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x11,0x14,0x18,0x13,0x0,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0xfe,0x0, ++0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x15,0xfe,0x10,0x10,0x10,0x15,0x1a,0x10,0x0,0x8,0x1c,0xe0,0x0,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0xa4,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x40,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0x2c,0x20,0x20, ++0x10,0x10,0x1e,0x23,0x20,0x7c,0x90,0x11,0xfd,0x10,0x10,0x12,0x14,0x19,0x13,0x0,0x40,0x20,0x24,0xfe,0x40,0x40,0x88,0x8,0xf0,0x20,0x40,0x40,0x88,0x4,0xfc,0x4, ++0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x14,0xfc,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x40,0x20,0x20,0xfe,0x2,0x84,0x80,0x90,0xb0,0xc0,0x80,0x80,0x82,0x82,0x7e,0x0, ++0x10,0x14,0x1e,0x20,0x20,0x7c,0x90,0x12,0xfe,0x12,0x14,0x10,0x15,0x1a,0x14,0x0,0x0,0x44,0x24,0x28,0x88,0x90,0x90,0xa4,0xa2,0xc2,0x82,0x80,0x84,0x84,0x7c,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0x40,0x44,0x4c,0x50,0x60,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x15,0xff,0x11,0x11,0x11,0x15,0x1a,0x12,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x8,0x48,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x10,0x15,0x1e,0x20,0x20,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x0,0xfc,0x88,0x50,0x20,0x50,0x8e,0x24,0xf8,0x20,0x28,0xfc,0x20,0x20,0x20,0x20, ++0x10,0x14,0x1f,0x20,0x24,0x7f,0x90,0x10,0xfd,0x12,0x14,0x12,0x14,0x18,0x10,0x0,0x40,0x44,0xf8,0x50,0x64,0xfe,0x40,0x88,0xfc,0x40,0x7c,0x4,0x4,0x44,0x28,0x10, ++0x10,0x10,0x1d,0x20,0x20,0x7c,0x93,0x10,0xfd,0x12,0x14,0x10,0x14,0x18,0x10,0x0,0x40,0x44,0xfc,0x48,0x50,0x64,0xfe,0x80,0x88,0x98,0xa0,0xc0,0x84,0x84,0x7c,0x0, ++0x10,0x17,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x11,0x17,0x18,0x10,0x0,0x4,0xfe,0x8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x3e,0xc8,0x8,0x8,0x8, ++0x10,0x14,0x1f,0x20,0x21,0x7d,0x93,0x15,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x80,0x84,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x10,0x10,0x1c,0x23,0x22,0x7e,0x92,0x13,0xfe,0x12,0x12,0x17,0x1a,0x12,0x4,0x8,0x10,0x18,0x14,0xfe,0x10,0x10,0x10,0xd4,0x54,0x54,0x54,0x58,0x88,0xa,0xa,0x6, ++0x10,0x10,0x1e,0x23,0x20,0x7e,0x91,0x10,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0xc,0x40,0x40,0x48,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xa0,0xa0,0x10,0x10,0xe,0x4, ++0x10,0x10,0x1e,0x23,0x20,0x7c,0x91,0x14,0xff,0x10,0x10,0x10,0x15,0x19,0x12,0x4,0x40,0x40,0x5c,0xe0,0x28,0x32,0xce,0x0,0xfc,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x20,0x2f,0x38,0x22,0x42,0x7c,0xa4,0x27,0xf9,0x21,0x22,0x2a,0x34,0x24,0xa,0x1,0x0,0xfc,0xa4,0xa4,0xa4,0xa8,0xa4,0xe4,0xa2,0xa2,0xa2,0xb4,0xa8,0xa0,0xa0,0x20, ++0x10,0x15,0x1e,0x20,0x20,0x7c,0x93,0x10,0xfe,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x24,0xa4,0xa8,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x23,0x3a,0x22,0x43,0x78,0xa0,0x27,0xfc,0x24,0x24,0x24,0x2c,0x34,0x20,0x0,0x8,0xfc,0x8,0x8,0xf8,0x40,0x44,0xfe,0x44,0x44,0x44,0x44,0x54,0x48,0x40,0x40, ++0x20,0x27,0x3c,0x24,0x44,0x7c,0xa7,0x24,0xfc,0x24,0x24,0x25,0x2c,0x34,0x27,0x4,0x4,0xfe,0x4,0x44,0x44,0x54,0xfc,0x44,0x44,0xa4,0x94,0x14,0x4,0x4,0xfc,0x4, ++0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x14,0xfe,0x11,0x11,0x11,0x15,0x19,0x10,0x0,0x20,0x24,0x24,0x24,0xfc,0x0,0xfc,0x4,0x4,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x1d,0x21,0x22,0x7e,0x90,0x13,0xfc,0x10,0x10,0x14,0x19,0x12,0x4,0x0,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x60,0x70,0xa8,0xa8,0x24,0x26,0x20,0x20, ++0x10,0x10,0x1c,0x27,0x20,0x7d,0x92,0x13,0xfc,0x10,0x14,0x12,0x15,0x19,0x12,0x4,0x0,0xc,0x70,0x90,0x90,0x14,0x7e,0x90,0x90,0x90,0x94,0xfe,0x0,0x80,0x46,0x3c, ++0x10,0x10,0x1d,0x20,0x20,0x7d,0x90,0x10,0xfc,0x13,0x10,0x12,0x14,0x19,0x13,0x0,0x8,0x3c,0xe0,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x40,0x40,0x90,0x8,0xfc,0x4, ++0x10,0x10,0x1c,0x20,0x21,0x7e,0x94,0x10,0xfc,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x50,0x50,0x94,0x98,0x90,0xb0,0xd2,0x8e,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x1c,0x21,0x22,0x7f,0x90,0x10,0xfc,0x13,0x10,0x10,0x14,0x18,0x17,0x0,0x40,0x40,0xa0,0x10,0x8,0xfe,0x44,0x40,0x40,0xf8,0x40,0x40,0x40,0x48,0xfc,0x0, ++0x10,0x10,0x1e,0x20,0x21,0x7e,0x91,0x10,0xfe,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x20,0x50,0x88,0x4,0x2,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x11,0x14,0x1e,0x20,0x20,0x7c,0x91,0x10,0xfd,0x10,0x10,0x12,0x15,0x1a,0x10,0x0,0x4,0x8c,0x50,0x20,0x50,0x8c,0x24,0x20,0xfe,0x20,0xa8,0xa4,0x22,0x22,0xa0,0x40, ++0x10,0x14,0x1e,0x20,0x24,0x7e,0x91,0x10,0xfc,0x11,0x16,0x10,0x15,0x19,0x12,0x4,0x20,0xa0,0xa0,0xa0,0xa4,0xac,0xb0,0xa0,0xa0,0xb0,0xa8,0xa8,0x22,0x22,0x1e,0x0, ++0x10,0x14,0x1e,0x21,0x20,0x7d,0x90,0x10,0xfd,0x10,0x10,0x11,0x14,0x18,0x10,0x0,0x40,0x40,0xf8,0x10,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xa0,0x40, ++0x10,0x14,0x1e,0x21,0x22,0x7d,0x91,0x15,0xff,0x11,0x11,0x13,0x15,0x19,0x10,0x0,0x80,0x80,0xf8,0x10,0x24,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x14,0x1e,0x23,0x20,0x7c,0x90,0x15,0xfe,0x10,0x10,0x12,0x14,0x19,0x12,0x0,0x40,0x20,0x24,0xfe,0x40,0x88,0x84,0xfc,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0, ++0x20,0x24,0x3b,0x41,0x40,0x74,0xa2,0x22,0xf8,0x21,0x22,0x22,0x2c,0x35,0x22,0x0,0x0,0xfc,0x8,0x10,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x88, ++0x10,0x10,0x1e,0x23,0x22,0x7c,0x90,0x17,0xfc,0x10,0x11,0x10,0x14,0x18,0x11,0x2,0x40,0x20,0x20,0xfe,0x2,0x44,0x40,0xfe,0x88,0x88,0x8,0x90,0x60,0x90,0xc,0x4, ++0x11,0x11,0x1d,0x27,0x21,0x7d,0x91,0x11,0xfd,0x12,0x11,0x14,0x19,0x12,0x4,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x94,0x54,0x5c,0x14,0x0, ++0x10,0x10,0x1f,0x20,0x20,0x7b,0x92,0x12,0xfd,0x10,0x10,0x10,0x14,0x18,0x11,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x42,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x20,0x20,0x3b,0x40,0x42,0x79,0xa0,0x27,0xf8,0x20,0x21,0x21,0x2a,0x34,0x28,0x0,0x40,0x40,0xfc,0x40,0x48,0x50,0x44,0xfe,0x40,0xe0,0x50,0x50,0x48,0x46,0x44,0x40, ++0x20,0x20,0x38,0x47,0x40,0x7a,0xa1,0x20,0xfa,0x22,0x26,0x2a,0x2a,0x32,0x21,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa0,0xa0,0x10,0x90,0x50,0x50,0x90,0x8a,0x86,0x2, ++0x20,0x22,0x3a,0x42,0x42,0x7a,0xa2,0x22,0xf8,0x20,0x20,0x25,0x28,0x30,0x23,0x0,0x80,0xfc,0xa4,0xa8,0x90,0xa8,0xa6,0xc4,0x80,0xa0,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x13,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfe,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x1c,0x21,0x21,0x7e,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0xa0,0xa4,0xfe,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x1c,0x23,0x20,0x7f,0x90,0x10,0xfc,0x11,0x12,0x10,0x14,0x18,0x12,0x1,0x10,0x58,0x94,0x90,0x90,0xfe,0x90,0x94,0xd4,0x98,0x90,0xb0,0xd2,0x92,0x8a,0x4, ++0x10,0x14,0x1e,0x21,0x21,0x7d,0x91,0x12,0xfc,0x10,0x11,0x10,0x14,0x18,0x13,0x0,0x20,0x20,0x20,0x24,0x24,0x28,0xac,0x72,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x10,0xfd,0x10,0x11,0x10,0x14,0x18,0x10,0x0,0x8,0x1c,0xe0,0x44,0x24,0xa8,0x90,0x8,0xfe,0x8,0x8,0x88,0x88,0x8,0x28,0x10, ++0x10,0x14,0x1f,0x20,0x20,0x7d,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x12,0x4,0x40,0x24,0xfe,0x80,0x90,0x8,0xfc,0x4,0x50,0x50,0x50,0x50,0x52,0x52,0x4e,0x0, ++0x12,0x11,0x1c,0x22,0x22,0x7f,0x92,0x12,0xfe,0x13,0x12,0x12,0x16,0x1b,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xfc,0x94,0x94,0x94,0xfc,0x94,0x94,0x94,0x14,0x4,0xc, ++0x12,0x11,0x1c,0x22,0x22,0x7e,0x92,0x12,0xfe,0x12,0x12,0x12,0x16,0x1a,0x12,0x2,0x4,0x7e,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x94,0x4,0x14,0x8, ++0x10,0x14,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfd,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xfc,0x48,0x50,0x20,0x10,0x48,0x86,0x0, ++0x10,0x11,0x1e,0x20,0x20,0x7d,0x90,0x13,0xfe,0x14,0x10,0x12,0x14,0x18,0x10,0x3,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfe,0x2,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x13,0x1e,0x22,0x23,0x7e,0x92,0x13,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x4,0xf4,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x20,0x27,0x3d,0x45,0x45,0x7e,0xa5,0x25,0xfd,0x25,0x27,0x25,0x2c,0x34,0x24,0x4,0x0,0x4,0xfe,0x4,0x4,0x74,0x54,0x54,0x54,0x54,0x54,0x74,0x44,0x4,0x14,0x8, ++0x10,0x14,0x1f,0x20,0x21,0x7c,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x10,0x10,0x1f,0x20,0x20,0x7c,0x97,0x10,0xfc,0x11,0x13,0x15,0x11,0x19,0x11,0x1,0x88,0x88,0xfe,0x88,0x40,0x44,0xfe,0x80,0x84,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x1f,0x20,0x21,0x7e,0x95,0x10,0xfd,0x11,0x1f,0x11,0x15,0x19,0x12,0x4,0x40,0x44,0xfe,0xa0,0x10,0x4e,0xf4,0x40,0x50,0x14,0xfe,0x10,0x10,0x10,0x10,0x10, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x90,0x15,0xfe,0x10,0x13,0x10,0x14,0x18,0x10,0x0,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x10,0x14,0x19,0x12,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x11,0x13,0x15,0x19,0x11,0x0,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x14,0xd8,0x10,0x12,0x52,0x8e,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xff,0x11,0x11,0x13,0x15,0x19,0x11,0x1,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x54,0x4,0xfc,0x4, ++0x11,0x11,0x1d,0x22,0x22,0x7c,0x91,0x11,0xfe,0x10,0x13,0x13,0x15,0x19,0x10,0x0,0x0,0x4,0xfe,0x94,0x94,0xa4,0x24,0x54,0x8,0x40,0x28,0x26,0xa,0x8,0xf8,0x0, ++0x10,0x14,0x1f,0x20,0x21,0x7c,0x90,0x13,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x40,0x28,0xfc,0x0,0x8,0x90,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x12,0x1d,0x20,0x23,0x7c,0x97,0x10,0xfd,0x13,0x15,0x11,0x15,0x19,0x11,0x0,0x40,0x48,0x50,0x40,0xfc,0x40,0xfe,0xa0,0x10,0xf8,0x16,0x10,0x50,0x24,0x4,0xfc, ++0x10,0x14,0x1e,0x20,0x21,0x7c,0x90,0x13,0xfe,0x10,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xac,0xb0,0x20,0x58,0x86,0x22,0x20,0xa4,0xac,0x30,0x50,0x50,0x8e,0x4, ++0x21,0x21,0x3a,0x44,0x42,0x79,0xa1,0x27,0xfc,0x24,0x27,0x24,0x2c,0x34,0x27,0x4,0x24,0x24,0x48,0x90,0x48,0x24,0x24,0xfe,0x44,0x44,0xfc,0x44,0x44,0x44,0xfc,0x4, ++0x21,0x21,0x3f,0x41,0x47,0x79,0xa7,0x21,0xf9,0x20,0x27,0x20,0x28,0x30,0x21,0x6,0x0,0x4,0xfe,0x14,0xd4,0x14,0xd4,0x24,0x4c,0x40,0xfe,0x40,0xa0,0x90,0xe,0x4, ++0x10,0x12,0x1f,0x22,0x22,0x7e,0x93,0x10,0xfd,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x20,0x24,0xa8,0x30,0x22,0xa2,0x5e,0x88,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x11,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfd,0x10,0x12,0x12,0x14,0x18,0x10,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x40,0xa8,0xa4,0x8a,0x8a,0x78,0x0, ++0x10,0x15,0x1f,0x21,0x21,0x7c,0x91,0x10,0xff,0x10,0x10,0x10,0x14,0x18,0x10,0x0,0x0,0xdc,0x54,0x54,0xdc,0x8,0xfc,0x0,0xfe,0x80,0xf8,0x8,0x8,0x8,0x50,0x20, ++0x20,0x20,0x3b,0x40,0x48,0x7f,0xa0,0x21,0xfe,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x8,0x7c,0xc0,0x40,0x44,0xfe,0x40,0x44,0x5e,0x44,0x44,0x5c,0x44,0x44,0xfc,0x4, ++0x10,0x10,0x1d,0x21,0x21,0x7d,0x91,0x11,0xfe,0x11,0x10,0x12,0x14,0x18,0x11,0x6,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x13,0x1c,0x21,0x20,0x7d,0x90,0x13,0xfc,0x10,0x11,0x11,0x16,0x1a,0x14,0x1,0x3c,0xc0,0x24,0x24,0xa8,0xfc,0x40,0xfe,0x80,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x14,0x1f,0x20,0x21,0x7d,0x91,0x11,0xfe,0x10,0x10,0x10,0x15,0x1a,0x14,0x0,0x40,0x24,0xfe,0x0,0xfc,0x4,0x4,0xfc,0x40,0x44,0xa8,0x90,0x90,0xa8,0xc6,0x84, ++0x10,0x11,0x1c,0x20,0x23,0x7c,0x90,0x11,0xfc,0x13,0x10,0x11,0x14,0x18,0x10,0x3,0x20,0x24,0xa8,0x20,0xfe,0x70,0xa8,0x26,0x40,0xfe,0x88,0x8,0xd0,0x30,0xcc,0x4, ++0x21,0x21,0x39,0x45,0x43,0x79,0xa1,0x21,0xfb,0x25,0x29,0x21,0x29,0x31,0x21,0x1,0x20,0x20,0x3c,0x44,0xa8,0x10,0x28,0x48,0xfe,0x8,0x48,0x28,0x28,0x8,0x28,0x10, ++0x21,0x21,0x3f,0x41,0x47,0x7d,0xa7,0x21,0xfb,0x22,0x22,0x22,0x2a,0x30,0x21,0x6,0x10,0x14,0xfe,0x14,0xfc,0x10,0xfe,0x12,0xfe,0x8,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x10,0x15,0x1f,0x21,0x21,0x7d,0x91,0x11,0xfe,0x12,0x12,0x16,0x1a,0x12,0x4,0x8,0x4,0xfe,0x24,0x24,0xfc,0x0,0xfc,0x84,0x84,0xfc,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x11,0x11,0x1f,0x21,0x23,0x7e,0x93,0x12,0xff,0x10,0x10,0x17,0x14,0x18,0x11,0x6,0x10,0x14,0xfe,0x10,0xf8,0x8,0xf8,0x8,0xf8,0x40,0x44,0xfe,0x40,0xa0,0x1c,0x8, ++0x20,0x27,0x38,0x43,0x42,0x7a,0xa3,0x20,0xff,0x25,0x24,0x27,0x2c,0x34,0x24,0x4,0x8,0xfc,0x0,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x14,0xa4,0xfc,0x44,0x44,0x54,0x8, ++0x10,0x10,0x1d,0x21,0x23,0x7d,0x91,0x11,0xfd,0x11,0x13,0x10,0x14,0x19,0x12,0x4,0xa0,0xa8,0xfc,0x20,0xf8,0x20,0xf8,0x20,0xfe,0x0,0xf8,0x88,0x9c,0x4,0x28,0x10, ++0x20,0x20,0x39,0x43,0x44,0x7b,0xa2,0x23,0xf8,0x27,0x20,0x23,0x28,0x37,0x20,0x0,0x40,0xa0,0x10,0xf8,0x6,0xf8,0x8,0xf8,0x1c,0xe0,0x40,0xf8,0x40,0xfe,0x40,0xc0, ++0x20,0x27,0x3c,0x44,0x45,0x7d,0xa6,0x20,0xff,0x24,0x24,0x27,0x2c,0x34,0x27,0x4,0x84,0x7e,0x24,0x24,0x24,0xa4,0x54,0x88,0xfc,0x44,0x44,0xfc,0x44,0x44,0xfc,0x4, ++0x10,0x14,0x1e,0x20,0x23,0x7c,0x90,0x15,0xfe,0x11,0x11,0x11,0x15,0x19,0x13,0x0,0x0,0x88,0x50,0x4,0xfe,0x50,0x8c,0x4,0x0,0xfc,0x54,0x54,0x54,0x54,0xfe,0x0, ++0x10,0x12,0x1f,0x22,0x24,0x7f,0x90,0x10,0xff,0x10,0x13,0x10,0x14,0x1b,0x10,0x0,0x40,0x20,0xfe,0x2,0x4,0xfe,0x40,0xc4,0x68,0xb0,0x30,0x68,0xa8,0x26,0xa4,0x40, ++0x10,0x12,0x1f,0x22,0x24,0x7d,0x91,0x11,0xfd,0x11,0x11,0x17,0x14,0x19,0x12,0x4,0x40,0x20,0xfe,0x2,0x34,0xc0,0x8,0xfc,0x10,0x10,0x14,0xfe,0x0,0x10,0xc,0x4, ++0x10,0x13,0x1c,0x20,0x21,0x7d,0x91,0x15,0xfe,0x11,0x10,0x13,0x14,0x19,0x12,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60, ++0x20,0x22,0x39,0x40,0x47,0x7c,0xa9,0x21,0xf9,0x21,0x20,0x23,0x28,0x30,0x2f,0x0,0x40,0x48,0x50,0x40,0xfe,0x2,0xf4,0x10,0x10,0xf0,0x40,0xf8,0x40,0x44,0xfe,0x0, ++0x20,0x23,0x3a,0x43,0x42,0x7b,0xa0,0x27,0xfc,0x27,0x20,0x23,0x29,0x30,0x23,0xc,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x4,0xfe,0xa4,0xfc,0x0,0xf8,0x10,0xe0,0x10,0xe, ++0x20,0x27,0x3c,0x47,0x44,0x7f,0xa0,0x21,0xfb,0x20,0x20,0x27,0x29,0x32,0x24,0x0,0x4,0xfe,0x44,0xfc,0x44,0xfc,0x80,0x8,0xf0,0x20,0x48,0xfc,0x50,0x4c,0x44,0xc0, ++0x20,0x27,0x3c,0x45,0x44,0x7f,0xa4,0x25,0xfc,0x25,0x25,0x25,0x2d,0x35,0x29,0x11,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c, ++0x22,0x21,0x39,0x47,0x42,0x7a,0xa3,0x22,0xfa,0x22,0x22,0x22,0x2c,0x34,0x29,0x0,0x20,0x20,0x24,0xfe,0x40,0x20,0xbc,0xd0,0x94,0xfe,0x90,0x90,0xa8,0xa6,0xc2,0x0, ++0x24,0x22,0x38,0x4f,0x44,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x35,0x25,0xb,0x11,0x40,0x40,0x44,0xfe,0x80,0x0,0x7e,0x14,0x10,0x54,0x5e,0x50,0x50,0x70,0x9e,0x4, ++0x20,0x28,0x3f,0x41,0x40,0x7f,0xa4,0x24,0xff,0x24,0x25,0x25,0x2d,0x35,0x24,0x4,0x80,0x44,0xfe,0x10,0xa4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xc, ++0x10,0x13,0x1c,0x21,0x21,0x7d,0x90,0x15,0xff,0x11,0x11,0x11,0x14,0x1b,0x10,0x0,0x4,0xfe,0x50,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20, ++0x20,0x2f,0x38,0x4a,0x49,0x7f,0xa8,0x2a,0xfa,0x2a,0x2b,0x28,0x38,0x29,0x12,0x24,0x4,0xfe,0x8,0x28,0x48,0xee,0x92,0xa4,0xa8,0xa8,0xe8,0xa8,0x94,0x14,0x24,0x42, ++0x20,0x24,0x3a,0x40,0x4f,0x79,0xa0,0x27,0xf8,0x23,0x20,0x27,0x28,0x30,0x21,0x6,0xa0,0xa4,0xa8,0xa0,0xfe,0x10,0xa0,0xfc,0x40,0xf8,0x40,0xfc,0x40,0xa0,0x1c,0x8, ++0x10,0x10,0x1d,0x23,0x21,0x7d,0x91,0x11,0xfc,0x13,0x10,0x11,0x15,0x19,0x11,0x1,0x80,0xf8,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc, ++0x22,0x21,0x3f,0x40,0x47,0x7c,0xa4,0x27,0xf8,0x27,0x20,0x21,0x2f,0x31,0x25,0x2,0x10,0x10,0xf4,0x1e,0xe4,0x54,0x54,0xd4,0x14,0xc8,0x88,0xd4,0x14,0x24,0x22,0x40, ++0x24,0x22,0x39,0x44,0x47,0x7c,0xa5,0x25,0xfd,0x25,0x25,0x24,0x2d,0x36,0x24,0x4,0x4,0xfe,0x44,0x54,0xfc,0x44,0xf4,0x54,0xf4,0x54,0xf4,0xe4,0x54,0x4c,0x44,0x4c, ++0x11,0x10,0x1f,0x20,0x22,0x7d,0x90,0x17,0xfc,0x11,0x11,0x11,0x15,0x19,0x11,0x1,0x8,0x90,0xfc,0x90,0x94,0x98,0x90,0xfe,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8, ++0x20,0x20,0x3f,0x45,0x4a,0x78,0xa3,0x22,0xfb,0x20,0x23,0x22,0x2b,0x32,0x20,0x0,0x80,0x40,0xfe,0x12,0x4c,0x40,0xf8,0x48,0xf8,0x40,0xf8,0x48,0xf8,0x48,0x40,0x40, ++0x20,0x27,0x39,0x41,0x41,0x7f,0xa4,0x24,0xfc,0x27,0x21,0x21,0x29,0x31,0x2a,0x4,0x4,0x7e,0x44,0x44,0x7c,0x10,0xfe,0x92,0x92,0x92,0xfe,0x10,0x10,0x14,0xfe,0x42, ++0x20,0x23,0x38,0x42,0x41,0x7b,0xa4,0x23,0xfa,0x22,0x23,0x20,0x29,0x30,0x2f,0x0,0x28,0xb0,0xa4,0x98,0x10,0xf8,0x4,0xfa,0x8,0x8,0xf8,0x0,0x10,0xa4,0xfe,0x0, ++0x21,0x27,0x39,0x41,0x42,0x7f,0xa2,0x23,0xfa,0x23,0x22,0x23,0x29,0x30,0x23,0xc,0x8,0xfe,0x28,0xfe,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x10,0xe0,0x18,0x6, ++0x20,0x27,0x3c,0x44,0x47,0x79,0xa3,0x24,0xf8,0x27,0x24,0x27,0x28,0x30,0x27,0x0,0x4,0xfe,0xa4,0xa4,0xfc,0x0,0xfc,0x84,0x84,0xf4,0x94,0xf4,0x84,0xa4,0xf4,0x8, ++0x20,0x28,0x3f,0x41,0x48,0x7f,0xa0,0x23,0xfe,0x23,0x22,0x2b,0x30,0x25,0x9,0x0,0x80,0x48,0xfc,0x10,0xa4,0xfe,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x40,0x24,0xa,0xf8, ++0x20,0x20,0x3f,0x45,0x41,0x7a,0xa7,0x2d,0xf3,0x24,0x2b,0x20,0x29,0x32,0x24,0x0,0x80,0x40,0xfe,0x2,0xbc,0xa4,0xa8,0x10,0xf8,0x6,0xf8,0x40,0x50,0x4c,0x44,0xc0, ++0x20,0x20,0x3f,0x44,0x47,0x7c,0xa7,0x25,0xfd,0x25,0x25,0x2d,0x34,0x25,0x9,0x12,0x40,0x24,0xfe,0x90,0xfc,0x94,0xfc,0x10,0xd4,0x18,0x52,0x8e,0x0,0x54,0x52,0x2, ++0x20,0x20,0x3b,0x40,0x4f,0x78,0xa3,0x2a,0xff,0x22,0x23,0x20,0x2b,0x30,0x2f,0x0,0x8,0x1c,0xe0,0x44,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xf8,0x40,0xf8,0x40,0xfe,0x0, ++0x20,0x23,0x20,0x3c,0x50,0x93,0x12,0xfe,0x12,0x13,0x10,0x28,0x24,0x44,0x81,0x0,0x44,0xe4,0x44,0x44,0x44,0xc4,0x44,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x44,0x84, ++0x20,0x20,0x22,0x3e,0x52,0x92,0x15,0xfc,0x10,0x10,0x13,0x28,0x24,0x40,0x8f,0x0,0x40,0x40,0x48,0x48,0x48,0x48,0x54,0xe2,0x40,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x20,0x20,0x20,0x3d,0x51,0x93,0x15,0xfd,0x11,0x11,0x11,0x29,0x25,0x45,0x81,0x1,0x80,0xa0,0x94,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x0,0xe,0xf2,0x12,0x12,0xfe,0x13,0x32,0x3a,0x56,0x52,0x92,0x12,0x13,0x12,0x10,0x20,0x20,0x20,0x20,0x20,0x24,0xac,0x30,0x20,0x20,0x20,0x20,0xa2,0x22,0x1e,0x0, ++0x0,0xc,0xf0,0x13,0x12,0xfe,0x12,0x33,0x38,0x54,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x50,0x78,0xc0,0x40,0x40,0x44,0xfe,0x44,0xc4,0x44,0x54,0x48,0x40,0x40,0x40, ++0x0,0xc,0xf0,0x17,0x10,0xfc,0x13,0x30,0x38,0x55,0x51,0x92,0x14,0x10,0x10,0x10,0x40,0x40,0x44,0xfe,0x40,0x48,0xfc,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x0,0xc,0xf0,0x10,0x17,0xfc,0x10,0x30,0x38,0x55,0x51,0x91,0x12,0x14,0x18,0x10,0x40,0x50,0x48,0x48,0xfe,0x40,0x40,0xc0,0xe0,0x50,0x50,0x48,0x4e,0x44,0x40,0x40, ++0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x30,0x38,0x57,0x52,0x92,0x12,0x12,0x13,0x12,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x0,0xc,0xf0,0x17,0x10,0xfc,0x11,0x31,0x3a,0x54,0x50,0x92,0x12,0x12,0x13,0x10,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x22,0x22,0x1e,0x40,0x40,0x48,0x48,0x48,0xf8,0x8, ++0x8,0xc,0xf7,0x12,0x11,0xfc,0x13,0x30,0x38,0x54,0x57,0x90,0x10,0x10,0x11,0x10,0x8,0x3c,0xc0,0x48,0x50,0x0,0xf8,0x10,0x60,0x44,0xfe,0x40,0x40,0x40,0x40,0x80, ++0x0,0xc,0xf3,0x12,0x12,0xff,0x12,0x32,0x3b,0x56,0x52,0x92,0x12,0x12,0x13,0x12,0x80,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x84,0x4c,0x50,0x20,0x90,0xe,0x4, ++0x4,0xf,0xf1,0x11,0x15,0xff,0x11,0x31,0x38,0x57,0x50,0x90,0x10,0x11,0x12,0x10,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x26,0x24,0x20, ++0x0,0xc,0xf0,0x10,0x11,0xfe,0x14,0x31,0x38,0x54,0x50,0x95,0x15,0x19,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x44,0xf0,0x10,0xa0,0x40,0x44,0x12,0x12,0xf0,0x0, ++0x0,0xc,0xf7,0x10,0x13,0xfe,0x13,0x32,0x3b,0x56,0x53,0x92,0x1f,0x11,0x12,0x14,0x40,0x48,0xfc,0x40,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x10,0xc,0x4, ++0x0,0xd,0xf1,0x11,0x11,0xfd,0x11,0x31,0x39,0x56,0x50,0x91,0x12,0x10,0x11,0x16,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x44,0x7a,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x0,0xc,0xf7,0x10,0x12,0xf9,0x17,0x30,0x3f,0x54,0x55,0x95,0x15,0x14,0x17,0x14,0x40,0x48,0xfc,0x40,0x48,0x50,0xfe,0x4,0xfe,0x4,0xf4,0x14,0xf4,0x4,0xfc,0x4, ++0x0,0x6,0x78,0x9,0xff,0x1c,0x2a,0x48,0x14,0x2a,0x6b,0x9c,0x1a,0x69,0x8,0x18,0x20,0x20,0x24,0x3e,0xa0,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x4,0xe,0xf1,0x12,0xfe,0x10,0x38,0x56,0x92,0x7c,0x44,0x7d,0x46,0x7c,0x44,0x1,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x40,0xfc,0x84,0x88,0x50,0x20,0x50,0x8e, ++0x4,0xb,0xf0,0x17,0x14,0xff,0x11,0x37,0x39,0x57,0x51,0x9f,0x11,0x13,0x1d,0x11,0x40,0xfe,0x0,0xbc,0xa4,0xbc,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x48,0x30,0x8e,0x4, ++0x10,0x10,0x21,0x7d,0x45,0x45,0x45,0x7d,0x45,0x45,0x45,0x45,0x7e,0x42,0x4,0xb,0x8,0x1c,0xe0,0x0,0x0,0x0,0xfc,0x4,0x84,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x10,0x10,0x20,0x7f,0x48,0x49,0x4a,0x4d,0x79,0x48,0x48,0x48,0x48,0x79,0x42,0xc,0x80,0x40,0x44,0xfe,0x0,0x10,0xc,0x14,0x10,0xa0,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x10,0x11,0x21,0x79,0x49,0x4a,0x48,0x4f,0x78,0x49,0x49,0x49,0x49,0x79,0x49,0x1,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x8,0xfe,0x8,0x1c,0x2a,0x48,0x89,0xa,0x1f,0x10,0x1f,0x10,0x10,0x1f,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x10,0x10,0xf8,0x10,0xf0,0x10,0x10,0xf0,0x10, ++0x10,0x17,0x20,0x7a,0x4f,0x48,0x49,0x4a,0x7f,0x4a,0x4a,0x4b,0x4a,0x7a,0x4b,0x2,0x38,0xc0,0x48,0x54,0xfe,0xe0,0x50,0x48,0xfe,0x48,0x48,0xf8,0x48,0x48,0xf8,0x8, ++0x2,0x7,0x7a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x29,0x2a,0x5e,0x40,0x80,0x10,0x10,0x50,0x54,0x7e,0x90,0x14,0xfe,0x10,0x28,0x26,0x42,0x80,0x40,0x3e,0x4, ++0x10,0x12,0xff,0x28,0x26,0x42,0xbc,0x0,0xfe,0x20,0x7c,0x4,0x4,0x44,0x29,0x12,0x0,0xc,0xf8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xc8,0xd4,0x74,0x2, ++0x0,0x7f,0x4,0x2,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x21,0x21,0x20,0x10,0xf8,0x20,0xc0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x20,0x20,0x21,0x29,0xfd,0x29,0x29,0x29,0x29,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x4,0x4,0x2,0xff,0x0,0x4,0x1f,0x14,0x12,0x10,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0x44,0x7e,0x80,0x82,0x62,0xfe,0x20,0x20,0xa0,0x44,0xfe,0x4,0xe4,0x14,0x8, ++0x0,0x40,0x49,0x59,0x61,0x45,0x45,0x3d,0x11,0x11,0xfe,0x10,0x13,0x10,0x10,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x11,0x51,0x7f,0x53,0x95,0x11,0x11,0x29,0x28,0x2a,0x4d,0x48,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x11,0x15,0xff,0x11,0x11,0x11,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x10,0x15,0xff,0x21,0x51,0x95,0xff,0x11,0x39,0x34,0x54,0x93,0x10,0x50,0x20,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x10,0x14,0x1f,0x11,0x15,0x7f,0x45,0x45,0x7d,0x45,0x40,0x40,0x43,0x40,0x80,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x20,0x20,0x25,0x7f,0x85,0x5,0x75,0x55,0x55,0x55,0x74,0x54,0x5,0x8,0x28,0x10,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x0,0x6,0x79,0x51,0x51,0x55,0x7f,0x49,0x49,0x49,0x48,0x44,0x45,0x54,0x6a,0x1,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x94,0x8, ++0x8,0x8,0x32,0xc,0x10,0x3e,0x0,0xff,0x2,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x20,0x20,0xc8,0x30,0x40,0xf8,0x4,0xfe,0x0,0xf0,0x10,0x24,0xfe,0x4,0xe4,0xc, ++0x0,0x1,0xff,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x41,0x43,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x8,0x8,0xfe,0x8,0xe,0x78,0x9,0x1a,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x0,0x40,0x48,0xfc,0x48,0xc8,0xaa,0xa,0x6,0xe0,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18, ++0x0,0xc,0x71,0x11,0x11,0x15,0xff,0x11,0x15,0x7f,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x12,0x12,0x12,0x22,0x3f,0x62,0xa6,0x27,0x2a,0x2a,0x32,0x22,0x22,0x22,0x22,0x22,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x2,0x1,0xff,0x4,0x14,0x25,0x46,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x0,0x4,0xfe,0x40,0x50,0x4c,0x44,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18, ++0x8,0xa,0x7f,0x8,0x48,0x7f,0x41,0x82,0x3e,0x4,0x8,0xfe,0xb,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x0,0x1,0xff,0x0,0x0,0x77,0x55,0x55,0x55,0x77,0x55,0x55,0x55,0x55,0x55,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x8,0x28,0x2a,0x3f,0x48,0x88,0xa,0xff,0x0,0x3e,0x22,0x22,0x23,0x22,0x3e,0x22,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x0,0x28,0x45,0x93,0x11,0x29,0x45,0x83,0x7d,0x45,0x44,0x44,0x47,0x7c,0x44,0x0,0x20,0x48,0xfc,0x8,0x48,0x8,0x28,0x10,0x4,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x40,0x2f,0x11,0x49,0x49,0x7f,0x49,0x59,0x5d,0x5b,0x69,0x49,0x49,0x41,0x45,0x42,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x22,0x14,0x7f,0x9,0x9,0x7f,0x48,0x48,0x7f,0x9,0x19,0x1d,0x2a,0xc8,0x8,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x4,0x6,0x7d,0x4,0x4,0xff,0x14,0x54,0x5c,0x54,0x52,0x52,0x5e,0xf1,0x40,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x82,0x8a,0x4, ++0x22,0x22,0xff,0x22,0x22,0x0,0x7f,0x49,0x49,0x49,0x7f,0x49,0x49,0x49,0x7f,0x41,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x8,0x9,0xff,0x14,0x12,0x29,0x7f,0xc9,0x7f,0x49,0x49,0x7f,0x8,0xa,0xc,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x8,0x11,0x7f,0x49,0x49,0x7f,0x49,0x51,0x7f,0x10,0x29,0xff,0x8,0x8,0x8,0x8,0x10,0x24,0xfe,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x92,0xfa,0x2,0xa,0x4, ++0x10,0xa,0xff,0x0,0x3e,0x22,0x22,0x3e,0x0,0x7e,0x4,0xff,0x9,0x8,0x28,0x10,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x20,0x27,0x25,0xfd,0x25,0x27,0x25,0x75,0x55,0x57,0x55,0x55,0x75,0x49,0x13,0x0,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x0,0x77,0x55,0x55,0x77,0x0,0x7f,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x8,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x0,0x41,0x22,0x0,0xff,0x0,0x22,0x22,0x55,0xff,0x22,0x22,0x55,0xff,0x11,0x0,0x10,0x24,0x7e,0x44,0xd4,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x1,0x7f,0x49,0x49,0x7f,0x40,0x5f,0x51,0x51,0x5f,0x51,0x5f,0x51,0x51,0x9f,0x11,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x7c,0x8,0xff,0x32,0x54,0x91,0x32,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x80,0xfe,0x88,0x50,0x20,0x50,0x8e,0xe0,0x20,0x20,0x44,0xfe,0x4,0xf4,0x4,0x18, ++0x2,0x7,0xf8,0x41,0x2a,0x2a,0x40,0x7e,0x88,0x9,0xff,0x8,0x49,0x49,0x7f,0x1,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x82,0x12,0xfa,0x2,0xa,0x4, ++0x22,0x14,0x7f,0x14,0x7f,0x15,0xff,0x15,0x7f,0x14,0x36,0x55,0x94,0x14,0x14,0x14,0x10,0x24,0x7e,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x0,0x77,0x55,0x55,0x55,0x55,0x22,0x55,0x10,0xff,0x22,0x22,0x14,0x8,0x16,0x61,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0xfe,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x8,0x5,0x7f,0x52,0x52,0x52,0x7f,0x52,0x52,0x5e,0x40,0x52,0x52,0x6d,0x80,0x0,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x0,0xee,0x22,0xaa,0x66,0xaa,0x32,0x10,0x28,0x46,0x9a,0x60,0x19,0x64,0x8,0x70,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x14,0x8, ++0x8,0x9,0xff,0x55,0x22,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x88,0x18,0x10,0x24,0xfe,0x44,0x54,0x44,0xd4,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4, ++0x14,0x14,0x3f,0x24,0x64,0xbf,0x24,0x24,0x3f,0x24,0x24,0x3f,0x20,0x55,0x54,0x80,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x84, ++0x8,0xff,0x22,0x3e,0x2a,0x49,0x9a,0x1f,0x12,0x11,0x10,0x1f,0x0,0x7f,0x0,0x0,0x28,0xa4,0xfe,0x20,0x52,0x92,0xe,0xe0,0x20,0x20,0x44,0xfe,0x4,0xe4,0x14,0x8, ++0x2,0x7f,0x14,0x8,0xff,0x1a,0x28,0x49,0x7f,0x55,0x63,0x5d,0x55,0x5d,0x41,0x43,0x10,0x24,0x7e,0x44,0x54,0x44,0x54,0x48,0xc0,0x7e,0x2,0x12,0xfa,0x2,0xa,0x4, ++0x10,0x23,0x7c,0x45,0x57,0x45,0x55,0x49,0x41,0x7f,0x2,0x12,0xfa,0x2,0xa,0x5,0x88,0xfe,0xa8,0xfc,0x20,0xfc,0x20,0xfc,0x20,0xfe,0x0,0xf8,0x48,0x30,0x48,0x86, ++0x0,0x7c,0x45,0x7c,0x10,0x5d,0x50,0xfe,0x4,0x1f,0x12,0x11,0x1f,0x0,0x7f,0x0,0x80,0xf8,0x50,0x20,0x50,0xfe,0x88,0xf8,0x0,0xe0,0x20,0x44,0xfe,0x4,0xe4,0x18, ++0x22,0xff,0x22,0x77,0x55,0x77,0x24,0x3f,0x64,0xbf,0x24,0x3f,0x24,0x24,0x3f,0x20,0x10,0xa4,0x7e,0x44,0x54,0x44,0x54,0x48,0x40,0x7e,0x2,0x12,0xfa,0x2,0x8a,0x4, ++0x0,0x0,0x1f,0x10,0x90,0x50,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x41,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x80, ++0x0,0x0,0x1f,0x10,0x90,0x57,0x50,0x10,0x30,0x50,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0xa4,0x94,0x88,0x80,0x80,0x80, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x51,0x11,0x31,0x51,0xd1,0x12,0x22,0x24,0x48,0x10,0x80,0x44,0xfe,0x0,0x4,0xfe,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0x50,0x20, ++0x0,0x0,0x1f,0x10,0x90,0x50,0x54,0x14,0x34,0x54,0xd4,0x14,0x24,0x27,0x40,0x0,0x80,0x44,0xfe,0x0,0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xfc,0x4,0x4, ++0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x14,0x35,0x54,0xd4,0x14,0x28,0x28,0x51,0x2,0x80,0x44,0xfe,0x0,0xfc,0x0,0x40,0x44,0xfe,0x44,0x44,0x44,0x84,0x84,0x28,0x10, ++0x0,0x0,0x1f,0x10,0x90,0x50,0x5f,0x10,0x30,0x51,0xd1,0x11,0x22,0x22,0x44,0x8,0x80,0x44,0xfe,0x80,0xa0,0x94,0xfe,0xa0,0xa0,0x20,0x20,0x20,0x22,0x22,0x1e,0x0, ++0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd3,0x12,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x33,0x52,0xd2,0x12,0x23,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x4,0xfe,0x8,0x8,0xc8,0x48,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x0,0x0,0x1f,0x10,0x90,0x53,0x52,0x12,0x33,0x52,0xd2,0x13,0x22,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x0,0xfe,0x0, ++0x0,0x0,0x1f,0x11,0x91,0x51,0x52,0x12,0x34,0x58,0xd0,0x10,0x20,0x20,0x40,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80,0x80,0x80, ++0x0,0x0,0x1f,0x12,0x92,0x53,0x54,0x1b,0x32,0x52,0xd3,0x12,0x22,0x22,0x41,0x0,0x80,0x44,0xfe,0x0,0x8,0xfc,0x8,0xc8,0x48,0x48,0xc8,0x28,0x12,0x2,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x90,0x50,0x57,0x10,0x30,0x50,0xd3,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x0,0x80,0x48,0xfc,0x40,0x40,0x50,0xf8,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x11,0x32,0x57,0xd0,0x10,0x21,0x22,0x47,0x0,0x80,0x44,0xfe,0x80,0x44,0xfe,0x80,0x0,0x10,0xe0,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x0,0x0,0x1f,0x12,0x92,0x52,0x5f,0x12,0x32,0x52,0xd2,0x12,0x24,0x24,0x4a,0x11,0x80,0x44,0xfe,0x0,0x0,0x4,0xbe,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xbc,0x24, ++0x0,0x0,0x1f,0x10,0x9f,0x51,0x51,0x19,0x35,0x55,0xd5,0x15,0x21,0x21,0x5f,0x0,0x80,0x44,0xfe,0x0,0xfc,0x20,0x20,0x24,0x24,0x28,0x28,0x30,0x20,0x24,0xfe,0x0, ++0x1,0x0,0x3f,0x20,0xbf,0x60,0x2f,0x20,0x6f,0xa8,0x2f,0x20,0x41,0x41,0x86,0x18,0x0,0x84,0xfe,0x80,0xfe,0x80,0xf8,0x88,0xf8,0x80,0xfc,0x84,0x54,0x48,0x20,0x1c, ++0x0,0x0,0x1f,0x10,0x90,0x5f,0x50,0x10,0x37,0x50,0xd0,0x15,0x25,0x29,0x40,0x0,0x80,0x44,0xfe,0x40,0x44,0xfe,0x40,0x48,0xfc,0x0,0x80,0x64,0x2a,0xa,0xf8,0x0, ++0x0,0x0,0x1f,0x11,0x97,0x51,0x51,0x17,0x34,0x58,0xd3,0x10,0x20,0x21,0x42,0xc,0x80,0x44,0xfe,0x10,0xfc,0x10,0x10,0xfe,0x82,0x84,0xf8,0x88,0x88,0x8,0x28,0x10, ++0x0,0x0,0x1f,0x10,0x97,0x50,0x53,0x11,0x31,0x5f,0xd0,0x13,0x22,0x22,0x43,0x2,0x80,0x44,0xfe,0x0,0xfc,0x80,0xf0,0x10,0x14,0xfe,0x0,0xf8,0x8,0x8,0xf8,0x8, ++0x0,0x0,0x1f,0x10,0x92,0x52,0x52,0x15,0x38,0x50,0xd7,0x10,0x20,0x20,0x4f,0x0,0x80,0x44,0xfe,0x40,0x48,0x48,0x48,0x54,0xe2,0x48,0xfc,0x40,0x40,0x44,0xfe,0x0, ++0x0,0x0,0x1f,0x12,0x91,0x55,0x54,0x17,0x34,0x54,0xd4,0x15,0x26,0x24,0x44,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xf4,0x44,0xc4,0xe4,0x54,0x4c,0x44,0x54,0x8, ++0x0,0x0,0x1f,0x10,0x94,0x52,0x52,0x18,0x35,0x50,0xd2,0x14,0x2c,0x24,0x44,0x3,0x80,0x44,0xfe,0x20,0x20,0xa8,0xa4,0xa2,0x2a,0x28,0x30,0x10,0x20,0x40,0x80,0x0, ++0x0,0x0,0x1f,0x10,0x9f,0x50,0x53,0x1c,0x35,0x52,0xdd,0x11,0x22,0x2c,0x41,0x0,0x80,0x44,0xfe,0x0,0xfc,0x80,0x8,0x98,0x60,0x40,0xe0,0x50,0x4e,0x44,0x40,0x80, ++0x0,0x0,0x1f,0x11,0x91,0x5f,0x51,0x11,0x3f,0x51,0xd1,0x1f,0x21,0x21,0x41,0x1,0x80,0x44,0xfe,0x20,0x24,0x3e,0x20,0x28,0x3c,0x20,0x24,0x3e,0x20,0x20,0x20,0x20, ++0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x55,0xd5,0x15,0x25,0x24,0x47,0x4,0x80,0x44,0xfe,0x0,0xfc,0x44,0x44,0xfc,0x44,0xf4,0x14,0x14,0xf4,0x4,0xfc,0x4, ++0x0,0x0,0x1f,0x10,0x93,0x50,0x5f,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x0,0xf8,0x40,0xfe,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8, ++0x1,0x0,0x3f,0x22,0xac,0x68,0x28,0x2e,0x68,0xa8,0x2f,0x28,0x41,0x42,0x8c,0x30,0x0,0x84,0xfe,0x80,0xb8,0x88,0x88,0xb8,0x88,0x88,0xf8,0x88,0x40,0x20,0x1e,0x4, ++0x0,0x0,0x1f,0x14,0x92,0x50,0x5f,0x12,0x33,0x52,0xd2,0x14,0x24,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0x10,0x10,0xe8,0x28,0xa4,0xc6,0xb0,0x88,0xa0,0x98,0x8,0x0, ++0x1,0x0,0x3f,0x24,0xa2,0x6f,0x28,0x2f,0x68,0xaf,0x20,0x3f,0x40,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x80,0xfe,0x80,0x80,0x80,0x80, ++0x0,0x0,0x1f,0x11,0x9f,0x51,0x57,0x15,0x35,0x57,0xd1,0x13,0x25,0x29,0x41,0x1,0x80,0x44,0xfe,0x0,0xe4,0x4,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x44,0x14,0x8, ++0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x3f,0x62,0xa4,0x28,0x37,0x40,0x40,0x9f,0x0,0x0,0x84,0xfe,0x80,0xf8,0x90,0xa4,0xfe,0x20,0x90,0x8e,0xf4,0x80,0x88,0xfc,0x0, ++0x0,0x0,0x1f,0x12,0x92,0x54,0x55,0x1c,0x34,0x55,0xd4,0x17,0x24,0x24,0x44,0x7,0x80,0x44,0xfe,0x0,0xf8,0x8,0xfe,0x40,0xfc,0x20,0x24,0xfe,0x20,0x50,0x8e,0x4, ++0x0,0x0,0x1f,0x11,0x9f,0x50,0x57,0x10,0x3f,0x51,0xd2,0x17,0x28,0x30,0x47,0x0,0x80,0x44,0xfe,0x20,0xfc,0x80,0xf8,0x80,0xfe,0x0,0x8,0xfc,0x40,0x44,0xfe,0x0, ++0x0,0x0,0x1f,0x10,0x92,0x51,0x57,0x11,0x36,0x50,0xdf,0x11,0x23,0x20,0x41,0x6,0x80,0x44,0xfe,0x40,0x48,0x50,0xfc,0x50,0x4c,0x80,0xfe,0x10,0x20,0xc0,0x30,0x8, ++0x0,0x0,0x1f,0x10,0x97,0x54,0x54,0x17,0x34,0x57,0xd4,0x14,0x27,0x24,0x44,0x5,0x80,0x44,0xfe,0x0,0xbc,0x84,0x84,0xbc,0x0,0xfc,0x24,0x28,0x90,0x28,0x46,0x84, ++0x1,0x0,0x3f,0x20,0xaf,0x64,0x22,0x21,0x62,0xbc,0x27,0x24,0x47,0x40,0x9f,0x0,0x0,0x84,0xfe,0x0,0xf8,0x90,0x20,0xc0,0x20,0x9e,0xf4,0x90,0xf0,0x88,0xfc,0x4, ++0x0,0x0,0x1f,0x12,0x9f,0x52,0x5f,0x12,0x3f,0x52,0xd1,0x12,0x2a,0x2a,0x51,0x0,0x80,0x44,0xfe,0x0,0xfc,0x24,0xa4,0x24,0xd4,0x88,0x0,0xc0,0x54,0x12,0xf2,0x0, ++0x1,0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x20,0x5f,0x41,0x86,0x18,0x0,0x84,0xfe,0x20,0xfc,0x20,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xfe,0x40,0x20,0x1c, ++0x1,0x0,0x3f,0x24,0xaf,0x69,0x2d,0x2b,0x7f,0xa9,0x2d,0x2b,0x49,0x49,0x93,0x20,0x0,0x84,0xfe,0x0,0x78,0x48,0x48,0x46,0x80,0x78,0x48,0x28,0x10,0x28,0x46,0x84, ++0x1,0x0,0x3f,0x28,0xa4,0x69,0x22,0x24,0x6f,0xb4,0x27,0x24,0x47,0x44,0x84,0x4,0x0,0x84,0xfe,0x88,0x90,0x48,0x20,0x10,0xfe,0x14,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x1,0x0,0x3f,0x22,0xaf,0x62,0x3f,0x20,0x6f,0xa8,0x2f,0x28,0x4f,0x42,0x84,0x8,0x0,0x84,0xfe,0x20,0xf8,0x20,0xfe,0x88,0xf8,0x88,0xf8,0x88,0xf8,0x20,0x18,0x8, ++0x0,0x3f,0x20,0x3f,0xa1,0x6f,0x29,0x2f,0x60,0xaf,0x20,0x3f,0x44,0x48,0x92,0x1,0x80,0xfe,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x0,0xf8,0x0,0xfe,0x90,0x8c,0x84,0x0, ++0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2f,0x61,0xaf,0x21,0x2f,0x44,0x48,0x92,0x1,0x80,0xfe,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x10,0xe0,0x8,0xfc,0x90,0x8c,0x84,0x0, ++0x0,0x3f,0x20,0x2f,0xa9,0x6b,0x2b,0x26,0x69,0xa1,0x3f,0x22,0x46,0x41,0x82,0xc,0x80,0xfe,0x0,0x78,0x48,0x58,0x58,0x30,0x48,0x0,0xfe,0x20,0x40,0xc0,0x30,0x10, ++0x0,0x3f,0x24,0x27,0xa9,0x75,0x2a,0x24,0x6b,0xb0,0x2f,0x20,0x44,0x44,0x8a,0x1,0x80,0xfe,0x40,0x78,0x48,0x50,0x20,0x18,0xe6,0x0,0xf8,0x80,0x90,0x8c,0x84,0x0, ++0x0,0x3f,0x20,0x2f,0xa9,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x48,0x48,0x89,0x8,0x80,0xfe,0x20,0x3c,0x68,0x90,0x28,0xc6,0x38,0x50,0x7c,0x90,0x7c,0x10,0xfe,0x0, ++0x0,0x3f,0x20,0x2e,0xaa,0x6a,0x2c,0x2a,0x69,0xa9,0x2d,0x2a,0x49,0x49,0x8a,0x8,0x80,0xfe,0x40,0x78,0x90,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x10,0x44,0x4a,0x4a,0x38, ++0x0,0x3f,0x20,0xaf,0x69,0x25,0x25,0x69,0xa6,0x28,0x37,0x20,0x47,0x40,0x80,0xf,0x80,0xfc,0x0,0x78,0x48,0x28,0xa8,0x48,0x70,0x8e,0x24,0x40,0x90,0x20,0xc0,0x0, ++0x0,0x3f,0x21,0x20,0xbc,0x6b,0x28,0x29,0x69,0xbd,0x28,0x29,0x4a,0x4e,0xb8,0x0,0x80,0xfe,0x0,0x80,0x1e,0xe8,0x48,0x48,0x48,0x5c,0x88,0x48,0x28,0x8,0x3e,0x0, ++0x0,0x3f,0x22,0x22,0xaf,0x62,0x2f,0x2a,0x6a,0xaf,0x22,0x27,0x4a,0x52,0x82,0x2,0x80,0xfe,0x20,0x3c,0xa4,0x48,0xbe,0xa2,0xaa,0xaa,0x2a,0x2a,0xaa,0x10,0x14,0x22, ++0x0,0x3f,0x20,0x2f,0xa2,0x7f,0x20,0x2f,0x68,0xaf,0x28,0x2f,0x40,0x4a,0x92,0x21,0x80,0xfe,0x80,0xf8,0x20,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0x44,0x14,0xf0, ++0x0,0x3f,0x20,0x2f,0xa8,0x6f,0x28,0x2a,0x6f,0xaa,0x2a,0x2f,0x50,0x52,0xa4,0x0,0x80,0xfe,0x0,0xdc,0x54,0xd4,0x14,0xa6,0xc0,0xbc,0x94,0xd4,0x8,0x94,0x62,0x0, ++0x1,0x0,0x3f,0x20,0xaf,0x69,0x29,0x2f,0x68,0xaf,0x39,0x29,0x49,0x4f,0x89,0x0,0x0,0x84,0xfe,0x20,0x14,0xfe,0x4,0x8,0xfe,0x10,0x10,0x7c,0x10,0x10,0x10,0x10, ++0x0,0x3f,0x22,0xbf,0x62,0x2f,0x28,0x6f,0xa8,0x2f,0x28,0x2f,0x48,0x5f,0x85,0x8,0x80,0xfe,0x0,0xfe,0x10,0xbe,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xd0,0x14,0xa2, ++0x0,0x3f,0x20,0x2f,0xad,0x6b,0x2f,0x22,0x67,0xac,0x37,0x24,0x47,0x44,0x87,0x4,0x80,0xfe,0x0,0x78,0x68,0x58,0x78,0x40,0xfc,0x40,0xf8,0x40,0xf8,0x40,0xfc,0x0, ++0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x44,0x24,0x29,0x2a,0x8,0x16,0xf8,0x1,0x0,0x0,0x4,0xfe,0x44,0x64,0x54,0x54,0x44,0xcc,0x54,0x64,0x44,0x44,0x44,0x54,0x88, ++0x20,0x10,0x13,0x0,0xfe,0x1,0x5,0x45,0x25,0x29,0x28,0x8,0x16,0xf9,0x2,0x0,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x70,0xa8,0x26,0x24,0x20, ++0x2,0x41,0x7f,0x40,0x88,0x12,0x22,0x7,0x8,0x14,0x22,0x1,0x1,0x6,0x18,0x60,0x0,0x0,0xfe,0x2,0x24,0x10,0x8,0xf0,0x10,0x20,0x40,0x80,0x0,0x0,0x0,0x0, ++0x2,0x41,0x7f,0x48,0x90,0x2f,0x0,0x0,0x1f,0x10,0x10,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0x22,0x14,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x8,0x8,0x50,0x20, ++0x2,0x41,0x7f,0x48,0x91,0x1,0xff,0x1,0x11,0x11,0x11,0x1f,0x1,0x1,0x1,0x0,0x0,0x0,0xfe,0x22,0x14,0x0,0xfe,0x0,0x10,0x10,0x10,0xf0,0x10,0x2,0x2,0xfe, ++0x2,0x41,0x7f,0x48,0x90,0x0,0x1f,0x2,0x1,0x3f,0x0,0x1,0xe,0x30,0x48,0x7,0x0,0x0,0xfe,0x22,0x14,0x70,0x80,0x0,0x20,0xf0,0x40,0x80,0x0,0x0,0x6,0xfc, ++0x2,0x41,0x7f,0x48,0x90,0x4,0x8,0x11,0x7e,0x4,0x8,0x14,0x22,0x7e,0x1,0x2,0x0,0x0,0xfe,0x22,0x14,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x28,0x10, ++0x2,0x41,0x7f,0x48,0x92,0x2,0x22,0x12,0x16,0xa,0x12,0x62,0x4,0x4,0x18,0x60,0x0,0x0,0xfe,0x22,0x94,0x80,0x90,0x98,0xa0,0xc0,0xa0,0x98,0x8a,0x82,0x7e,0x0, ++0x41,0x7f,0x48,0x91,0x2f,0x1,0x3f,0x8,0x4,0x12,0x8,0xff,0x1,0x2,0xc,0x30,0x0,0xfe,0x22,0x14,0xe8,0x0,0xfc,0x84,0x88,0x80,0x84,0xfe,0x40,0x30,0x18,0x8, ++0x41,0x7f,0x48,0x90,0x3f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0xfe,0x22,0x14,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1e,0x8,0x0, ++0x41,0x7f,0x48,0x91,0x22,0x4,0xf,0x30,0xde,0x12,0x1e,0x12,0x1e,0x12,0x12,0x16,0x0,0xfe,0x22,0x14,0x88,0x40,0xf0,0xe,0x14,0x90,0x90,0x90,0x90,0x90,0x10,0x30, ++0x41,0x7f,0x48,0x92,0x1,0x3f,0x8,0x4,0xff,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x0,0xfe,0x22,0x14,0x0,0xf8,0x20,0x44,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x41,0x7f,0x49,0x91,0x29,0x5,0x7f,0x9,0x31,0x2,0xff,0x4,0xe,0x1,0x6,0x38,0x0,0xfe,0x22,0x14,0x28,0x40,0xfc,0x20,0x18,0x4,0xfe,0x20,0x40,0x80,0x70,0x8, ++0x41,0x7f,0x48,0x90,0x26,0x38,0x2c,0x2c,0x2a,0x2a,0x29,0x29,0x34,0x5d,0x81,0x2,0x0,0xfe,0x22,0x14,0x18,0xe8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0x54,0x72,0x0, ++0x20,0x10,0x10,0x0,0xfc,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, ++0x20,0x10,0x13,0x0,0xfd,0x8,0x10,0x34,0x58,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x0,0x4,0xfe,0x4,0x44,0xa8,0xa8,0x88,0x50,0x50,0x20,0x50,0x90,0x8,0x6,0x4, ++0x20,0x10,0x10,0x0,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x4,0x14,0x8, ++0x20,0x10,0x13,0x0,0xfc,0x8,0x10,0x35,0x58,0x94,0x10,0x10,0x10,0x10,0x13,0x10,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x10,0x10,0x0,0xfd,0xa,0x14,0x30,0x54,0x9b,0x14,0x10,0x10,0x10,0x10,0x10,0x40,0x40,0xa0,0xa0,0x10,0x8e,0x64,0x20,0x0,0xf8,0x8,0x10,0x10,0x20,0x40,0x80, ++0x20,0x10,0x10,0x0,0xfd,0x8,0x10,0x34,0x5b,0x94,0x10,0x10,0x10,0x11,0x12,0x14,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0xfe,0x40,0x40,0xa0,0xa0,0x10,0xe,0x4, ++0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x13,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x24,0xac,0xb0,0x20,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x20,0x10,0x11,0x0,0xfc,0x8,0x11,0x34,0x58,0x94,0x11,0x10,0x10,0x10,0x13,0x10,0x20,0x20,0x24,0xac,0xb0,0x24,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x10,0x10,0x0,0xfd,0xa,0x15,0x30,0x54,0x99,0x15,0x11,0x11,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0xe,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x10,0x10,0x1,0xfd,0xa,0x10,0x34,0x5b,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x80,0x88,0xfc,0x88,0x50,0x20,0x50,0x88,0x6,0xf8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x40,0x24,0x22,0x2,0xf8,0x10,0x26,0x2a,0x72,0xaa,0x22,0x22,0x22,0x25,0x28,0x20,0x20,0x20,0x28,0xfc,0x40,0x50,0x90,0xfc,0x10,0x14,0xfe,0x10,0x10,0x16,0xfc,0x0, ++0x20,0x11,0x11,0x1,0xfd,0x9,0x10,0x35,0x58,0x94,0x11,0x10,0x10,0x10,0x17,0x10,0x4,0xfe,0x4,0x4,0x4,0xfc,0x0,0xfc,0x20,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x10,0x10,0x1,0xfd,0xa,0x15,0x34,0x5a,0x95,0x11,0x11,0x11,0x10,0x17,0x10,0x40,0x40,0xa0,0x10,0x10,0x28,0xf6,0x0,0x48,0x48,0x48,0x50,0x50,0x24,0xfe,0x0, ++0x22,0x11,0x10,0x2,0xfe,0xa,0x12,0x36,0x5a,0x96,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0xbe,0x84,0x4,0x4,0xf4,0x94,0x94,0xf4,0x94,0x94,0xf4,0x4,0x4,0x14,0x8, ++0x20,0x10,0x10,0x3,0xfc,0x9,0x10,0x37,0x58,0x94,0x11,0x13,0x15,0x11,0x11,0x11,0x40,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0x44,0xa8,0x30,0x20,0x10,0x48,0x8e,0x4, ++0x20,0x10,0x10,0x3,0xfc,0x8,0x13,0x34,0x59,0x95,0x13,0x15,0x19,0x11,0x11,0x11,0x80,0x80,0x88,0xf8,0x90,0xa4,0xfe,0x40,0xf8,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x34,0x58,0x95,0x12,0x14,0x11,0x12,0x10,0x11,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10, ++0x20,0x10,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x94,0x11,0x17,0x10,0x10,0x10,0x10,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x20,0x11,0x11,0x1,0xfd,0x9,0x11,0x35,0x59,0x95,0x11,0x12,0x12,0x14,0x18,0x10,0x4,0xfe,0x4,0x4,0xfc,0x20,0x24,0xfe,0x20,0x24,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x40,0x2f,0x20,0x5,0xfa,0x15,0x20,0x68,0xb7,0x28,0x24,0x25,0x22,0x25,0x28,0x30,0x0,0xfc,0x84,0x28,0x10,0x28,0xc4,0x0,0xbc,0x84,0xc4,0x28,0x10,0x28,0xce,0x84, ++0x21,0x11,0x17,0x1,0xfc,0x8,0x11,0x3a,0x55,0x98,0x13,0x12,0x12,0x12,0x13,0x12,0x10,0x14,0xfe,0x10,0x40,0xa0,0x10,0x8,0xf6,0x0,0xf8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x10,0x13,0x0,0xfc,0xb,0x10,0x35,0x59,0x95,0x11,0x11,0x11,0x11,0x11,0x11,0x90,0x94,0x98,0x90,0x92,0x8e,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0x28,0x10, ++0x21,0x11,0x11,0x1,0xfa,0xa,0x16,0x3a,0x52,0x9a,0x12,0x12,0x12,0x12,0x12,0x12,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x10,0xfe,0x10,0x38,0x54,0x54,0x92,0x10,0x10, ++0x20,0x12,0x11,0x0,0xff,0x9,0x12,0x34,0x58,0x97,0x19,0x12,0x11,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x48,0x46,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc, ++0x40,0x20,0x27,0x4,0xfc,0x17,0x24,0x6c,0xb7,0x2e,0x26,0x2b,0x2a,0x32,0x22,0x22,0x80,0x44,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x94,0x94,0xfc,0x94,0x94,0x94,0x8, ++0x20,0x12,0x12,0x2,0xfe,0xa,0x12,0x34,0x58,0x97,0x12,0x12,0x12,0x12,0x17,0x10,0x90,0x90,0x94,0xbe,0xa0,0xd0,0x88,0x80,0x4,0xfe,0x94,0x94,0x94,0x94,0xfe,0x0, ++0x40,0x27,0x24,0x4,0xfd,0x15,0x25,0x6d,0xb5,0x2d,0x25,0x25,0x29,0x2a,0x34,0x21,0x3c,0xe0,0x3c,0x20,0xfe,0x22,0xf8,0x24,0x1c,0x0,0x78,0x48,0x48,0x4a,0x8a,0x6, ++0x40,0x2f,0x20,0x4,0xfa,0x12,0x24,0x68,0xb3,0x2a,0x22,0x23,0x22,0x22,0x23,0x22,0x4,0xbe,0x84,0xa4,0x94,0x94,0xa4,0x48,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8, ++0x40,0x2f,0x21,0x1,0xf9,0x17,0x24,0x6c,0xb7,0x29,0x21,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x44,0x7c,0x10,0x7c,0x54,0x54,0x54,0x7c,0x10,0x14,0xfe,0x2, ++0x43,0x20,0x2f,0x8,0xfb,0x10,0x23,0x68,0xb7,0x28,0x27,0x24,0x24,0x24,0x24,0x24,0xf8,0x40,0xfe,0x42,0x5c,0x40,0x58,0x44,0xfe,0x80,0xfc,0xa4,0xa4,0xa4,0xb4,0x8, ++0x42,0x22,0x2f,0x2,0xf7,0x2a,0x22,0x77,0xa1,0x33,0x24,0x29,0x20,0x27,0x20,0x20,0xa8,0x48,0xbe,0xa8,0x5c,0xaa,0x8,0xfe,0x10,0xf8,0x44,0xf2,0x40,0xfc,0x40,0xc0, ++0x0,0x0,0x7f,0x1,0x1,0x9,0x9,0x9,0x9,0x11,0x11,0x19,0x25,0x23,0x41,0x80,0x0,0x8,0xfc,0x8,0x10,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x0,0x0,0x86,0x7c, ++0x7f,0x1,0x9,0x9,0x9,0x15,0x23,0xc0,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0xfc,0x8,0x0,0xf0,0x0,0x6,0xfc,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x50,0x20, ++0x0,0x7f,0x52,0x91,0x7d,0x11,0x29,0x29,0x7d,0x9,0x9,0xfd,0xa,0xa,0xd,0xa,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x10,0x10,0x28,0x45,0xfd,0x45,0xa3,0x3d,0x25,0x45,0xa9,0x11,0x2a,0x44,0x89,0x2,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xf8,0x88,0x50,0x20,0x50,0x50,0x88,0xe,0x4, ++0x0,0x7e,0x2,0x24,0x18,0x9,0xfe,0xa,0x18,0x19,0x28,0x48,0x88,0x8,0x28,0x10,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x8,0xfc,0x8,0x8,0x10,0x10,0x20,0x40, ++0x1,0x1,0x7f,0x1,0x1,0x3f,0x1,0x1,0xff,0x3,0x5,0x9,0x11,0x21,0x41,0x1,0x0,0x8,0xfc,0x0,0x0,0xf8,0x0,0x4,0xfe,0x80,0x40,0x20,0x10,0xe,0x4,0x0, ++0x10,0x10,0x15,0xfe,0x10,0x7c,0x10,0xfe,0x33,0x38,0x54,0x50,0x90,0x10,0x10,0x10,0x0,0x8,0xfc,0x8,0x10,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x10,0x10,0x14,0xfe,0x10,0x10,0x7c,0x11,0xfd,0x30,0x38,0x54,0x50,0x90,0x11,0x16,0x20,0x20,0x20,0x20,0xa8,0xa4,0xa2,0x22,0x28,0x2c,0x10,0x20,0x40,0x80,0x0,0x0, ++0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x14,0xfe,0x11,0x7e,0x11,0xfe,0x30,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x40,0x40,0xa0,0x90,0x8,0x2e,0xf4,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0xfc,0x10,0x7f,0x12,0xfc,0x30,0x3b,0x54,0x54,0x91,0x11,0x12,0x14,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x84,0x80,0xf8,0x88,0x88,0x8,0x8,0x28,0x10, ++0x10,0x12,0x11,0xfd,0x11,0x7c,0x13,0xfe,0x32,0x3a,0x56,0x56,0x92,0x12,0x12,0x12,0x40,0x48,0x4c,0x48,0x50,0x44,0xfe,0x4,0xf4,0x94,0x94,0x94,0xf4,0x4,0x14,0x8, ++0x10,0x11,0x15,0xff,0x11,0x7d,0x11,0xfd,0x30,0x3b,0x56,0x56,0x92,0x12,0x12,0x12,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4, ++0x10,0x12,0x11,0xfc,0x13,0x7d,0x12,0xfc,0x38,0x37,0x51,0x52,0x91,0x10,0x11,0x16,0x40,0x48,0x50,0x44,0xfe,0x50,0x4c,0x44,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0xc, ++0x11,0x11,0x17,0xf9,0x13,0x79,0x17,0xf8,0x33,0x3a,0x57,0x52,0x9f,0x12,0x12,0x12,0x10,0x10,0xfc,0x10,0xf8,0x10,0xfe,0x40,0xf8,0x48,0xf8,0x48,0xfe,0x8,0x28,0x10, ++0x10,0x13,0x12,0xff,0x12,0x7f,0x12,0xfe,0x32,0x32,0x52,0x53,0x94,0x14,0x18,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0xa4,0x98,0xae,0xc4,0x8,0xfe,0x88,0x88,0x28,0x10, ++0x10,0x10,0x13,0xfe,0x13,0x7e,0x12,0xff,0x32,0x3b,0x56,0x52,0x92,0x15,0x1a,0x10,0x40,0x24,0xfe,0x48,0xfe,0x58,0xec,0x4a,0x48,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84, ++0x1,0x1f,0x1,0xff,0x4,0x1b,0x68,0x7,0x0,0x7f,0x10,0x3f,0x1,0x1f,0x1,0xff,0x20,0xc0,0x4,0xfe,0x0,0xe0,0x8,0xf8,0x0,0xfc,0x10,0xf8,0x4,0xf0,0x4,0xfe, ++0x2,0xff,0x25,0x24,0x3c,0x24,0x24,0x3c,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x0,0x4,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x2,0xff,0x24,0x25,0x3d,0x25,0x25,0x3d,0x25,0x27,0x25,0x3f,0xe5,0x45,0x5,0x5,0x20,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfe,0x4,0x4,0x4,0x4,0x14,0x8, ++0x2,0xff,0x24,0x24,0x3c,0x25,0x26,0x3c,0x25,0x24,0x26,0x3c,0xe4,0x44,0x4,0x4,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0xfc,0x4,0x8,0x90,0x60,0x20,0x10,0x0, ++0x2,0xff,0x24,0x25,0x3d,0x26,0x24,0x3f,0x24,0x24,0x27,0x3c,0xe4,0x44,0x4,0x4,0x40,0x20,0x20,0xfe,0x2,0x4,0x0,0xfe,0x20,0x20,0x20,0x20,0x20,0x20,0xa0,0x40, ++0x2,0xff,0x25,0x24,0x3c,0x27,0x24,0x3c,0x24,0x25,0x27,0x3d,0xe5,0x45,0x5,0x5,0x8,0x1c,0xe0,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x2,0xff,0x25,0x25,0x3d,0x24,0x27,0x3c,0x25,0x25,0x27,0x3d,0xe5,0x44,0x4,0x5,0x20,0x24,0xfe,0x24,0xfc,0x20,0xfe,0x0,0xfc,0x4,0x24,0x24,0x24,0x50,0x8c,0x4, ++0x8,0x7f,0x8,0x7f,0x8,0xff,0x10,0x2e,0x42,0xbf,0xc,0xb,0x8,0xff,0x0,0x0,0x40,0x44,0x7e,0x44,0xa8,0x10,0x28,0x46,0x84,0xf8,0x20,0xa0,0x64,0xfe,0x20,0x20, ++0xff,0x4,0x3f,0x24,0x3f,0x0,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x1,0xfe,0x40,0xf8,0x48,0xf8,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x0,0xb,0x7c,0x10,0x11,0x11,0x15,0xff,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x13,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2, ++0x4,0xf,0x70,0x40,0x41,0x41,0x7f,0x49,0x49,0x49,0x49,0x49,0x49,0x88,0x8,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2, ++0x20,0x13,0x10,0xfe,0x1,0x9,0x7d,0x49,0x49,0x49,0x49,0x49,0x4d,0x48,0x80,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x44,0x58,0x86,0x2, ++0x10,0x13,0x10,0xfe,0x11,0x11,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x10,0x13,0x10,0x28,0x45,0x81,0x7d,0x1,0x7d,0x45,0x45,0x45,0x44,0x7c,0x40,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x40,0x45,0x48,0x70,0x45,0x7d,0x1,0x13,0xf5,0x39,0x39,0x55,0x54,0x90,0x30,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x20,0x13,0x10,0xfe,0x11,0x11,0x25,0x7d,0x9,0x11,0x25,0xc9,0x18,0x24,0xc2,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x10,0x13,0x28,0x26,0x53,0x81,0x7d,0x5,0x9,0x7d,0x45,0x45,0x44,0x7c,0x44,0x3,0x4,0xfe,0x20,0x44,0xfe,0x4,0x24,0x24,0x24,0x24,0x24,0x24,0x50,0x48,0x86,0x2, ++0x1,0x77,0x55,0x55,0x77,0x0,0x3e,0x0,0xff,0x20,0x3e,0x2,0x2,0x2,0x14,0x9,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82, ++0x8,0x49,0x49,0x49,0x7f,0x0,0xff,0x8,0x7f,0x55,0x55,0x55,0x55,0x55,0x43,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82, ++0x2,0xff,0x22,0x3e,0x22,0x3e,0x22,0xff,0x2,0x77,0x11,0x55,0x22,0x22,0x55,0x88,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x64,0x28,0x46,0x82, ++0x24,0x24,0xff,0x24,0x2,0xff,0x24,0x24,0xff,0xa5,0xa5,0xdb,0x81,0x85,0x82,0x0,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82, ++0x0,0x3e,0x14,0x8,0x14,0x77,0x55,0x22,0x55,0x8,0xff,0x18,0x2c,0x4b,0x89,0x8,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0x54,0x54,0x54,0xd4,0x54,0x20,0x28,0x46,0x82, ++0x2,0x3f,0x22,0x3e,0x22,0x3e,0x8,0xff,0x0,0x3e,0x22,0x3e,0x8,0x2a,0x49,0x18,0x4,0xfe,0x10,0x24,0x7e,0x44,0x54,0xd4,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82, ++0x2,0x7f,0x8,0xff,0x88,0x6b,0x8,0x6b,0x8,0xff,0x10,0x7f,0x55,0x55,0x55,0x43,0x4,0xfe,0x10,0xa4,0xfe,0x44,0x54,0x54,0x54,0xd4,0x54,0x54,0x20,0x28,0x46,0x82, ++0x9,0x2e,0x28,0xff,0x4a,0xc,0x32,0xdf,0x11,0x1f,0x12,0x1f,0x5,0xff,0x1,0x1,0xfe,0x20,0xfc,0x94,0x94,0x28,0xc4,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0, ++0x1,0x1,0x1,0x1,0x3f,0x20,0x22,0x22,0x22,0x22,0x23,0x26,0x5a,0x42,0x81,0x0,0x0,0x10,0xf8,0x0,0xfc,0x4,0x8,0x20,0x60,0x80,0x0,0x0,0x4,0x4,0xfc,0x0, ++0x1,0x1,0x1,0x3f,0x22,0x3f,0x22,0x23,0x21,0x20,0x2f,0x22,0x41,0x40,0x83,0x1c,0x10,0xf8,0x0,0xfc,0x4,0xc8,0x10,0xf0,0x0,0x88,0xfc,0x20,0x40,0x80,0x60,0x1c, ++0x8,0x8,0x8,0x9,0x7f,0x49,0x49,0x49,0x49,0x7f,0x48,0x9,0xf,0xf1,0x40,0x0,0x40,0x40,0x40,0x40,0xc0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x42,0x4,0x0,0x10,0xf8,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x12,0x12,0xe,0x0, ++0x0,0xff,0x4,0x4,0x7,0x8,0x31,0xc1,0x3f,0x21,0x21,0x3f,0x1,0x1,0x7f,0x0,0x4,0xfe,0x0,0x10,0xf8,0x10,0x50,0x28,0xfc,0x8,0x8,0xf8,0x0,0x8,0xfc,0x4, ++0x0,0x2,0xff,0x24,0x25,0x25,0x25,0x25,0x25,0x24,0x24,0x24,0x25,0x44,0x43,0x80,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x20,0x24,0x3c,0xc6,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe5,0x40,0x0,0x80,0x80,0x88,0xfc,0x0,0x0,0xf8,0x8,0x10,0x20,0x40,0x80,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x40,0x0,0x40,0x20,0x20,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0xfc,0x0, ++0x10,0x10,0x10,0x14,0x7d,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x20,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x0,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0, ++0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x54,0x4c,0x8c,0x4,0x4,0x14,0x8, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe5,0x42,0xc,0x8,0xfc,0x8,0x28,0x28,0x28,0x28,0x48,0x48,0x48,0xa8,0xa0,0xa0,0x22,0x22,0x1e, ++0x10,0x10,0x13,0x14,0x7e,0x54,0x57,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x40,0x48,0x7c,0xc0,0x40,0x44,0x7e,0xc0,0x40,0x40,0x42,0x42,0x3e, ++0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x50,0x50,0x88,0xe,0x4,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x55,0x56,0x7c,0x50,0x14,0x1c,0xe5,0x41,0x0,0x0,0x10,0x58,0x50,0x50,0x88,0x88,0x26,0x24,0x20,0x40,0x40,0x90,0x8,0xfc,0x4, ++0x10,0x10,0x11,0x14,0x7e,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x10,0x10,0x10,0xd0,0x50,0x10,0x10,0x90,0x94,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10, ++0x10,0x13,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x0,0x24,0xf4,0x24,0x24,0xe4,0x4,0x4,0x24,0xf4,0x24,0x24,0x24,0x24,0x24,0x44,0x84, ++0x1,0x21,0x21,0x3f,0x1,0xff,0x1,0x1,0x1f,0x11,0x11,0x1f,0x1,0x1,0x7f,0x0,0x0,0x8,0x8,0xf8,0x4,0xfe,0x0,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x88,0xf8,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x17,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x40,0x0,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x44,0x9,0x4,0xfe,0x0,0x4,0xfe,0x20,0x24,0x3e,0x24,0x24,0x24,0x24,0x44,0x44,0x94,0x8, ++0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x10,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x17,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0xfe,0x4,0x4,0x14,0x8, ++0x10,0x10,0x10,0x14,0x7f,0x55,0x56,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x40,0x0,0x80,0xc0,0x84,0xfe,0x40,0x40,0x48,0x7c,0x40,0x40,0x44,0x7e,0x40,0x40,0x40,0x40, ++0x10,0x10,0x10,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x47,0x0,0x8,0x1c,0xe0,0x80,0x80,0x80,0x88,0xfc,0x90,0x90,0x90,0x90,0x90,0x94,0xfe,0x0, ++0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x50,0x50,0x88,0x46,0x24,0x20,0x0,0xfc,0x8,0x10,0xa0,0x40,0x20,0x20, ++0x10,0x11,0x11,0x14,0x7e,0x54,0x54,0x54,0x57,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0xfc,0x4,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x10,0x14,0x7e,0x55,0x55,0x57,0x54,0x7c,0x51,0x17,0x1c,0xe4,0x40,0x1,0x10,0x90,0x90,0x94,0xbe,0x14,0x54,0xd4,0x94,0x94,0x54,0xf4,0x24,0x44,0x94,0x8, ++0x4,0x7e,0x8,0x8,0x8,0xe,0xf1,0x1,0x1f,0x11,0x11,0x1f,0x11,0x1,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0x8a,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0x8,0xfc,0x4, ++0x10,0x10,0x10,0x15,0x7e,0x55,0x54,0x54,0x54,0x7f,0x50,0x14,0x1c,0xe4,0x41,0x2,0x20,0x20,0x28,0xfc,0x20,0x24,0xac,0xb0,0x24,0xfe,0x50,0x50,0x90,0x88,0x6,0x4, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x57,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x41,0x2,0x80,0x80,0x5c,0xe0,0x50,0x22,0xd2,0xe,0x0,0xfc,0x90,0x90,0x92,0x92,0xe,0x0, ++0x10,0x10,0x11,0x14,0x7e,0x54,0x54,0x55,0x54,0x7c,0x51,0x14,0x1c,0xe4,0x43,0x0,0x0,0x8,0xfc,0x20,0x20,0x48,0x84,0xfe,0x22,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x22,0x2a,0xfe,0xaa,0xaa,0xaa,0xaa,0xfa,0xa2,0x2a,0x38,0xc9,0x1,0x2,0x80,0x84,0xbe,0x88,0x88,0xbe,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xae,0x8,0x8,0x8, ++0x10,0x10,0x10,0x14,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x50,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xfc,0x54,0x54,0x54,0x54,0xfc,0x4, ++0x20,0x20,0x27,0x29,0xfd,0xaa,0xaa,0xaf,0xa9,0xf9,0xa5,0x2b,0x39,0xca,0x4,0x8,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x7c,0x0,0x86,0x7c,0x0, ++0x10,0x10,0x11,0x14,0x7e,0x54,0x57,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x2,0x40,0x20,0x24,0xfe,0x88,0x50,0x20,0xd8,0x6,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x55,0x56,0x54,0x7c,0x50,0x14,0x1c,0xe4,0x1,0x6,0x40,0x20,0x4,0xfe,0x88,0x88,0x4,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4, ++0x11,0x10,0x10,0x10,0x7d,0x54,0x54,0x55,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x4,0x8c,0x50,0x4,0xfe,0x20,0x20,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x54,0x54,0x55,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x20,0x20,0x40,0x88,0xfc,0x20,0xa8,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x3f,0x20,0x2f,0x20,0x3f,0x24,0x24,0x26,0x24,0x2f,0x28,0x28,0x4f,0x40,0xbf,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x88,0x50,0xb0,0x8e,0xf8,0x88,0x88,0xf8,0x84,0xfc,0x2, ++0x8,0x8,0xfe,0x8,0xe,0xf8,0x9,0x2a,0x11,0x3f,0x21,0x21,0x3f,0x1,0x7f,0x0,0x4,0xf8,0x80,0x84,0xfe,0x90,0x10,0x10,0x10,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2, ++0x10,0x11,0x10,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x54,0x57,0x54,0x7c,0x53,0x14,0x1c,0xe5,0x42,0x4,0x8,0xfc,0x8,0x8,0x8,0xf8,0x0,0xfc,0x40,0x44,0xfe,0xa0,0xa0,0x10,0xe,0x4, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x44,0xe4,0x84,0x84,0x94,0xf4,0x94,0x94,0xd4,0xb4,0x94,0x94,0x84,0x84,0x94,0x88, ++0x10,0x10,0x10,0x14,0x7e,0x55,0x56,0x54,0x54,0x7d,0x50,0x14,0x1d,0xe6,0x40,0x0,0x20,0x20,0x50,0x88,0x88,0x6,0xf8,0x20,0x28,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x13,0x11,0x7c,0x54,0x55,0x54,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x8,0x1c,0xe0,0x24,0xa4,0xa8,0xfc,0x8,0x30,0x24,0xfe,0x20,0x20,0x20,0xa0,0x40, ++0x11,0x10,0x13,0x14,0x7e,0x55,0x54,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe4,0x41,0x6,0x4,0x88,0xfe,0x20,0x28,0xfc,0x20,0x24,0xfe,0x50,0x50,0x50,0x92,0x92,0xe,0x0, ++0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x24,0xfe,0x20,0xfc,0x20,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x10,0x10,0x13,0x14,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x17,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0xfe,0x0,0x88,0x6,0x2, ++0x10,0x10,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x80,0x86,0x98,0x90,0xf0,0x90,0x9e,0xd4,0xb4,0x94,0x94,0x94,0xa4,0xa4,0xc4,0x84, ++0x20,0x20,0x20,0x27,0xf8,0xa8,0xab,0xaa,0xaa,0xfa,0xa3,0x28,0x39,0xce,0x4,0x0,0x20,0x28,0x24,0xfe,0x20,0x20,0xa4,0xa4,0xa4,0xa8,0xa8,0x10,0xb2,0x52,0x8a,0x4, ++0x2,0x2,0x7e,0x2,0x3e,0x2,0x7e,0x2,0x1,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x80,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7f,0x50,0x14,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x70,0xa8,0x2e,0x24,0x20, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x4,0x14,0xfc,0x24,0x24,0xfc,0x24,0x34,0x2c,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1d,0xe6,0x40,0x1,0x8,0xfc,0x8,0xf8,0x8,0x8,0xf8,0x84,0xfe,0x54,0x94,0xa4,0x24,0x44,0xa8,0x10, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7c,0x50,0x17,0x1c,0xe4,0x40,0x0,0x20,0x44,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0x50,0x94,0xfe,0x10,0x10,0x10,0x10, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8, ++0x10,0x11,0x10,0x10,0x7d,0x54,0x57,0x54,0x54,0x7d,0x52,0x14,0x1c,0xe4,0x40,0x0,0x20,0x24,0xa8,0x20,0xfc,0x20,0xfe,0x50,0x88,0xfe,0x88,0x88,0xa8,0x92,0x82,0x7e, ++0x10,0x12,0x13,0x12,0x7d,0x55,0x55,0x55,0x56,0x7d,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x2,0x4,0x0,0xdc,0x54,0x54,0x54,0xdc,0x90,0x92,0x12,0xe,0x0, ++0x21,0x20,0x20,0x2b,0xfe,0xaa,0xab,0xaa,0xaa,0xfb,0xa2,0x2a,0x3a,0xcb,0x2,0x0,0x0,0x80,0x9e,0xd2,0x54,0x54,0xd8,0x54,0x54,0xd2,0x12,0x9a,0xd4,0x50,0x10,0x10, ++0x10,0x11,0x10,0x14,0x7e,0x55,0x54,0x54,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x43,0x0,0x0,0xfc,0x8,0x30,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0, ++0x20,0x20,0x27,0x20,0xfb,0xa8,0xaf,0xa9,0xab,0xfe,0xaa,0x23,0x3a,0xca,0x3,0x2,0x40,0x48,0xfc,0x40,0xf8,0x80,0xfe,0x10,0xf8,0xc,0xa,0xf8,0x8,0x8,0xf8,0x8, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x55,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x0,0x88,0x88,0xfe,0x88,0x88,0xfe,0x2,0x24,0xfc,0x20,0x70,0x68,0xa8,0x26,0x24,0x20, ++0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x20,0x20,0x24,0xfe,0x20,0x24,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x24,0x24,0x24,0xc, ++0x10,0x13,0x10,0x14,0x7e,0x54,0x54,0x54,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x4,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x56,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x43,0x0,0x20,0x20,0x24,0xfe,0x50,0x88,0x26,0xf8,0x20,0xfc,0x20,0xf8,0x20,0x24,0xfe,0x0, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7e,0x52,0x14,0x1c,0xe4,0x40,0x0,0x4,0x64,0x84,0xa4,0x94,0xc4,0xa4,0x94,0xc4,0xbe,0x84,0x84,0x84,0x84,0x84,0x84, ++0x10,0x10,0x10,0x15,0x7e,0x54,0x54,0x54,0x54,0x7c,0x50,0x14,0x1d,0xe6,0x40,0x3,0x80,0x84,0xfe,0x0,0xfc,0x84,0xfc,0x84,0xfc,0x80,0xfc,0x84,0x58,0x20,0xd8,0x6, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x54,0x7d,0x50,0x14,0x1c,0xe4,0x40,0x3,0x20,0xac,0x24,0x24,0xac,0x24,0x24,0xfc,0x20,0xfc,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x20,0x20,0x20,0x28,0xfd,0xaa,0xac,0xab,0xaa,0xfb,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x20,0x20,0x50,0x90,0x8,0xf4,0x2,0xc4,0x54,0xd4,0x54,0xd4,0x54,0x54,0x44,0xcc, ++0x22,0x21,0x21,0x27,0xfa,0xaa,0xab,0xaa,0xfa,0xa2,0x22,0x2a,0x3a,0xcc,0x5,0x8,0x20,0x20,0x24,0xbe,0x40,0x0,0xbc,0x88,0x90,0xfe,0x90,0x90,0x90,0x90,0xd0,0x20, ++0x20,0x22,0x21,0x28,0xff,0xa8,0xa9,0xaa,0xa8,0xff,0xa1,0x2a,0x39,0xe8,0x1,0x6,0x40,0x48,0x50,0x40,0xfc,0xe0,0x58,0x48,0x80,0xfe,0x10,0x10,0xa0,0x40,0xb0,0x8, ++0x10,0x10,0x10,0x13,0x7c,0x54,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x0,0x88,0x50,0xfe,0x50,0x54,0xfe,0x54,0x54,0x54,0x9c,0x4,0x74,0x4,0xfc,0x4, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x53,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0x4a,0x4a,0xfe,0x4a,0x4a,0x4a,0x6, ++0x0,0x7e,0x14,0x8,0xff,0x1a,0x28,0x49,0x19,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfc,0x2, ++0x20,0x20,0x27,0x28,0xff,0xa8,0xaf,0xa8,0xa9,0xfb,0xa4,0x2b,0x38,0xc9,0x2,0x0,0x40,0x48,0xfc,0x40,0xf8,0x40,0xfe,0xa0,0x10,0xe8,0x46,0xf8,0x40,0x50,0x48,0x40, ++0x8,0x7f,0x8,0x3e,0x8,0xff,0x10,0x1c,0x25,0x4d,0x3f,0x21,0x21,0x3f,0x1,0xff,0x20,0x20,0x24,0x7e,0xc8,0x28,0x10,0x28,0x46,0x8,0xfc,0x8,0x8,0xf8,0x4,0xfe, ++0x20,0x20,0x27,0x28,0xfc,0xab,0xa8,0xaa,0xab,0xfa,0xa2,0x2b,0x3a,0xca,0x2,0x2,0x90,0x94,0xfe,0x90,0x90,0xfc,0x90,0x94,0xfe,0x94,0x94,0x6c,0x44,0x4,0x14,0x8, ++0x21,0x21,0x27,0x21,0xf8,0xaf,0xa8,0xa9,0xaa,0xfd,0xa1,0x2f,0x39,0xc9,0x2,0x4,0x10,0x14,0xfe,0x18,0x44,0xfe,0xa0,0x10,0xe,0x14,0x10,0xfe,0x10,0x10,0x10,0x10, ++0x10,0x10,0x13,0x14,0x7e,0x55,0x55,0x55,0x55,0x7d,0x50,0x17,0x1c,0xe4,0x40,0x3,0x88,0x88,0xfe,0x88,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x10,0x11,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x4,0xfe,0x10,0x24,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x10,0x58,0x56,0x92,0x30, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x14,0x1c,0xe6,0x42,0x4,0x40,0x88,0xfc,0x8,0xf8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x20,0xa4,0x82,0x8a,0x78, ++0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x41,0x1,0x40,0x24,0xfe,0x0,0x54,0x24,0x54,0xfc,0x24,0xfe,0x24,0x54,0x74,0x4,0x14,0x8, ++0x10,0x10,0x11,0x15,0x7f,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x56,0x54,0x57,0x7c,0x50,0x14,0x1c,0xe5,0x42,0x4,0x40,0x20,0xfe,0x88,0x50,0xfe,0x42,0x20,0xfe,0x80,0xf8,0x88,0x88,0x8,0x28,0x10, ++0x8,0x7f,0x8,0xff,0x14,0x56,0x55,0x94,0x25,0x3f,0x21,0x21,0x3f,0x1,0xff,0x0,0x40,0x40,0x44,0x7e,0xc8,0x28,0x10,0x28,0x46,0xf8,0x8,0x8,0xf8,0x4,0xfc,0x2, ++0x10,0x10,0x13,0x10,0x7c,0x57,0x54,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x2,0x88,0x88,0xfe,0x88,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x0,0x88,0x6,0x2, ++0x20,0x20,0x27,0x20,0xfb,0xaa,0xab,0xaa,0xab,0xf8,0xa1,0x29,0x39,0xc9,0x1,0x1,0x90,0x94,0xfe,0x90,0xfc,0x94,0xfc,0x94,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x54,0x7c,0x50,0x17,0x1c,0xe5,0x42,0x0,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xf8,0x0,0xfe,0xa8,0x26,0x22,0x60, ++0x10,0x11,0x10,0x10,0x7d,0x55,0x56,0x54,0x54,0x7c,0x50,0x15,0x1c,0xe4,0x43,0x0,0x20,0x24,0xa8,0x20,0xfe,0x2,0xf8,0x88,0x88,0xf8,0x20,0xfc,0x20,0x24,0xfe,0x0, ++0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7e,0x50,0x14,0x1d,0xe2,0x44,0x0,0xc,0xf0,0x24,0x24,0xa8,0xfe,0x68,0xa8,0x26,0x24,0x0,0xa0,0xa4,0x8a,0x8a,0x78, ++0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x54,0x54,0x7d,0x52,0x14,0x1f,0xe4,0x43,0x0,0x80,0xf8,0x10,0xfc,0x24,0x24,0xfc,0x40,0xc4,0x28,0x70,0xb0,0x68,0xae,0x24,0x60, ++0x8,0xf,0x18,0x26,0x1,0xe,0xf2,0x1,0xa,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0xc0,0x0,0xe0,0x1e,0x0,0x20,0x20,0xf8,0xa8,0xf8,0x24,0xfc,0x4, ++0x10,0x11,0x10,0x14,0x7f,0x54,0x55,0x55,0x55,0x7d,0x51,0x14,0x1f,0xe4,0x40,0x0,0x20,0xfc,0x88,0x50,0xfe,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x20,0x20, ++0x10,0x10,0x13,0x10,0x7c,0x56,0x55,0x56,0x54,0x7c,0x53,0x14,0x1c,0xe4,0x40,0x0,0x40,0x24,0xfe,0x20,0x48,0xf2,0x24,0x52,0xf8,0x20,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x0,0x1f,0x2,0x1,0x7f,0x2,0xc,0x30,0xca,0x9,0x3e,0x2a,0x3e,0x9,0x7f,0x1,0x0,0xf0,0x20,0x40,0xfe,0x82,0x84,0x80,0xa0,0x28,0xfc,0xa8,0xf8,0x24,0xfc,0x4, ++0x20,0x20,0x27,0x20,0xfb,0xa8,0xab,0xaa,0xaa,0xfb,0xa0,0x2a,0x39,0xcf,0x0,0x0,0x82,0xa2,0xf4,0x84,0xe8,0x12,0xe2,0x24,0x28,0xf0,0x2,0x22,0x44,0xe8,0x10,0x60, ++0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x55,0x7c,0x53,0x14,0x1c,0xe6,0x42,0x0,0x20,0x24,0xfe,0x24,0xfe,0x24,0xfc,0x24,0xfc,0x22,0xfe,0x42,0xa0,0xa4,0x8a,0x78, ++0x10,0x11,0x10,0x11,0x7c,0x57,0x54,0x54,0x55,0x7f,0x51,0x15,0x1d,0xe5,0x41,0x1,0xc,0xf0,0x20,0x24,0xa8,0xfe,0x70,0xa8,0x26,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc, ++0x10,0x10,0x13,0x10,0x7d,0x54,0x57,0x55,0x54,0x7f,0x50,0x15,0x1d,0xe5,0x41,0x1,0x88,0x50,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4, ++0x10,0x13,0x10,0x10,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1c,0xe4,0x41,0x6,0x88,0xfe,0x88,0xa0,0xfc,0x20,0xfc,0x20,0x3c,0x0,0xfc,0x8,0x90,0x60,0x98,0x6, ++0x20,0x20,0x27,0x20,0xfb,0xaa,0xad,0xa8,0xaf,0xf8,0xa3,0x28,0x3b,0xe8,0x43,0x0,0x90,0x94,0xfe,0x90,0xfe,0x2,0xf4,0x0,0xfe,0x40,0xa4,0x78,0xb0,0x68,0xa6,0x60, ++0x10,0x10,0x11,0x13,0x7d,0x55,0x55,0x55,0x55,0x7d,0x51,0x15,0x1d,0xe6,0x42,0x4,0x80,0xf8,0x10,0xfe,0x44,0x92,0xfe,0x0,0x7c,0x0,0x7c,0x0,0x7c,0x44,0x7c,0x44, ++0x20,0x23,0x22,0x2a,0xff,0xaa,0xaa,0xaa,0xab,0xfa,0xa2,0x2a,0x3a,0xcd,0x6,0x8,0x20,0xfe,0x88,0x50,0xfe,0x50,0xfc,0x54,0xfe,0x54,0xfc,0x50,0xd8,0x54,0x52,0x50, ++0x10,0x10,0x13,0x10,0x7d,0x55,0x55,0x55,0x54,0x7d,0x51,0x15,0x1d,0xe5,0x42,0x4,0x88,0x88,0xfe,0x88,0xfc,0x54,0x54,0xfc,0x28,0xfe,0x20,0x24,0x98,0x52,0x2a,0x46, ++0xf,0x8,0x1f,0x0,0xff,0xc,0x73,0xd,0x72,0x1c,0x6b,0x3e,0x2a,0x3e,0x9,0x7f,0xe0,0x20,0xe0,0x44,0xfe,0x10,0x20,0xc0,0xa0,0x9e,0x24,0xf8,0xa8,0xf8,0x24,0xfc, ++0x1,0x7f,0x9,0x7f,0x40,0x9f,0x4,0xf,0x38,0xcf,0x8,0x3e,0x2a,0x3e,0x8,0x7f,0x0,0xfc,0x20,0xfe,0x2,0xf4,0x0,0xf0,0x10,0xf0,0x20,0xf8,0xa8,0xf8,0x24,0xfc, ++0x27,0x26,0x25,0x27,0xf9,0xab,0xae,0xab,0xaa,0xfa,0xa0,0x2b,0x39,0xc8,0x1,0x6,0xbc,0xb4,0xac,0xbc,0x40,0xfc,0x40,0xf8,0x40,0x7c,0x0,0xf8,0x10,0xe0,0x10,0xe, ++0x8,0x8,0x8,0x1f,0x21,0x41,0x1,0x1,0xff,0x1,0x21,0x21,0x21,0x21,0x3f,0x0,0x0,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x3e,0x22,0x2a,0x2a,0x2a,0x14,0x22,0x8,0xf,0x11,0x1,0xff,0x1,0x11,0x11,0x1f,0xf8,0x88,0xa8,0xa8,0xa8,0x50,0x88,0x20,0xf0,0x0,0x4,0xfe,0x0,0x10,0x10,0xf0, ++0x8,0x7f,0x8,0x3e,0x0,0x7f,0x49,0x7f,0x44,0x4f,0x91,0x1,0xff,0x1,0x11,0x1f,0x78,0x48,0x4e,0x80,0x78,0x48,0x30,0x48,0x86,0xf0,0x0,0x4,0xfe,0x0,0x10,0xf0, ++0x20,0x24,0x3e,0x51,0x91,0x15,0xff,0x11,0x11,0x55,0x55,0x55,0x55,0x7d,0x2,0x4,0x20,0x3c,0x20,0xfe,0x24,0xf8,0x24,0x38,0x0,0xfe,0x54,0x54,0xfe,0x10,0x10,0x30, ++0x0,0x6,0x79,0x11,0x15,0xff,0x11,0x11,0x15,0x7f,0x45,0x45,0x45,0x7d,0x45,0x1,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x10,0x10,0x4a,0x8a,0x4, ++0x10,0x12,0x1f,0x20,0x28,0x45,0x80,0x0,0x3f,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x40,0x44,0x7e,0x80,0x90,0x8,0x0,0x10,0xf8,0x0,0x0,0x0,0x4,0xfe,0x0,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x80,0x3f,0x1,0x1,0xff,0x1,0x1,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x0,0x3f,0x8,0x8,0x9,0x14,0x12,0x11,0x21,0x46,0x98,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x40,0x90,0xf8,0x20,0x40,0x80,0x60,0x1e,0x4, ++0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x8,0x8,0x8,0xf,0x0,0x7f,0x0,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x20,0xf0,0x20,0x20,0x24,0xfe,0x4,0xf4,0x4,0x14,0x8, ++0x10,0x12,0x1f,0x28,0x45,0x0,0x3f,0x4,0x4,0xff,0x4,0x4,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20, ++0x10,0x12,0x1f,0x28,0xc5,0x0,0x1f,0x10,0x11,0x11,0x11,0x12,0x12,0x4,0x18,0xe0,0x40,0x44,0x7e,0xa0,0x10,0x10,0xf8,0x10,0x10,0x10,0x90,0x90,0x90,0x82,0x82,0x7e, ++0x10,0x12,0x1f,0x28,0x45,0x0,0x1f,0x11,0x11,0x11,0x11,0x11,0x11,0x21,0x41,0x1,0x40,0x44,0x7e,0xa0,0x10,0x38,0xe0,0x20,0x20,0x20,0x10,0x10,0x8,0xe,0x4,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x1,0x3f,0x21,0x21,0x3f,0x3,0x5,0x9,0x31,0xc1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x8,0xf0,0x0,0x4,0xfe,0x4,0x4,0x44,0x28,0x10,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x8,0xf,0x12,0x12,0x22,0x44,0x4,0x8,0x11,0x22,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x48,0x48,0x48,0x48,0x88,0x88,0x8,0x50,0x20, ++0x10,0x12,0x1f,0x28,0x45,0x0,0x7e,0x8,0x8,0x8,0x8,0xe,0x78,0x20,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x88,0x90,0x90,0x88,0xc4,0xa4,0x98,0x80,0x80, ++0x10,0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x27,0x24,0x24,0x27,0x24,0x20,0x3f,0x0,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x1f,0x10,0x10,0x1f,0x10,0x10,0x1f,0x10,0x0,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x4,0xfe,0x0, ++0x10,0x12,0x1f,0x28,0x45,0x11,0x11,0x1f,0x21,0x41,0x1f,0x1,0x1,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x10,0xf8,0x0,0x20,0xf0,0x0,0x0,0x4,0xfe,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x4,0xf,0xa,0x12,0x23,0x42,0x2,0x3,0x2,0x2,0x2,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x0,0x10,0xf8,0x0,0x8,0xfc,0x0,0x0,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x8,0xf,0x10,0x10,0x2f,0x48,0x8,0xf,0x8,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x8,0xfc,0x8,0x48,0xe8,0x48,0x48,0xc8,0x8,0x28,0x10, ++0x10,0x12,0x1f,0x28,0xc5,0x2,0x1,0x7f,0x0,0x8,0x4,0x4,0x2,0x2,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0x8,0xfc,0x0,0x20,0x20,0x40,0x40,0x84,0xfe,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x3f,0x0,0x7f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x0,0x40,0x44,0x7e,0xa0,0x14,0xfe,0x4,0xe4,0x4,0x84,0x84,0x84,0x84,0x84,0x94,0x8, ++0x10,0x12,0x1f,0x28,0xc5,0x3f,0x2,0x2,0x4,0x8,0x3f,0xd0,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x8,0x10,0x50,0x20,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x7f,0x9,0x9,0x9,0x9,0x11,0x11,0x25,0xc2,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x20,0x10,0x7,0x70,0x10,0x11,0x11,0x12,0x2c,0x44,0x3,0x40,0x44,0x7e,0xa0,0x10,0x80,0x88,0xfc,0x88,0x88,0x8,0x8,0x28,0x10,0x6,0xfc, ++0x10,0x12,0x1f,0x28,0x45,0x84,0x8,0x10,0x3f,0x0,0x1f,0x10,0x10,0x10,0x1f,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x20,0x10,0xf8,0x8,0xf0,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0xfe,0x8,0x8,0xe,0x78,0x8,0x8,0x28,0x10,0x40,0x44,0x7e,0xa0,0x10,0x0,0x4,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x10,0x1e,0x10,0x10,0x1e,0x1,0xff,0x1,0x1,0x1,0x1,0x40,0x44,0x7e,0xa0,0x10,0x80,0x98,0xe0,0x84,0xfc,0x0,0xfe,0x0,0x0,0x0,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x11,0x1f,0x21,0x1,0xff,0x4,0x4,0x4,0x8,0x10,0x60,0x40,0x44,0x7e,0xa0,0x10,0x0,0xf8,0x0,0x4,0xfe,0x80,0x80,0x80,0x84,0x84,0x7c, ++0x10,0x12,0x1f,0x28,0xc5,0x0,0x7d,0x10,0x21,0x7d,0x5,0x49,0x29,0x10,0x28,0xc7,0x40,0x44,0x7e,0xa0,0x10,0xc,0xf0,0x20,0x28,0x3c,0x20,0x28,0xfc,0x0,0x6,0xfc, ++0x10,0x12,0x1f,0x28,0xc5,0x2,0x4,0x8,0x3f,0xc1,0x1,0x1f,0x1,0x1,0x7f,0x0,0x40,0x44,0x7e,0xa0,0x10,0x80,0x40,0x20,0xfe,0x4,0x20,0xf0,0x0,0x8,0xfc,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x7,0x8,0x3f,0x1,0xff,0x1,0x3f,0x1,0x1,0x5,0x2,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x48,0xfc,0x8,0xfe,0x8,0xf8,0x8,0x0,0x0,0x0, ++0x10,0x12,0x1f,0x28,0xc5,0x10,0x10,0x7c,0x11,0x12,0x10,0x1c,0xe1,0x40,0x0,0x0,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x84,0x44,0x24,0x4,0x34,0xc4,0x84,0x14,0x8, ++0x10,0x12,0x1f,0x28,0xc5,0x0,0x7f,0x1,0x11,0x11,0x11,0x29,0x45,0x1,0xff,0x0,0x40,0x44,0x7e,0xa0,0x10,0x0,0xfc,0x0,0x10,0x10,0x10,0x28,0x44,0x0,0xfe,0x0, ++0x10,0x1f,0x28,0x45,0xff,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x29,0x5,0x3,0xc,0x70,0x40,0x7e,0xa0,0x14,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8,0x0,0x0,0xe0,0x1e, ++0x10,0x12,0x1f,0x28,0x45,0x8,0x9,0x7f,0x9,0xd,0x19,0x69,0x9,0x9,0x29,0x10,0x40,0x44,0x7e,0xa0,0x10,0x4,0xfe,0x24,0x24,0x24,0xfc,0x4,0x0,0x2,0x2,0xfe, ++0x10,0x12,0x1f,0x28,0xc5,0x9,0x5,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x10,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0x20,0x50,0xf8,0x10,0xf0,0x10,0xf0,0x10,0x10,0x50,0x20, ++0x10,0x12,0x1f,0x28,0xc5,0x8,0x8,0x14,0x35,0x56,0x94,0x14,0x14,0x14,0x11,0x12,0x40,0x44,0x7e,0xa0,0x10,0x84,0xfe,0x88,0x88,0x90,0x50,0x20,0x50,0x88,0xe,0x4, ++0x10,0x12,0x1f,0x68,0x85,0x7f,0x1,0x3f,0x1,0xff,0x10,0x1f,0x10,0x1f,0x10,0x10,0x40,0x44,0x7e,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x12,0x1f,0x28,0x45,0x7f,0x1,0x1f,0x1,0xff,0x0,0x1f,0x10,0x11,0x12,0x4,0x38,0x48,0x7c,0xa0,0x10,0xfc,0x0,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0xd0,0x30,0x8, ++0x12,0x1f,0x28,0xc5,0x3f,0x20,0x20,0x2f,0x24,0x22,0x3f,0x21,0x22,0x24,0x3f,0x0,0x44,0x7e,0xa0,0x10,0xfc,0x80,0x90,0xf8,0x90,0xa0,0xfc,0x40,0x30,0x14,0xfe,0x0, ++0x10,0x12,0x1f,0x28,0xc2,0x3f,0x2,0x2,0xff,0x4,0xf,0x18,0x6f,0x8,0xf,0x8,0x40,0x44,0x7e,0xa0,0x10,0xe0,0x40,0x84,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x12,0x1f,0x28,0xc5,0x8,0x7f,0xa,0x2,0xff,0x4,0xf,0x38,0xc8,0x8,0xf,0x8,0x48,0x7c,0xa0,0x10,0x20,0xfc,0x20,0x4,0xfe,0x10,0xf8,0x10,0x10,0x10,0xf0,0x10, ++0x10,0x12,0x1f,0x28,0x45,0x8,0x8,0xff,0x8,0x8,0xe,0xf8,0x48,0x8,0x28,0x10,0x40,0x48,0x7c,0xa0,0x10,0x88,0x88,0xfe,0x88,0x88,0xf8,0x88,0x88,0x88,0xf8,0x88, ++0x10,0x12,0x1f,0x28,0x45,0x13,0x11,0xfc,0x11,0x12,0x1d,0xf0,0x13,0x10,0x50,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xe0,0x10,0x4e,0xf4,0x40,0xf8,0x40,0x40,0x40, ++0x10,0x12,0x1f,0x28,0x45,0x1f,0x11,0x1f,0x11,0x1f,0x0,0xff,0x8,0x8,0x10,0x20,0x40,0x44,0x7e,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x20,0x20,0x20,0x20, ++0x12,0x1f,0x28,0x45,0x8,0x4,0x1f,0x11,0x1f,0x11,0x1f,0x1,0xff,0x1,0x1,0x1,0x48,0x7c,0x90,0x8,0x20,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0,0x0, ++0x12,0x1f,0x28,0x45,0x1,0x7f,0x40,0x88,0x10,0x20,0x1f,0x1,0x1,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0x24,0x18,0x8,0xf0,0x0,0x0,0x4,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0x1,0x7f,0x48,0x8e,0x12,0x12,0x32,0x4c,0x8,0x10,0x20,0x40,0x48,0x7c,0xa0,0x10,0x0,0xfe,0x2,0xf4,0x90,0x90,0x90,0xd0,0xa0,0x82,0x82,0x7e, ++0x12,0x1f,0x28,0x45,0x3f,0x1,0xff,0x1,0x3f,0x1,0x25,0x25,0x29,0x29,0x31,0x41,0x48,0x7c,0xa0,0x10,0xf8,0x8,0xfe,0x8,0xf8,0x0,0x48,0x28,0x28,0x18,0x18,0x8, ++0x12,0x1f,0x28,0x45,0x0,0x3f,0x20,0x3f,0x20,0x2f,0x29,0x29,0x4f,0x49,0x80,0x0,0x48,0x7c,0xa0,0x10,0x50,0xfc,0x40,0xc0,0x28,0x28,0x28,0x30,0x20,0x52,0x8a,0x4, ++0x12,0x1f,0x28,0x41,0x3f,0x21,0x3f,0x1,0xff,0x0,0x1f,0x10,0x11,0x11,0x6,0x38,0x48,0x7c,0xa0,0x8,0xfc,0x8,0xf8,0x0,0xfe,0x10,0xf8,0x10,0x10,0x10,0x60,0x18, ++0x12,0x1f,0x28,0x41,0x1f,0x10,0x1f,0x10,0x1f,0x0,0x7f,0x1,0x3f,0x1,0xff,0x0,0x48,0x7c,0xa0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x0,0xfc,0x0,0xf8,0x0,0xfe,0x0, ++0x12,0x1f,0x28,0x45,0x5,0x8,0x17,0x31,0x51,0x96,0x10,0x17,0x10,0x10,0x11,0x16,0x48,0x7c,0xa0,0x0,0xf0,0x10,0xfc,0x0,0xfc,0x40,0x44,0xfe,0x40,0xa0,0x18,0x6, ++0x12,0x1f,0x28,0x41,0x7f,0x4,0x3f,0x4,0xff,0x11,0x1f,0x11,0xff,0x10,0x10,0x10,0x48,0x7c,0xa0,0x50,0xfc,0x40,0xf8,0x40,0xfe,0x10,0xf0,0x14,0xfe,0x10,0x10,0x30, ++0x10,0x1f,0x28,0x45,0x3f,0x22,0x22,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x22,0x3f,0x0,0x40,0x7c,0xa0,0x10,0xfc,0x40,0x50,0x78,0x40,0x78,0x40,0x78,0x40,0x48,0xfc,0x0, ++0x10,0x1f,0x28,0x45,0x7f,0x4,0x3f,0x24,0x24,0x3f,0x1,0xff,0x3,0xd,0x71,0x1,0x40,0x7c,0xa0,0x10,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x0,0xfe,0x80,0x60,0x1c,0x0, ++0x10,0x1f,0x28,0x45,0x1,0x3f,0x24,0x23,0x24,0x3f,0x20,0x3c,0x20,0x22,0x2c,0x30,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0x88,0x48,0xf8,0x80,0x8c,0xb0,0xc2,0x82,0x7e, ++0x10,0x1f,0x28,0x45,0x1e,0x10,0x10,0x17,0x14,0x15,0x24,0x24,0x29,0x49,0x91,0x26,0x44,0x7e,0xa0,0xfc,0x80,0xf0,0x80,0xfe,0x44,0xf0,0x48,0x38,0xe0,0x22,0x22,0x1e, ++0x10,0x1f,0x28,0x45,0x8,0xff,0x8,0x7f,0x49,0x7f,0x49,0x1c,0x2a,0x4a,0x88,0x9,0x40,0x7c,0xa0,0x50,0x40,0x7e,0x82,0x24,0x20,0x20,0x20,0x50,0x50,0x88,0x8e,0x4, ++0x10,0x1f,0x28,0x45,0x3f,0x24,0x24,0x3f,0x1,0x3f,0x21,0x28,0x24,0x40,0x43,0x8c,0x40,0x7c,0xa0,0x10,0xf8,0x48,0x48,0xf8,0x40,0xfc,0x10,0xa0,0x40,0xa2,0x1a,0x6, ++0x10,0x1f,0x28,0x45,0xa,0x37,0x24,0x27,0x24,0x2f,0x30,0x4,0x4,0x4,0x8,0x70,0x40,0x7c,0xa0,0x10,0x8,0xfc,0x48,0xc8,0x48,0xc8,0x38,0x40,0x40,0x42,0x42,0x3e, ++0x10,0x1f,0x28,0x45,0x1,0x3f,0x22,0x3f,0x22,0x22,0x3f,0x28,0x2f,0x48,0x49,0x8e,0x40,0x7c,0xa0,0x10,0x0,0xfc,0x40,0xf8,0x48,0x48,0xf8,0x44,0x48,0x72,0x42,0x3e, ++0x10,0x1f,0x28,0x45,0x8,0x6a,0x5c,0x48,0x7e,0x48,0x58,0x6a,0x48,0x7e,0x1,0x0,0x40,0x7c,0xa0,0x10,0xc,0xf0,0x80,0x84,0xfe,0x90,0x90,0x90,0x90,0x90,0x10,0x10, ++0x10,0x1f,0x28,0x5f,0x10,0x1f,0x10,0x1f,0x11,0x14,0x18,0x3f,0x24,0x24,0xff,0x0,0x40,0x7c,0xa0,0xf0,0x10,0xf0,0x10,0xf8,0x10,0xe0,0x1c,0xf8,0x48,0x48,0xfe,0x0, ++0x10,0x1f,0x28,0x7f,0x4,0x3f,0x24,0x3f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x1,0x1,0x40,0x7c,0xa0,0xfc,0x40,0xf8,0x48,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0,0x0, ++0x10,0x1f,0x28,0x41,0x3e,0x28,0x7f,0x18,0x28,0xcd,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x40,0x7c,0xa0,0x10,0xf8,0xa0,0xfc,0x62,0xa2,0x1e,0xf0,0x10,0xf0,0x10,0xf0,0x10, ++0x10,0x1f,0x28,0x45,0x3e,0x2,0x14,0xf,0x10,0x2f,0xc8,0xf,0x4,0x2,0x7f,0x0,0x40,0x7c,0xa0,0x10,0xa0,0xc8,0x50,0xe0,0x10,0xee,0x24,0xe0,0x40,0x88,0xfc,0x0, ++0x10,0x1f,0x28,0x45,0x24,0x7e,0x24,0x3c,0x24,0x3c,0x24,0xfe,0x0,0x29,0x46,0x80,0x40,0x7c,0xa0,0x10,0x10,0xfe,0x92,0x90,0xfc,0xa4,0xa4,0xa8,0x90,0x28,0x46,0x84, ++0x10,0x1f,0x28,0x45,0x8,0x7f,0x8,0x3f,0x2a,0x2a,0x3e,0x18,0x2c,0x4a,0x88,0x8,0x40,0x7c,0xa0,0x50,0x40,0x78,0x90,0xfc,0x84,0x94,0x94,0xa4,0xb4,0x48,0x46,0x82, ++0x10,0x1f,0x28,0x45,0x10,0x17,0xfc,0x15,0x1e,0x34,0xd3,0x12,0x13,0x12,0x53,0x22,0x40,0x7c,0xa0,0x10,0x84,0x7e,0x24,0x24,0xd4,0x8,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x1,0x5,0x39,0x21,0x21,0x3d,0x21,0x21,0x21,0x3f,0x21,0x2,0x2,0x4,0x18,0xe0,0x0,0x8,0x7c,0x8,0x8,0x78,0x8,0x8,0x8,0xf8,0x8,0x80,0x80,0x40,0x30,0xe, ++0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x24,0x4,0xff,0x4,0x4,0x8,0x10,0x20,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x48,0x40,0xfe,0x40,0x40,0x40,0x40,0x40, ++0x1,0x7f,0x1,0x3f,0x2,0xff,0x4,0x8,0x16,0x38,0xd0,0x1e,0x10,0x10,0x1f,0x10,0x8,0xfc,0x0,0xf8,0x0,0xfe,0x40,0x20,0x10,0xfe,0x14,0xf0,0x10,0x10,0xf0,0x10, ++0x6,0x38,0x20,0x20,0x3e,0x20,0x20,0x3f,0x8,0x1f,0x20,0xe9,0x24,0x24,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x4,0xfe,0x4,0x24,0x94,0x84,0x14,0x8, ++0x2,0x4,0x1f,0x10,0x1f,0x10,0x1f,0x10,0x1f,0x1,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0xf8,0x10,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x8,0x8,0x10,0x7f,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x5f,0xf0,0x1,0x0,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xa4,0x24,0xfe,0x0, ++0x10,0x20,0x7d,0x44,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x57,0x88,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x24,0x7e,0x45,0x65,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x56,0x88,0x0,0x44,0x24,0x24,0x28,0x88,0x88,0x90,0x50,0x20,0x50,0x50,0x88,0xe,0x4,0x0, ++0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x88,0x20,0x20,0x20,0x20,0x20,0x24,0xec,0x30,0x20,0x20,0x20,0x20,0x62,0xa2,0x1e,0x0, ++0x10,0x24,0x7e,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x24,0x20,0x20,0x20,0x20, ++0x10,0x24,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x46,0x54,0x89,0x8,0x1c,0xe0,0x0,0x0,0xfc,0x44,0x44,0x44,0x28,0x28,0x10,0x28,0x48,0x84,0x2, ++0x10,0x24,0x7e,0x45,0x64,0x54,0x44,0xfc,0x44,0x64,0x54,0x54,0x44,0x45,0x55,0x8a,0x40,0x20,0x24,0xfe,0x40,0x40,0x44,0x7e,0x44,0x44,0x84,0x84,0x84,0x4,0x28,0x10, ++0x10,0x24,0x7f,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x44,0x44,0x54,0x88,0x0,0x4,0xfe,0x8,0x8,0xe8,0x28,0x28,0x28,0x28,0xe8,0x28,0x8,0x8,0x28,0x10, ++0x10,0x24,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x8a,0x20,0x24,0x3e,0x20,0x24,0xfe,0x4,0x4,0x4,0xfc,0x0,0x0,0x0,0x0,0x0,0x0, ++0x10,0x24,0x7e,0x44,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfc,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x10,0x24,0x7e,0x44,0x65,0x55,0x46,0xfc,0x44,0x64,0x54,0x54,0x44,0x44,0x54,0x88,0x80,0x80,0x84,0xfe,0x40,0x40,0x50,0x78,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x40, ++0x10,0x21,0x7c,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0xfe,0x50,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0x5c,0x84,0x4,0x4,0xfc,0x4, ++0x10,0x25,0x7e,0x44,0x64,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x20,0x24,0xa8,0xb0,0x24,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4,0x4,0x14,0x8, ++0x10,0x25,0x7f,0x45,0x65,0x55,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x56,0x88,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x20,0x22,0x22,0x1e, ++0x10,0x24,0x7e,0x44,0x64,0x57,0x44,0xfc,0x44,0x65,0x55,0x55,0x45,0x45,0x57,0x88,0x8,0xfc,0x10,0x20,0x24,0xfe,0x20,0xa0,0x44,0xfe,0x54,0x54,0x54,0x54,0xfe,0x0, ++0x11,0x20,0x7c,0x47,0x64,0x54,0x45,0xfd,0x45,0x65,0x55,0x55,0x45,0x45,0x55,0x89,0x4,0x88,0x50,0xfe,0x20,0x44,0xfe,0x4,0x4,0xfc,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x10,0x24,0x7f,0x44,0x65,0x55,0x45,0xfd,0x45,0x64,0x55,0x55,0x45,0x45,0x55,0x89,0x50,0x54,0xfe,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4, ++0x10,0x25,0x7e,0x44,0x67,0x54,0x45,0xfd,0x45,0x65,0x55,0x54,0x45,0x44,0x57,0x88,0x20,0xfc,0x88,0x50,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x10,0x24,0x7f,0x44,0x65,0x55,0x46,0xfc,0x47,0x64,0x57,0x54,0x47,0x44,0x57,0x88,0x50,0x54,0xfe,0x50,0xfe,0x2,0xf4,0x0,0xfe,0x84,0x48,0xb0,0x70,0xae,0x24,0x60, ++0x1,0x2,0x6,0x9,0x37,0xc0,0x2,0x1,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x0,0x80,0x40,0x30,0xee,0x24,0x40,0x4,0xfe,0x0,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x4,0x1f,0x10,0x14,0x12,0x10,0x1f,0x2,0x1,0xff,0x5,0xc,0x14,0x65,0x6,0x4,0x20,0xf0,0x20,0x20,0xa0,0x44,0xfe,0x4,0x24,0xf4,0x14,0xa8,0x40,0x3c,0x8,0x0, ++0x10,0x10,0x7e,0x12,0x12,0x22,0x2a,0x45,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x0,0x8,0xfc,0x88,0x88,0x88,0xf8,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x1,0x1,0x7f,0x11,0xd,0x5,0x9,0x33,0xff,0x5,0xd,0x14,0x24,0xc5,0x6,0x4,0x40,0x28,0xfc,0x10,0x60,0x80,0x60,0x14,0xfe,0x8,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x10,0x8,0x41,0x25,0xa,0x10,0x21,0x2e,0x1,0xff,0x5,0xc,0x34,0xc5,0x6,0x4,0x40,0x50,0x4c,0x44,0x50,0x60,0x80,0x0,0x4,0xfe,0x10,0xa0,0x40,0x30,0xe,0x4, ++0x2,0x3f,0x22,0x3e,0x21,0x7e,0xa2,0x22,0x3f,0x1,0xff,0x4,0xc,0x15,0x66,0x4,0x20,0xfc,0x88,0x50,0xfe,0x20,0xf8,0x20,0x20,0x24,0xfe,0x90,0x60,0x1e,0x4,0x0, ++0x44,0x24,0x29,0xff,0x11,0x11,0x7d,0x11,0x11,0xff,0x11,0x11,0x21,0x21,0x41,0x81,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x10,0x10,0x10,0x2a,0x4a,0xa6,0x12, ++0x44,0x25,0x28,0xfe,0x10,0x10,0x7c,0x11,0x12,0xfe,0x10,0x10,0x20,0x20,0x43,0x80,0x8,0xfc,0x8,0x10,0x20,0x50,0x88,0x6,0x0,0xf8,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x44,0x24,0x28,0xfe,0x11,0x10,0x7d,0x12,0x10,0xfe,0x10,0x11,0x22,0x20,0x40,0x83,0x20,0x20,0x50,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x44,0x25,0x29,0xfd,0x11,0x11,0x7c,0x10,0x11,0xfe,0x15,0x11,0x21,0x21,0x40,0x80,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x84,0xfe,0x4,0x24,0x24,0x54,0x4,0xe4,0x14,0x8, ++0x44,0x25,0x29,0xfd,0x11,0x10,0x7c,0x13,0x10,0xfe,0x11,0x11,0x22,0x22,0x44,0x88,0x20,0x24,0x24,0x24,0xfc,0x80,0x84,0xfe,0x90,0x90,0x54,0x58,0xa8,0x28,0x44,0x82, ++0x4,0x7f,0x1,0x3f,0x1,0xff,0x0,0x3e,0x8,0xff,0x2a,0x3d,0x51,0x9e,0x2,0xc,0x40,0xfc,0x0,0xf8,0x0,0xfe,0x80,0xa0,0x94,0xfe,0x80,0x48,0x50,0x22,0x52,0x8e, ++0x10,0x10,0x94,0x54,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x20,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0, ++0x10,0x10,0x94,0x54,0x58,0x11,0xfe,0x30,0x38,0x54,0x54,0x90,0x10,0x10,0x11,0x12,0x40,0x40,0x40,0x44,0xfe,0x8,0x88,0x88,0x88,0x90,0x50,0x20,0x50,0x8e,0x4,0x0, ++0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x10,0x10,0x0,0x4,0xfe,0x24,0x24,0x24,0x24,0x24,0xfc,0x4,0x0,0x0,0x2,0x2,0xfe,0x0, ++0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x55,0x55,0x91,0x12,0x12,0x14,0x11,0x0,0x4,0xfe,0x0,0x4,0xfe,0x40,0x44,0x7e,0x44,0x44,0x44,0x44,0x44,0x94,0x8, ++0x1,0x11,0x11,0x1f,0x21,0x21,0x3f,0x11,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x10,0x10,0xf0,0x8,0x8,0xf8,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x10,0x10,0x97,0x54,0x58,0x10,0xff,0x32,0x3a,0x56,0x56,0x93,0x12,0x12,0x13,0x12,0x0,0x4,0xfe,0x90,0x90,0x94,0xfe,0x94,0x94,0x94,0x9c,0x4,0x4,0x4,0xfc,0x4, ++0x1,0x41,0x31,0x12,0x4,0x11,0x26,0x50,0x9,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x0,0xfc,0x48,0xa0,0x10,0xe,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x8,0xf,0x28,0x3f,0x21,0x52,0x8c,0x19,0x69,0x5,0xff,0x3,0x5,0x19,0x61,0x1,0x0,0x7c,0x44,0x28,0x10,0x28,0xc6,0x10,0x30,0x44,0xfe,0x80,0x60,0x1c,0x8,0x0, ++0x8,0x49,0x2a,0xff,0x1c,0x2a,0x49,0x49,0x7f,0x95,0x55,0x37,0x21,0x41,0x81,0x1,0x0,0x12,0x12,0x92,0x24,0x24,0x24,0x48,0xa4,0x24,0x24,0x92,0x12,0x12,0x12,0x0, ++0x10,0x10,0x95,0x55,0x59,0x12,0xfe,0x30,0x38,0x57,0x54,0x90,0x11,0x12,0x10,0x10,0x40,0x20,0x20,0xfe,0x2,0x4,0xf8,0x0,0x4,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x10,0x10,0x94,0x55,0x58,0x13,0xfe,0x30,0x39,0x56,0x54,0x90,0x11,0x10,0x10,0x17,0x20,0x40,0x88,0xfc,0x40,0xfe,0x50,0x98,0x24,0xca,0x10,0x64,0x88,0x30,0xc0,0x0, ++0x10,0x10,0x94,0x55,0x59,0x13,0xfd,0x31,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x80,0xf8,0x88,0x8,0xfe,0x40,0x40,0x7c,0x90,0x14,0xfe,0x10,0x10,0x28,0x24,0xc2, ++0x11,0x11,0x95,0x55,0x5a,0x11,0xfe,0x31,0x3a,0x54,0x55,0x91,0x11,0x11,0x11,0x11,0x10,0x10,0xd0,0x58,0x54,0x50,0x90,0x56,0x3c,0x8,0xfc,0x8,0xf8,0x8,0xf8,0x8, ++0x10,0x10,0x94,0x54,0x5b,0x10,0xfe,0x30,0x39,0x57,0x54,0x90,0x11,0x11,0x13,0x10,0x0,0x88,0x50,0x4,0xfe,0x0,0x88,0x88,0x54,0xfc,0x88,0x88,0x10,0x54,0xfe,0x22, ++0x10,0x11,0x94,0x54,0x58,0x12,0xfd,0x32,0x39,0x55,0x55,0x91,0x11,0x11,0x11,0x11,0x0,0xfc,0x24,0xa0,0xbc,0xe0,0x3e,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x10,0x11,0x94,0x54,0x59,0x10,0xfe,0x31,0x3a,0x54,0x55,0x90,0x10,0x11,0x12,0x10,0x0,0xf8,0x50,0x20,0xfe,0x62,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x20,0x20, ++0x10,0x10,0x95,0x55,0x59,0x11,0xff,0x31,0x39,0x54,0x50,0x97,0x10,0x10,0x10,0x13,0x40,0x84,0xfe,0x4,0xfc,0x4,0xfc,0x4,0xfc,0x28,0x24,0xfe,0x50,0x50,0x8e,0x4, ++0x20,0x2f,0x21,0xa9,0x71,0x27,0xfc,0x24,0x77,0x69,0xa9,0x21,0x21,0x21,0x2a,0x24,0x4,0x7e,0x44,0x44,0x7c,0x10,0x14,0x7e,0x54,0x54,0x7c,0x10,0x10,0x14,0xfe,0x2, ++0x0,0x3f,0x20,0x20,0x3f,0x20,0x20,0x3f,0x24,0x24,0x22,0x21,0x20,0x28,0x30,0x20,0x10,0xf8,0x10,0x10,0xf0,0x10,0x10,0xf0,0x10,0x20,0x40,0x80,0x60,0x1e,0x4,0x0, ++0x7d,0x44,0x7d,0x45,0x7c,0x48,0x5c,0x63,0x1f,0x10,0x1f,0x10,0x1f,0x0,0xff,0x0,0xf8,0x20,0x24,0xfe,0x20,0x52,0x92,0xe,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0, ++0x2,0x7f,0x22,0x12,0x2,0x1a,0x63,0xa,0x4,0x8,0xff,0x8,0x8,0x8,0x10,0x20,0x8,0xfc,0x88,0x48,0x8,0x68,0x88,0x28,0x10,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x10,0x10,0x2b,0x24,0x50,0x8a,0x1,0x7c,0x4,0x8,0x49,0x32,0x10,0x8,0x9,0x0,0x0,0x44,0xfe,0x44,0x44,0x64,0x54,0xcc,0x44,0xcc,0x54,0x64,0x44,0x44,0x54,0x88, ++0x1,0x2,0xc,0x37,0xc0,0x1f,0x10,0x1f,0x2,0x7f,0x12,0xa,0x12,0x22,0xa,0x4,0x0,0x80,0x60,0xd8,0x6,0xf0,0x10,0xf0,0x8,0xfc,0x48,0x28,0x48,0x88,0x28,0x10, ++0x2,0x1f,0x2,0xff,0x2,0xf,0x38,0xcf,0x8,0xf,0x0,0x7e,0x22,0x1a,0x62,0x6,0x20,0xc0,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x4,0xfe,0x44,0x34,0xc4,0xc, ++0x2,0x2,0x7e,0x2,0x3e,0x2,0xfe,0x2,0x7f,0x22,0x12,0xa,0x12,0x63,0xa,0x4,0x80,0x88,0xfc,0x80,0xf8,0x80,0xfe,0x88,0xfc,0x8,0x48,0x28,0x48,0x88,0x28,0x10, ++0x8,0x4,0xff,0x0,0x3e,0x22,0x3e,0x22,0x3e,0x22,0x7e,0x22,0x12,0x1a,0x62,0x6,0x20,0x44,0xfe,0x8,0x48,0x48,0x48,0x48,0x48,0x18,0xfc,0x44,0x24,0x34,0xc4,0xc, ++0x10,0x9,0x7f,0x41,0x41,0x7f,0x40,0x40,0x7f,0x55,0x55,0x7f,0xd5,0x55,0x41,0x43,0x0,0x24,0xfe,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48, ++0x2,0x7f,0x0,0x3e,0x22,0x3e,0x0,0x7f,0x41,0x55,0x55,0x7f,0x49,0x49,0x43,0x0,0x24,0xfe,0x24,0x24,0x24,0xb4,0x6c,0x24,0x24,0x6c,0xb4,0x24,0x24,0x24,0xb4,0x48, ++0x7f,0x50,0x5e,0x68,0x7f,0x48,0x54,0x7f,0x0,0x7e,0x22,0x12,0x1a,0x62,0xa,0x4,0x7c,0x44,0x46,0x80,0x7c,0x28,0x10,0x6e,0x4,0xfe,0x44,0x24,0x34,0xc4,0x14,0x8, ++0x1,0x3,0x4,0x8,0x10,0x3f,0x1,0x2,0x4,0x3f,0x1,0x9,0x19,0x21,0x45,0x2,0x0,0x0,0x0,0x10,0x30,0xc0,0x0,0x20,0x10,0xf8,0x0,0x20,0x18,0xc,0x4,0x0, ++0x8,0x8,0xfe,0x8,0x3e,0xc8,0x29,0x12,0x1f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0xc8,0x6a,0x8a,0x26,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0, ++0x8,0x8,0x7f,0xa,0x9,0x8,0xff,0x9,0x12,0x2f,0xc1,0x2,0x3f,0x9,0x11,0x23,0x20,0x28,0xfc,0x20,0x20,0xa4,0xfe,0x20,0x30,0xee,0x4,0x10,0xf8,0x20,0x18,0x8, ++0x10,0x8,0x3e,0x23,0x22,0x3e,0x41,0x42,0x9f,0x1,0x2,0x3f,0x9,0x11,0x21,0x3,0x40,0x48,0xfc,0x48,0x30,0x48,0x86,0x20,0xc0,0x0,0x10,0xf8,0x20,0x18,0x8,0x0, ++0x2,0xd,0xf0,0x94,0x54,0x49,0x7e,0x90,0x10,0xfd,0x10,0x54,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x20,0x40,0x84,0xf8,0x10,0x20,0x44,0xfe,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x1,0xff,0x1,0x1f,0x12,0xff,0x10,0x1f,0x0,0x3e,0x32,0x2a,0xff,0x28,0x4a,0x18,0x4,0xfe,0x0,0xf0,0x14,0xfe,0x90,0xf0,0x1c,0xe0,0x24,0xf8,0x24,0xfe,0x54,0xb2, ++0x10,0x14,0xfe,0x11,0x7c,0x10,0xfe,0x21,0x3c,0x44,0xa4,0x28,0x10,0x28,0x41,0x82,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0x88,0x88,0x6,0x4, ++0x10,0x14,0xfe,0x10,0x55,0xba,0x11,0x28,0x67,0xbc,0x24,0x29,0x5a,0x10,0x20,0xc0,0x80,0x80,0x84,0xfe,0x4,0x4c,0x54,0xe4,0xfc,0x44,0xe4,0x54,0x4c,0x44,0x54,0x48, ++0x8,0xa,0x7f,0x8,0x9,0xff,0x8,0x28,0x2a,0x2f,0x28,0x28,0x58,0x48,0x87,0x0,0x8,0x8,0x48,0x48,0x48,0xc8,0x48,0x48,0x48,0x78,0x8,0x8,0x8,0x6,0xfc,0x0, ++0x8,0x8,0x7f,0x8,0xa,0xff,0x8,0x28,0x28,0x2e,0x28,0x2b,0x58,0x48,0x87,0x0,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0x88,0x88,0xfe,0x0,0x6,0xfc,0x0, ++0x10,0x17,0x7d,0x11,0x11,0xfd,0x12,0x55,0x50,0x5c,0x51,0x72,0x50,0x48,0x87,0x0,0x44,0xe4,0x4,0x14,0xd4,0x54,0x54,0x54,0xd4,0x94,0x4,0x14,0x8,0x6,0xfc,0x0, ++0x10,0x12,0x7d,0x11,0x14,0xfe,0x10,0x50,0x51,0x5d,0x52,0x72,0x50,0x48,0x87,0x0,0x20,0x20,0x20,0x7e,0x82,0x14,0x90,0x90,0x10,0x28,0x26,0x42,0x80,0x6,0xfc,0x0, ++0x11,0x15,0x7f,0x19,0x17,0xfb,0x15,0x59,0x57,0x5a,0x52,0x72,0x52,0x49,0x86,0x3,0x8,0x28,0xbc,0x48,0xfe,0x18,0xaa,0x4e,0xf8,0x8,0x48,0x48,0xb8,0x8,0x6,0xfc, ++0x8,0x8,0xa,0x7f,0x8,0x8,0xff,0x14,0x54,0x56,0x55,0x94,0x14,0x14,0x24,0x4c,0x8,0xfc,0x88,0x88,0x88,0xa8,0x90,0xfc,0x84,0xc4,0xa8,0xa8,0x90,0xa8,0xc6,0x84, ++0x8,0x8,0x8,0x7e,0x8,0x8,0xff,0x14,0x56,0x55,0x56,0x94,0x14,0x14,0x24,0x4c,0x20,0x20,0x24,0xfc,0x28,0x30,0xfe,0x40,0xfc,0x84,0x84,0xfc,0x84,0x84,0xfc,0x84, ++0x0,0xff,0x1,0x0,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf1,0x40,0x0,0x8,0xfc,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x2,0xff,0x0,0x1,0x7e,0x42,0x42,0x42,0x7e,0x0,0x44,0x24,0x28,0xe,0xf0,0x43,0x20,0x20,0x24,0xfe,0x20,0x20,0xf8,0x8,0x88,0x50,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x84,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x50,0x20, ++0x1,0xff,0x14,0x15,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x0,0x88,0x7c,0x10,0x90,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x8,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x8,0x28,0x10, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xa6,0xbc,0xe4,0xa4,0xa4,0xb4,0xa8,0xa0,0x82,0x82,0x7e,0x0, ++0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x88,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0xa0,0x20,0x24,0x7e,0x60,0xa4,0x3e,0x20,0x20,0x24,0x3e,0x20,0x20,0x20,0x20, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x20,0x90,0x10,0x7e,0x42,0x84,0x20,0x20,0x24,0x28,0x30,0x20,0x22,0x22,0x1e,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x50,0x7c,0x50,0x90,0x14,0xfe,0x28,0x28,0x28,0x28,0x2a,0x4a,0x86,0x0, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x10,0x90,0x10,0x3e,0x44,0xa8,0x18,0x10,0x24,0x7e,0xc4,0x44,0x44,0x44,0x7c,0x44, ++0x1,0xff,0x14,0x14,0x7f,0x55,0x55,0x55,0x57,0x61,0x41,0x7f,0x41,0x41,0x7f,0x41,0x40,0xc4,0x4c,0x50,0x62,0x42,0x7e,0x4,0x7e,0x44,0x44,0x7c,0x44,0x44,0x7c,0x44, ++0x4,0xff,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x28,0xaa,0x6c,0x28,0xfe,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0,0x0, ++0x4,0xff,0x28,0x28,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7d,0x45,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xff,0x82,0x4,0xfe,0x84,0x84,0x84,0xfc,0x0,0xfe,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x4,0xfe,0x28,0x28,0xfe,0xab,0xaa,0xaa,0xae,0xc3,0x82,0xfe,0x82,0x83,0xfe,0x82,0x20,0x20,0x50,0x50,0x8e,0x4,0xf8,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0xa0,0x40, ++0x4,0xfe,0x29,0x28,0xff,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x8,0xfe,0x8,0x88,0x48,0x48,0x8,0x8,0x28,0x10, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x4,0xfe,0x84,0x84,0xfc,0x84,0x84,0xfc,0x10,0x90,0x92,0xf4,0x98,0xb2,0xd2,0x8e, ++0x4,0xfe,0x28,0x29,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x20,0x10,0x14,0xfe,0x0,0x84,0x48,0xfe,0x0,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x4,0xfe,0x28,0x28,0x7f,0x54,0x54,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7c,0x44,0x84,0x9e,0x94,0x94,0xf4,0x9c,0x94,0xd4,0x54,0x5c,0x54,0x54,0xd4,0x24,0x24,0x4c, ++0x4,0xfe,0x28,0x28,0x7c,0x54,0x54,0x57,0x6c,0x44,0x44,0x7c,0x44,0x44,0x7d,0x46,0x8,0xfc,0x88,0xf8,0x88,0xf8,0x0,0xfe,0x20,0xa8,0xbc,0xa0,0xa0,0xe6,0x3c,0x0, ++0x4,0xfe,0x28,0x28,0xfe,0xaa,0xaa,0xab,0xae,0xc2,0x82,0xfe,0x82,0x82,0xfe,0x82,0x0,0xfe,0x12,0x50,0x5c,0x50,0xb0,0xe,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x54,0x48, ++0x4,0xfe,0x2b,0x28,0x7c,0x55,0x56,0x54,0x6c,0x44,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x44,0xfe,0x40,0x88,0xfc,0x88,0x88,0xf8,0x4,0xfe,0x54,0x54,0x54,0xfe,0x0, ++0x4,0xfe,0x29,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x14,0xfe,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x44,0x44,0x44,0x7c,0x44, ++0x4,0xff,0x29,0x28,0x7d,0x54,0x54,0x54,0x6f,0x44,0x45,0x7c,0x45,0x44,0x7c,0x45,0x4,0xde,0x54,0xcc,0x54,0x64,0x50,0xa8,0x46,0x90,0x20,0x48,0x90,0x20,0x40,0x80, ++0x2,0xff,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xff,0x82,0x82,0xfe,0x83,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x4,0xfe,0x28,0x28,0xff,0xaa,0xaa,0xaa,0xae,0xc2,0x82,0xfe,0x82,0x83,0xff,0x82,0x40,0x60,0x94,0xfe,0x90,0xfc,0x90,0x90,0xfc,0x90,0x94,0xfe,0x80,0x54,0x52,0x2, ++0x4,0xfe,0x29,0x28,0x7c,0x55,0x54,0x54,0x6d,0x46,0x45,0x7d,0x45,0x45,0x7f,0x44,0x40,0x24,0xfe,0x40,0x88,0xfc,0xa8,0xaa,0x2e,0x0,0xfc,0x54,0x54,0x54,0xfe,0x0, ++0x4,0xfe,0x28,0x29,0x7d,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x45,0x45,0x7e,0x44,0x20,0x3c,0x20,0xfe,0x22,0xfc,0x20,0xfe,0x20,0x54,0xb8,0x58,0xb6,0x54,0x90,0x30, ++0x4,0xff,0x29,0x29,0x7d,0x55,0x54,0x55,0x6c,0x45,0x45,0x7d,0x44,0x44,0x7f,0x44,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfc,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0, ++0x4,0xff,0x28,0x2b,0x7c,0x55,0x55,0x55,0x6d,0x44,0x45,0x7c,0x47,0x45,0x7d,0x46,0x1c,0xe0,0x24,0xfe,0x20,0xfc,0xac,0x74,0xfc,0x20,0xfc,0x20,0xfe,0x54,0x52,0x2, ++0x0,0xff,0x2,0x6,0x9,0x11,0x62,0x4,0x8,0x31,0x2,0x4,0x18,0x60,0x2,0x1,0x4,0xfe,0x0,0x8,0x18,0xa0,0xc0,0xc0,0xa0,0xa0,0x90,0x8e,0x84,0x80,0x80,0x0, ++0x11,0x10,0x1f,0x10,0x7d,0x44,0x47,0x6c,0x54,0x54,0x55,0x6d,0x46,0x44,0x7f,0x44,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x0,0xff,0x4,0x7,0x4,0x8,0x30,0xdf,0x10,0x10,0x1f,0x9,0x9,0x19,0x27,0xc0,0x4,0xfe,0x0,0xf0,0x10,0x90,0x60,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc, ++0x0,0x7e,0x8,0x8,0xe,0x71,0x2,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x8,0xfc,0x88,0xc8,0xaa,0x6,0x10,0xf8,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc, ++0x8,0x8,0xfe,0x8,0x1e,0xe8,0x9,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0xc,0xf0,0x84,0xfe,0x90,0x90,0x10,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc, ++0x0,0x3f,0x24,0x27,0x24,0x3f,0x55,0x64,0x9f,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x48,0xfe,0x40,0x48,0x50,0xa0,0x52,0x8a,0xf6,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc, ++0x49,0x2a,0x7f,0x49,0x5d,0x6b,0x49,0x1f,0x10,0x10,0x1f,0x9,0x9,0xd,0x33,0xc0,0x20,0x24,0x3e,0x44,0xa8,0x10,0x6e,0xf0,0x10,0x10,0xf0,0x0,0xf8,0x0,0x6,0xfc, ++0x4,0x7e,0x44,0x44,0x45,0x7d,0x56,0x10,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x40,0x0,0x80,0x80,0x84,0xfe,0x4,0x4,0x4,0x84,0x44,0x44,0x4,0x4,0x4,0x44,0x28,0x10, ++0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x50,0x5c,0x51,0x51,0x5d,0xf2,0x44,0x9,0x0,0xfc,0x84,0x88,0x88,0x90,0xbc,0x84,0xc4,0xa8,0x28,0x10,0x28,0x28,0x46,0x84, ++0x4,0x7f,0x44,0x44,0x44,0x7c,0x10,0x13,0x50,0x5c,0x50,0x51,0x5d,0xf1,0x42,0x4,0x4,0xfe,0x88,0x88,0x88,0x88,0x88,0xfe,0x88,0x88,0x88,0x8,0x8,0x8,0x8,0x8, ++0x4,0x7e,0x44,0x45,0x44,0x7c,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x50,0x50,0x90,0x88,0x8,0x6,0x4, ++0x4,0x7e,0x44,0x44,0x44,0x7d,0x56,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x0,0x40,0x40,0xa0,0xa0,0x90,0x8,0x16,0xf8,0x10,0x10,0x10,0x50,0x20,0x4,0x4,0xfc, ++0x4,0x7f,0x44,0x44,0x44,0x7c,0x54,0x10,0x51,0x5e,0x50,0x50,0x5c,0xf0,0x40,0x0,0x4,0xfe,0x40,0x40,0x40,0x80,0x84,0xfe,0x84,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x4,0x7e,0x44,0x45,0x45,0x7f,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x88,0x88,0x88,0x8,0x8,0xfe,0x8,0x8,0x48,0x28,0x28,0x8,0x8,0x8,0x28,0x10, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x4,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0xe4,0xc, ++0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x51,0x5e,0xf0,0x40,0x0,0x1c,0xe0,0x0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0xa8,0x26,0x22,0x20,0xa0,0x40, ++0x4,0x7e,0x44,0x45,0x45,0x7e,0x54,0x10,0x50,0x5c,0x50,0x52,0x5c,0xf0,0x40,0x0,0x40,0x20,0x20,0xfe,0x2,0x4,0x80,0x88,0x98,0xa0,0xc0,0x80,0x82,0x82,0x7e,0x0, ++0x9,0x7d,0x49,0x49,0x4f,0x79,0x51,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x45,0x8,0x0,0x0,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x5c,0x54,0x80, ++0x4,0x7e,0x44,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x42,0x5,0x20,0x20,0x20,0xfe,0x22,0x24,0x20,0xfc,0x88,0x48,0x50,0x20,0x50,0x48,0x8e,0x4, ++0x4,0x7e,0x44,0x44,0x45,0x7f,0x54,0x10,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x40,0x80,0x90,0x8,0xfc,0x2,0x8,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x4,0x7e,0x44,0x45,0x44,0x7c,0x53,0x10,0x50,0x5c,0x51,0x50,0x5c,0xf0,0x43,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x7e,0x44,0x47,0x44,0x7c,0x54,0x13,0x50,0x5d,0x50,0x50,0x5c,0xf1,0x42,0x4,0x40,0x48,0x7c,0xc0,0x50,0x22,0xd2,0xe,0x8,0xfc,0xa0,0xa0,0xa0,0x22,0x22,0x1e, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf0,0x40,0x0,0x10,0x10,0x12,0xd4,0x18,0x12,0x52,0x8e,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20, ++0x4,0x7e,0x45,0x45,0x45,0x7e,0x54,0x13,0x50,0x5c,0x50,0x50,0x5c,0xf1,0x42,0x4,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x90,0x90,0x90,0x90,0x92,0x12,0xe,0x0, ++0x4,0x7e,0x45,0x45,0x44,0x7c,0x57,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf2,0x44,0x0,0x0,0xc,0x70,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x86,0x7c,0x0, ++0x0,0x7c,0x47,0x44,0x44,0x7c,0x54,0x10,0x53,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x24,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x4,0x7e,0x44,0x47,0x44,0x7c,0x55,0x12,0x50,0x5c,0x50,0x50,0x5c,0xf0,0x41,0x2,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0xe,0x4, ++0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x40,0x24,0x28,0x10,0x4e,0x84,0x0, ++0x0,0x7d,0x44,0x44,0x45,0x7d,0x55,0x11,0x50,0x5c,0x50,0x52,0x5e,0xf4,0x40,0x0,0x8,0xfc,0x8,0x8,0xf8,0x0,0x4,0x4,0xfc,0x0,0x40,0xa4,0xa2,0x8a,0x78,0x0, ++0x4,0x7e,0x44,0x44,0x45,0x7d,0x55,0x11,0x51,0x5c,0x50,0x53,0x5c,0xf0,0x40,0x0,0x24,0x3e,0x20,0x20,0xfc,0x4,0xfc,0x4,0xfc,0x20,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x7d,0x45,0x45,0x45,0x7d,0x55,0x11,0x5c,0x53,0x50,0x50,0x5d,0xf2,0x40,0x0,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20,0x20, ++0x9,0x7d,0x49,0x49,0x4a,0x7c,0x50,0x17,0x50,0x5c,0x50,0x51,0x5d,0xf2,0x44,0x0,0x0,0x0,0x0,0xfe,0x92,0x92,0x92,0xf2,0x92,0x92,0x92,0x52,0x32,0x1e,0x12,0x0, ++0x4,0x7f,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0x0,0xc,0xf0,0x10,0x14,0xfe,0x10,0x7c,0x44,0x54,0x54,0x54,0x54,0x20,0x28,0x46,0x82, ++0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x20,0x10,0xfe,0x20,0x24,0x3e,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x4,0x7e,0x45,0x44,0x44,0x7c,0x54,0x13,0x50,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x40,0x28,0xfc,0x0,0x88,0x50,0x4,0xfe,0x0,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x4,0x7a,0x4a,0x48,0x4f,0x79,0x51,0x11,0x5f,0x59,0x51,0x51,0x5a,0xf2,0x44,0x0,0x40,0x5e,0x92,0x14,0xd4,0x18,0x14,0x54,0xf2,0x12,0x1a,0x14,0x90,0x50,0x50,0x10, ++0x0,0x78,0x4f,0x49,0x49,0x7a,0x57,0x11,0x51,0x5d,0x55,0x53,0x5d,0xf2,0x44,0x8,0x10,0x10,0x7c,0x14,0xfe,0x14,0x7c,0x10,0x7c,0x10,0xfe,0x10,0x10,0x96,0x7c,0x0, ++0x0,0x7d,0x47,0x45,0x45,0x7d,0x55,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x8,0x7c,0x4a,0x4a,0x4b,0x78,0x57,0x10,0x58,0x57,0x54,0x54,0x5c,0xf4,0x44,0x4,0x40,0x40,0x48,0x48,0xf8,0x0,0xfe,0x40,0x84,0xfe,0xa4,0xa4,0xa4,0xa4,0xa4,0xc, ++0x0,0x7d,0x44,0x44,0x47,0x7c,0x55,0x11,0x51,0x5d,0x51,0x50,0x5d,0xf0,0x43,0x0,0xc,0xf0,0x20,0x24,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x0,0x7d,0x44,0x45,0x45,0x7d,0x55,0x11,0x50,0x5f,0x52,0x52,0x5e,0xf2,0x42,0x2,0xc,0xf0,0x24,0xfe,0x24,0x24,0xfc,0x24,0x20,0xfe,0x22,0x2a,0xfa,0x2,0xa,0x4, ++0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x51,0x51,0x5e,0xf2,0x44,0xb,0x20,0x14,0xfe,0x48,0x48,0xfe,0x48,0x78,0x0,0xfc,0x4,0x48,0x30,0x28,0xc6,0x4, ++0x1,0x7c,0x47,0x44,0x45,0x7c,0x57,0x10,0x50,0x5c,0x51,0x51,0x5e,0xf0,0x43,0x0,0x8,0x90,0xfe,0x40,0xfc,0x40,0xfe,0x80,0x88,0xfc,0x20,0x20,0x20,0x24,0xfe,0x0, ++0x4,0x7e,0x45,0x45,0x45,0x7d,0x55,0x11,0x51,0x5d,0x52,0x52,0x5c,0xf4,0x48,0x0,0x40,0x24,0xfe,0x4,0x4,0xfc,0x4,0x0,0xfe,0xaa,0xaa,0xfe,0xaa,0xaa,0xaa,0x84, ++0x4,0x7e,0x44,0x44,0x45,0x7c,0x54,0x11,0x50,0x5c,0x53,0x50,0x5c,0xf1,0x42,0x0,0x0,0xfc,0x48,0x30,0xfe,0x32,0x54,0x90,0x30,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x8,0x7f,0x49,0x49,0x49,0x79,0x51,0x17,0x50,0x5f,0x54,0x52,0x59,0xf2,0x44,0x8,0x4,0xfe,0x8,0xf8,0x8,0xf8,0x8,0xfe,0x8,0xbe,0xa2,0x94,0x8,0x94,0x24,0x42, ++0x8,0x7c,0x4b,0x48,0x48,0x7f,0x50,0x13,0x52,0x5e,0x52,0x53,0x5f,0xf2,0x42,0x2,0x90,0x90,0xfc,0x90,0x94,0xfe,0x90,0xfc,0x94,0x94,0x94,0x6c,0x2c,0x44,0x14,0x8, ++0x4,0x7f,0x45,0x44,0x44,0x7c,0x55,0x10,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x40,0x3,0x1c,0xe0,0x24,0xa8,0x40,0x88,0xf0,0x20,0x44,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x8,0x7f,0x4a,0x4b,0x4a,0x7a,0x52,0x12,0x52,0x5a,0x52,0x52,0x5c,0xf5,0x48,0x0,0x4,0xfe,0x0,0xf4,0x4,0xe4,0xbe,0xa4,0xb4,0xec,0xc,0xa4,0xa4,0xf4,0x14,0x8, ++0x10,0xff,0x94,0x96,0x95,0xf7,0xa4,0x26,0xa6,0xb7,0xa4,0xa4,0xa9,0xe9,0x92,0x24,0x4,0xfe,0x0,0x28,0x48,0xee,0x92,0xa4,0xa8,0xe8,0xa8,0x88,0x14,0x14,0x24,0x42, ++0x0,0x7d,0x44,0x44,0x47,0x7c,0x50,0x11,0x50,0x5d,0x50,0x53,0x5c,0xf0,0x41,0x6,0x50,0x54,0xd8,0x50,0xfe,0x88,0x50,0xfc,0x20,0xfc,0x20,0xfe,0x20,0x50,0x8e,0x4, ++0x4,0x7f,0x45,0x44,0x47,0x7c,0x54,0x13,0x51,0x5d,0x51,0x51,0x5d,0xf1,0x41,0x1,0x1c,0xe0,0x24,0xa8,0xfe,0x70,0xae,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x14,0xfa,0x90,0x9f,0x90,0xff,0xa8,0x28,0xaf,0xb2,0xa7,0xaa,0xb2,0xe2,0x86,0x1,0x20,0x28,0x24,0xa0,0x7e,0xa8,0xa8,0xa8,0xa8,0x28,0x28,0xa8,0x4a,0x4a,0x86,0x0, ++0x4,0x7f,0x45,0x45,0x45,0x7c,0x55,0x12,0x55,0x5d,0x51,0x50,0x5c,0xf3,0x40,0x0,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0xf4,0x44,0x54,0xfc,0x14,0x8, ++0x11,0xff,0x91,0x94,0x92,0xf5,0xa5,0x25,0xa5,0xbd,0xa5,0xa5,0xbd,0xe5,0x84,0x4,0x10,0xfe,0x10,0x4,0xfe,0x44,0xf4,0x44,0xf4,0x44,0xf4,0x44,0xfc,0x4,0x14,0x8, ++0x10,0xff,0x94,0x95,0x95,0xf5,0xa5,0x25,0xa4,0xbd,0xa4,0xa7,0xbd,0xea,0x90,0x3,0x40,0xfe,0x0,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x24,0xfa,0x20,0xfe, ++0x9,0x7d,0x4a,0x49,0x4b,0x7a,0x52,0x12,0x53,0x5e,0x53,0x52,0x5f,0xf2,0x43,0x2,0x24,0x24,0x48,0x24,0xfe,0x94,0x64,0x94,0xfc,0x48,0x68,0x48,0x68,0x4a,0x6a,0x46, ++0x1,0xf5,0x97,0x99,0x97,0xf3,0xa5,0x29,0xa3,0xba,0xa2,0xa2,0xba,0xe0,0x81,0x6,0x8,0x28,0xbc,0x48,0xbe,0x18,0xaa,0x4e,0xf8,0xc,0x48,0x48,0x48,0xb0,0xc,0x4, ++0x10,0xff,0x90,0x95,0x94,0xf7,0xac,0x25,0xab,0xb1,0xa0,0xa3,0xb9,0xe0,0x83,0xc,0x40,0xfe,0x0,0xf4,0x4,0xf6,0xc,0xf4,0x1a,0xf2,0x0,0xf8,0x10,0xe0,0x10,0xe, ++0x0,0x3f,0x2,0x11,0x8,0x7,0x78,0x0,0x1,0x6,0x38,0x1,0x6,0x38,0x1,0x0,0xe0,0x8,0xc,0x30,0xc0,0x0,0x80,0xc0,0x20,0x50,0x90,0x10,0x10,0x10,0x20,0xc0, ++0x8,0x10,0x35,0xcc,0x28,0x10,0x30,0xc8,0x15,0x26,0xcc,0x14,0x24,0xc4,0x14,0x8,0x0,0x4,0xfe,0x44,0x44,0x44,0x94,0x88,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x8,0x13,0x34,0xcc,0x28,0x11,0x31,0xc9,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x4,0xfe,0x40,0x40,0x84,0xfe,0x4,0x4,0x4,0xfc,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x8,0x10,0x34,0xcc,0x29,0x11,0x33,0xcd,0x15,0x25,0xcd,0x15,0x25,0xc5,0x15,0x9,0x10,0x90,0x90,0x90,0x14,0xfe,0x10,0x38,0x34,0x54,0x54,0x92,0x10,0x10,0x10,0x10, ++0x8,0x10,0x37,0xcc,0x29,0x11,0x31,0xc9,0x15,0x24,0xcf,0x14,0x24,0xc4,0x15,0xa,0x88,0x88,0xfe,0x88,0xfc,0x4,0xfc,0x4,0xfc,0x20,0xfe,0x20,0x50,0x88,0x6,0x4, ++0x8,0x10,0x35,0xcd,0x29,0x11,0x31,0xc9,0x15,0x24,0xcd,0x15,0x25,0xc5,0x15,0x9,0x20,0x44,0xfe,0x4,0x54,0x24,0x54,0x4,0xfc,0x10,0x12,0xd4,0x18,0x12,0xd2,0xe, ++0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x86,0x10,0x90,0x50,0x50,0x10,0x90,0x50,0x54,0x1e,0xf0,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x10,0x1e,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2b,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0xfe,0x20,0x20,0x50,0x48,0x86,0x4, ++0x10,0x10,0x1e,0x25,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4b,0x42,0x86,0x80,0x84,0xfe,0x0,0xf8,0x20,0x44,0xfe,0x54,0x54,0x54,0x94,0xa4,0x24,0x54,0x8, ++0x10,0x10,0x1f,0x24,0x28,0x7e,0xaa,0x2a,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x43,0x86,0x4,0xe,0xf0,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa4,0xac,0x7a,0x8, ++0x8,0x8,0x2e,0x28,0x2e,0xf4,0x44,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x21,0x41,0x80,0x84,0x98,0xe2,0x82,0x7e,0x0,0xe0,0x40,0xf0,0x10,0xf0,0x10,0xf0,0x10,0x30, ++0x10,0x10,0x1d,0x24,0x28,0x7e,0xaa,0x2b,0x3e,0x2a,0x2a,0x3e,0x2a,0x4a,0x42,0x87,0x20,0x20,0x24,0xac,0xb0,0x20,0x24,0xfe,0x50,0x50,0x50,0x50,0x52,0x92,0x8e,0x0, ++0x20,0x20,0x3d,0x48,0x50,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7c,0x55,0x56,0x44,0x8c,0x20,0x24,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x70,0xa8,0x26,0x24,0x20,0x20, ++0x21,0x20,0x3c,0x49,0x51,0xfd,0x55,0x55,0x7d,0x55,0x54,0x7f,0x54,0x54,0x44,0x8c,0x4,0x88,0x50,0xfc,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x20,0x20,0x20,0x20, ++0x8,0x2f,0x28,0x2f,0x7a,0x1,0xff,0x0,0x1f,0x0,0x1f,0x0,0x1f,0x10,0x1f,0x10,0x40,0x58,0x60,0x44,0x7c,0x0,0xfe,0x0,0xf0,0x0,0xf0,0x0,0xf0,0x10,0xf0,0x10, ++0x8,0xff,0x8,0x3e,0x2b,0x3e,0x22,0x41,0xff,0x0,0x1e,0x0,0x0,0x1f,0x10,0x1f,0x78,0x48,0x48,0x86,0x78,0x48,0x30,0x4c,0xfe,0x0,0x0,0xf0,0x0,0xf0,0x10,0xf0, ++0x10,0x14,0xfe,0x10,0x7c,0x10,0xfe,0x0,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x55,0x4a,0x0,0x8,0xfc,0x88,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x50,0x52,0x92,0xe,0x0, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x1,0x3f,0x0,0xff,0x8,0xf,0x0,0x0,0x0,0x0,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf8,0x0,0xfe,0x0,0xf0,0x10,0x10,0xa0,0x40, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x3f,0x21,0x21,0x2f,0x21,0x21,0x21,0x42,0x4c,0x90,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x0,0x8,0xfc,0x8,0x8,0x8,0x8,0x50,0x20, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x1,0xff,0x8,0x4,0x2,0x1,0x6,0x18,0x60,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0x4,0xfe,0x20,0x40,0x80,0x0,0xc0,0x3c,0x8, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x78,0xb,0x10,0x78,0xf,0x28,0x10,0x2b,0x44,0x83,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x40,0x48,0xfc,0x40,0x50,0xf8,0x46,0xfc, ++0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x7f,0x8,0x4,0x3,0x1c,0xe8,0x8,0x10,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xfc,0x20,0x40,0x80,0x70,0x2e,0x20,0x20,0x20, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x41,0x20,0x8f,0x60,0x2b,0x12,0x62,0x22,0x22,0x20,0xf0,0x0,0xfe,0x12,0x64,0x10,0x40,0x44,0xfe,0x40,0xf8,0x48,0x48,0x48,0x58,0x40, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x2,0x7e,0x2,0x2,0x3e,0x2,0x2,0x7e,0x2,0x2,0xf0,0x0,0xfe,0x12,0x64,0x10,0x88,0xfc,0x80,0x90,0xf8,0x80,0x88,0xfc,0x80,0x80, ++0x1f,0x1,0x7f,0x51,0x8d,0x12,0x1,0x1f,0x4,0xff,0x1,0x7f,0x4,0xc,0x3,0x1c,0xf0,0x0,0xfe,0x12,0x64,0x10,0x0,0xf0,0x44,0xfe,0x0,0xfc,0x40,0x40,0x80,0x70, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x20,0x17,0x42,0x21,0xb,0x10,0x6f,0x20,0x20,0x27,0xf0,0x0,0xfe,0x12,0x64,0x10,0x38,0xc0,0x48,0x50,0xf8,0x40,0xfe,0x40,0x48,0xfc, ++0x1f,0x1,0x7f,0x51,0x8d,0x11,0x23,0x12,0x2,0xf3,0x11,0x13,0x1c,0x12,0x1b,0x10,0xf0,0x0,0xfe,0x12,0x64,0x10,0xf8,0x88,0x48,0xf8,0x0,0xfc,0x44,0xa4,0xf4,0x8, ++0x1f,0x1,0x7f,0x51,0x8d,0x12,0x3f,0x12,0xff,0x21,0x3f,0x21,0x3f,0x21,0x25,0x22,0xf0,0x0,0xfe,0x12,0x64,0x10,0x20,0x24,0xfe,0x4,0x44,0x28,0x10,0x28,0x46,0x84, ++0x1f,0x1,0x7f,0x51,0x8d,0x10,0x2b,0xe5,0x19,0x69,0x95,0x64,0x5,0x64,0x17,0x8,0xf0,0x0,0xfe,0x12,0x64,0x10,0xfc,0x24,0xfc,0x24,0xfc,0x20,0xfc,0x20,0xfe,0x0, ++0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x40,0x40,0x40,0x40,0x40,0x44,0xcc,0x50,0x60,0x40,0x40,0x40,0x42,0x42,0x3e,0x0, ++0x8,0x8,0x2a,0x2f,0x28,0x29,0xff,0x0,0x49,0x49,0x49,0x55,0x63,0x41,0x7f,0x1,0x0,0x4,0x7e,0x44,0x44,0x44,0xfc,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0xfe,0x0, ++0x10,0x10,0x50,0x5d,0x52,0x50,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7c,0x4,0x80,0x80,0x84,0xfe,0x4,0x24,0xf4,0x24,0x24,0xe4,0x14,0x8,0x2,0x2,0xfe,0x0, ++0x10,0x11,0x50,0x5c,0x50,0x54,0xfe,0x1,0x54,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x4,0xfe,0x44,0x44,0x44,0x44,0x94,0x8,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x10,0x10,0x50,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7f,0x4,0x50,0x50,0x50,0x50,0x52,0x74,0x58,0x50,0x50,0x50,0x50,0x50,0x50,0x72,0x92,0xe, ++0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7d,0x5,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x44,0x48,0x30,0x20,0x10,0x4e,0x84,0x0, ++0x10,0x11,0x50,0x5c,0x51,0x54,0xfe,0x0,0x57,0x54,0x54,0x6c,0x44,0x44,0x7c,0x4,0x8,0xfc,0x20,0x28,0xfc,0x48,0x48,0x48,0xfe,0x4,0xfe,0x84,0x84,0x84,0xfc,0x84, ++0x10,0x10,0x50,0x5c,0x50,0x54,0xfe,0x0,0x54,0x54,0x54,0x6c,0x44,0x45,0x7e,0x4,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0xa0,0x28,0xbc,0xa0,0xa0,0xa0,0x66,0x3c,0x0, ++0x10,0x11,0x51,0x5d,0x51,0x55,0xff,0x1,0x55,0x55,0x55,0x6d,0x45,0x45,0x7e,0x4,0x4,0xfe,0x4,0x4,0xfc,0x0,0xfe,0x20,0x48,0xfc,0x10,0x7c,0x10,0x14,0xfe,0x0, ++0x0,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x21,0x3f,0x21,0x21,0x3f,0x21,0x1,0x1,0x0,0x10,0xf8,0x10,0xf0,0x8,0xfc,0x8,0x8,0xf8,0x8,0x8,0xf8,0x8,0x2,0x2,0xfe, ++0x1f,0x0,0xff,0x4,0x78,0x1f,0x10,0x1f,0x1,0x3f,0x21,0x3f,0x21,0x3f,0x1,0x0,0xf0,0x4,0xfe,0x40,0x3c,0xf0,0x10,0xf0,0x8,0xfc,0x8,0xf8,0x8,0xfa,0x2,0xfe, ++0x3e,0x22,0x3e,0x1f,0x11,0x1f,0x11,0xff,0x1,0x1f,0x11,0x1f,0x11,0x1f,0x1,0x0,0xf8,0x88,0xf8,0xf0,0x10,0xf0,0x14,0xfe,0x0,0xf0,0x10,0xf0,0x10,0xf4,0x4,0xfc, ++0x9,0x8,0x8,0x1f,0x10,0x30,0x3f,0x50,0x90,0x1f,0x10,0x10,0x10,0x1f,0x10,0x10,0x0,0x80,0x88,0xfc,0x80,0x90,0xf8,0x80,0x90,0xf8,0x80,0x80,0x84,0xfe,0x0,0x0, ++0x9,0x8,0xf,0x10,0x3f,0x50,0x1f,0x10,0x1f,0x10,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x80,0x84,0xfe,0x80,0x80,0x80,0x80, ++0x9,0x8,0x1f,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x7f,0x4,0x4,0x8,0x10,0x60,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0,0xe0,0x28,0x7c,0x8,0x28,0x10, ++0x0,0x8,0x7d,0x49,0x4b,0x7d,0x49,0x49,0x79,0x49,0x49,0x4d,0xf1,0x41,0x1,0x1,0xc0,0xa0,0x24,0xfe,0x20,0x28,0xfc,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0,0x0, ++0x10,0x10,0x1e,0x22,0x65,0x99,0xa,0x14,0x22,0x7f,0xa2,0x22,0x22,0x3e,0x22,0x0,0x60,0x50,0x84,0xfe,0x90,0x90,0xfc,0x90,0x90,0xfc,0x90,0x90,0x94,0xfe,0x80,0x80, ++0x3e,0x22,0x2a,0x2a,0x22,0x3e,0x9,0x10,0x3f,0x50,0x9f,0x10,0x1f,0x10,0x1f,0x10,0xf8,0x88,0xa8,0xa8,0x88,0xf8,0x0,0x88,0xfc,0x80,0xf8,0x80,0xf8,0x80,0xfc,0x0, ++0x20,0x32,0x21,0x3d,0x50,0xd7,0x79,0x51,0x51,0x7d,0x51,0x51,0x51,0x7d,0x40,0x40,0x10,0x18,0x10,0x3e,0x68,0x28,0x3e,0x28,0x28,0x3e,0x28,0x68,0xa8,0x3e,0x20,0x20, ++0x4,0x7e,0x10,0x10,0x1e,0x71,0x2,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x8,0xfc,0x88,0xc8,0xaa,0xe,0x80,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0, ++0x2,0x1,0x7f,0x4,0x14,0x25,0x42,0xc,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x0,0x8,0xfc,0x40,0x50,0x4c,0x84,0x30,0xee,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0, ++0x20,0x13,0x40,0x27,0x8,0x73,0x22,0x2c,0x37,0xc1,0x1f,0x1,0x9,0x5,0x7f,0x0,0x38,0xc0,0x48,0xfc,0xa0,0x18,0x88,0x60,0xde,0x4,0xf0,0x0,0x20,0x48,0xfc,0x0, ++0x8,0x7e,0x10,0x28,0x7e,0x8,0x7d,0xa,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0xc,0xf0,0x80,0x88,0xfc,0x90,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0, ++0x0,0x7e,0x14,0x8,0xfe,0x1a,0x29,0x4a,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0, ++0x8,0x7f,0x8,0x3e,0x9,0xfe,0x11,0x1e,0x24,0xdf,0x31,0xdf,0x9,0x5,0x7f,0x0,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0x86,0x40,0xf0,0xe,0xf4,0x20,0x48,0xfc,0x0, ++0x20,0x17,0x40,0x23,0x9,0x71,0x23,0x22,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x40,0xfe,0x90,0xf8,0x50,0x50,0x52,0x8e,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0, ++0x3f,0x21,0x3f,0x20,0x3f,0x51,0x9f,0x2,0xc,0x37,0xc1,0x1f,0x9,0x5,0x7f,0x0,0x10,0x7c,0x28,0xfe,0x10,0x7c,0x10,0x90,0x60,0xde,0x4,0xf0,0x20,0x48,0xfc,0x0, ++0x1,0x6,0x18,0xef,0x1,0x1f,0x5,0x3f,0x10,0x28,0x7c,0x93,0x7c,0x10,0x54,0xfe,0x0,0xc0,0x30,0xee,0x0,0xf0,0x40,0xf8,0x10,0x28,0x7c,0x92,0x7c,0x10,0x54,0xfe, ++0x20,0x20,0x3c,0x48,0x90,0x7f,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe2,0x44,0x40,0x60,0x50,0x50,0x44,0xfe,0x40,0x50,0x50,0x50,0x50,0x90,0x90,0x12,0x12,0xe, ++0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1d,0xe1,0x42,0x40,0x20,0x20,0x4,0xfe,0x80,0x88,0xfc,0x88,0x88,0x88,0x88,0x88,0x8,0x28,0x10, ++0x20,0x20,0x3c,0x48,0x93,0x7c,0x54,0x54,0x7c,0x54,0x55,0x7d,0x1,0x1e,0xe2,0x45,0x40,0x60,0x50,0x44,0xfe,0x80,0x80,0xfc,0x84,0xc4,0x48,0x28,0x10,0x28,0x46,0x84, ++0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x0,0x8,0xfc,0x20,0x24,0xa8,0xa8,0x20,0x24,0xfe,0x20,0x20,0x20,0x20,0x20,0x20, ++0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x40,0x48,0x7c,0x40,0x40,0x40,0x48,0xfc,0x8,0x8,0x8,0x8,0x8,0xf8,0x8, ++0x20,0x20,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x40,0x44,0x7e,0x40,0x44,0xfe,0x4,0x4,0x4,0xfc,0x4,0x0,0x0,0x0,0x0,0x0, ++0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x40,0x8,0x1c,0xe0,0x20,0x20,0x24,0xfe,0x20,0x70,0x68,0xa8,0x26,0x24,0x20,0x20,0x20, ++0x20,0x20,0x3c,0x48,0x90,0x7d,0x56,0x54,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x48,0x48,0x48,0x88,0x88,0xfe,0x88,0x88,0xc8,0xa8,0xa8,0x88,0x88,0x88,0xa8,0x90, ++0x11,0x9,0x49,0x7f,0x44,0x84,0xf,0x10,0x3f,0x51,0x1f,0x11,0x1f,0x0,0xff,0x0,0x10,0x20,0x40,0xfe,0x2,0x4,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe,0x0, ++0x20,0x20,0x3c,0x48,0x91,0x7f,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x40,0x88,0x4,0xfe,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x20,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x54,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x4,0xfe,0x4,0x4,0x4,0x4,0xfc,0x4, ++0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x40,0x40,0x44,0xfe,0x80,0x88,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88,0xa8,0x90, ++0x20,0x23,0x3c,0x48,0x90,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x40,0x4,0xfe,0x20,0x20,0x44,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x4,0x14,0x8, ++0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x42,0x40,0x20,0x4,0xfe,0x88,0x50,0x20,0x50,0x8e,0x4,0x88,0x88,0x88,0x88,0x8,0x8, ++0x20,0x20,0x3c,0x4b,0x90,0x7c,0x55,0x56,0x7c,0x54,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x4,0xfe,0x0,0x88,0x6,0x8a,0x88,0x50,0x50,0x20,0x50,0x88,0x6,0x4, ++0x9,0x5,0x3f,0x2,0xff,0x4,0xa,0x37,0xc8,0x1f,0x31,0x1f,0x11,0x1f,0x0,0x7f,0x20,0x40,0xf8,0x0,0xfe,0x40,0x30,0xce,0x84,0xf0,0x10,0xf0,0x10,0xf0,0x0,0xfc, ++0x20,0x21,0x3c,0x48,0x91,0x7c,0x54,0x55,0x7c,0x54,0x57,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x8,0x8,0xfe,0x88,0x48,0x8,0x28,0x10, ++0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe0,0x43,0x4,0xfe,0x20,0x24,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0xa0,0xa0,0x40,0xb0,0xe, ++0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x0,0x4,0xde,0x54,0x54,0x54,0x54,0xdc,0x54,0x54,0x54,0x54,0x54,0x54, ++0x20,0x20,0x3c,0x4a,0x91,0x7d,0x54,0x57,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x20,0x20,0x24,0xfe,0x20,0x20,0x50,0x50,0xfc,0x10,0x14,0xfe,0x10,0x10,0x96,0x7c, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe3,0x40,0x40,0x40,0x7e,0x62,0x54,0x48,0x54,0x62,0x20,0x28,0xfc,0x20,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x4,0x44,0xe4,0x44,0x44,0x7e,0x44,0xc4,0x64,0x54,0x54,0x44,0xc4,0x44,0x14,0x8, ++0x20,0x20,0x3c,0x48,0x91,0x7c,0x54,0x54,0x7f,0x54,0x55,0x7c,0x0,0x1d,0xe2,0x40,0x40,0x40,0x7c,0x88,0x50,0x20,0x50,0x8e,0x24,0x20,0xfc,0x20,0xa8,0x26,0xa2,0x40, ++0x20,0x21,0x3c,0x48,0x90,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x1,0x1e,0xe0,0x40,0x1c,0xe0,0x40,0x40,0x88,0xf0,0x20,0x40,0x88,0xfc,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x20,0x10,0x40,0x25,0x8,0x77,0x22,0x27,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x20,0xa8,0xa6,0x3a,0x60,0x80,0x0,0xc0,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfe, ++0x20,0x20,0x3c,0x4b,0x92,0x7c,0x54,0x54,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x40,0x20,0x20,0xfe,0x2,0x14,0xf8,0x0,0x4,0xfe,0x90,0x90,0x90,0x92,0x12,0xe, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe0,0x40,0x0,0x4,0xde,0x54,0x54,0xd4,0x54,0x54,0xd4,0x14,0x94,0x54,0x5c,0x90,0x10,0x10, ++0x20,0x20,0x3d,0x48,0x90,0x7c,0x57,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x20,0x28,0xfc,0x20,0xf8,0x20,0xfe,0x0,0xfc,0x4,0xfc,0x4,0xfc,0x4,0x14,0x8, ++0x20,0x20,0x3d,0x48,0x90,0x7f,0x54,0x55,0x7e,0x54,0x55,0x7e,0x0,0x1c,0xe0,0x43,0x20,0x28,0xfc,0x20,0x24,0xfe,0x88,0x46,0x7a,0x88,0x48,0x50,0x20,0x50,0x8e,0x4, ++0x20,0x23,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1f,0xe0,0x40,0x20,0xf0,0x44,0x7e,0x44,0xd4,0x54,0x54,0x54,0xd4,0x54,0x68,0xc8,0x54,0x52,0x60, ++0x20,0x20,0x3c,0x4b,0x90,0x7c,0x54,0x55,0x7c,0x54,0x54,0x7f,0x0,0x1c,0xe0,0x40,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0xdc,0x50,0x50,0x54,0xde,0x50,0x50,0x50,0x50, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7c,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x10,0x12,0xd6,0x18,0x10,0x52,0x92,0xe, ++0x20,0x20,0x3c,0x48,0x90,0x7c,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x8,0xfc,0x88,0xf8,0x88,0x88,0xf8,0x4,0xfe,0x4,0x4,0xfc,0x4,0x4,0xfc,0x4, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x4,0xfe,0x4,0x24,0x24,0xfc,0x24,0x24,0x74,0x54,0x54,0x74,0x4,0x4,0xfc,0x4, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe1,0x46,0x0,0x44,0x8e,0x4,0x4,0xdc,0x4,0x4,0xfc,0x54,0x50,0x50,0x90,0x92,0x12,0xe, ++0x20,0x20,0x3c,0x48,0x91,0x7e,0x54,0x55,0x7c,0x54,0x54,0x7c,0x1,0x1e,0xe2,0x40,0x20,0x20,0x50,0x88,0x46,0x24,0x20,0xf8,0x8,0x10,0x40,0xa0,0xa4,0x8a,0x8a,0x78, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe2,0x44,0x4,0xfe,0x24,0x24,0x74,0x24,0x24,0xfc,0x4,0x74,0x54,0x54,0x74,0x4,0x14,0x8, ++0x20,0x23,0x3c,0x48,0x91,0x7c,0x55,0x55,0x7d,0x55,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x4,0xfe,0x4,0x74,0xc4,0x44,0xf4,0x54,0x54,0x54,0xf4,0x44,0x54,0x76,0xca,0x0, ++0x20,0x20,0x3c,0x49,0x92,0x7d,0x54,0x54,0x7d,0x55,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x0,0x92,0x92,0x24,0x48,0x24,0x92,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x4, ++0x20,0x21,0x3c,0x48,0x93,0x7c,0x54,0x55,0x7d,0x55,0x55,0x7d,0x1,0x1c,0xe0,0x43,0x20,0xfc,0x20,0x88,0xfe,0x88,0x4,0xfe,0x4,0x24,0x24,0x24,0x24,0x58,0x86,0x2, ++0x20,0x21,0x3d,0x4b,0x91,0x7d,0x55,0x55,0x7d,0x54,0x57,0x7c,0x0,0x1d,0xe2,0x40,0x48,0x48,0x48,0xfe,0x48,0x48,0x78,0x0,0xfc,0x20,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x55,0x7c,0x57,0x54,0x7c,0x0,0x1c,0xe0,0x40,0x4,0xde,0x54,0x54,0x54,0xdc,0x0,0xfc,0x0,0xfe,0x80,0xfc,0x4,0x4,0x28,0x10, ++0x20,0x20,0x3b,0x48,0x90,0x7f,0x54,0x55,0x7d,0x55,0x56,0x7c,0x0,0x1c,0xe0,0x40,0x8,0x68,0x88,0x88,0x8a,0xea,0x9c,0x88,0xc8,0xa8,0x88,0x88,0x94,0x94,0xa2,0xc0, ++0x20,0x20,0x3c,0x49,0x93,0x7d,0x55,0x55,0x7d,0x54,0x54,0x7d,0x2,0x1c,0xe0,0x43,0x80,0x84,0xfe,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x80,0xf8,0x88,0x50,0x20,0xd0,0xe, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x54,0x7d,0x54,0x54,0x7d,0x0,0x1c,0xe3,0x40,0x20,0x44,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xfc,0x20,0x28,0xfc,0x20,0x24,0xfe,0x0, ++0x20,0x20,0x3d,0x49,0x91,0x7d,0x55,0x55,0x7d,0x55,0x57,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x24,0xfe,0x4,0x4,0xfc,0x0,0x4,0xfe,0x54,0x54,0xfc,0x54,0x54,0x54,0xc, ++0x20,0x21,0x3d,0x48,0x90,0x7c,0x55,0x56,0x7d,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x0,0xfc,0x24,0x88,0x70,0x88,0x26,0x24,0xfe,0x24,0x24,0xfc,0x20,0x24,0xfc,0x2, ++0x8,0x7f,0x8,0xfe,0x11,0x1e,0x22,0x4f,0x88,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0x7e,0xc8,0x48,0x30,0x48,0xc6,0x90,0xf8,0x10,0xf0,0x10,0xf0,0x4,0xfc, ++0x20,0x20,0x3d,0x48,0x93,0x7c,0x54,0x55,0x7e,0x54,0x55,0x7d,0x1,0x1d,0xe1,0x41,0x40,0x48,0xf8,0x50,0xfe,0x40,0xf0,0x84,0xfc,0x0,0xf8,0x8,0xf8,0x8,0xf8,0x8, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x56,0x55,0x7d,0x2,0x1c,0xe1,0x40,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x0,0xde,0x42,0x52,0xce,0x4a,0x52,0x42,0x4a,0x84, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x54,0x7c,0x55,0x54,0x7c,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x54,0x54,0x54,0xfc,0x20,0xa8,0xa8,0x24,0x20,0xa8,0xa4,0x22,0x22,0x20, ++0x20,0x20,0x3d,0x48,0x91,0x7c,0x54,0x54,0x7d,0x54,0x57,0x7c,0x1,0x1d,0xe1,0x41,0x8,0x1c,0xe0,0x4,0x24,0xa8,0x80,0xfc,0x20,0x24,0xfe,0x20,0x24,0x24,0xfc,0x4, ++0x21,0x21,0x7f,0x91,0x21,0xf8,0xab,0xaa,0xfa,0xaa,0xab,0xf8,0x7,0x18,0xe0,0x40,0x48,0x48,0xf8,0x48,0xc8,0x9e,0xea,0xaa,0xaa,0xaa,0xea,0x8a,0xea,0x8a,0x92,0xa6, ++0x20,0x23,0x3c,0x48,0x91,0x7d,0x55,0x55,0x7c,0x55,0x54,0x7f,0x0,0x1d,0xe2,0x40,0x4,0xfe,0x50,0x54,0xfe,0x54,0x54,0xfc,0x0,0xfc,0x0,0xfe,0xa8,0x26,0x22,0x60, ++0x20,0x21,0x3c,0x4b,0x92,0x7d,0x54,0x55,0x7c,0x54,0x55,0x7c,0x0,0x1c,0xe1,0x40,0x8,0xfc,0x20,0xfe,0x22,0xac,0x20,0xac,0x20,0x4,0xfe,0x4,0xfc,0x4,0xfc,0x4, ++0x20,0x20,0x3c,0x48,0x90,0x7c,0x55,0x55,0x7d,0x55,0x54,0x7c,0x0,0x1c,0xe0,0x43,0xfc,0x84,0xfc,0x84,0xfc,0x0,0xfe,0x4a,0x4a,0xfe,0x0,0xfc,0x48,0x30,0xc8,0x6, ++0x20,0x3f,0x40,0xbf,0x29,0xff,0x25,0x3f,0x8,0x1f,0x31,0x5f,0x11,0x1f,0x0,0xff,0x40,0x44,0xfe,0x4,0x44,0xa8,0x10,0xe8,0x86,0xf0,0x10,0xf0,0x10,0xf0,0x4,0xfe, ++0x20,0x23,0x7a,0x93,0x22,0xfb,0xaa,0xab,0xfa,0xab,0xab,0xfb,0x5,0x1d,0xe5,0x49,0x20,0xfe,0x20,0xfc,0x24,0xfe,0x24,0xfc,0x20,0xfc,0x24,0xfc,0x24,0xfc,0x24,0x2c, ++0x20,0x23,0x7a,0x92,0x22,0xfa,0xab,0xaa,0xfb,0xab,0xab,0xfb,0x2,0x1c,0xe4,0x49,0x4,0xfe,0x8,0xa8,0xae,0x12,0xf4,0x44,0x54,0x54,0x54,0xf4,0x54,0x4a,0x8a,0x10, ++0x21,0x20,0x3f,0x48,0x91,0x7c,0x57,0x55,0x7c,0x57,0x54,0x7d,0x1,0x1d,0xe1,0x41,0x4,0x88,0xfe,0x20,0xfc,0x20,0xfe,0x24,0xa8,0xfe,0x4,0xfe,0x4,0x4,0xfc,0x4, ++0x21,0x20,0x3f,0x48,0x91,0x7d,0x55,0x55,0x7d,0x55,0x55,0x7c,0x3,0x1c,0xe0,0x40,0x4,0x88,0xfe,0x50,0xfc,0x54,0x54,0x8c,0x74,0x4,0xfc,0x8,0xfe,0x88,0x48,0x18, ++0x20,0x21,0x3d,0x49,0x91,0x7d,0x54,0x57,0x7c,0x55,0x55,0x7d,0x0,0x1c,0xe3,0x40,0x50,0xfc,0x54,0xfc,0x54,0xfc,0x0,0xfe,0x0,0xfc,0x4,0xfc,0x88,0x50,0xfe,0x0, ++0x28,0x28,0xfc,0x28,0x38,0x10,0x7c,0x54,0x54,0x7c,0x10,0xfe,0x10,0x10,0x13,0x10,0x4,0xfe,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x0,0x4,0xfe,0x0, ++0x28,0x28,0xfe,0x29,0x39,0x11,0x7d,0x55,0x55,0x7f,0x10,0xfe,0x10,0x10,0x11,0x12,0x20,0x20,0x24,0xfe,0x24,0x24,0x24,0x24,0x24,0xfe,0x20,0x50,0x50,0x88,0x6,0x4, ++0x28,0x28,0xfe,0x29,0x39,0x10,0x7f,0x55,0x55,0x7d,0x11,0xfd,0x11,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x7c,0x10,0x10,0x10,0x28,0x28,0x24,0x44,0x0,0x86,0x7c,0x0, ++0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x10,0xfe,0x10,0x10,0x11,0x12,0x1c,0xe0,0x20,0x24,0xfe,0x50,0x88,0x6,0x88,0x88,0x88,0x88,0x88,0x88,0x8,0x8, ++0x28,0x28,0xfe,0x28,0x39,0x13,0x7d,0x55,0x55,0x7d,0x10,0xfe,0x10,0x10,0x11,0x12,0x40,0x40,0x78,0x90,0x24,0xfe,0x24,0x24,0x24,0xfc,0x50,0x50,0x90,0x92,0x12,0xe, ++0x28,0x28,0xff,0x28,0x38,0x13,0x7c,0x54,0x55,0x7f,0x11,0xff,0x11,0x11,0x11,0x11,0x90,0x90,0xfc,0x90,0x44,0xfe,0x80,0xfc,0x8,0x10,0xfe,0x10,0x10,0x10,0x50,0x20, ++0x28,0x28,0xfe,0x29,0x3a,0x13,0x7c,0x55,0x54,0x7d,0x10,0xff,0x11,0x11,0x11,0x10,0x80,0x84,0xfe,0x4,0x44,0xfc,0x4,0xf4,0x4,0xf4,0x4,0xf4,0x14,0x14,0xf4,0x8, ++0x28,0x29,0xfe,0x28,0x3b,0x10,0x7c,0x55,0x56,0x7c,0x13,0xfc,0x10,0x11,0x12,0x10,0x0,0xfc,0x48,0x20,0xfe,0xa2,0xa4,0x20,0x60,0x24,0xfe,0x70,0xa8,0x26,0x24,0x20, ++0x28,0x28,0xff,0x28,0x39,0x10,0x7f,0x54,0x55,0x7d,0x11,0xfd,0x13,0x11,0x11,0x11,0x88,0x88,0xfe,0x88,0xfc,0x88,0xfe,0x20,0xfc,0x24,0xfc,0x24,0xfe,0x4,0x14,0x8, ++0x28,0x28,0xfd,0x28,0x3b,0x10,0x7d,0x57,0x55,0x7d,0x11,0xff,0x11,0x11,0x11,0x11,0x88,0x88,0xfc,0x88,0xfe,0x88,0x4,0xfe,0x24,0xfc,0x24,0xfc,0x24,0x24,0x34,0x28, ++0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x20,0x20,0x50,0x50,0x88,0x6,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x88,0x8, ++0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x25,0x8,0x7c,0x48,0x48,0x48,0x86,0x0,0xfc,0x44,0x48,0x28,0x10,0x30,0x48,0x8e,0x4, ++0x2,0x3f,0x22,0x3a,0x2a,0x7f,0x41,0xbe,0x22,0x3e,0x22,0x3e,0x22,0x22,0x2a,0x24,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x24,0xfe,0x84,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x4,0x7e,0x44,0x74,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x45,0x44,0x54,0x48,0x20,0x48,0xfc,0x88,0xa8,0x88,0xa8,0x90,0x84,0xfe,0x4,0x24,0xf4,0x4,0x28,0x10, ++0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x55,0x49,0x8,0x1c,0xe0,0x20,0x20,0x20,0x24,0xfe,0x20,0x20,0x10,0x10,0x28,0x4a,0xa6,0x12, ++0x4,0x7e,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7d,0x45,0x7d,0x45,0x45,0x56,0x48,0x8,0x1c,0xe0,0x0,0x4,0xfe,0x0,0x4,0x7e,0x44,0x44,0x44,0x44,0x44,0x7c,0x44, ++0x4,0x7e,0x44,0x74,0x54,0xff,0x82,0x7c,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x40,0x7c,0x84,0x88,0x50,0x20,0x50,0x8e,0x4,0xf8,0x88,0x88,0x88,0xf8,0x88, ++0x0,0x7d,0x45,0x75,0x55,0xff,0x83,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x45,0x56,0x48,0x4,0xfe,0x24,0x24,0xfc,0x24,0x24,0xfc,0x20,0xfe,0x60,0x70,0xa8,0x26,0x24,0x20, ++0x0,0x7c,0x45,0x75,0x55,0xff,0x83,0x7d,0x45,0x7c,0x45,0x7f,0x44,0x44,0x54,0x48,0x40,0x84,0xfe,0x24,0x24,0xfc,0x24,0x44,0xfc,0xa0,0x24,0xfe,0x20,0x20,0x20,0x20, ++0x0,0x7d,0x44,0x74,0x55,0xfe,0x82,0x7d,0x44,0x7f,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x24,0xa8,0x20,0xfe,0x20,0xa8,0x24,0x40,0xfe,0x48,0x88,0x70,0x50,0x8c,0x4, ++0x4,0x7e,0x45,0x75,0x54,0xfe,0x83,0x7c,0x44,0x7d,0x44,0x7c,0x44,0x44,0x54,0x48,0x40,0x20,0xfe,0x42,0x7c,0x88,0x50,0x20,0x50,0x8e,0xf8,0x88,0x88,0x88,0xf8,0x88, ++0x4,0x7e,0x45,0x75,0x54,0xff,0x82,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x44,0x54,0x49,0x20,0x10,0xfe,0x2,0x48,0xfe,0x48,0xfc,0x94,0x94,0xa4,0xa4,0x50,0x52,0x92,0xe, ++0x4,0x7e,0x45,0x75,0x54,0xfe,0x82,0x7c,0x44,0x7c,0x44,0x7f,0x44,0x44,0x55,0x4a,0x40,0x20,0xfe,0x2,0x1c,0xe0,0x84,0xfe,0x88,0x88,0x88,0xfe,0x0,0x88,0x6,0x2, ++0x0,0x7d,0x45,0x75,0x55,0xfe,0x82,0x7d,0x47,0x7d,0x45,0x7d,0x44,0x47,0x54,0x48,0x4,0xfe,0x54,0x54,0xfc,0x84,0xfe,0x44,0xf4,0x54,0x54,0xf4,0x4c,0xfc,0x14,0x8, ++0x10,0x24,0x7e,0x55,0x54,0x7c,0x55,0x54,0x7c,0x10,0x19,0x28,0x2a,0x48,0x87,0x0,0x20,0x20,0x28,0xfc,0x20,0x24,0xfe,0x20,0x70,0xac,0x24,0x20,0x22,0x2,0xfe,0x0, ++0x10,0x24,0x7e,0x55,0x54,0x7c,0x54,0x54,0x7d,0x12,0x18,0x28,0x2a,0x48,0x87,0x0,0x50,0x48,0x40,0xfe,0x40,0x40,0xfc,0x84,0x28,0x10,0x2c,0xc4,0x2,0x2,0xfe,0x0, ++0x3f,0x20,0x20,0x3f,0x21,0x26,0x39,0x27,0x24,0x27,0x24,0x27,0x41,0x42,0x84,0x18,0xfc,0xa0,0x94,0xfe,0x40,0x30,0xe,0xf8,0x88,0xf8,0x88,0xf8,0x40,0x52,0x42,0x3e, ++0x10,0x25,0x7e,0x54,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x8,0xfc,0x50,0x54,0xfe,0x54,0x54,0x54,0x54,0xac,0x4,0x4,0xc,0x2,0xfe,0x0, ++0x10,0x25,0x7e,0x54,0x54,0x7c,0x54,0x54,0x7c,0x10,0x18,0x2a,0x28,0x48,0x87,0x0,0x20,0x24,0xa8,0x20,0xf8,0x88,0xf8,0x88,0xf8,0x88,0x88,0xa8,0x92,0x2,0xfe,0x0, ++0x10,0x25,0x7f,0x55,0x55,0x7d,0x55,0x55,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x4,0xfe,0x4,0x54,0xfc,0x24,0xfc,0x44,0x44,0x74,0x4,0x14,0xa,0x2,0xfe,0x0, ++0x10,0x24,0x7f,0x54,0x55,0x7d,0x55,0x54,0x7d,0x11,0x19,0x2d,0x29,0x48,0x87,0x0,0x40,0x24,0xfe,0x50,0x24,0x54,0xfc,0x20,0xfc,0x44,0x54,0x74,0xc,0x2,0xfe,0x0, ++0x20,0x20,0x20,0x48,0x49,0xf2,0x27,0x4a,0xfb,0xa,0x13,0x12,0x22,0x42,0x83,0x2,0x40,0x40,0xa0,0xa0,0x90,0x48,0xff,0x8,0xf8,0x8,0xf8,0x88,0x50,0x20,0x1e,0x4, ++0x3f,0x20,0x3f,0x21,0x26,0x38,0x21,0x26,0x2f,0x34,0x27,0x24,0x47,0x44,0x85,0x6,0xfc,0x90,0xfc,0x40,0x30,0x8e,0x44,0xb0,0xf8,0x16,0xf0,0x10,0xf4,0x48,0x30,0xc, ++0x7f,0x10,0x1e,0x23,0x54,0x9,0x32,0x4,0x1f,0x28,0xcf,0x8,0xf,0x8,0xa,0xc,0x20,0x50,0x98,0x26,0x48,0x10,0xa4,0x48,0xf0,0x2e,0xe4,0x20,0xf0,0xa0,0x60,0x18, ++0x7c,0x44,0x7d,0x1,0xff,0x21,0x7d,0x5,0x1a,0x5,0xf,0x39,0xcf,0xa,0x9,0xc,0x38,0x20,0xfc,0x24,0xf8,0x24,0x7c,0x50,0x9c,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30, ++0x1,0x7f,0x8,0x12,0x7d,0xa,0x7c,0x9,0x32,0x45,0xf,0x39,0xcf,0xa,0x9,0xc,0x4,0xfe,0x90,0xfc,0x90,0xfc,0x90,0x9e,0x80,0x40,0xf0,0x2e,0xe4,0x20,0xc0,0x30, ++0x2,0x3f,0x20,0x24,0x3e,0x20,0x24,0x3e,0x20,0x22,0xff,0x10,0x10,0x20,0x7f,0x1,0x4,0x4,0x8,0x8,0x10,0x24,0x44,0x88,0x10,0x22,0x42,0x4,0x8,0x10,0x20,0x40, ++0x1,0x3f,0x20,0x3f,0x20,0x3f,0x20,0xff,0x12,0x3f,0x0,0xff,0x4,0x4,0x18,0x60,0x4,0x88,0x10,0x24,0x48,0x10,0x24,0x88,0x10,0x60,0x4,0xfe,0x40,0x42,0x42,0x3e, ++0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x0,0x1f,0x1,0xf,0x1,0x7f,0x1,0x0,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x18,0xe0,0x0,0xf0,0x0,0xfa,0x2,0xfe, ++0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x1,0x1f,0x11,0x1f,0x11,0xff,0x10,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x10,0xf8,0x10,0xf0,0x14,0xfe,0x10,0x30, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x3f,0x4,0x18,0x60,0x1f,0x10,0x10,0x1f,0x10,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf8,0x8,0x48,0x30,0xf0,0x10,0x10,0xf0,0x10, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0xff,0x1,0x1,0x3f,0x0,0x1f,0x10,0x10,0x1f,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x4,0xfe,0x0,0x10,0xf8,0x0,0xf0,0x10,0x10,0xf0, ++0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x24,0x27,0x24,0x24,0x2f,0xf0,0x40,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0x48,0x70,0x40,0x42,0x3e,0x0, ++0x12,0x14,0x18,0x12,0xff,0x10,0x22,0x7f,0x4,0x8,0x17,0x30,0xd1,0x12,0x14,0x10,0x8,0x10,0x64,0x8,0x72,0x4,0x18,0x60,0x40,0x44,0xfe,0xe0,0x50,0x4e,0x44,0x40, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x11,0x9,0x3f,0x2,0x7f,0x8,0x3f,0xc8,0x8,0x7,0x8,0xf0,0x8,0xf0,0x4,0xf8,0x10,0x20,0xf8,0x0,0xfc,0x20,0xd8,0x46,0xd0,0xf0, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x6,0x78,0x8,0xff,0x18,0x2c,0xca,0x8,0x9,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0x24,0xac,0xb0,0x20,0x50,0x50,0x88,0x86,0x4, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x1,0x7f,0x40,0x8f,0x8,0xf,0x8,0xff,0x8,0x30,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xfe,0x62,0x84,0x20,0xf0,0x44,0xfe,0x20,0x18, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x0,0x1f,0x12,0xff,0x8,0xf,0x5,0x18,0x6c,0x8,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x0,0xf0,0x94,0xfe,0x20,0xf0,0x20,0xc0,0x3c,0x8, ++0x12,0x14,0x18,0xfe,0x24,0x7e,0x9,0x1f,0x14,0x13,0x14,0x1f,0x22,0x3b,0x22,0x3b,0x18,0xe0,0x18,0xe4,0x8,0xf0,0x20,0xf0,0x50,0x90,0x50,0xf0,0x20,0xa2,0x22,0x9e, ++0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x21,0x22,0x24,0x49,0x42,0x87,0x0,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0xd6,0x10,0x0,0x40,0x80,0x10,0x8,0xfc,0x4, ++0x1,0x0,0x3f,0x22,0x3f,0x26,0x2b,0x32,0x3f,0x20,0x2f,0x20,0x5f,0x40,0x80,0x0,0x0,0x84,0xfe,0x10,0xfc,0x38,0x56,0x90,0xf0,0x80,0xf8,0x80,0xf8,0x82,0x82,0xfe, ++0x1,0x0,0x3f,0x22,0x3f,0x22,0x27,0x2a,0x32,0x27,0x21,0x22,0x4f,0x42,0x84,0x9,0x0,0x84,0xfe,0x10,0xfc,0x10,0x38,0x56,0x90,0x20,0xc0,0x10,0xf8,0xa0,0x98,0x88, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x27,0x44,0x44,0x84,0x18,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x20,0xf8,0x20,0x22,0x22,0x1e, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x20,0x27,0x20,0x5f,0x42,0x9c,0x0,0x0,0xfe,0x40,0xf8,0x48,0xf8,0x50,0x64,0x7c,0x30,0xc0,0x88,0xfc,0xa0,0x9c,0x80, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x20,0x3f,0x40,0x4f,0x80,0x3f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x88,0xfc,0x80,0xf8,0x80,0xfe, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x28,0x2f,0x28,0x2f,0x24,0x22,0x5f,0x42,0x9c,0x0,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x40,0x78,0x44,0x3c,0x90,0xa0,0xfc,0xa0,0x9c,0x80, ++0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x48,0x48,0xfc,0x48,0x48,0x78,0x48,0x48,0x78,0x48,0x48,0xfe,0x0,0x48,0x86,0x2, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2e,0x21,0x27,0x38,0x4f,0x44,0x82,0x1f,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0xbc,0x40,0xf0,0x8e,0xf8,0x90,0xa0,0xfc, ++0x1,0x3f,0x24,0x3f,0x24,0x3f,0x2a,0x2c,0x2f,0x24,0x2f,0x3c,0x4a,0x4f,0x84,0x39,0x0,0xfc,0x40,0xf8,0x48,0xf8,0x50,0x64,0x3c,0x8,0x88,0xfe,0x88,0xa8,0x88,0x98, ++0x10,0xa,0x7f,0x54,0x54,0x7f,0x55,0x55,0x7f,0x44,0x55,0x5e,0x54,0x5f,0x94,0x1,0x10,0x54,0x10,0xfe,0x10,0x54,0x10,0x48,0x48,0xfe,0x28,0xa8,0x5e,0x48,0x88,0x8, ++0x8,0x10,0x30,0x5f,0x90,0x10,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x42,0xa0,0x90,0xfc,0x40,0x32,0xe,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x88,0x44, ++0x4,0x7e,0x55,0x55,0x7d,0x55,0x55,0x7c,0x10,0x7d,0x11,0xff,0x1,0xab,0xab,0x0,0x20,0x20,0x24,0x24,0x24,0x24,0xfc,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0xfc,0x4, ++0x4,0x7e,0x54,0x54,0x7d,0x55,0x57,0x7c,0x10,0x7c,0x11,0xff,0x1,0xaa,0xaa,0x0,0x10,0x90,0x90,0x94,0x3e,0x54,0xd4,0x94,0x94,0x94,0x14,0x54,0xd4,0x24,0x24,0x4c, ++0x4,0x7e,0x54,0x57,0x7c,0x54,0x55,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x20,0x20,0x24,0xfe,0x20,0x28,0xfc,0x0,0x8,0xfc,0x88,0x88,0x88,0x88,0xf8,0x88, ++0x4,0x7e,0x54,0x54,0x7d,0x54,0x54,0x7d,0x10,0x7c,0x10,0xff,0x0,0xaa,0xaa,0x1,0x20,0x20,0x7c,0x84,0x48,0x30,0x60,0x90,0x3e,0x42,0xc4,0x28,0x10,0x20,0x40,0x80, ++0x4,0x7e,0x54,0x54,0x7d,0x54,0x55,0x7e,0x10,0x7c,0x11,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x20,0x40,0x88,0xfc,0x88,0x6,0x82,0xf8,0x88,0x88,0x50,0x20,0x50,0x8e,0x4, ++0x4,0x7e,0x55,0x54,0x7c,0x57,0x54,0x7c,0x11,0x7c,0x13,0xfc,0x0,0xaa,0xaa,0x1,0x20,0x28,0xfc,0x20,0x20,0xfe,0x92,0x54,0x10,0x94,0xfe,0x20,0x20,0x58,0x86,0x2, ++0x3e,0x8,0xfe,0x1c,0x2a,0x48,0x1f,0x19,0x15,0x1f,0x1,0x3f,0x1,0xff,0x24,0x44,0x44,0x7e,0xa4,0x24,0x54,0x88,0xf0,0x30,0x50,0xf0,0x0,0xf8,0x0,0xfe,0x48,0x44, ++0x4,0x7e,0x54,0x57,0x7c,0x54,0x54,0x7c,0x10,0x7c,0x10,0xfe,0x1,0xaa,0xaa,0x0,0x40,0x20,0x4,0xfe,0x0,0xf8,0x88,0x88,0x88,0xf8,0x20,0xa8,0x26,0x22,0xa0,0x40, ++0x4,0x7e,0x54,0x55,0x7c,0x54,0x57,0x7c,0x10,0x7d,0x10,0xfe,0x0,0xaa,0xaa,0x1,0x20,0x40,0x88,0xfc,0x20,0x24,0xfe,0x50,0x98,0x26,0xc8,0x30,0xc4,0x18,0x60,0x80, ++0x4,0x7e,0x55,0x54,0x7c,0x54,0x57,0x7c,0x10,0x7c,0x10,0xfe,0x0,0xaa,0xaa,0x0,0x40,0x28,0xfc,0x0,0x88,0x50,0xfe,0x8,0xfc,0x88,0x88,0xf8,0x88,0x88,0xf8,0x88, ++0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x1,0x10,0x50,0x50,0x50,0x88,0x88,0x6,0xf8,0x48,0x48,0x48,0x48,0x48,0x88,0xa8,0x10, ++0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x54,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x10,0x10,0x10,0x10,0xfe,0x92,0x92,0x92,0x92,0xfe,0x92,0x92,0x92,0x92,0xfe,0x82, ++0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7c,0x54,0x7c,0x54,0x54,0x7d,0x52,0x0,0x8,0xfc,0x40,0x48,0xfc,0x48,0x48,0xfe,0x0,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84, ++0x12,0x6f,0x42,0x6e,0x42,0x7e,0x0,0x55,0x7d,0x56,0x7f,0x54,0x54,0x7e,0x52,0x1,0x4,0xfe,0x84,0xfc,0x84,0xfc,0x20,0xfe,0x22,0x24,0xfe,0x48,0x88,0x70,0x58,0x84, ++0x12,0x6f,0x42,0x6e,0x42,0x7e,0x1,0x54,0x7c,0x55,0x7c,0x57,0x54,0x7d,0x52,0x1,0x1c,0xe0,0xa4,0xa8,0x50,0x84,0xf8,0x20,0x48,0xfc,0x20,0xfe,0x20,0x50,0x4e,0x84, ++0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x43,0x40,0x40,0x40,0x48,0xfc,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x4a,0x8a,0x86,0x0, ++0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x0,0x8,0xfc,0x10,0x10,0x10,0x14,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, ++0x10,0x3e,0x32,0x2a,0x3e,0x0,0x7f,0x49,0x7f,0x49,0x7f,0x0,0xff,0x22,0x22,0x42,0x10,0x14,0xfe,0x10,0x38,0x56,0x90,0x7c,0x44,0x7c,0x44,0x7c,0x44,0x0,0xfe,0x0}; +diff -Nur linux_c860_org/drivers/video/font_jis16.h linux/drivers/video/font_jis16.h +--- linux_c860_org/drivers/video/font_jis16.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/font_jis16.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,30231 @@ ++#define max_jis16 241824 ++unsigned char font_jis16[max_jis16] = { ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x40, 0x30, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x60, 0x60, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, ++ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x04, 0x08, 0x0c, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x60, 0x60, 0x60, 0xc0, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, ++ 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, ++ 0x10, 0x48, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x30, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0x40, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, ++ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x00, ++ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x90, 0x40, 0x00, 0x80, 0xc0, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x08, ++ 0x08, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x60, 0x0f, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0xe0, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x04, ++ 0x04, 0x08, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x20, ++ 0x20, 0x40, 0x80, 0x80, 0x40, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x09, ++ 0x12, 0x14, 0x18, 0x10, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x20, 0x40, 0x80, 0x00, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00, ++ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3f, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, ++ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, ++ 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x18, 0x20, 0x30, 0x38, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x70, 0x30, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x98, 0x20, 0x30, 0xb8, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x22, 0x77, 0x33, 0x11, 0x66, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0x20, 0x60, 0x40, 0xc0, 0xc0, 0xc0, ++ 0xc0, 0x40, 0x60, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x18, 0x08, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x08, 0x18, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, ++ 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0x00, 0x00, ++ 0x7c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x18, 0x20, 0x60, 0x60, 0x60, 0x40, 0x80, 0x40, ++ 0x60, 0x60, 0x60, 0x60, 0x20, 0x18, 0x00, 0x00, ++ 0x60, 0x10, 0x18, 0x18, 0x18, 0x08, 0x06, 0x08, ++ 0x18, 0x18, 0x18, 0x18, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, ++ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, ++ 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, ++ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0x90, 0x20, 0x20, 0x40, 0x40, ++ 0x20, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00, ++ 0x48, 0x48, 0x24, 0x24, 0x12, 0x12, 0x09, 0x09, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x48, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x02, 0x02, 0x7e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, ++ 0xf8, 0x08, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x07, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, ++ 0x05, 0x05, 0x05, 0x7d, 0x41, 0x7f, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, ++ 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf8, 0x00, 0x00, ++ 0x7c, 0x3c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x1c, 0x1c, 0x3c, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, ++ 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, ++ 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x80, ++ 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x3f, 0x00, ++ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, ++ 0x3f, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00, ++ 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x04, 0x18, 0x20, 0x18, ++ 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, ++ 0x20, 0x18, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x04, 0x18, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x60, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0c, 0x30, 0x0c, 0x03, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, ++ 0x30, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0c, ++ 0x30, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x30, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x36, 0x23, 0x23, ++ 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x88, 0x88, ++ 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x22, ++ 0x41, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x18, 0x28, 0x48, 0x88, 0x08, 0x08, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x04, 0x03, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x18, 0x18, 0x30, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1b, 0x1b, 0x36, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x30, 0x48, 0x49, 0x33, 0x06, 0x06, 0x06, ++ 0x06, 0x06, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xe8, 0x18, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x10, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x18, 0x0c, 0x3f, 0x06, 0x03, ++ 0x3f, 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x10, 0x20, 0x40, 0xf0, 0x80, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x07, 0x09, 0x11, 0x19, 0x0f, 0x03, ++ 0x01, 0x19, 0x19, 0x09, 0x07, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30, 0x00, 0xc0, ++ 0x60, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x05, 0x09, 0x19, 0x19, ++ 0x1a, 0x0a, 0x06, 0x07, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x80, 0x40, 0x60, 0x60, 0x00, ++ 0x00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x02, 0x06, 0x06, 0x3f, ++ 0x06, 0x36, 0x4c, 0x4f, 0x39, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x20, 0x30, 0x20, 0x00, 0x00, 0xe0, ++ 0x00, 0x00, 0x08, 0xf0, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x18, 0x24, 0x66, 0x66, 0x24, 0x19, 0x02, ++ 0x04, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x60, ++ 0x90, 0x98, 0x98, 0x90, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x04, ++ 0x04, 0x3f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x20, 0xf8, 0x40, 0x40, 0x40, ++ 0x40, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x07, 0x08, 0x18, 0x19, 0x0e, 0x0c, 0x16, ++ 0x33, 0x31, 0x30, 0x19, 0x0e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x78, 0x30, ++ 0x20, 0xc0, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x03, 0x19, 0x1d, 0x03, 0x03, ++ 0x1d, 0x19, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x30, 0x70, 0x80, 0x80, ++ 0x70, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x10, 0x23, 0x24, 0x44, 0x48, ++ 0x49, 0x27, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x10, 0xc8, 0xc8, 0xc8, 0x88, ++ 0x90, 0x60, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, ++ 0x03, 0x04, 0x04, 0x06, 0x03, 0x03, 0x04, 0x06, ++ 0x03, 0x01, 0x00, 0x04, 0x04, 0x03, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0x00, 0x00, 0x80, 0xc0, 0x40, ++ 0x80, 0x80, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x02, 0x02, 0x7c, 0x30, 0x0c, ++ 0x04, 0x09, 0x0a, 0x1c, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0x7c, 0x18, 0x60, ++ 0x40, 0x20, 0xa0, 0x70, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x7f, 0x3f, 0x0f, ++ 0x07, 0x0f, 0x0e, 0x1c, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xfc, 0xf8, 0xe0, ++ 0xc0, 0xe0, 0xe0, 0x70, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x10, 0x20, 0x20, ++ 0x20, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x60, 0x10, 0x10, 0x08, 0x08, ++ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, ++ 0x3f, 0x1f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, ++ 0xf8, 0xf0, 0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0c, 0x13, 0x14, 0x28, 0x28, ++ 0x28, 0x14, 0x13, 0x0c, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x60, 0x90, 0x50, 0x28, 0x28, ++ 0x28, 0x50, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, ++ 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, ++ 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, ++ 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, ++ 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, ++ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, ++ 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, ++ 0x20, 0x10, 0x10, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, ++ 0x0f, 0x1f, 0x1f, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, ++ 0xe0, 0xf0, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, ++ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, ++ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x21, 0x13, 0x09, 0x04, 0x12, 0x39, ++ 0x12, 0x04, 0x09, 0x13, 0x21, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x90, 0x20, 0x40, 0x90, 0x38, ++ 0x90, 0x40, 0x20, 0x90, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x7f, 0x7f, 0x03, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xf8, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7f, 0x00, ++ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0xf8, 0x60, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x02, 0x04, 0x18, 0x7f, 0x18, ++ 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x05, 0x09, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x09, ++ 0x05, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, ++ 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, ++ 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x3f, 0x20, ++ 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0xf0, 0x10, ++ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x10, 0x20, 0x20, 0x20, 0x10, ++ 0x0f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x3f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x20, ++ 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x20, 0x20, ++ 0x20, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, ++ 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, ++ 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, ++ 0x20, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, ++ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x7f, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0, ++ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x08, 0x10, 0x3f, 0x40, 0x3f, ++ 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x08, 0xf0, ++ 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x10, 0x1f, 0x08, 0x08, 0x04, ++ 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0x10, 0xf0, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, ++ 0x20, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, ++ 0x04, 0x08, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x30, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x06, 0x04, ++ 0x0c, 0x0c, 0x0c, 0x05, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x60, 0x20, 0x20, 0xa0, 0x60, 0x60, ++ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x1f, 0x18, 0x08, 0x0c, 0x04, ++ 0x06, 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x3f, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x1c, 0x08, 0x3f, 0x00, 0x00, ++ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, ++ 0xf0, 0x40, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x04, 0x08, 0x11, 0x22, 0x11, ++ 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x22, 0x11, 0x08, 0x04, 0x02, 0x01, 0x02, ++ 0x04, 0x08, 0x11, 0x22, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x20, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, ++ 0x22, 0x74, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x21, 0x21, ++ 0x12, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0x08, 0x08, ++ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x10, ++ 0x09, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x80, ++ 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, ++ 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, ++ 0xc0, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x06, 0x0e, 0x11, 0x11, 0x19, 0x19, 0x0c, 0x0c, ++ 0x06, 0x06, 0x02, 0x02, 0x1d, 0x19, 0x00, 0x00, ++ 0x60, 0xe0, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, ++ 0x60, 0x60, 0x20, 0x20, 0xc0, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x04, 0x04, 0x03, 0x01, 0x03, 0x03, 0x04, ++ 0x04, 0x08, 0x0f, 0x10, 0x38, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, ++ 0xc0, 0x60, 0xe0, 0x30, 0x78, 0x00, 0x00, 0x00, ++ 0x00, 0x18, 0x24, 0x66, 0x66, 0x25, 0x1a, 0x03, ++ 0x06, 0x0e, 0x16, 0x12, 0x21, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x10, ++ 0xa8, 0xec, 0xec, 0xa8, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x04, 0x07, 0x1f, 0x1c, 0x04, 0x04, ++ 0x07, 0x1f, 0x1c, 0x04, 0x04, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xe0, 0xe0, 0x80, 0x80, 0x80, 0xe0, ++ 0xe0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x06, ++ 0x04, 0x04, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, ++ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x07, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x60, 0x20, 0x30, 0x10, 0x10, ++ 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x03, 0x01, 0x09, 0x1f, 0x09, 0x03, 0x03, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x00, 0x20, 0xf0, 0x20, 0x80, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x01, ++ 0x03, 0x09, 0x1f, 0x09, 0x03, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00, ++ 0x80, 0x20, 0xf0, 0x20, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x18, 0x20, 0x20, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x20, 0x20, 0x18, 0x07, 0x00, 0x00, ++ 0x00, 0xc0, 0x30, 0x08, 0x08, 0x04, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x30, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x0f, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x08, 0x00, 0x01, ++ 0x02, 0x04, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x00, ++ 0x00, 0x20, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x08, 0x18, 0x18, 0x00, 0x03, 0x00, ++ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x60, 0x60, 0xc0, 0x80, 0x40, ++ 0x60, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x08, 0x18, ++ 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, ++ 0xf0, 0xc0, 0xc0, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x00, ++ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x80, 0xc0, 0x60, ++ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x04, 0x0c, 0x08, 0x1b, 0x1c, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xc0, 0x60, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x0f, 0x10, 0x00, 0x00, 0x01, 0x01, ++ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0e, 0x07, 0x0d, ++ 0x18, 0x18, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x60, 0x60, 0xc0, 0x80, 0xc0, ++ 0xe0, 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07, ++ 0x00, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x60, 0x60, 0x60, 0xe0, 0x60, ++ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08, ++ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60, ++ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30, ++ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xd0, 0x30, 0x10, 0x00, 0x00, 0xf8, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, ++ 0x38, 0x30, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0, ++ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17, ++ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11, ++ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0, ++ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x33, 0x1c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0xb0, 0x60, 0xe0, 0x18, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0xc0, ++ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x08, 0x18, 0x1c, 0x0f, 0x03, 0x00, ++ 0x10, 0x18, 0x1c, 0x13, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xa0, 0x60, 0x20, 0x00, 0x00, 0xc0, 0xe0, ++ 0x30, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, ++ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3b, 0x19, 0x19, 0x19, 0x0d, 0x0e, 0x0e, ++ 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xb8, 0x90, 0x90, 0x90, 0xd0, 0xe0, 0xe0, ++ 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, ++ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, ++ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06, ++ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03, ++ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0, ++ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0e, 0x1d, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00, ++ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x60, 0x60, 0x60, 0xe0, 0x60, 0x60, ++ 0x60, 0x60, 0xe0, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0, ++ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06, ++ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x60, 0x60, 0x00, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x08, 0x08, ++ 0x07, 0x0c, 0x0f, 0x18, 0x08, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xc0, 0x80, ++ 0x00, 0x00, 0xc0, 0xe0, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x1c, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x01, 0x00, 0x0f, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0e, ++ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x70, 0x40, 0x80, 0xc0, 0xc0, ++ 0x60, 0x60, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x76, 0x3b, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x7b, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xb8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x60, 0x60, ++ 0x60, 0x60, 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x1c, 0x0f, ++ 0x03, 0x10, 0x18, 0x17, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, ++ 0xc0, 0xe0, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x02, 0x06, 0x06, 0x1f, 0x06, 0x06, ++ 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x70, 0x98, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3e, 0x18, 0x0c, 0x0c, ++ 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3d, 0x19, 0x19, 0x0e, ++ 0x0e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xb8, 0x90, 0x90, 0xd0, ++ 0xe0, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03, ++ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80, ++ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06, ++ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x01, 0x03, ++ 0x06, 0x0c, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x80, 0x00, ++ 0x00, 0x00, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x04, 0x02, 0x13, 0x0e, 0x04, ++ 0x07, 0x0d, 0x16, 0x26, 0x2a, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, ++ 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x04, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x07, 0x0d, ++ 0x15, 0x22, 0x26, 0x2a, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x00, 0x80, 0x80, 0xe0, 0x10, ++ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, ++ 0x10, 0x10, 0x0a, 0x0c, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, ++ 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x20, 0x20, 0x20, 0x22, ++ 0x24, 0x14, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x60, 0x10, 0x08, 0x08, ++ 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x13, ++ 0x0c, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, ++ 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x02, 0x01, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, ++ 0x0e, 0x01, 0x02, 0x07, 0x09, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, ++ 0x04, 0x03, 0x00, 0x00, 0x11, 0x0e, 0x01, 0x02, ++ 0x04, 0x0e, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x0c, 0x38, ++ 0x0b, 0x0c, 0x18, 0x28, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x40, 0x30, 0x20, 0x00, ++ 0xc0, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x05, 0x06, 0x1c, 0x04, 0x05, ++ 0x06, 0x0c, 0x34, 0x0c, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x60, 0x90, ++ 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, ++ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x60, 0x10, 0x88, 0x98, 0x80, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, ++ 0x08, 0x10, 0x11, 0x25, 0x22, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x10, 0x40, 0x20, 0x90, 0x88, 0x98, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x01, 0x01, 0x0f, 0x00, 0x00, 0x1f, 0x00, ++ 0x00, 0x07, 0x08, 0x08, 0x06, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x60, 0x80, 0x80, 0xf0, 0x40, 0x20, ++ 0x20, 0xf0, 0x10, 0x00, 0x00, 0xc0, 0x00, 0x00, ++ 0x04, 0x02, 0x02, 0x1f, 0x01, 0x01, 0x3e, 0x00, ++ 0x00, 0x0f, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, ++ 0x08, 0x24, 0xd0, 0x00, 0x00, 0xe0, 0x80, 0x40, ++ 0x40, 0xe0, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08, ++ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x08, ++ 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0x88, 0x24, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x10, 0x10, 0x23, 0x20, 0x20, ++ 0x20, 0x20, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x80, 0x40, 0x20, 0x20, 0x3c, 0xe0, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, ++ 0x01, 0x40, 0x20, 0x20, 0x20, 0x47, 0x40, 0x40, ++ 0x40, 0x40, 0x30, 0x20, 0x20, 0x01, 0x00, 0x00, ++ 0x08, 0xa4, 0x50, 0x40, 0x78, 0xc0, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x10, 0x0f, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0xf0, 0x88, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x00, ++ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07, ++ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x30, 0xc0, 0x80, 0x40, 0x40, 0xe0, ++ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, ++ 0x04, 0x02, 0x01, 0x21, 0x1e, 0x00, 0x00, 0x07, ++ 0x08, 0x10, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x30, 0xc8, 0x80, 0x40, 0x40, 0xe0, ++ 0x20, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04, ++ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x80, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40, ++ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x40, 0x3f, 0x00, 0x03, 0x04, 0x04, ++ 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x28, 0x94, 0xf8, 0x80, 0x80, 0x80, 0xc0, 0x40, ++ 0xc0, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0x40, 0x40, ++ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x4b, 0x3c, 0x08, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x08, 0x84, 0x50, 0x48, 0x78, 0xc0, 0x40, 0x40, ++ 0x40, 0xc0, 0x40, 0x00, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38, ++ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x38, 0xc0, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, ++ 0x00, 0x09, 0x06, 0x00, 0x01, 0x02, 0x07, 0x38, ++ 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xc8, 0x64, 0x90, 0x00, 0x38, 0xc0, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08, ++ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0xf0, 0x18, 0x20, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x07, 0x3c, 0x08, 0x08, 0x08, ++ 0x10, 0x10, 0x11, 0x21, 0x20, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x90, 0x00, 0x00, 0xf0, 0x18, 0x20, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b, ++ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x20, ++ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x47, 0x3c, 0x08, 0x08, 0x0b, ++ 0x1c, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0x08, 0xc4, 0x10, 0x08, 0x00, 0xc0, 0x20, ++ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, ++ 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, ++ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0x08, ++ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x10, 0xe0, 0x10, 0x08, 0x08, 0x08, ++ 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x43, 0x3c, 0x01, 0x01, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0xc0, 0x88, 0x24, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06, ++ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x06, ++ 0x08, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x24, 0x10, 0x00, 0x70, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x04, 0x02, 0x02, 0x3f, 0x04, 0x08, 0x08, 0x10, ++ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x70, 0x18, 0x20, 0x40, ++ 0x40, 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x10, 0x13, 0x20, 0x20, 0x20, ++ 0x20, 0x22, 0x2a, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x18, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x00, 0x00, 0x13, 0x15, 0x19, 0x12, ++ 0x2a, 0x4c, 0x4c, 0x54, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0xe0, 0x10, 0x08, 0x08, ++ 0x08, 0x08, 0x68, 0x90, 0x68, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08, ++ 0x18, 0x18, 0x28, 0x59, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0xf0, 0x18, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x0d, 0x11, 0x11, 0x22, 0x22, ++ 0x24, 0x24, 0x28, 0x10, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x08, ++ 0x08, 0x10, 0x10, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x14, 0x13, 0x20, 0x20, 0x20, ++ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20, ++ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40, ++ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00, ++ 0x88, 0x44, 0x50, 0x78, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0x28, 0x27, 0x40, 0x40, 0x40, ++ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00, ++ 0x98, 0x64, 0x64, 0x78, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0x40, 0x40, 0x20, 0x20, 0x30, 0x28, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x08, 0x44, 0x50, 0x28, 0x20, 0x30, 0x28, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x04, 0x3c, 0x08, 0x08, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x30, 0x48, 0x48, 0x30, 0x20, 0x30, 0x28, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01, ++ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01, ++ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x88, 0xa4, 0x10, 0x00, 0x00, 0x00, ++ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x02, 0x01, ++ 0x02, 0x4c, 0x38, 0x24, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x98, 0xa4, 0x24, 0x18, 0x00, 0x00, ++ 0xb0, 0x88, 0x9c, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x48, 0x20, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x50, 0x20, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x22, 0x11, 0x10, 0x10, 0x23, 0x20, 0x20, ++ 0x20, 0x29, 0x12, 0x12, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x30, 0xc0, 0x40, 0x38, 0xe0, 0x20, 0x20, ++ 0x20, 0xe0, 0x30, 0x28, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40, ++ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00, ++ 0x00, 0x68, 0x84, 0x90, 0x78, 0xc0, 0x40, 0x40, ++ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x44, 0x23, 0x20, 0x20, 0x47, 0x40, 0x40, ++ 0x40, 0x53, 0x24, 0x24, 0x23, 0x00, 0x00, 0x00, ++ 0x18, 0x64, 0xa4, 0x98, 0x70, 0xc0, 0x40, 0x40, ++ 0x40, 0xc0, 0x60, 0x50, 0x80, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x10, 0x0f, 0x00, 0x10, 0x0f, 0x00, ++ 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xf0, 0x80, 0x80, 0xe0, 0x80, 0x80, ++ 0x80, 0x80, 0xe0, 0x90, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x07, 0x01, 0x01, 0x02, 0x02, 0x0f, ++ 0x34, 0x44, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x00, 0x00, 0x20, 0x10, 0xf0, ++ 0x18, 0x24, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x27, 0x1c, 0x04, 0x1c, 0x24, 0x24, ++ 0x2c, 0x18, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x30, 0x08, 0x0c, 0x00, 0x00, ++ 0x20, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x00, 0x10, 0x13, 0x1c, 0x11, 0x29, ++ 0x2a, 0x46, 0x44, 0x4a, 0x30, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0xc0, 0xa0, 0x10, 0x08, ++ 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x02, 0x01, 0x11, 0x0e, 0x03, 0x12, 0x24, 0x1c, ++ 0x07, 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x20, ++ 0x10, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x09, 0x0e, ++ 0x3c, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x10, ++ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x01, 0x18, 0x10, 0x0b, 0x4c, 0x34, ++ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x00, 0xf0, 0x08, 0x08, 0x08, ++ 0x70, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x21, 0x27, ++ 0x29, 0x31, 0x23, 0x21, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, ++ 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x40, 0x21, 0x22, 0x24, 0x28, 0x30, ++ 0x34, 0x22, 0x21, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0xe0, 0x90, 0x88, 0x88, 0x88, ++ 0x88, 0x90, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x0f, 0x11, 0x11, 0x0e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x00, ++ 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x1f, 0x21, 0x21, 0x1e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x01, 0x01, 0x06, 0x08, 0x08, 0x08, 0x09, ++ 0x0e, 0x08, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0, ++ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x10, 0x09, 0x0a, 0x0c, 0x0c, 0x08, 0x08, 0x08, ++ 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x07, 0x00, 0x01, 0x02, 0x07, 0x0c, ++ 0x10, 0x20, 0x03, 0x04, 0x04, 0x03, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x80, 0x00, 0x00, 0xc0, 0x20, ++ 0x10, 0x10, 0x90, 0x60, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x09, 0x0a, 0x1c, 0x6c, 0x08, ++ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x18, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x0e, 0x01, 0x02, 0x04, 0x0f, 0x08, ++ 0x10, 0x20, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x20, ++ 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x06, ++ 0x1d, 0x06, 0x0c, 0x0c, 0x14, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, ++ 0x10, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x08, 0x4c, 0x3f, 0x0c, 0x08, ++ 0x18, 0x18, 0x28, 0x48, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, ++ 0x08, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x09, 0x06, 0x01, 0x01, 0x03, 0x0e, 0x12, ++ 0x24, 0x24, 0x28, 0x19, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x10, 0x08, ++ 0x08, 0x08, 0xc8, 0x30, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x09, 0x07, 0x02, 0x07, 0x08, 0x10, 0x06, ++ 0x09, 0x07, 0x08, 0x1c, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, ++ 0xc0, 0x00, 0x00, 0xe0, 0x10, 0x38, 0x00, 0x00, ++ 0x04, 0x02, 0x12, 0x0f, 0x04, 0x04, 0x0f, 0x18, ++ 0x21, 0x02, 0x04, 0x08, 0x08, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x00, 0x00, 0x20, 0x38, 0xc0, ++ 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, ++ 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x0f, ++ 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x88, 0x90, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x1e, ++ 0x02, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x02, 0x01, 0x01, ++ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x40, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, ++ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x30, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x1e, ++ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x01, 0x3e, 0x10, 0x10, ++ 0x08, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, ++ 0x01, 0x01, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x01, 0x01, ++ 0x01, 0x01, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x0f, ++ 0x01, 0x02, 0x04, 0x08, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x01, ++ 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x40, 0x78, 0xc0, 0xc0, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x11, 0x20, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x10, 0x10, 0x10, ++ 0x20, 0x20, 0x20, 0x40, 0xc0, 0x80, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01, ++ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x00, 0x78, ++ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x02, 0x03, 0x1d, 0x01, 0x01, ++ 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x70, 0x80, 0x00, 0x00, 0x78, ++ 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x03, 0x02, 0x04, 0x04, 0x08, ++ 0x10, 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x70, 0x90, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x07, 0x04, 0x08, 0x08, 0x10, ++ 0x21, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x40, 0x80, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10, ++ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x80, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x04, 0x0f, 0x09, 0x10, ++ 0x20, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x10, 0x38, 0xc0, 0x00, 0x80, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, ++ 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x43, 0x3c, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0xd0, 0x40, 0x40, 0x40, 0x40, ++ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04, ++ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x04, 0x04, 0x24, 0x1f, 0x04, ++ 0x04, 0x04, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x08, 0xa4, 0x54, 0x50, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00, ++ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00, ++ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x24, 0x14, 0x10, 0x00, 0x08, 0x10, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80, ++ 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x21, 0x1e, 0x00, 0x00, 0x01, 0x01, ++ 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0xd4, 0x50, 0x80, 0x80, 0x00, 0x00, ++ 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c, ++ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20, ++ 0x40, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x04, 0x05, 0x26, 0x1c, ++ 0x04, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x10, 0x78, 0x88, 0x10, 0x20, ++ 0x40, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x04, 0x04, 0x04, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x00, ++ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x08, 0xa4, 0x54, 0x50, 0x40, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08, ++ 0x10, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0xc0, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x03, 0x04, 0x04, 0x0a, 0x11, ++ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0xf0, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c, ++ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x40, 0x80, 0x00, 0x00, 0xf8, 0x80, 0x80, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x1e, 0x01, 0x00, 0x23, 0x1c, ++ 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x08, 0x64, 0x94, 0x10, 0x00, 0xf8, 0x80, 0x80, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, ++ 0x0a, 0x08, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x04, 0x22, 0x11, 0x09, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x44, 0x24, 0x10, 0x10, ++ 0x00, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0x94, 0x50, 0x40, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00, 0x23, 0x1c, ++ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x78, 0x80, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x20, 0x1f, 0x00, ++ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x08, 0x24, 0xd4, 0x10, 0x00, 0xf0, 0x00, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0e, 0x09, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x90, 0x50, 0x40, 0x00, 0x00, 0x00, 0x80, ++ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x0e, 0x01, ++ 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, 0xc0, ++ 0xc0, 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x1e, 0x00, 0x00, 0x01, ++ 0x03, 0x0d, 0x31, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00, ++ 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, ++ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x24, 0x14, 0x90, 0x40, 0x20, 0x10, ++ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x18, 0x24, 0x24, 0x18, 0x80, 0x40, 0x20, 0x10, ++ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x0f, 0x08, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x48, 0x28, 0x20, 0x00, 0xe0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x0f, ++ 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, ++ 0x00, 0x30, 0x48, 0x48, 0x30, 0x00, 0xe0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01, ++ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, ++ 0x08, 0x24, 0xd4, 0x50, 0x40, 0x80, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x23, 0x1c, 0x00, 0x00, 0x00, 0x01, ++ 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, ++ 0x18, 0x24, 0xe4, 0x58, 0x40, 0x80, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x90, 0x50, 0x40, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x48, 0x30, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x60, 0x90, 0x90, 0x60, 0x00, 0x80, 0x40, ++ 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01, ++ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, ++ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01, ++ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x10, 0xf0, 0x00, 0x00, 0x40, ++ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x21, 0x1f, 0x01, 0x01, ++ 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, 0x00, 0x00, ++ 0x18, 0x24, 0x24, 0x18, 0xf0, 0x00, 0x00, 0x40, ++ 0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x20, 0x1f, 0x00, 0x00, 0x00, ++ 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x08, 0x10, 0x20, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x03, 0x00, 0x00, 0x08, 0x06, 0x01, ++ 0x00, 0x10, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, 0x80, ++ 0x40, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, ++ 0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, ++ 0x04, 0x04, 0x29, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, ++ 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40, ++ 0xa0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x0f, 0x02, 0x02, 0x23, 0x1e, ++ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x03, ++ 0x1e, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x90, ++ 0x20, 0x40, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x08, 0x04, 0x04, 0x03, 0x26, 0x1a, 0x01, ++ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x78, 0x88, 0x10, 0x20, 0x40, ++ 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, ++ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, ++ 0x40, 0x80, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x11, 0x0e, 0x00, 0x00, ++ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, ++ 0x80, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, ++ 0x01, 0x0e, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, ++ 0xe0, 0x40, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e, ++ 0x00, 0x00, 0x00, 0x01, 0x0e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x20, ++ 0x20, 0x20, 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x11, 0x0e, 0x00, 0x23, 0x1c, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x00, 0x70, 0x90, 0x10, 0x10, ++ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x08, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x88, 0x88, ++ 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x0b, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x21, 0x1e, 0x10, 0x10, 0x08, ++ 0x08, 0x09, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20, ++ 0x20, 0xe0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0f, ++ 0x08, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, ++ 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x21, 0x1e, 0x10, 0x08, 0x08, 0x08, ++ 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x20, 0x20, ++ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x00, 0x00, 0x01, 0x1e, 0x08, 0x04, ++ 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, ++ 0xf0, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x1e, 0x02, 0x01, 0x01, ++ 0x01, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00, ++ 0x00, 0xf0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x0e, ++ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, 0xe0, 0x20, ++ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x18, 0x04, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x13, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x10, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x02, 0x43, 0x3c, 0x20, 0x10, ++ 0x10, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x08, 0x24, 0x14, 0x10, 0xe0, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x11, ++ 0x0e, 0x02, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, ++ 0x20, 0x20, 0x20, 0x20, 0xc0, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, ++ 0x07, 0x08, 0x10, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, ++ 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08, ++ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60, ++ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30, ++ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x10, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60, ++ 0x60, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x20, 0x01, 0x01, 0x03, 0x06, ++ 0x06, 0x0c, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x60, 0xc0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x34, 0x37, 0x34, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x58, 0xd8, 0x58, ++ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, 0x1c, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x80, 0xc0, 0xc0, ++ 0x60, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08, ++ 0x08, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60, ++ 0x60, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x18, 0x1c, 0x1c, 0x16, 0x16, 0x17, ++ 0x13, 0x12, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x30, 0x70, 0x70, 0xb0, 0xb0, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x18, 0x1c, 0x16, 0x16, 0x13, 0x11, ++ 0x11, 0x10, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa0, ++ 0xa0, 0xe0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x20, 0x00, 0x10, 0x1f, 0x1f, ++ 0x10, 0x00, 0x10, 0x1f, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0xe0, 0x20, 0x00, 0x20, 0xe0, 0xe0, ++ 0x20, 0x00, 0x10, 0xe0, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x01, ++ 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x00, ++ 0x00, 0x10, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0c, 0x17, 0x23, 0x23, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0xa0, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33, ++ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30, ++ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, ++ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, ++ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x63, 0x33, 0x33, 0x33, 0x13, ++ 0x0f, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x18, 0x30, 0x30, 0x30, 0x20, ++ 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x18, ++ 0x08, 0x04, 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, ++ 0x20, 0x40, 0x88, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x18, 0x10, ++ 0x10, 0x10, 0x19, 0x0e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x20, 0x20, 0xa0, 0x60, 0x60, ++ 0x40, 0xc0, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x02, 0x04, 0x05, 0x04, ++ 0x0c, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x20, ++ 0x20, 0x20, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x01, 0x01, ++ 0x01, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x04, 0x04, 0x02, 0x03, 0x04, 0x0c, ++ 0x08, 0x08, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xe0, 0x10, 0x00, 0x80, 0xc0, 0x40, ++ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x04, 0x03, ++ 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80, ++ 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x04, 0x0c, 0x07, 0x02, 0x04, 0x04, 0x08, ++ 0x08, 0x0e, 0x07, 0x00, 0x06, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0xc0, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0c, 0x17, 0x02, 0x04, ++ 0x04, 0x0c, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, ++ 0x20, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x02, 0x06, 0x04, 0x0f, 0x0c, ++ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x10, 0x10, 0x10, 0x30, 0xf0, 0x20, ++ 0x60, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x06, ++ 0x04, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0d, 0x0e, ++ 0x09, 0x19, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, ++ 0x06, 0x04, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xc0, 0x40, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x0c, ++ 0x08, 0x08, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x60, 0x40, ++ 0x40, 0x40, 0xe8, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x04, 0x04, ++ 0x04, 0x07, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x04, 0x03, 0x02, 0x04, 0x04, 0x03, 0x04, ++ 0x08, 0x08, 0x0e, 0x07, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0x60, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0xc0, ++ 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x0c, ++ 0x0c, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x30, ++ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x0c, 0x1f, 0x22, 0x04, 0x04, ++ 0x08, 0x08, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x08, 0xf0, 0x40, 0x40, 0x80, ++ 0x80, 0x80, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, ++ 0x0c, 0x0c, 0x0c, 0x1b, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0x10, ++ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0c, 0x18, ++ 0x10, 0x10, 0x11, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x40, 0x40, ++ 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x11, 0x03, ++ 0x02, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x0c, 0x0c, ++ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x20, 0x20, ++ 0x60, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0d, 0x19, 0x31, ++ 0x32, 0x12, 0x0e, 0x07, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x20, 0x30, ++ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x06, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x03, ++ 0x07, 0x05, 0x09, 0x19, 0x31, 0x20, 0x00, 0x00, ++ 0x00, 0x10, 0x30, 0x60, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x31, 0x59, 0x09, 0x09, ++ 0x12, 0x12, 0x12, 0x0f, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x80, 0x80, 0x80, 0xa0, 0x30, 0x10, 0x10, ++ 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x31, 0x23, ++ 0x22, 0x22, 0x36, 0x19, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x10, 0x10, ++ 0x30, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x01, 0x03, 0x03, 0x04, 0x04, 0x08, ++ 0x0f, 0x10, 0x10, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0x60, ++ 0xe0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x00, 0x80, 0x60, ++ 0x30, 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x30, ++ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x1f, 0x30, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0xf8, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x00, 0x40, 0xc0, 0x40, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x0c, 0x0c, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0xc0, 0xc0, 0xe0, 0x10, 0x00, 0x40, 0xc0, 0x40, ++ 0x00, 0x08, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x67, 0x73, 0x13, 0x13, 0x13, 0x0f, 0x0b, ++ 0x13, 0x33, 0x23, 0x77, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x98, 0x38, 0x20, 0x20, 0x20, 0xc0, 0x40, ++ 0x20, 0x30, 0x10, 0xb8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x00, 0x03, 0x00, ++ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0xc0, 0x60, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1a, ++ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x70, 0xb0, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x06, 0x03, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1a, ++ 0x1c, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0xc0, 0x80, 0x78, 0x30, 0x70, 0xb0, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x19, 0x1f, 0x19, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x58, 0x80, 0x80, 0x00, 0x00, 0x80, ++ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, ++ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x18, 0x18, 0x1c, 0x1c, 0x17, 0x26, ++ 0x22, 0x22, 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x70, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xf0, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x30, 0x60, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xd0, 0x30, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x23, 0x43, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, ++ 0x03, 0x03, 0x01, 0x19, 0x1a, 0x0c, 0x00, 0x00, ++ 0x00, 0x78, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x07, 0x1b, 0x33, 0x33, 0x33, ++ 0x1b, 0x07, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, 0x30, ++ 0x60, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, ++ 0x04, 0x08, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, ++ 0xc0, 0x60, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0f, ++ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x77, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xb8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x26, 0x46, 0x06, 0x07, 0x06, 0x06, ++ 0x06, 0x06, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x30, 0x18, ++ 0x18, 0x18, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x18, 0x18, 0x18, 0x1e, 0x19, 0x18, ++ 0x18, 0x18, 0x19, 0x3e, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0xb0, 0xf0, ++ 0xf0, 0xf0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x1c, 0x10, 0x00, 0x06, 0x0b, 0x00, ++ 0x00, 0x10, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x30, 0x10, 0x18, 0xb8, 0xd8, ++ 0x10, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x33, 0x32, 0x36, 0x36, 0x3e, 0x36, ++ 0x36, 0x32, 0x33, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18, ++ 0x18, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x07, ++ 0x03, 0x06, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x30, 0x30, 0x30, 0x30, 0x30, 0xf0, ++ 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x0c, 0x03, ++ 0x0c, 0x18, 0x18, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0xe0, ++ 0x60, 0x60, 0xe0, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x04, 0x05, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0xe0, 0xc0, 0x00, 0x80, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0f, ++ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x60, 0xc0, ++ 0x20, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x04, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x3f, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0xe0, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x1f, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x30, 0xf0, ++ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x06, 0x06, 0x00, 0x07, 0x08, 0x18, 0x1f, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x60, 0x60, 0x00, 0xc0, 0x20, 0x30, 0xf0, ++ 0x00, 0x10, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x67, 0x73, 0x0b, 0x0f, ++ 0x0b, 0x13, 0x33, 0x67, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x98, 0x38, 0x40, 0xc0, ++ 0x40, 0x20, 0x30, 0x98, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03, ++ 0x00, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x60, 0xc0, ++ 0x60, 0x60, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x19, ++ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0xe0, 0x60, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x06, 0x03, 0x00, 0x3c, 0x18, 0x18, 0x19, ++ 0x1a, 0x1c, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x60, 0xe0, 0x60, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x19, 0x1f, ++ 0x19, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00, ++ 0x80, 0xc0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, ++ 0x02, 0x34, 0x34, 0x18, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x1c, 0x16, ++ 0x16, 0x13, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x70, 0xb0, ++ 0xb0, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0xe0, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0e, 0x0c, 0x0c, ++ 0x0c, 0x0c, 0x0e, 0x0d, 0x0c, 0x1e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x30, ++ 0x30, 0x30, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0c, 0x18, 0x18, ++ 0x18, 0x18, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x20, 0x00, ++ 0x00, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x23, 0x03, ++ 0x03, 0x03, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x10, 0x00, ++ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x06, 0x06, ++ 0x03, 0x03, 0x01, 0x19, 0x19, 0x0e, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x03, 0x03, 0x1b, 0x37, 0x63, 0x63, ++ 0x63, 0x63, 0x37, 0x1b, 0x03, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x60, 0xb0, 0x18, 0x18, ++ 0x18, 0x18, 0xb0, 0x60, 0x00, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x06, 0x03, ++ 0x03, 0x04, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x70, 0x20, 0x40, 0x80, ++ 0x80, 0xc0, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, ++ 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0x60, 0x60, 0x60, 0xf0, 0x30, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, ++ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x77, 0x33, 0x33, 0x33, ++ 0x33, 0x33, 0x33, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, ++ 0x30, 0x30, 0x30, 0xf8, 0x18, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3f, 0x26, 0x46, 0x07, ++ 0x06, 0x06, 0x06, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, ++ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x1f, ++ 0x19, 0x19, 0x19, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, ++ 0xb0, 0xb0, 0xb0, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0f, ++ 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, ++ 0x30, 0x30, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x10, 0x03, ++ 0x05, 0x10, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x30, 0x70, ++ 0xb0, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0x19, 0x1b, 0x1f, ++ 0x1b, 0x1b, 0x19, 0x3c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x18, 0x18, ++ 0x18, 0x18, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x18, 0x18, ++ 0x0f, 0x06, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, ++ 0xe0, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, ++ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, ++ 0x3f, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, ++ 0xf0, 0x90, 0x80, 0x80, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a, ++ 0x4b, 0x7a, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x28, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28, ++ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f, ++ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe8, ++ 0x08, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x09, 0x3f, 0x25, 0x54, 0x13, ++ 0x22, 0x07, 0x3a, 0x01, 0x06, 0x78, 0x00, 0x00, ++ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x88, 0x50, 0xc8, ++ 0x08, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x79, 0x17, 0x11, 0x11, 0x1a, ++ 0x74, 0x17, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00, ++ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x32, 0x2c, 0x04, 0x0a, 0x10, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x21, 0x16, 0x10, 0x01, 0x0e, 0x73, 0x10, ++ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x07, 0x11, 0x0a, 0x04, 0x1f, ++ 0x61, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0x28, 0xc8, 0x50, 0xf0, ++ 0x0c, 0xf0, 0x00, 0x80, 0x60, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x04, 0x3f, 0x24, ++ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x80, 0xf8, 0x88, ++ 0x98, 0x78, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x19, 0x76, 0x11, 0x11, 0x7d, 0x11, 0x1b, ++ 0x36, 0x37, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xf0, 0x50, 0xf0, 0xf0, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x1f, 0x12, 0x1f, 0x02, 0x7f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x1a, ++ 0x73, 0x14, 0x17, 0x18, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x60, 0x90, ++ 0xe8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x02, ++ 0x13, 0x12, 0x25, 0x24, 0x4f, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x98, ++ 0xe4, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x0a, 0x0a, 0x0a, ++ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x0f, 0x02, 0x7f, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0xe0, 0x20, ++ 0xe0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x1f, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00, ++ 0x20, 0x30, 0x48, 0xf4, 0x20, 0xfc, 0x50, 0x98, ++ 0x64, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, ++ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x88, 0x54, 0x30, 0x90, 0x50, ++ 0x50, 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d, ++ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x12, 0x12, ++ 0x2a, 0x44, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x88, ++ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x08, 0x13, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x23, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x48, 0x9c, 0xe4, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x15, 0x65, 0x1a, 0x13, 0x29, 0x7d, ++ 0x15, 0x19, 0x35, 0x34, 0x50, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x64, 0x1f, 0x10, 0x29, 0x7e, ++ 0x14, 0x39, 0x36, 0x34, 0x51, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c, ++ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x12, ++ 0x1e, 0x10, 0x03, 0x0c, 0x71, 0x06, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x09, ++ 0x05, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x20, ++ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x12, 0x3c, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x02, 0x7f, 0x04, ++ 0x04, 0x0f, 0x08, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x40, ++ 0x40, 0x40, 0xc0, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x11, 0x1f, 0x12, 0x14, 0x1f, ++ 0x14, 0x17, 0x24, 0x27, 0x44, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0xa0, 0x90, 0xfc, ++ 0x90, 0xf0, 0x90, 0xf0, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x17, 0x18, ++ 0x70, 0x11, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x90, ++ 0x90, 0x90, 0x60, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4f, 0x78, 0x49, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x7f, 0x04, 0x0f, 0x03, ++ 0x1d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x80, 0x60, ++ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x22, ++ 0x3f, 0x27, 0x24, 0x27, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0x88, ++ 0xf8, 0xc8, 0x48, 0xc8, 0xc8, 0x58, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48, ++ 0x48, 0xf0, 0x90, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x12, 0x11, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x16, 0x18, 0x61, 0x06, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x90, 0x90, 0x10, 0x10, ++ 0x10, 0x30, 0x28, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x13, ++ 0x10, 0x10, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x52, 0x11, ++ 0x11, 0x11, 0x11, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10, ++ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x13, ++ 0x15, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xc8, 0x48, 0x50, ++ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x33, 0x52, 0x13, ++ 0x10, 0x13, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x2f, 0x22, 0x22, ++ 0x3f, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x48, 0x48, 0xe8, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x01, 0x3f, 0x21, ++ 0x3f, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, ++ 0xfc, 0x04, 0x84, 0x58, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x02, ++ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, ++ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x14, ++ 0x14, 0x1f, 0x11, 0x22, 0x2c, 0x40, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xd0, ++ 0xb0, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x20, 0x3e, 0x20, 0x3f, ++ 0x24, 0x2e, 0x2d, 0x35, 0x44, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x19, 0x37, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x20, 0x3f, 0x56, ++ 0x25, 0x4d, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x50, 0x50, 0x10, ++ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x02, 0x07, ++ 0x19, 0x62, 0x0c, 0x31, 0x06, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xf8, ++ 0x28, 0x48, 0x88, 0x08, 0x10, 0xe0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x29, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08, ++ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x02, 0x07, 0x04, ++ 0x0f, 0x08, 0x15, 0x32, 0x4a, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x40, 0xf0, 0x10, ++ 0xfc, 0x04, 0x44, 0xa4, 0xa4, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f, ++ 0x09, 0x08, 0x08, 0x0b, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x3f, ++ 0x04, 0x04, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7e, 0x09, 0x1c, ++ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x40, 0x78, 0x88, 0x50, 0x20, 0x40, 0xa0, 0x3c, ++ 0x44, 0xa8, 0x18, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x08, 0x14, 0x7e, ++ 0x0a, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05, 0x19, ++ 0x62, 0x3f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xfc, 0x40, 0x30, ++ 0x0c, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x04, 0x1c, ++ 0x64, 0x04, 0x04, 0x05, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x08, 0x88, 0x90, ++ 0x60, 0x40, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x17, 0x01, 0x01, 0x71, 0x10, ++ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x90, 0xfc, 0xf0, 0x10, 0xf0, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, ++ 0x00, 0x21, 0x11, 0x11, 0x07, 0x01, 0x71, 0x11, ++ 0x11, 0x11, 0x11, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x50, 0xf0, 0xfc, 0xf0, 0x10, 0xf0, ++ 0xf0, 0x10, 0xf0, 0x10, 0x08, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x27, 0x24, 0x28, 0x3f, ++ 0x21, 0x21, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x80, 0x80, 0xf8, ++ 0x40, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, ++ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x02, 0x1a, 0x04, 0x03, ++ 0x02, 0x0c, 0x11, 0x06, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x40, 0x40, 0x90, 0x20, ++ 0x40, 0xc0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12, ++ 0x13, 0x16, 0x18, 0x63, 0x0c, 0x00, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0xc8, 0xa8, ++ 0xa8, 0x30, 0x94, 0x34, 0x4c, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x70, 0x88, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x08, 0x08, 0x1f, 0x11, 0x3f, ++ 0x51, 0x1f, 0x11, 0x11, 0x11, 0x13, 0x00, 0x00, ++ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x7d, 0x12, 0x16, 0x11, 0x3a, 0x2f, 0x68, ++ 0x2b, 0x2b, 0x3a, 0x2a, 0x04, 0x08, 0x00, 0x00, ++ 0x50, 0x50, 0x68, 0xd8, 0x50, 0xe8, 0xfc, 0x50, ++ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x24, ++ 0x44, 0x07, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08, ++ 0x60, 0x80, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x24, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x04, 0x1f, ++ 0x15, 0x15, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0x10, 0xf8, ++ 0x54, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x11, 0x12, 0x07, 0x02, 0x72, 0x13, ++ 0x12, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xc8, 0xc0, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00, ++ 0x02, 0x0f, 0x3a, 0x09, 0x09, 0x7e, 0x19, 0x1d, ++ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x18, 0xe4, 0x44, 0x28, 0x30, 0x00, 0x78, 0x48, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x21, 0x11, 0x11, ++ 0x02, 0x04, 0x18, 0x61, 0x06, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x48, ++ 0x50, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x01, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7f, 0x2b, 0x3f, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0xf8, 0x48, ++ 0x68, 0xd8, 0xd8, 0x68, 0x48, 0xb0, 0x00, 0x00, ++ 0x02, 0x02, 0x04, 0x08, 0x7f, 0x04, 0x04, 0x04, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x40, 0x30, 0x68, 0x84, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3e, 0x20, 0x20, ++ 0x20, 0x3e, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a, ++ 0x4a, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0xa8, 0x98, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f, 0x10, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x21, 0x23, ++ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, ++ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x20, 0x3f, ++ 0x21, 0x01, 0x01, 0x01, 0x02, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1a, 0x29, 0x7e, 0x23, 0x3e, ++ 0x22, 0x3e, 0x28, 0x24, 0x3b, 0x62, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10, ++ 0x10, 0x13, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00, ++ 0x0c, 0x74, 0x84, 0x88, 0x50, 0x38, 0xc0, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x1e, 0x12, 0x11, 0x1f, 0x10, 0x17, ++ 0x14, 0x17, 0x14, 0x27, 0x24, 0x44, 0x00, 0x00, ++ 0x10, 0x50, 0x50, 0x90, 0x50, 0xf0, 0x30, 0xd0, ++ 0x50, 0xd0, 0x50, 0xd4, 0x54, 0xcc, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3c, 0x27, 0x2c, 0x31, 0x28, ++ 0x25, 0x24, 0x27, 0x38, 0x21, 0x23, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x20, ++ 0xf8, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x2a, 0x30, 0x2b, 0x24, 0x27, ++ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x25, 0x24, ++ 0x25, 0x24, 0x3f, 0x20, 0x21, 0x27, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf0, 0x20, ++ 0xf0, 0x00, 0xfc, 0xa0, 0x30, 0xc8, 0x00, 0x00, ++ 0x00, 0x3f, 0x26, 0x29, 0x31, 0x28, 0x25, 0x24, ++ 0x25, 0x24, 0x3a, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x18, 0xe4, 0x44, 0x28, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3c, ++ 0x24, 0x3c, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x4f, 0x48, 0x49, 0x48, ++ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x08, 0x0f, ++ 0x18, 0x18, 0x28, 0x48, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc, ++ 0x00, 0xf8, 0x48, 0xa8, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x12, 0x02, ++ 0x06, 0x1a, 0x63, 0x02, 0x02, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48, 0x48, 0x08, ++ 0x18, 0x68, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10, ++ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x29, 0x25, 0x25, ++ 0x21, 0x29, 0x25, 0x25, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x28, 0x28, ++ 0x08, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x0c, 0x30, 0x22, 0x22, 0x22, 0x22, 0x22, ++ 0x22, 0x3e, 0x64, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x24, 0x14, 0x18, 0x7e, 0x0a, 0x3e, 0x28, 0x3e, ++ 0x3a, 0x1a, 0x2e, 0x49, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x48, 0x19, 0x09, 0x3f, 0x09, ++ 0x7f, 0x09, 0x15, 0x14, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04, ++ 0x04, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x06, 0x38, 0x20, 0x20, 0x20, 0x20, 0x3e, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x07, 0x14, ++ 0x15, 0x15, 0x25, 0x25, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf8, 0x08, ++ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x54, ++ 0x56, 0x75, 0x49, 0x08, 0x17, 0x00, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xfc, 0xf8, 0x88, 0x78, 0xa0, ++ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x3d, 0x25, 0x25, 0x25, 0x25, 0x25, ++ 0x25, 0x3d, 0x25, 0x20, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x12, 0x7d, 0x3a, 0x55, 0x1f, 0x12, 0x1f, 0x3e, ++ 0x23, 0x3e, 0x3e, 0x24, 0x3e, 0x60, 0x00, 0x00, ++ 0x90, 0xfc, 0xb8, 0xd4, 0xf0, 0x90, 0xf0, 0x10, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x3f, 0x20, 0x2e, ++ 0x20, 0x3f, 0x2e, 0x2d, 0x55, 0x0c, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x08, 0x08, 0xfc, 0x08, 0x48, ++ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2b, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x10, 0x7c, 0x27, 0x24, 0x24, ++ 0x78, 0x49, 0x0e, 0x14, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xc0, ++ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x29, 0x2f, ++ 0x28, 0x2a, 0x29, 0x2b, 0x4c, 0x31, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x50, 0xfc, ++ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x0b, ++ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x2e, 0x40, 0x00, 0x00, ++ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x10, 0x90, 0x50, 0xe8, 0x28, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f, ++ 0x21, 0x27, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8, ++ 0x08, 0xc8, 0x08, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4b, 0x4b, ++ 0x4b, 0x78, 0x4f, 0x41, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0x38, 0xf8, ++ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x01, ++ 0x01, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x27, 0x14, 0x1f, 0x00, 0x03, 0x72, 0x13, ++ 0x12, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x3d, 0x4f, 0x00, ++ 0x1f, 0x00, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0x78, 0x38, 0x00, ++ 0xf0, 0x00, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x10, ++ 0x37, 0x50, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x0d, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x27, 0x3a, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x48, 0x78, 0x48, 0x48, 0x78, ++ 0x48, 0x4c, 0x78, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x0e, 0x08, 0x7f, 0x5d, 0x5a, 0x2d, 0x52, 0x1f, ++ 0x32, 0x5e, 0x12, 0x1e, 0x12, 0x1f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x48, 0x48, 0x50, 0x50, 0x30, ++ 0x20, 0x30, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00, ++ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f, ++ 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x3e, ++ 0x15, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x50, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x04, 0x7f, ++ 0x1f, 0x11, 0x1f, 0x15, 0x64, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x10, 0x90, ++ 0x24, 0x04, 0x08, 0x08, 0x90, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4f, ++ 0x48, 0x48, 0x78, 0x49, 0x02, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f, ++ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8, ++ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x7f, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x00, 0x00, 0x0f, 0x01, 0x01, 0x7f, 0x05, ++ 0x05, 0x09, 0x11, 0x61, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x80, 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, ++ 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x10, ++ 0x11, 0x11, 0x22, 0x24, 0x40, 0x40, 0x00, 0x00, ++ 0xc0, 0x20, 0x00, 0xc0, 0x48, 0x48, 0xf0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0b, ++ 0x0a, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x11, 0x10, 0x13, 0x7e, 0x12, ++ 0x17, 0x10, 0x1c, 0x60, 0x03, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x40, 0xf8, 0x48, 0x48, ++ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x04, 0x04, 0x0f, 0x0c, 0x13, 0x22, ++ 0x4c, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, ++ 0x70, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x20, 0x25, 0x38, 0x22, 0x1c, 0x02, 0x3c, 0x08, ++ 0x7e, 0x18, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x20, 0x25, 0x38, 0x22, 0x1e, 0x00, 0x3e, 0x00, ++ 0x7f, 0x0c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x11, ++ 0x11, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10, ++ 0x10, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x11, 0x17, 0x22, 0x4f, 0x08, 0x17, 0x14, 0x37, ++ 0x51, 0x17, 0x15, 0x1f, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xb8, 0x80, 0xc0, 0x7c, 0x90, 0x90, 0x90, ++ 0x10, 0x90, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c, ++ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0xe0, 0x28, 0x28, 0xf0, 0x70, ++ 0xb0, 0xa8, 0x28, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x02, 0x16, ++ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0xa8, 0x98, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x29, 0x09, 0x1a, ++ 0x2f, 0x49, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xe0, 0x24, 0x24, 0x1c, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x7f, 0x08, 0x08, 0x10, 0x1f, ++ 0x2a, 0x4a, 0x0a, 0x0a, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xfc, 0x20, 0x20, 0x10, 0xf0, ++ 0xa8, 0xa4, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3a, 0x33, 0x45, 0x1a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0x90, 0x90, 0x08, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x52, ++ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0xa8, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d, ++ 0x03, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8, ++ 0x28, 0xc8, 0x28, 0xe8, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x09, 0x09, 0x7f, 0x09, 0x29, ++ 0x2f, 0x29, 0x3b, 0x28, 0x46, 0x41, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0x28, 0x30, ++ 0x50, 0x94, 0x2c, 0x44, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22, ++ 0x27, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88, ++ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x28, 0x4b, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x2f, 0x29, 0x2f, 0x2f, 0x20, ++ 0x2f, 0x29, 0x2f, 0x2f, 0x29, 0x4b, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x28, 0x24, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x2f, 0x21, 0x3f, 0x27, 0x24, ++ 0x27, 0x23, 0x2d, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xf8, 0xc8, 0x48, ++ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12, ++ 0x16, 0x1b, 0x62, 0x02, 0x02, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x20, 0xfc, 0xd0, 0x30, 0xc8, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x0d, 0x71, 0x1f, 0x11, ++ 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x01, 0x7f, 0x04, 0x0e, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x30, 0x00, 0x00, ++ 0x00, 0x78, 0x0b, 0x10, 0x10, 0x3d, 0x05, 0x25, ++ 0x25, 0x15, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x38, 0x20, ++ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x11, 0x2a, 0x46, 0x04, 0x18, ++ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x84, 0x7c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x12, 0x1f, 0x12, ++ 0x33, 0x52, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x50, 0x48, 0xfc, 0x48, ++ 0xf8, 0x48, 0xf8, 0x48, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x11, 0x13, 0x10, 0x1f, ++ 0x71, 0x11, 0x12, 0x14, 0x18, 0x33, 0x00, 0x00, ++ 0x08, 0x30, 0xc8, 0x48, 0x10, 0xf8, 0x80, 0xfc, ++ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x41, 0x21, 0x22, 0x02, 0x17, ++ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x2f, 0x20, 0x03, 0x12, ++ 0x13, 0x12, 0x23, 0x20, 0x43, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xf8, 0x48, ++ 0xf8, 0x48, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x13, 0x02, 0x0c, 0x31, 0x01, ++ 0x11, 0x13, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x10, ++ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x0a, 0x2b, 0x2c, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x10, 0x20, 0x78, 0x48, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x17, 0x36, 0x3a, 0x33, 0x52, ++ 0x18, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x78, 0x0b, 0x1a, ++ 0x6a, 0x0b, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xe4, 0x28, 0xb0, 0xa0, ++ 0xa4, 0x9c, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00, ++ 0x08, 0x4b, 0x30, 0x17, 0x30, 0x49, 0x09, 0x19, ++ 0x28, 0x4f, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x24, 0x7c, ++ 0x13, 0x38, 0x37, 0x34, 0x53, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0xe4, ++ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x14, 0x7f, 0x55, 0x7f, 0x55, 0x7f, 0x00, 0x7f, ++ 0x3e, 0x22, 0x3e, 0x24, 0x1e, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, ++ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1e, 0x12, ++ 0x22, 0x54, 0x0c, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88, ++ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x27, 0x3f, 0x24, ++ 0x27, 0x23, 0x2e, 0x22, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xc8, 0xf8, 0x48, ++ 0xe8, 0xa8, 0x48, 0x28, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x72, 0x13, ++ 0x10, 0x11, 0x1e, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8, ++ 0x88, 0xd0, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x70, 0x10, 0x90, 0x90, 0x88, 0x08, 0x04, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x1f, 0x72, 0x0c, 0x1a, 0x6f, 0x0b, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x15, 0x25, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xb0, 0x84, 0xfc, 0xc0, 0xc0, ++ 0xf8, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x12, 0x7f, 0x15, 0x11, 0x10, ++ 0x17, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x44, 0x20, ++ 0x20, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x40, 0x27, 0x20, 0x00, 0x09, ++ 0x09, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x80, 0x80, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x08, 0x2b, 0x2a, 0x3e, 0x2b, 0x4a, 0x0a, 0x3f, ++ 0x08, 0x0b, 0x0c, 0x18, 0x61, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x24, 0x24, 0x27, ++ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, ++ 0x48, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11, ++ 0x7f, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, ++ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x19, 0x15, 0x15, 0x1f, 0x13, ++ 0x15, 0x19, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x50, 0x50, 0x90, 0xf0, 0x90, ++ 0x50, 0x30, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x27, 0x44, 0x08, 0x08, 0x1b, ++ 0x28, 0x48, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x11, 0x11, 0x15, ++ 0x15, 0x15, 0x29, 0x29, 0x41, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x20, 0x20, 0x08, ++ 0x04, 0x04, 0x04, 0x10, 0x10, 0xf0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x1f, ++ 0x72, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x7c, 0x47, 0x44, ++ 0x44, 0x7c, 0x44, 0x40, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x3b, 0x36, ++ 0x37, 0x52, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, 0x48, ++ 0xf8, 0x48, 0xf8, 0xa0, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2b, 0x24, 0x26, ++ 0x2a, 0x29, 0x31, 0x20, 0x3f, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x32, 0x2a, 0x25, 0x24, ++ 0x2a, 0x2a, 0x30, 0x20, 0x3e, 0x23, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x05, 0x04, 0x19, 0x61, 0x02, 0x3f, 0x00, 0x7f, ++ 0x22, 0x12, 0x06, 0x1a, 0x63, 0x06, 0x00, 0x00, ++ 0xe0, 0x20, 0x10, 0xcc, 0x60, 0x90, 0x00, 0xf8, ++ 0x88, 0x48, 0x18, 0x68, 0x88, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7f, 0x0a, 0x0b, 0x16, 0x1b, ++ 0x36, 0x57, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x58, 0xe8, 0xf8, 0xe8, 0x58, ++ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x12, 0x09, 0x3f, 0x22, 0x4f, 0x08, 0x0f, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0xe0, ++ 0xfc, 0x00, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x32, 0x2c, 0x24, ++ 0x26, 0x2a, 0x30, 0x21, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x11, ++ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x24, 0x24, 0x3f, 0x21, 0x29, ++ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0x28, ++ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a, ++ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x34, 0x08, 0x18, ++ 0x65, 0x0d, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x28, 0xa8, 0xb0, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x51, 0x11, ++ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0xa0, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x11, 0x12, ++ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x40, 0x30, ++ 0xc8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x17, 0x38, 0x35, 0x35, 0x51, ++ 0x11, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x48, 0x24, 0x14, 0xf0, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x25, 0x25, 0x3d, ++ 0x25, 0x25, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x20, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x37, ++ 0x36, 0x52, 0x53, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x28, 0x48, ++ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, ++ 0x10, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x12, 0x34, 0x5f, 0x14, ++ 0x17, 0x14, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x40, 0xa0, 0x98, 0xf4, 0x90, ++ 0xf0, 0x90, 0xf0, 0x94, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x27, ++ 0x24, 0x24, 0x27, 0x3c, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48, ++ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x12, 0x1c, 0x1f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x30, 0xf0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10, ++ 0x17, 0x15, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x28, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x1b, 0x72, 0x11, 0x11, 0x7c, 0x11, 0x18, ++ 0x35, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x10, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, ++ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12, ++ 0x12, 0x12, 0x14, 0x14, 0x19, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12, ++ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, ++ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x52, 0x12, ++ 0x12, 0x12, 0x14, 0x14, 0x19, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x33, 0x52, 0x12, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x13, 0x10, 0x30, 0x57, 0x10, ++ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x09, 0x09, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, ++ 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x00, 0x1f, 0x11, 0x11, 0x11, ++ 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x33, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0, ++ 0x40, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x08, ++ 0x0f, 0x07, 0x3c, 0x03, 0x06, 0x78, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x40, 0x80, 0xe0, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x12, 0x7f, 0x24, 0x24, 0x27, ++ 0x78, 0x4b, 0x0c, 0x17, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68, ++ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x0d, 0x33, ++ 0x0d, 0x32, 0x04, 0x18, 0x60, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0xc8, ++ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x2f, 0x42, 0x0f, 0x08, 0x0f, 0x0f, ++ 0x0f, 0x7f, 0x0f, 0x72, 0x04, 0x19, 0x00, 0x00, ++ 0x00, 0xfc, 0xe8, 0x00, 0xe0, 0x20, 0xe0, 0xe0, ++ 0xe0, 0xfc, 0xe0, 0x5c, 0x40, 0x80, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, ++ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x07, 0x74, 0x54, 0x57, 0x54, 0x74, 0x57, ++ 0x54, 0x54, 0x77, 0x54, 0x44, 0x04, 0x00, 0x00, ++ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78, ++ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x3a, 0x2a, 0x3a, 0x03, 0x7f, ++ 0x02, 0x3a, 0x2a, 0x3a, 0x2b, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x02, 0x02, ++ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, ++ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x21, 0x22, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x08, 0x10, 0x20, 0x80, 0x80, ++ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x11, 0x7d, 0x11, ++ 0x11, 0x11, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28, ++ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x13, 0x1a, ++ 0x36, 0x56, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03, ++ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, ++ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x18, 0x73, 0x12, 0x17, 0x7c, 0x10, 0x3b, ++ 0x34, 0x57, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x40, 0xe4, 0x68, ++ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x21, 0x2f, 0x21, ++ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8, 0x08, ++ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x04, 0x08, 0x08, ++ 0x18, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x88, 0x90, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x00, 0x1f, ++ 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x14, 0x10, 0x7e, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0b, 0x10, 0x13, ++ 0x32, 0x52, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x10, 0xd0, ++ 0x50, 0x50, 0xd0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x09, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x20, 0xfc, 0x20, ++ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d, ++ 0x51, 0x19, 0x15, 0x1d, 0x65, 0x01, 0x00, 0x00, ++ 0x00, 0xd8, 0x48, 0x48, 0xd8, 0x08, 0x00, 0xf8, ++ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3c, ++ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x49, 0x4f, 0x49, ++ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x18, 0x68, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x80, 0x8c, 0xf0, 0x84, 0x7c, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x72, 0x12, ++ 0x14, 0x14, 0x18, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xb8, 0x28, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x12, 0x02, 0x07, 0x74, 0x15, ++ 0x15, 0x15, 0x15, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xf8, 0x08, 0xe8, ++ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e, ++ 0x22, 0x3e, 0x3d, 0x20, 0x3c, 0x21, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8, ++ 0x08, 0xf8, 0xf8, 0x50, 0x70, 0x8c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x11, ++ 0x11, 0x13, 0x1d, 0x11, 0x13, 0x11, 0x00, 0x00, ++ 0x60, 0xa8, 0x24, 0x24, 0x20, 0xfc, 0x20, 0xa8, ++ 0x28, 0x10, 0x10, 0x34, 0x4c, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x54, 0x54, ++ 0x54, 0x55, 0x7e, 0x44, 0x40, 0x01, 0x00, 0x00, ++ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa4, 0xa8, ++ 0xd8, 0x90, 0xb0, 0xcc, 0x8c, 0x84, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, ++ 0x0e, 0x78, 0x08, 0x08, 0x0b, 0x18, 0x00, 0x00, ++ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x88, 0x88, ++ 0x50, 0x50, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00, ++ 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0xc0, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x2f, 0x29, 0x29, 0x2f, ++ 0x29, 0x29, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xe8, 0x28, 0x28, 0xe8, ++ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x21, 0x21, ++ 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x02, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, ++ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x08, 0x08, 0x7f, ++ 0x00, 0x01, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0x40, 0xfc, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7c, ++ 0x50, 0x1b, 0x14, 0x1e, 0x60, 0x01, 0x00, 0x00, ++ 0x60, 0xb0, 0xa8, 0xa8, 0xa0, 0xfc, 0xa0, 0xa8, ++ 0xe8, 0xb0, 0x90, 0xb4, 0xcc, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x12, 0x16, 0x2f, 0x48, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x24, 0x24, 0x25, 0x7e, 0x0c, 0x0c, ++ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x17, 0x1a, 0x28, 0x7f, 0x24, 0x3c, ++ 0x24, 0x3f, 0x28, 0x24, 0x3e, 0x61, 0x00, 0x00, ++ 0x20, 0x68, 0xa4, 0xa4, 0xa0, 0xfc, 0xa0, 0xa8, ++ 0xe8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00, ++ 0x08, 0x7e, 0x12, 0x12, 0x26, 0x5f, 0x11, 0x1f, ++ 0x1f, 0x11, 0x1f, 0x2a, 0x25, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf0, 0x00, 0xe0, ++ 0xe0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x64, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0x4c, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00, ++ 0x3f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00, ++ 0xf8, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x48, 0x3f, 0x2a, 0x2a, 0x3f, ++ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xa0, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24, ++ 0x24, 0x27, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, ++ 0x48, 0xc8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, ++ 0x10, 0x1d, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x10, ++ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40, ++ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x0a, 0x12, 0x12, 0x3a, 0x0a, ++ 0x4a, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x53, ++ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x10, 0x38, 0x37, 0x34, 0x50, ++ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x30, 0x4c, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x31, 0x57, ++ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x3a, 0x36, 0x36, 0x52, ++ 0x13, 0x12, 0x12, 0x14, 0x1b, 0x1c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x20, 0x28, 0xa8, 0xb0, 0xa0, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50, ++ 0x17, 0x10, 0x13, 0x1d, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, 0x40, ++ 0xfc, 0xc8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x12, 0x12, 0x12, ++ 0x7f, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50, ++ 0xd0, 0x20, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x10, 0x1f, ++ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8, ++ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7c, 0x04, 0x04, 0x05, 0x7d, 0x46, 0x40, ++ 0x40, 0x44, 0x44, 0x3c, 0x03, 0x0c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x2d, ++ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00, ++ 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, 0xf0, ++ 0x10, 0x10, 0x90, 0xd4, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4a, 0x4d, 0x49, 0x79, 0x4f, ++ 0x4a, 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x3a, 0x36, ++ 0x37, 0x52, 0x52, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, ++ 0xf0, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x1f, ++ 0x12, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x12, 0x12, 0x14, ++ 0x10, 0x11, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x80, 0x88, 0x88, 0x90, 0xa0, ++ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x02, ++ 0x0c, 0x74, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x80, ++ 0x60, 0x5c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1d, 0x62, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0x00, ++ 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x02, 0x04, 0x1c, ++ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0x40, 0x70, ++ 0x4c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x1d, 0x28, 0x7e, 0x2b, 0x3e, 0x2b, 0x3f, ++ 0x23, 0x5f, 0x11, 0x1f, 0x01, 0x3f, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x98, 0xa0, 0xf8, 0x20, 0xfc, ++ 0x20, 0xf0, 0x10, 0xf0, 0xf0, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f, ++ 0x22, 0x3f, 0x22, 0x24, 0x28, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x26, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xbc, 0x40, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7e, 0x00, 0x3e, ++ 0x22, 0x3e, 0x24, 0x14, 0x1f, 0x62, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x10, 0x15, 0x64, 0x18, 0x0a, ++ 0x12, 0x24, 0x0c, 0x12, 0x21, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x11, 0x19, 0x26, ++ 0x42, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x60, 0x58, ++ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x48, 0x4a, 0x49, 0x48, 0x48, ++ 0x48, 0x7b, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xa0, 0x48, ++ 0x90, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x21, 0x5f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x00, 0xfc, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17, 0x10, ++ 0x1f, 0x10, 0x27, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0xf0, 0x80, ++ 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x15, 0x3f, 0x3d, 0x35, 0x57, ++ 0x15, 0x14, 0x15, 0x16, 0x1c, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x10, ++ 0x30, 0xb0, 0xd0, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7d, 0x17, 0x15, 0x3d, 0x37, ++ 0x36, 0x55, 0x55, 0x16, 0x1c, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x30, ++ 0x30, 0x30, 0xd0, 0xd4, 0x94, 0x0c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x02, ++ 0x12, 0x12, 0x24, 0x24, 0x4b, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x65, ++ 0x24, 0x27, 0x3d, 0x20, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x02, 0x3f, ++ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x40, 0xf0, ++ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x27, 0x49, 0x09, 0x17, 0x11, 0x31, ++ 0x57, 0x11, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0xc0, 0x00, 0x00, 0xfc, 0x08, 0x08, ++ 0xc8, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68, ++ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x2e, 0x2a, 0x7f, 0x42, 0x7e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68, ++ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b, ++ 0x08, 0x0b, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x27, 0x41, ++ 0x7f, 0x05, 0x1f, 0x67, 0x04, 0x07, 0x00, 0x00, ++ 0x70, 0x54, 0x9c, 0xf0, 0x50, 0x70, 0xcc, 0x00, ++ 0xfc, 0x40, 0xf0, 0xcc, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24, ++ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0b, 0x0f, 0x72, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xfc, 0xa0, 0xa0, 0xbc, ++ 0xa4, 0xa4, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x48, 0x48, 0xc8, ++ 0xa8, 0xd8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x3f, 0x09, 0x7f, 0x09, 0x3f, 0x3f, 0x7f, ++ 0x3f, 0x29, 0x3f, 0x3f, 0x07, 0x78, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x55, 0x55, ++ 0x5d, 0x7d, 0x55, 0x49, 0x09, 0x13, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x28, 0x68, ++ 0xec, 0xac, 0x6c, 0x48, 0x48, 0x98, 0x00, 0x00, ++ 0x02, 0x02, 0x07, 0x0c, 0x12, 0x21, 0x03, 0x0c, ++ 0x7f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30, ++ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14, 0x17, ++ 0x10, 0x17, 0x21, 0x2f, 0x41, 0x03, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xfc, 0x24, 0xa8, 0xb0, 0xa8, ++ 0x24, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d, ++ 0x71, 0x11, 0x12, 0x12, 0x17, 0x38, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x50, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00, ++ 0x12, 0x11, 0x13, 0x7e, 0x15, 0x11, 0x11, 0x1d, ++ 0x71, 0x11, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x18, 0x1c, 0x1a, ++ 0x2b, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x29, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x48, 0x88, 0x50, 0x20, ++ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, ++ 0x5c, 0x14, 0x14, 0x16, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x09, 0x4f, 0x31, 0x11, 0x33, 0x4d, 0x09, 0x19, ++ 0x29, 0x4b, 0x08, 0x08, 0x30, 0x17, 0x00, 0x00, ++ 0x10, 0xfc, 0x30, 0xfc, 0x20, 0xf8, 0xf8, 0x20, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3c, 0x25, 0x67, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x90, 0xa0, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x0b, 0x70, 0x11, 0x13, 0x7d, 0x11, 0x19, ++ 0x35, 0x37, 0x50, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x11, 0x1f, 0x11, ++ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xe0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36, ++ 0x35, 0x55, 0x16, 0x24, 0x24, 0x4d, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x50, 0xd0, ++ 0xd8, 0x54, 0x54, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x88, 0x94, 0x90, ++ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x3f, ++ 0x02, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x2e, ++ 0x21, 0x22, 0x3f, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48, ++ 0x88, 0xc8, 0xf8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x29, 0x29, 0x31, 0x28, 0x27, ++ 0x26, 0x27, 0x3a, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0xa8, 0x38, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x01, 0x1f, 0x11, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x00, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x4f, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x40, 0x80, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x7f, ++ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40, 0x40, 0xfc, ++ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x22, 0x17, 0x14, 0x07, 0x1c, 0x67, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x08, 0xc8, 0x50, 0xe0, 0x58, 0xc4, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x3f, 0x29, 0x4e, 0x12, 0x34, 0x0c, ++ 0x12, 0x3f, 0x52, 0x12, 0x1e, 0x13, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00, ++ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0f, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x79, 0x11, 0x17, 0x19, 0x11, ++ 0x37, 0x51, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0xd0, 0x10, 0x10, 0xf8, 0x14, 0x14, ++ 0xf0, 0x10, 0x10, 0xd0, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x18, 0x25, 0x45, 0x01, 0x3f, ++ 0x00, 0x08, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x00, 0xf8, ++ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x3a, 0x37, ++ 0x34, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x37, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x17, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xf8, ++ 0xf0, 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf0, 0x40, 0xf8, ++ 0x40, 0xfc, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x30, 0xd0, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0, ++ 0xf0, 0xa8, 0xa8, 0xc8, 0xc4, 0x84, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13, ++ 0x16, 0x2a, 0x25, 0x45, 0x48, 0x40, 0x00, 0x00, ++ 0x80, 0x38, 0x08, 0xb8, 0x08, 0xf8, 0x00, 0xfc, ++ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00, ++ 0x08, 0x7f, 0x49, 0x7f, 0x08, 0x3e, 0x08, 0x7f, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49, ++ 0x4e, 0x7b, 0x4a, 0x42, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8, ++ 0x68, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x50, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c, ++ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10, ++ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x13, ++ 0x16, 0x1b, 0x22, 0x22, 0x41, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x48, 0x88, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x27, 0x04, 0x17, ++ 0x1a, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x04, 0xf8, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x07, 0x18, 0x6f, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xf8, 0xc8, 0x08, 0x48, 0xc8, 0x70, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x14, 0x19, ++ 0x37, 0x55, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8, ++ 0x28, 0xc8, 0x08, 0x28, 0xe8, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3f, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x24, 0xf8, 0x20, 0xf8, 0x20, ++ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x0f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20, ++ 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x44, 0xf4, 0x28, 0xe8, 0x54, 0xe4, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48, ++ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x1c, 0x1a, 0x1b, ++ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0x40, 0x64, 0xa4, 0xa8, ++ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x13, 0x19, 0x37, 0x35, ++ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x50, 0xfc, 0x50, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x88, 0xe8, 0x28, 0x28, 0xe8, ++ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1f, 0x1a, ++ 0x2a, 0x28, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x60, ++ 0x70, 0xb0, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x09, 0x37, 0x24, 0x27, 0x24, 0x37, 0x20, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x80, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0xd8, 0x08, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x3f, 0x2d, 0x77, 0x3f, 0x0f, 0x0f, 0x09, ++ 0x0f, 0x1f, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0xf8, 0xe0, 0xe0, 0x20, ++ 0xe0, 0xf0, 0xf0, 0x14, 0xf4, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x48, 0x23, ++ 0x2a, 0x0b, 0x12, 0x13, 0x22, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x02, 0x0c, 0x32, 0x01, 0x02, 0x0c, 0x7f, 0x01, ++ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x30, 0x48, 0x80, 0xc0, 0x30, 0xec, 0x00, ++ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7c, ++ 0x13, 0x54, 0x39, 0x32, 0x1c, 0x60, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8, ++ 0xf8, 0xa8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x4f, 0x4b, 0x4a, 0x4a, ++ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x58, 0xd8, 0xe8, ++ 0xf8, 0xe8, 0x58, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7c, 0x55, 0x55, 0x7d, 0x55, 0x55, 0x7d, ++ 0x55, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x20, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x7f, ++ 0x01, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0xc0, 0x00, 0xfc, ++ 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x7f, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x71, 0x19, 0x15, 0x75, 0x41, 0x4f, 0x71, ++ 0x53, 0x13, 0x15, 0x19, 0x11, 0x61, 0x00, 0x00, ++ 0x00, 0x38, 0x48, 0x48, 0xb8, 0x20, 0xe0, 0x38, ++ 0xa8, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04, 0x06, ++ 0x0a, 0x09, 0x11, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x02, 0x22, 0x12, ++ 0x0c, 0x04, 0x0c, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x08, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x07, 0x04, 0x04, 0x06, ++ 0x09, 0x09, 0x08, 0x09, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0xc4, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x10, 0x20, ++ 0x40, 0x40, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x12, ++ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x90, ++ 0x90, 0x90, 0x90, 0x94, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x7e, 0x00, 0x01, 0x7f, 0x14, ++ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f, ++ 0x04, 0x1b, 0x60, 0x06, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc, ++ 0x40, 0x30, 0x8c, 0x00, 0x80, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, ++ 0x7f, 0x2c, 0x2d, 0x33, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0xc8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x3f, 0x28, 0x5f, 0x14, 0x3f, 0x64, ++ 0x3f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x1f, ++ 0x60, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0xf0, ++ 0x4c, 0xc0, 0x40, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x4a, 0x4a, ++ 0x4b, 0x7a, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xa8, 0xb8, ++ 0x28, 0x48, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x01, 0x17, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17, ++ 0x12, 0x1a, 0x63, 0x02, 0x03, 0x02, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc, ++ 0xa0, 0xa8, 0x18, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x04, 0x0e, 0x03, 0x1c, 0x08, ++ 0x7f, 0x12, 0x34, 0x0c, 0x1a, 0x61, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xc0, 0x30, 0x20, ++ 0xfc, 0x48, 0xd0, 0x30, 0x68, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x0f, 0x08, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xe0, 0x20, 0xe0, ++ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22, ++ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x88, 0x04, 0xf8, 0x20, 0x20, ++ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f, 0x11, 0x1f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xf0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x2f, 0x29, ++ 0x4f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0x88, 0x48, 0x50, 0x20, 0x54, ++ 0x8c, 0x04, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x17, 0x3a, 0x37, 0x37, 0x52, ++ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x33, 0x55, ++ 0x18, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54, 0xec, ++ 0x84, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7f, 0x12, 0x12, 0x13, 0x1a, ++ 0x70, 0x17, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xa8, 0x38, 0x58, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x04, 0x7f, 0x12, 0x1f, 0x12, ++ 0x1e, 0x13, 0x1e, 0x62, 0x02, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, ++ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x00, ++ 0x7f, 0x0c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x7f, 0x14, 0x1f, 0x34, ++ 0x5f, 0x14, 0x1f, 0x14, 0x1f, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x07, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x10, ++ 0x13, 0x10, 0x27, 0x20, 0x41, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b, ++ 0x1a, 0x1b, 0x2a, 0x2b, 0x4a, 0x48, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8, ++ 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x0b, 0x42, 0x27, 0x29, 0x03, 0x12, ++ 0x17, 0x2a, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x80, 0xfc, 0x20, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x13, 0x10, 0x17, 0x7d, 0x11, ++ 0x11, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, 0xf0, 0x10, ++ 0xf8, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, ++ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x24, 0x3f, ++ 0x20, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x80, 0x00, 0x78, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x3f, 0x02, 0x7f, 0x04, 0x07, ++ 0x0c, 0x0f, 0x14, 0x27, 0x44, 0x07, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x3f, 0x01, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf8, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x20, 0x4f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x08, 0xe0, 0x20, ++ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x22, 0x3e, 0x22, ++ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x48, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x0b, 0x00, 0x00, ++ 0x1c, 0xe4, 0xa8, 0x50, 0xfc, 0x40, 0xfc, 0x40, ++ 0x78, 0xc8, 0xb0, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x7f, 0x01, ++ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x23, 0x3e, 0x23, ++ 0x3e, 0x08, 0x7f, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xfc, 0x48, 0x68, ++ 0xd8, 0xd8, 0x68, 0x68, 0x48, 0xd8, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x11, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x7f, ++ 0x24, 0x2d, 0x2d, 0x2d, 0x25, 0x4f, 0x00, 0x00, ++ 0x10, 0xf0, 0x50, 0xfc, 0x30, 0xe0, 0x5c, 0xe0, ++ 0x00, 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x20, 0x4f, ++ 0x00, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xe0, ++ 0x00, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x3e, 0x48, 0x7f, 0x14, 0x3f, 0x68, ++ 0x3e, 0x28, 0x3e, 0x28, 0x3f, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x7f, 0x12, 0x1f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x27, 0x15, 0x17, 0x00, 0x0f, 0x73, 0x12, ++ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xf8, 0x00, 0xfc, 0xf0, 0x10, ++ 0xf8, 0xc8, 0xb0, 0x88, 0x80, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f, ++ 0x12, 0x55, 0x39, 0x31, 0x1f, 0x60, 0x00, 0x00, ++ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0x9c, 0xc0, ++ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27, ++ 0x24, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21, ++ 0x2f, 0x23, 0x25, 0x29, 0x21, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08, ++ 0xe8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x22, ++ 0x27, 0x21, 0x2f, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x88, ++ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2a, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x90, 0x10, 0x20, 0x78, 0x48, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x22, 0x3e, 0x22, ++ 0x3e, 0x08, 0x7e, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0xf8, 0x28, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x1b, 0x28, 0x7e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x39, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0, ++ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7e, 0x08, 0x7e, ++ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0, ++ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1a, ++ 0x06, 0x05, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0xc4, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40, ++ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x17, ++ 0x10, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0, ++ 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x11, 0x1f, 0x09, 0x3f, 0x2f, 0x22, 0x3f, ++ 0x29, 0x2f, 0x2f, 0x2f, 0x39, 0x41, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x10, 0xfc, 0x20, 0x20, 0xbc, ++ 0x48, 0xa8, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x01, 0x7c, 0x10, 0x10, 0x13, 0x7c, 0x10, ++ 0x10, 0x11, 0x1d, 0x62, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x49, 0x29, 0x29, 0x0f, 0x1c, ++ 0x2f, 0x4c, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xbc, 0xa4, ++ 0xbc, 0x44, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf8, ++ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x04, 0x04, ++ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x4c, 0x2a, 0x1b, 0x6c, 0x19, 0x08, ++ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0x80, 0x80, 0xfc, 0xb0, 0x30, ++ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x14, 0x1d, 0x16, 0x14, 0x13, ++ 0x13, 0x13, 0x22, 0x23, 0x43, 0x1c, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0xfc, 0xf0, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x14, 0x14, 0x1d, 0x16, ++ 0x14, 0x14, 0x24, 0x24, 0x44, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x01, 0x3e, 0x00, 0x00, 0x7f, 0x14, 0x14, ++ 0x14, 0x15, 0x23, 0x20, 0x41, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x22, 0x14, 0x3f, 0x24, 0x28, ++ 0x32, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x24, 0x2f, 0x29, 0x2f, 0x29, ++ 0x2f, 0x26, 0x2d, 0x35, 0x44, 0x0d, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x19, 0x61, 0x01, 0x09, ++ 0x09, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x53, 0x11, ++ 0x11, 0x10, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08, ++ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x13, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x04, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20, 0xe0, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x01, 0x7f, 0x04, ++ 0x18, 0x7e, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xfc, 0x40, ++ 0x30, 0xfc, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f, ++ 0x09, 0x1f, 0x61, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc, ++ 0x20, 0xf0, 0x0c, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x7f, 0x00, ++ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x20, 0xfc, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x24, ++ 0x7b, 0x48, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xf8, 0x08, 0xf8, 0x90, ++ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x21, 0x5f, 0x02, 0x0c, 0x7f, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0x20, 0xfc, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x17, 0x54, 0x54, 0x57, 0x55, ++ 0x54, 0x7c, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x06, 0x01, 0x07, 0x39, 0x02, 0x7f, 0x04, 0x0f, ++ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x20, 0xc0, 0x60, 0x10, 0x00, 0xfc, 0x80, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00, ++ 0x11, 0x15, 0x65, 0x19, 0x0d, 0x13, 0x7f, 0x01, ++ 0x3f, 0x08, 0x0c, 0x12, 0x21, 0x46, 0x00, 0x00, ++ 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48, 0xfc, 0x10, ++ 0xfc, 0x90, 0xa0, 0x44, 0xb4, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x0f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x08, 0xf8, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x12, 0x1f, ++ 0x72, 0x13, 0x10, 0x17, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x14, ++ 0x14, 0x14, 0x27, 0x24, 0x44, 0x1b, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90, ++ 0xf0, 0x90, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x23, 0x3e, ++ 0x28, 0x24, 0x26, 0x3a, 0x61, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0x50, 0x50, 0x50, 0xfc, 0x30, ++ 0x30, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, ++ 0x12, 0x7f, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0x48, 0x78, ++ 0x48, 0xc8, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x2b, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, ++ 0x90, 0xfc, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x1f, 0x09, 0x7f, 0x09, 0x0f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xe0, 0x30, 0xfc, 0x20, 0xe0, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x1a, 0x37, 0x34, ++ 0x33, 0x52, 0x53, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50, ++ 0xfc, 0x28, 0x28, 0x90, 0x3c, 0xc4, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x09, 0x28, 0x2b, 0x28, 0x4f, ++ 0x0c, 0x0b, 0x0a, 0x12, 0x12, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc, ++ 0x44, 0xf8, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x12, 0x0c, 0x7f, 0x19, 0x6d, ++ 0x16, 0x6d, 0x15, 0x64, 0x04, 0x1b, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x40, 0x3f, 0x01, ++ 0x01, 0x1a, 0x06, 0x05, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xe0, 0x20, ++ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x0b, 0x42, 0x25, 0x20, 0x07, 0x00, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x11, 0x15, 0x65, 0x19, 0x15, 0x7f, 0x02, 0x7f, ++ 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x21, 0x00, 0x00, ++ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0xa4, 0xfc, ++ 0x88, 0x48, 0x50, 0x20, 0x54, 0x8c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a, ++ 0x2a, 0x48, 0x09, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, ++ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x07, 0x00, 0x00, ++ 0x60, 0x80, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, ++ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x09, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0xd0, 0x30, 0xc8, 0x40, 0xfc, 0xa0, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x12, 0x1a, 0x2a, 0x4f, 0x14, 0x15, 0x3d, 0x62, ++ 0x25, 0x3f, 0x2a, 0x2b, 0x32, 0x22, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0x7c, 0x48, 0xc8, 0x28, ++ 0x28, 0xb0, 0x90, 0x30, 0xc8, 0x84, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x7f, 0x09, ++ 0x09, 0x08, 0x15, 0x15, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x0f, 0x09, 0x0f, 0x7f, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28, ++ 0x2f, 0x28, 0x38, 0x28, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80, ++ 0x80, 0x84, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x70, 0xd0, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x4b, 0x2b, 0x2c, 0x08, 0x7f, 0x14, ++ 0x14, 0x15, 0x16, 0x25, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1a, 0x28, 0x7e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x15, ++ 0x05, 0x05, 0x09, 0x09, 0x11, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0x20, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x02, 0x03, 0x0c, 0x7f, 0x09, 0x0f, 0x0f, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0xe0, 0x20, 0xe0, 0xe0, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00, ++ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x51, 0x11, ++ 0x13, 0x15, 0x1c, 0x12, 0x12, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xf8, 0x08, ++ 0xfc, 0x54, 0xac, 0x84, 0x04, 0x18, 0x00, 0x00, ++ 0x09, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x13, ++ 0x11, 0x1f, 0x11, 0x17, 0x11, 0x13, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, ++ 0x24, 0xfc, 0xa8, 0x10, 0x6c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x13, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xc0, 0x40, 0x40, 0xc0, ++ 0x40, 0xc0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x07, 0x04, 0x3f, 0x27, 0x3d, 0x23, 0x2a, ++ 0x2a, 0x3b, 0x3a, 0x2b, 0x4c, 0x30, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xa0, 0x3c, 0xe0, 0x28, 0x28, ++ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1d, ++ 0x70, 0x10, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x14, 0x15, 0x16, 0x7c, 0x13, 0x12, 0x13, 0x1d, ++ 0x77, 0x11, 0x13, 0x12, 0x14, 0x39, 0x00, 0x00, ++ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x98, 0x50, ++ 0xdc, 0x50, 0x50, 0xf0, 0x90, 0x0c, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x13, 0x1e, ++ 0x12, 0x7f, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x09, 0x08, 0x2b, 0x28, 0x3d, 0x28, 0x4b, 0x0d, ++ 0x18, 0x6f, 0x08, 0x0b, 0x08, 0x09, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xe8, ++ 0xa4, 0xfc, 0xe8, 0x94, 0xac, 0xc4, 0x00, 0x00, ++ 0x20, 0x27, 0x38, 0x22, 0x1e, 0x11, 0x1e, 0x28, ++ 0x7e, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0xb0, ++ 0xa0, 0xb8, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x05, 0x09, 0x09, 0x19, ++ 0x35, 0x55, 0x11, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x10, 0x14, 0x14, 0xcc, 0x0c, 0x04, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38, ++ 0x7f, 0x08, 0x0e, 0x78, 0x08, 0x1b, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x88, ++ 0xfc, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x54, 0x57, 0x54, 0x7f, ++ 0x53, 0x18, 0x14, 0x1f, 0x60, 0x01, 0x00, 0x00, ++ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4, ++ 0xfc, 0xa8, 0xd8, 0x94, 0xec, 0x84, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7e, 0x03, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x38, 0x07, 0x78, 0x03, 0x38, 0x07, 0x3b, ++ 0x01, 0x3f, 0x29, 0x2f, 0x39, 0x2b, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, ++ 0x24, 0xfc, 0xa8, 0x14, 0x6c, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x12, 0x1a, ++ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8, ++ 0xf8, 0xc8, 0xa8, 0x98, 0x88, 0xb0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x12, 0x2a, ++ 0x4a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48, ++ 0x88, 0xe8, 0x08, 0xc8, 0x28, 0x30, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3e, 0x2b, ++ 0x3e, 0x08, 0x7f, 0x0a, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0xc8, 0x58, 0x58, 0xe8, 0xf8, ++ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x00, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x48, ++ 0x48, 0x78, 0x49, 0x42, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x20, ++ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x52, 0x53, 0x5e, ++ 0x50, 0x7f, 0x50, 0x41, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x58, ++ 0x80, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x37, ++ 0x32, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0xa0, 0xfc, 0xc8, 0x50, 0xc0, 0xf8, ++ 0xa8, 0x38, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32, ++ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1b, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x03, ++ 0x0d, 0x79, 0x07, 0x0d, 0x31, 0x03, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x80, ++ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08, ++ 0x0c, 0x12, 0x13, 0x7d, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x47, 0x0c, 0x32, 0x03, ++ 0x0c, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x80, ++ 0x70, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x39, 0x29, 0x2f, 0x39, 0x29, 0x2f, 0x39, ++ 0x29, 0x2a, 0x2a, 0x2f, 0x28, 0x58, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x28, 0xe8, 0x28, ++ 0x28, 0xa8, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x10, ++ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00, ++ 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x02, 0x21, 0x11, 0x17, 0x00, 0x02, 0x02, 0x72, ++ 0x13, 0x12, 0x10, 0x18, 0x27, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x80, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x03, 0x04, 0x04, 0x08, 0x10, ++ 0x20, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40, ++ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x11, 0x11, 0x3f, 0x51, 0x11, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10, ++ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x06, 0x0a, 0x09, ++ 0x09, 0x08, 0x10, 0x10, 0x23, 0x4c, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x40, 0x40, 0xf0, 0x10, 0x10, ++ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x07, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x7a, 0x4a, 0x42, 0x04, 0x09, 0x16, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x20, 0x20, 0xf8, 0x88, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f, ++ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x10, 0xe0, 0x00, 0x00, ++ 0x02, 0x07, 0x08, 0x3f, 0x00, 0x0f, 0x00, 0x1f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x4a, 0x2b, 0x2c, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x1b, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x50, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x29, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x88, 0x88, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x31, 0x09, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0x10, 0x10, 0xfc, 0x00, 0x88, 0x88, 0x50, ++ 0x60, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, ++ 0x20, 0x17, 0x12, 0x42, 0x22, 0x23, 0x03, 0x12, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x53, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x20, 0x20, 0x78, 0x08, 0x90, ++ 0x90, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x01, 0x09, ++ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10, ++ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x03, 0x0c, 0x31, 0x02, 0x0d, 0x71, 0x01, ++ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x10, ++ 0x10, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x13, 0x10, 0x12, 0x7d, 0x11, ++ 0x10, 0x14, 0x19, 0x66, 0x00, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68, 0x70, ++ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x04, 0x09, 0x11, ++ 0x3f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x48, 0x14, 0x1e, 0x12, 0x1e, ++ 0x1e, 0x12, 0x7e, 0x06, 0x1a, 0x66, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf0, 0x10, 0xf0, ++ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x04, 0x04, ++ 0x06, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe0, 0x20, 0x40, ++ 0xf0, 0x10, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xb8, 0xc8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d, ++ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x9c, 0xf0, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x20, 0x27, 0x24, 0x24, 0x24, 0x24, 0x27, 0x24, ++ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f, ++ 0x02, 0x02, 0x04, 0x08, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, ++ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0xfc, 0x80, ++ 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x20, 0x20, ++ 0x3f, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, ++ 0xe0, 0x20, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x0f, ++ 0x79, 0x09, 0x09, 0x09, 0x09, 0x19, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x7a, 0x17, 0x15, 0x15, 0x1b, ++ 0x72, 0x12, 0x15, 0x19, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x90, 0x94, 0x14, 0x0c, 0xc0, 0x3c, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x7f, 0x04, 0x08, 0x1f, 0x61, ++ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x60, 0x98, 0x04, ++ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x4a, 0x23, 0x22, 0x0b, 0x0a, 0x13, ++ 0x21, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11, ++ 0x19, 0x15, 0x25, 0x21, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x40, ++ 0x48, 0x48, 0x50, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3f, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x41, 0x22, 0x27, 0x02, 0x13, ++ 0x12, 0x13, 0x20, 0x25, 0x44, 0x48, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x12, 0x13, 0x2d, 0x4f, 0x11, 0x35, 0x55, 0x15, ++ 0x1e, 0x1f, 0x00, 0x7f, 0x19, 0x63, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0xf8, ++ 0x20, 0xf0, 0x00, 0xfc, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x07, 0x08, 0x11, 0x3f, 0x51, 0x1f, 0x11, ++ 0x11, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0x10, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f, ++ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x1f, ++ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0, ++ 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x08, 0x0f, ++ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xe0, ++ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x11, 0x17, 0x31, 0x51, 0x11, ++ 0x1f, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20, ++ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x12, 0x31, 0x51, 0x1f, ++ 0x10, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x1f, 0x11, 0x33, 0x55, 0x19, ++ 0x17, 0x14, 0x15, 0x15, 0x15, 0x14, 0x00, 0x00, ++ 0x30, 0xc0, 0x80, 0xfc, 0x20, 0xf0, 0x28, 0xe4, ++ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x20, 0x2d, 0x23, 0x22, 0x24, 0x28, 0x3f, ++ 0x24, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x80, 0x90, 0x10, 0x10, 0x90, 0x90, 0x10, 0xf0, ++ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x14, 0x14, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x45, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, ++ 0x7f, 0x00, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, ++ 0xfc, 0x00, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x40, 0x58, 0x46, 0x41, 0x41, 0x42, ++ 0x44, 0x48, 0x50, 0x7f, 0x40, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x88, 0x88, 0x08, 0x88, 0x48, ++ 0x28, 0x28, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x12, ++ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x10, ++ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x2f, 0x20, 0x20, 0x27, 0x20, ++ 0x20, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80, ++ 0x80, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x33, 0x22, 0x2a, 0x2b, 0x2a, 0x2a, 0x2b, ++ 0x2a, 0x3b, 0x6a, 0x13, 0x16, 0x20, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0x28, 0xa8, 0xf0, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x79, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x1c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x0f, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07, ++ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0x60, 0x80, 0x00, 0xfc, 0x40, 0xf0, 0x4c, 0xc0, ++ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x00, 0x13, 0x11, 0x10, 0x7f, 0x10, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0xf8, 0x20, 0xa0, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xa0, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x56, 0x55, 0x55, 0x57, ++ 0x54, 0x7c, 0x44, 0x41, 0x02, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x48, 0x48, 0x50, 0xfc, ++ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x78, 0x08, 0x0f, 0x78, 0x4b, 0x42, 0x7a, ++ 0x4b, 0x4a, 0x08, 0x08, 0x17, 0x60, 0x00, 0x00, ++ 0x40, 0x50, 0x88, 0xfc, 0x44, 0xf8, 0x48, 0x48, ++ 0xf8, 0x50, 0x48, 0x7c, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x7b, 0x09, 0x09, 0x79, 0x49, 0x43, 0x79, ++ 0x49, 0x49, 0x09, 0x09, 0x17, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0xf0, 0x50, 0xf0, 0xf8, 0xf0, ++ 0x50, 0xf0, 0x50, 0xf0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x13, 0x38, 0x34, 0x34, 0x57, ++ 0x10, 0x10, 0x10, 0x11, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x09, 0x09, 0x0f, 0x72, 0x04, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x90, 0x54, 0x54, 0x0c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0a, ++ 0x12, 0x62, 0x12, 0x12, 0x22, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x20, ++ 0x10, 0x0c, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x78, 0x12, 0x11, 0x11, 0x1f, ++ 0x70, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x48, 0x50, 0xfc, ++ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x09, 0x1f, ++ 0x22, 0x47, 0x3c, 0x04, 0x05, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x19, 0x36, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x10, ++ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x4f, 0x30, 0x10, 0x30, 0x48, 0x0b, 0x18, ++ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x44, 0x28, 0x17, 0x32, 0x49, 0x09, 0x1f, ++ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x48, 0x50, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x3f, 0x28, 0x49, 0x0a, 0x7e, ++ 0x0b, 0x0e, 0x16, 0x12, 0x22, 0x42, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xa0, 0xf0, 0xa8, 0xe4, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x25, 0x3e, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x24, 0x24, 0xd4, 0x74, ++ 0xb4, 0x14, 0xf4, 0x14, 0x04, 0x18, 0x00, 0x00, ++ 0x02, 0x0f, 0x02, 0x0c, 0x7f, 0x12, 0x26, 0x4f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0xc0, 0xf8, 0x48, 0x98, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x37, 0x24, 0x27, 0x3c, 0x27, 0x3e, 0x27, ++ 0x24, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xc8, 0x78, 0xc8, 0xf8, 0xc8, ++ 0x48, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x3f, 0x07, 0x1c, ++ 0x67, 0x1f, 0x17, 0x14, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xc0, 0x00, 0xf8, 0xc0, 0x70, ++ 0xcc, 0xf0, 0xd0, 0x50, 0xd0, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x12, 0x1b, ++ 0x2b, 0x7a, 0x12, 0x13, 0x2c, 0x40, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0x24, 0xa4, 0xe4, 0x78, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x20, 0xf8, 0x90, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x13, 0x6a, 0x2b, 0x1f, 0x6a, 0x13, 0x3f, 0x04, ++ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0xb8, 0xa8, 0xb8, 0xa4, 0xf8, 0x60, 0xf8, 0x40, ++ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x11, 0x5b, 0x2b, 0x16, 0x7f, 0x0b, 0x33, 0x07, ++ 0x1f, 0x67, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x38, 0xa8, 0xb0, 0xa8, 0xe4, 0xf8, 0xa0, 0xc0, ++ 0xf0, 0xcc, 0xc0, 0xb0, 0x60, 0x18, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x3f, 0x7a, 0x2a, 0x3f, 0x08, ++ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xf0, 0x80, ++ 0xe0, 0xe0, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12, ++ 0x12, 0x13, 0x1e, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x4e, 0x28, 0x27, 0x04, 0x17, 0x1a, ++ 0x22, 0x3f, 0x46, 0x45, 0x48, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xb0, 0x90, 0x7c, 0x98, 0x50, ++ 0x5c, 0xd0, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x09, 0x7f, 0x08, 0x08, ++ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x20, 0xfc, 0x20, 0x20, ++ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x49, 0x4f, 0x79, 0x49, ++ 0x4f, 0x48, 0x78, 0x49, 0x42, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x50, 0xfc, 0x10, 0x10, ++ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x02, 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x01, 0x1f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x80, 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0x00, 0xf0, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10, ++ 0x13, 0x12, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04, ++ 0xe4, 0x24, 0x24, 0xe4, 0x24, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, 0x3f, ++ 0x24, 0x24, 0x24, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x3b, 0x36, ++ 0x36, 0x53, 0x52, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xdc, 0x24, 0xb4, 0xa8, ++ 0xa8, 0xb4, 0x24, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x1f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x20, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x3a, 0x36, ++ 0x36, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x09, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x09, 0x09, 0x0f, 0x11, 0x13, 0x32, 0x53, 0x10, ++ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x2a, 0x3e, 0x08, ++ 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x79, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10, ++ 0x10, 0x14, 0x1b, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x88, ++ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, ++ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x02, 0x1c, 0x10, 0x10, 0x1f, 0x15, 0x14, ++ 0x14, 0x14, 0x24, 0x24, 0x45, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x04, ++ 0x1f, 0x60, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x40, ++ 0xf0, 0x0c, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x0f, ++ 0x00, 0x7f, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x60, 0x70, 0xa8, 0x24, 0xe0, ++ 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x05, 0x1f, 0x6a, 0x09, 0x0e, 0x0f, ++ 0x01, 0x1f, 0x12, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0xac, 0xa0, 0x60, 0xe0, ++ 0x00, 0xf0, 0x90, 0xd0, 0x50, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x40, 0x1e, 0x13, ++ 0x1e, 0x12, 0x1e, 0x22, 0x22, 0x47, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x40, 0x40, 0xf8, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x3f, 0x21, ++ 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x20, ++ 0x60, 0x98, 0xe4, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x0f, 0x08, 0x0f, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x70, 0xc0, 0x00, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x2f, 0x21, 0x3f, ++ 0x23, 0x25, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x68, 0x88, 0x08, 0xf8, ++ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c, ++ 0x55, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x60, 0xa0, 0x90, 0xf8, 0x04, 0x00, ++ 0xf8, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x09, 0x0a, 0x14, 0x19, ++ 0x34, 0x57, 0x11, 0x11, 0x12, 0x10, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0xd0, 0xb8, 0xd4, 0x90, 0xf8, ++ 0x00, 0xfc, 0x28, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3e, 0x03, 0x3c, ++ 0x03, 0x3c, 0x27, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x02, 0x72, ++ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x01, 0x3f, ++ 0x01, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0xf8, ++ 0x00, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48, ++ 0x4b, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8, ++ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x44, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x53, 0x12, ++ 0x13, 0x10, 0x1f, 0x11, 0x12, 0x1c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x48, 0x08, ++ 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x2c, 0x23, 0x20, ++ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, ++ 0x40, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x48, 0x30, 0x11, 0x31, 0x4a, 0x0d, 0x19, ++ 0x29, 0x49, 0x09, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x11, 0x7e, 0x10, ++ 0x10, 0x14, 0x18, 0x61, 0x02, 0x0c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x20, 0x20, ++ 0x60, 0x60, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f, ++ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01, ++ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, ++ 0x3e, 0x66, 0x0a, 0x12, 0x62, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x88, 0x88, 0xc8, 0xb0, 0x90, ++ 0x90, 0xa8, 0xc8, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0xc8, 0xb0, 0x90, 0x90, ++ 0xa8, 0xa8, 0xc0, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x00, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x00, 0xfc, 0x60, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x21, ++ 0x2f, 0x21, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48, ++ 0xe8, 0x38, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x15, 0x15, ++ 0x15, 0x17, 0x20, 0x3f, 0x46, 0x18, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0xe8, 0x08, 0xf8, 0xf0, 0x10, ++ 0xf0, 0xe0, 0x20, 0xfc, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x49, 0x49, 0x49, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x0f, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x0c, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf8, 0x48, 0x30, 0xd8, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x00, ++ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17, ++ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8, ++ 0xa8, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x4f, 0x09, 0x0f, 0x09, 0x0f, ++ 0x01, 0x3f, 0x21, 0x2f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x70, 0x17, ++ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x80, 0xf8, ++ 0xa8, 0xf8, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24, ++ 0x27, 0x26, 0x3a, 0x23, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40, ++ 0xfc, 0x54, 0x7c, 0x8c, 0x04, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01, 0x3f, ++ 0x21, 0x21, 0x3f, 0x21, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, ++ 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x12, 0x13, 0x13, 0x7c, 0x10, 0x1b, 0x36, 0x37, ++ 0x32, 0x53, 0x53, 0x12, 0x13, 0x1c, 0x00, 0x00, ++ 0x20, 0xfc, 0x30, 0xc8, 0x00, 0xb8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0x28, 0xb0, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x74, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x17, 0x14, ++ 0x17, 0x14, 0x27, 0x24, 0x44, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x14, 0x17, ++ 0x14, 0x18, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xf0, ++ 0x90, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x1e, ++ 0x72, 0x13, 0x15, 0x15, 0x19, 0x31, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0xfc, 0x24, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x26, 0x58, 0x1f, 0x10, 0x1f, 0x14, ++ 0x14, 0x17, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x78, 0xf8, 0x08, 0xf8, 0x90, ++ 0x90, 0xf0, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x05, 0x09, 0x11, 0x63, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x08, 0x90, 0x60, 0x20, 0x10, 0x0c, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x60, 0x60, 0x60, 0xa4, 0xa4, 0xa8, 0xb0, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00, ++ 0x21, 0x2f, 0x4f, 0x35, 0x2f, 0x7d, 0x37, 0x5f, ++ 0x11, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0xd4, 0xe4, 0x58, 0xd4, 0x7c, 0xd8, 0xf4, ++ 0x10, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x0b, 0x48, ++ 0x27, 0x20, 0x0b, 0x08, 0x17, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8, 0x40, ++ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e, 0x22, ++ 0x3e, 0x22, 0x26, 0x14, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x40, 0x4c, 0x70, ++ 0x40, 0x44, 0x3c, 0x90, 0x48, 0x44, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, ++ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x07, 0x18, 0x01, 0x07, 0x79, 0x09, 0x05, ++ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0xc0, 0x30, 0x2c, 0x20, 0x40, ++ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7f, ++ 0x08, 0x2d, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x04, 0x03, 0x3e, 0x12, 0x0d, 0x1b, ++ 0x61, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xf8, 0x48, 0x30, 0xc8, ++ 0x04, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x7b, 0x10, 0x7d, ++ 0x11, 0x55, 0x3a, 0x30, 0x1c, 0x60, 0x00, 0x00, ++ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0, ++ 0xb0, 0x98, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00, ++ 0x02, 0x3c, 0x7f, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e, ++ 0x3e, 0x0f, 0x79, 0x00, 0x24, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x88, 0x88, 0x30, 0x00, 0x88, 0x44, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x1f, ++ 0x04, 0x0f, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xe0, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f, ++ 0x09, 0x0f, 0x1f, 0x7f, 0x12, 0x61, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0xf0, 0xfc, 0x48, 0x24, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e, ++ 0x00, 0x3e, 0x22, 0x23, 0x3f, 0x22, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x12, 0x13, 0x7f, 0x12, 0x3e, 0x10, ++ 0x1e, 0x33, 0x32, 0x52, 0x1e, 0x10, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x7f, 0x01, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x09, 0x7f, 0x09, 0x3f, 0x08, ++ 0x0f, 0x19, 0x19, 0x29, 0x4f, 0x09, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, ++ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x7c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xa0, 0x20, 0x30, 0xe8, 0x24, ++ 0x24, 0xa0, 0x20, 0x20, 0xa0, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x7e, 0x12, 0x12, 0x22, 0x4d, 0x01, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x02, 0x04, 0x08, 0x1c, ++ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x50, 0x11, ++ 0x17, 0x10, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x90, 0x90, 0x20, 0xd0, 0x98, 0xe4, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x14, 0x15, 0x35, 0x56, 0x14, ++ 0x14, 0x15, 0x15, 0x13, 0x10, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x15, 0x05, ++ 0x05, 0x09, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, ++ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x23, ++ 0x20, 0x4f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x90, 0x60, 0x60, 0x90, ++ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, ++ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x17, 0x7c, 0x10, ++ 0x13, 0x14, 0x18, 0x60, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x22, ++ 0x41, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x18, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x71, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x20, 0x48, 0x08, 0x90, 0x10, ++ 0x24, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x08, 0x0b, 0x11, 0x24, 0x04, 0x09, 0x1e, 0x28, ++ 0x4b, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xa0, 0x40, 0xf0, 0x4c, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x15, ++ 0x19, 0x13, 0x2d, 0x20, 0x43, 0x1c, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0x58, ++ 0xe4, 0xf4, 0x20, 0xc0, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x0f, 0x78, 0x0f, 0x07, ++ 0x00, 0x0f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x20, 0xe0, 0xe0, ++ 0x20, 0xe0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x02, 0x3c, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, ++ 0x20, 0x05, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1d, ++ 0x73, 0x15, 0x11, 0x11, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc, ++ 0x34, 0xc4, 0x04, 0x14, 0xf4, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11, 0x15, ++ 0x1f, 0x71, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, ++ 0xe0, 0x20, 0x3c, 0x04, 0x04, 0x18, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x10, 0x1e, 0x23, 0x7a, ++ 0x2a, 0x2a, 0x3a, 0x22, 0x02, 0x0d, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01, 0x7f, ++ 0x0f, 0x08, 0x0f, 0x05, 0x09, 0x33, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0xe0, 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1b, 0x1c, 0x1a, ++ 0x2b, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x21, 0x21, 0x00, 0x13, ++ 0x10, 0x17, 0x20, 0x20, 0x41, 0x46, 0x00, 0x00, ++ 0x08, 0x70, 0x88, 0x48, 0x50, 0x20, 0x40, 0xf8, ++ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54, ++ 0x57, 0x54, 0x7c, 0x44, 0x07, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x0d, 0x78, 0x08, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x28, 0xfc, 0x60, 0xa4, 0x9c, 0xf0, 0x84, 0x7c, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x1c, 0x03, 0x01, 0x7f, ++ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00, ++ 0x38, 0xc0, 0x20, 0x20, 0x40, 0x90, 0x08, 0xfc, ++ 0x04, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x70, 0xac, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f, ++ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xa8, 0x68, 0x70, 0x20, 0xfc, 0x20, ++ 0x70, 0xa8, 0x28, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e, 0x7f, ++ 0x0a, 0x0e, 0x01, 0x7f, 0x0d, 0x31, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x90, 0x60, 0xb0, ++ 0x4c, 0xc0, 0x70, 0x88, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x04, 0x3f, 0x04, 0x7f, ++ 0x04, 0x3f, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0x20, 0x30, 0xa8, ++ 0x24, 0x24, 0x20, 0xa0, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x04, 0x03, 0x0d, ++ 0x71, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x60, 0x80, 0x60, ++ 0x1c, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x12, 0x12, ++ 0x7f, 0x12, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x48, 0x48, 0x48, ++ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x3f, 0x21, 0x41, 0x0f, 0x09, ++ 0x09, 0x0f, 0x09, 0x01, 0x01, 0x3e, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0xe0, 0x20, ++ 0x20, 0xe0, 0x20, 0x10, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x12, 0x7f, 0x1f, 0x3d, 0x55, 0x1e, 0x07, 0x7f, ++ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0xc8, 0x50, 0x30, 0xcc, 0xc0, 0xfc, ++ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xf0, 0x2c, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x34, 0x0c, 0x1a, 0x29, 0x48, ++ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x02, 0x0c, 0x72, 0x4a, 0x2c, 0x08, 0x3e, 0x08, ++ 0x7e, 0x08, 0x14, 0x13, 0x21, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x38, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x00, 0x00, ++ 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x00, 0x00, ++ 0xfc, 0x40, 0x20, 0xf0, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x72, 0x12, ++ 0x13, 0x1e, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0xc8, 0x70, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, ++ 0x20, 0xb0, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x04, 0x07, 0x3f, 0x26, 0x3b, 0x3f, 0x26, 0x3c, ++ 0x27, 0x3b, 0x26, 0x3a, 0x42, 0x0c, 0x00, 0x00, ++ 0x08, 0xa8, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x3e, 0x22, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x5c, 0xe0, 0x48, 0x48, 0x50, ++ 0x30, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x3e, 0x7f, 0x08, ++ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x21, 0x12, 0x17, 0x44, 0x27, 0x24, 0x07, 0x12, ++ 0x1f, 0x13, 0x24, 0x24, 0x4b, 0x50, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28, ++ 0xe8, 0x90, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1c, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x31, 0x52, 0x14, ++ 0x1f, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0x7c, 0x48, 0x48, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x41, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x08, 0x10, 0x20, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x1f, ++ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc, ++ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x22, 0x1f, 0x12, 0x4f, 0x22, 0x23, 0x0c, 0x11, ++ 0x17, 0x10, 0x2f, 0x22, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0xd8, 0xa0, 0x20, ++ 0x50, 0xb8, 0xc8, 0xb0, 0x88, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xc0, 0x40, 0x40, ++ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x02, 0x1f, 0x12, 0x12, 0x12, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x50, 0x17, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x12, 0x17, 0x38, 0x57, 0x14, ++ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x88, 0xf0, 0x90, ++ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x13, 0x10, 0x37, 0x50, 0x11, ++ 0x12, 0x15, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0xf0, ++ 0x28, 0xe4, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x08, 0x08, 0x0e, 0x13, 0x12, 0x34, 0x5f, 0x11, ++ 0x15, 0x15, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00, ++ 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, 0xf8, ++ 0x20, 0xfc, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x04, 0x3f, 0x04, 0x7f, 0x04, ++ 0x3f, 0x04, 0x1c, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, ++ 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x11, 0x09, 0x3f, 0x02, 0x7f, 0x04, 0x18, ++ 0x6f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x10, 0x20, 0xf8, 0x80, 0xfc, 0x40, 0x30, ++ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x0a, 0x11, 0x7f, 0x04, 0x3f, 0x25, ++ 0x3f, 0x24, 0x0a, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x48, 0x49, 0x49, ++ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x2f, 0x22, 0x3f, 0x24, 0x2f, ++ 0x30, 0x27, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xe8, 0x88, 0xf8, 0x48, 0xe8, ++ 0x58, 0xc8, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f, ++ 0x21, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x10, 0x13, 0x10, 0x7d, 0x24, 0x27, 0x24, ++ 0x79, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00, ++ 0x08, 0x90, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8, ++ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x08, 0x17, 0x10, 0x3b, 0x08, ++ 0x4b, 0x28, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x21, 0x7f, 0x1f, 0x01, 0x7f, 0x1f, ++ 0x12, 0x1f, 0x25, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0xf0, 0x00, 0xfc, 0xf0, ++ 0x90, 0xf0, 0x08, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x1e, 0x52, 0x5e, 0x5e, 0x52, 0x5f, 0x7e, 0x2a, ++ 0x29, 0x49, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x18, 0xe0, 0x28, 0xd0, 0x28, 0xfc, 0x64, 0xa8, ++ 0x24, 0x20, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x09, 0x11, 0x1f, 0x02, 0x7f, 0x08, 0x1f, 0x61, ++ 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x20, 0xd8, 0x04, ++ 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7f, 0x10, 0x17, 0x11, 0x13, ++ 0x1c, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xe8, ++ 0x24, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x0b, 0x18, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x48, 0x08, 0x0b, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48, ++ 0x48, 0xf8, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x30, 0x39, 0x37, ++ 0x55, 0x51, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x40, 0xfc, 0x90, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x06, 0x03, 0x7f, 0x44, 0x5f, ++ 0x09, 0x0f, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xc0, 0x00, 0xfc, 0x48, 0xe0, ++ 0x10, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x80, ++ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x33, 0x2d, 0x3f, ++ 0x25, 0x3f, 0x25, 0x25, 0x25, 0x23, 0x00, 0x00, ++ 0x20, 0x28, 0xa4, 0x24, 0xfc, 0x20, 0x20, 0x30, ++ 0x50, 0x50, 0x48, 0x88, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x32, ++ 0x52, 0x12, 0x12, 0x1f, 0x11, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x11, 0x3d, 0x25, ++ 0x65, 0x24, 0x24, 0x3d, 0x22, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x07, 0x24, 0x27, 0x24, 0x27, 0x24, 0x27, ++ 0x20, 0x3f, 0x25, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xfc, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x14, 0x17, 0x24, 0x47, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x0a, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0xa0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x38, 0x03, 0x7c, 0x03, 0x38, 0x07, 0x38, ++ 0x03, 0x38, 0x29, 0x2a, 0x3c, 0x20, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8, ++ 0xf8, 0xa0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x3f, 0x2f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x00, 0x0f, 0x71, 0x11, ++ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xf8, 0x40, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x24, 0x25, 0x79, 0x13, 0x7c, ++ 0x12, 0x56, 0x39, 0x31, 0x1a, 0x64, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0xa8, 0xfc, 0x28, 0xf8, 0xa0, ++ 0xf8, 0xa0, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x2b, 0x30, 0x2b, 0x26, ++ 0x26, 0x27, 0x38, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0xf8, 0x48, ++ 0x48, 0xf8, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x14, 0x15, ++ 0x55, 0x36, 0x34, 0x16, 0x18, 0x63, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x1e, 0x10, 0x7f, 0x52, 0x4e, 0x76, ++ 0x6e, 0x5a, 0x76, 0x4a, 0x7e, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x88, 0xfc, 0x20, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, ++ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x12, 0x13, ++ 0x10, 0x12, 0x22, 0x24, 0x48, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x80, 0xa0, 0x90, 0x88, 0x88, 0x80, 0x00, 0x00, ++ 0x09, 0x04, 0x1f, 0x10, 0x1f, 0x12, 0x1f, 0x15, ++ 0x17, 0x17, 0x25, 0x3f, 0x41, 0x01, 0x00, 0x00, ++ 0x08, 0x90, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0x48, ++ 0xa8, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x0a, 0x72, 0x12, 0x0c, 0x04, ++ 0x0c, 0x0a, 0x12, 0x7d, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7c, 0x07, 0x04, 0x3c, 0x27, 0x20, 0x3c, ++ 0x24, 0x24, 0x04, 0x04, 0x0b, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x88, 0x90, 0x50, ++ 0x20, 0x20, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x04, 0x17, ++ 0x16, 0x16, 0x27, 0x2a, 0x48, 0x51, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xa8, ++ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x02, 0x12, ++ 0x12, 0x12, 0x24, 0x24, 0x49, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x20, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x02, 0x1a, 0x06, ++ 0x01, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0xa0, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x01, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11, ++ 0x11, 0x10, 0x1c, 0x61, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50, ++ 0x30, 0x20, 0x30, 0x48, 0xfc, 0x04, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x17, 0x7f, ++ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50, ++ 0x30, 0x10, 0x28, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x0f, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xe0, 0x00, 0xfc, 0x00, 0xe0, 0x00, 0xe0, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x00, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x25, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x10, 0x20, ++ 0xc8, 0x10, 0x64, 0x08, 0x30, 0xc0, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x48, ++ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x55, 0x15, ++ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xe8, 0x28, ++ 0x28, 0xe8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x1f, ++ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4a, 0x49, 0x49, 0x48, 0x4f, ++ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x27, 0x24, ++ 0x24, 0x27, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xc8, 0x48, ++ 0x48, 0xc8, 0x48, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x03, 0x05, 0x05, 0x09, 0x0d, 0x19, ++ 0x69, 0x09, 0x0a, 0x0a, 0x0f, 0x18, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, ++ 0x00, 0x00, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x20, 0x3f, 0x40, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xf0, 0x90, 0xf0, ++ 0x90, 0xf0, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x7c, 0x05, 0x05, 0x3d, 0x25, 0x21, 0x3d, ++ 0x25, 0x25, 0x05, 0x06, 0x0b, 0x34, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x68, 0x58, 0x7c, 0x94, 0x14, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x3e, ++ 0x22, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x20, 0x12, 0x12, 0x42, 0x2f, 0x22, 0x02, 0x0f, ++ 0x19, 0x19, 0x2f, 0x29, 0x40, 0x41, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48, ++ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x0a, 0x33, 0x14, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x68, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00, ++ 0x10, 0x55, 0x35, 0x39, 0x17, 0x7d, 0x11, 0x1b, ++ 0x36, 0x36, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8, ++ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3d, ++ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x88, 0xfc, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3d, ++ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8, ++ 0x88, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x3e, ++ 0x22, 0x22, 0x22, 0x3f, 0x23, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0x88, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x05, 0x09, ++ 0x0d, 0x19, 0x69, 0x0a, 0x0b, 0x1c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xf0, 0x50, 0x50, ++ 0x50, 0x50, 0x68, 0x58, 0xf4, 0x14, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x10, ++ 0x12, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0xf0, 0x08, 0xf8, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3e, 0x00, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x09, 0x28, 0x2f, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x74, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, ++ 0x1c, 0x17, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc, ++ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x2a, 0x2f, ++ 0x3a, 0x2f, 0x2f, 0x4a, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8, ++ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x01, 0x3e, 0x22, ++ 0x3e, 0x22, 0x14, 0x16, 0x18, 0x63, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, 0x88, ++ 0x50, 0x70, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x02, 0x3f, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04, ++ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, ++ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x57, 0x11, ++ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x01, 0x7f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x12, 0x12, 0x13, 0x10, 0x1f, 0x10, ++ 0x00, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0, 0x10, ++ 0x10, 0xfc, 0x00, 0x60, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x1f, 0x04, 0x04, 0x7f, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xfc, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x48, 0x0f, 0x14, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, ++ 0xf0, 0x10, 0xfc, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x48, 0x08, 0x10, 0x17, 0x30, ++ 0x51, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00, ++ 0x40, 0x50, 0x90, 0xa0, 0x50, 0x88, 0xf4, 0x84, ++ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x12, 0x12, 0x23, 0x4d, 0x09, 0x17, 0x11, 0x35, ++ 0x55, 0x15, 0x15, 0x15, 0x1e, 0x10, 0x00, 0x00, ++ 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28, 0x28, ++ 0xe8, 0x28, 0x78, 0xa0, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x18, 0x35, 0x34, 0x30, 0x57, ++ 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1c, 0x1a, 0x1b, ++ 0x28, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x37, ++ 0x30, 0x57, 0x55, 0x17, 0x14, 0x14, 0x00, 0x00, ++ 0x80, 0x40, 0xb0, 0xfc, 0xb0, 0x50, 0xb0, 0xf0, ++ 0x80, 0xf8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x7a, 0x17, 0x12, 0x12, 0x7f, 0x15, ++ 0x15, 0x15, 0x1f, 0x64, 0x01, 0x02, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0x48, ++ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08, ++ 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20, ++ 0xf0, 0x0c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3f, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x00, 0xf8, 0x08, ++ 0x08, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x3b, 0x00, 0x7d, 0x03, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3f, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x90, 0xfc, 0xb0, 0xfc, 0x20, 0xf8, 0xf8, 0x20, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x3f, ++ 0x37, 0x27, 0x3f, 0x23, 0x3e, 0x22, 0x00, 0x00, ++ 0x80, 0xb8, 0xa8, 0xa8, 0xe8, 0xb8, 0xa8, 0xe8, ++ 0x78, 0x68, 0xe8, 0x48, 0x48, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x01, ++ 0x02, 0x04, 0x08, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xc0, 0x00, ++ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x04, 0x08, 0x14, 0x22, ++ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x50, 0x48, 0x48, ++ 0x80, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x32, 0x55, 0x11, ++ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x28, 0x28, 0x20, ++ 0xc0, 0xc0, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x09, 0x08, 0x08, 0x17, 0x11, 0x31, 0x51, 0x12, ++ 0x14, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x09, 0x08, 0x0c, 0x17, 0x34, 0x54, 0x15, 0x16, ++ 0x17, 0x14, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00, ++ 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0x20, 0x20, ++ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x51, 0x11, ++ 0x17, 0x10, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x20, ++ 0xfc, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x04, 0x04, 0x08, 0x08, 0x11, 0x21, 0x41, ++ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0xc0, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, ++ 0x40, 0x20, 0x10, 0x70, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7c, 0x13, 0x10, 0x10, 0x10, ++ 0x10, 0x15, 0x19, 0x61, 0x02, 0x04, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x23, 0x52, ++ 0x0c, 0x04, 0x0a, 0x12, 0x21, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x12, 0x22, 0x42, 0x03, ++ 0x04, 0x05, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, ++ 0x88, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x13, 0x12, 0x13, 0x12, 0x13, 0x10, ++ 0x13, 0x10, 0x2f, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf0, 0x20, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x04, 0x3f, 0x20, 0x20, 0x27, 0x24, ++ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, ++ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x13, ++ 0x12, 0x12, 0x22, 0x22, 0x43, 0x02, 0x00, 0x00, ++ 0x38, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4e, 0x4a, 0x4a, ++ 0x4b, 0x7b, 0x4a, 0x42, 0x02, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0x40, 0x40, 0xfc, 0xa0, ++ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x10, 0x7c, 0x11, 0x11, 0x11, ++ 0x11, 0x1d, 0x62, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12, ++ 0x12, 0x1e, 0x64, 0x04, 0x08, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x10, 0x10, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3e, 0x02, 0x04, 0x04, 0x08, 0x08, 0x0e, ++ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07, ++ 0x18, 0x60, 0x1f, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xe0, ++ 0x40, 0x80, 0xf8, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x42, 0x7f, 0x02, 0x04, ++ 0x04, 0x08, 0x11, 0x21, 0x4f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x80, ++ 0x80, 0x80, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x00, 0x7c, 0x10, 0x10, 0x11, 0x11, ++ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x0f, ++ 0x10, 0x6f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0xe0, ++ 0x50, 0xcc, 0x40, 0x10, 0x10, 0xf0, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04, 0x7f, ++ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x11, 0x11, 0x22, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x20, 0x10, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10, ++ 0x17, 0x10, 0x11, 0x21, 0x22, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, ++ 0xf0, 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10, ++ 0x17, 0x1c, 0x23, 0x26, 0x58, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, ++ 0xf0, 0xc8, 0xb0, 0x90, 0x8c, 0x80, 0x00, 0x00, ++ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x22, 0x20, 0x3e, ++ 0x22, 0x02, 0x02, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, ++ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x11, 0x39, 0x35, 0x35, 0x51, ++ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x18, 0x37, 0x35, 0x31, 0x50, ++ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0x40, 0xfc, 0x00, 0x00, 0xf8, ++ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x12, 0x12, 0x34, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x12, 0x14, 0x13, 0x12, ++ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x10, 0x11, 0x16, ++ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7e, 0x11, 0x11, 0x12, 0x10, ++ 0x14, 0x18, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x06, 0x38, ++ 0x20, 0x20, 0x26, 0x38, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x11, 0x09, ++ 0x09, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x10, 0x10, ++ 0x20, 0xfc, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x19, 0x05, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x09, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1d, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94, ++ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37, ++ 0x36, 0x51, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7f, 0x08, 0x1b, 0x1c, 0x1b, ++ 0x2b, 0x29, 0x49, 0x0b, 0x09, 0x09, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x41, 0x27, 0x21, 0x01, 0x01, ++ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20, ++ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0f, 0x00, ++ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x21, 0x02, 0x17, ++ 0x18, 0x13, 0x22, 0x22, 0x42, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x10, 0xec, ++ 0x20, 0xe0, 0x20, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x11, 0x0f, 0x09, 0x47, 0x21, 0x2f, 0x00, 0x13, ++ 0x12, 0x13, 0x22, 0x2f, 0x42, 0x42, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80, 0xf0, ++ 0x90, 0xf0, 0x90, 0xfc, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21, 0x3f, ++ 0x21, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8, ++ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x13, 0x12, 0x23, 0x3e, 0x67, ++ 0x26, 0x25, 0x3c, 0x20, 0x23, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x1b, 0x70, 0x11, 0x11, 0x7d, 0x10, 0x1b, ++ 0x36, 0x36, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7f, 0x12, 0x1a, ++ 0x37, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00, ++ 0x40, 0xfc, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, ++ 0x24, 0xa8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x90, ++ 0x90, 0xa0, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x90, 0x88, 0x94, 0x94, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f, ++ 0x13, 0x3b, 0x37, 0x37, 0x52, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58, ++ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x08, ++ 0x1d, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, 0x48, ++ 0xfc, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x0f, ++ 0x72, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x20, 0xfc, 0x80, 0x00, 0xf8, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24, ++ 0x3c, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xa0, 0xa0, ++ 0xa0, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3c, 0x25, 0x26, ++ 0x3f, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa8, 0x18, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x07, 0x04, 0x07, 0x3f, 0x27, 0x47, ++ 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0xc0, 0x40, 0xc0, 0xfc, 0xc8, 0xc0, ++ 0xe0, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x7f, ++ 0x12, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x70, 0x50, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x08, 0x08, ++ 0x07, 0x09, 0x09, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0xf0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x09, 0x10, 0x24, 0x04, 0x0b, 0x08, 0x18, ++ 0x28, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x12, 0x13, 0x24, 0x49, 0x0f, 0x15, 0x37, 0x55, ++ 0x17, 0x11, 0x1f, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xbc, 0x80, 0x00, 0xfc, 0x48, 0xc8, 0x48, ++ 0xc8, 0x08, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x3d, ++ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x25, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x25, ++ 0x25, 0x3d, 0x19, 0x17, 0x25, 0x41, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x7f, 0x12, 0x11, 0x22, 0x52, ++ 0x0c, 0x04, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x24, 0xfc, 0x28, 0x28, 0xfc, 0x20, 0xf8, ++ 0x88, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x80, 0xa0, 0xa0, 0xa0, ++ 0xa0, 0xb0, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x26, 0x23, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, ++ 0x20, 0x30, 0x48, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x1b, 0x26, 0x26, 0x7b, 0x12, 0x7f, ++ 0x13, 0x57, 0x3b, 0x33, 0x1e, 0x62, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58, ++ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x22, ++ 0x2f, 0x30, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88, ++ 0xe8, 0x18, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x32, 0x28, 0x27, 0x24, ++ 0x24, 0x24, 0x3b, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10, 0xf8, ++ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x07, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, ++ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, ++ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x20, 0x10, 0x11, 0x0f, 0x45, 0x25, 0x25, 0x05, ++ 0x15, 0x17, 0x39, 0x22, 0x42, 0x44, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x32, 0x2a, 0x2c, 0x3f, 0x24, 0x35, ++ 0x35, 0x35, 0x3f, 0x31, 0x20, 0x21, 0x00, 0x00, ++ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, ++ 0x0c, 0x12, 0x16, 0x79, 0x01, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x7f, 0x04, ++ 0x07, 0x08, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xfc, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x00, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x17, 0x11, 0x11, 0x7d, 0x17, 0x14, 0x17, ++ 0x14, 0x1f, 0x63, 0x00, 0x07, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8, ++ 0xc8, 0x70, 0xb0, 0xe8, 0x24, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x1c, ++ 0x71, 0x12, 0x14, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8, ++ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x41, 0x21, 0x27, 0x04, 0x0f, ++ 0x10, 0x17, 0x23, 0x21, 0x46, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x08, 0xf8, ++ 0xc8, 0x70, 0xf0, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x20, 0x7f, ++ 0x07, 0x3a, 0x1d, 0x06, 0x38, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0x08, 0xf8, ++ 0x88, 0xd0, 0xe0, 0xb0, 0x8c, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x07, 0x07, 0x07, 0x3f, 0x09, 0x7f, ++ 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0xc0, 0xc0, 0xc0, 0xf8, 0x20, 0xfc, ++ 0xf8, 0xf8, 0xa8, 0xf8, 0xfc, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x08, ++ 0x1e, 0x12, 0x2d, 0x44, 0x1b, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0x2c, 0xb4, 0x64, 0xfc, ++ 0x74, 0xac, 0x2c, 0x38, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x10, 0x1f, ++ 0x12, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x08, 0x0a, 0x32, 0x0c, 0x05, ++ 0x09, 0x12, 0x26, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f, 0x00, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x21, 0x2f, 0x21, ++ 0x21, 0x21, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0x08, 0xe8, 0x08, ++ 0x48, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x26, 0x79, ++ 0x08, 0x7f, 0x1c, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x10, 0xd0, 0x50, 0x7c, 0x90, 0x10, 0xfc, 0x00, ++ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x08, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x7f, 0x00, ++ 0x3e, 0x22, 0x22, 0x3f, 0x21, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x01, 0x3f, ++ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x4b, 0x30, 0x1f, 0x30, 0x4b, 0x08, 0x1b, ++ 0x28, 0x4b, 0x0a, 0x0b, 0x32, 0x10, 0x00, 0x00, ++ 0x10, 0x98, 0x14, 0xd4, 0x10, 0xfc, 0x10, 0x90, ++ 0x10, 0xa8, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00, ++ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x04, 0x17, ++ 0x15, 0x15, 0x25, 0x29, 0x49, 0x56, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x20, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x28, ++ 0x3f, 0x28, 0x29, 0x28, 0x28, 0x5b, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40, ++ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00, ++ 0x22, 0x14, 0x7f, 0x49, 0x7f, 0x49, 0x7f, 0x00, ++ 0x3e, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58, ++ 0x58, 0x88, 0x88, 0xec, 0x8c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x12, 0x22, 0x44, 0x08, 0x01, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x1a, 0x34, 0x35, 0x32, 0x50, ++ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0, ++ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x3f, 0x20, 0x4f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x08, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x44, 0x28, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x21, 0x10, 0x10, 0x00, 0x00, 0x70, 0x11, ++ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0xa0, 0x20, ++ 0x10, 0x10, 0x08, 0x04, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x24, 0x27, 0x24, 0x24, ++ 0x24, 0x24, 0x25, 0x26, 0x38, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0xd0, 0x60, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x27, 0x20, 0x20, 0x27, 0x39, 0x21, 0x21, ++ 0x25, 0x25, 0x1d, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x67, 0x00, 0x00, ++ 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00, ++ 0xe0, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x23, 0x23, 0x25, ++ 0x25, 0x29, 0x31, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x88, 0x48, ++ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, ++ 0x16, 0x1b, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x0c, 0x79, 0x26, 0x18, 0x6c, 0x36, 0x1a, 0x62, ++ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0xb0, 0xd8, ++ 0x84, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27, ++ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c, ++ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4, ++ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x0c, 0x78, 0x26, 0x18, 0x78, 0x1c, 0x6c, 0x14, ++ 0x65, 0x19, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa4, 0xb8, ++ 0xc8, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x70, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x70, 0x80, 0x80, 0xfc, 0x40, 0x24, 0x1c, 0xf4, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80, ++ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x09, 0x7f, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4, ++ 0x44, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36, ++ 0x36, 0x53, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8, ++ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12, ++ 0x12, 0x13, 0x22, 0x22, 0x43, 0x4c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x40, ++ 0x48, 0xf0, 0x40, 0x44, 0xc4, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a, ++ 0x2b, 0x4a, 0x12, 0x12, 0x23, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf8, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f, ++ 0x11, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe8, ++ 0x08, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x1a, ++ 0x14, 0x27, 0x7b, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x70, ++ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x11, ++ 0x11, 0x12, 0x14, 0x18, 0x13, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0xf8, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x09, 0x09, 0x04, 0x04, 0x02, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x4f, 0x49, 0x49, 0x4a, 0x4c, ++ 0x49, 0x7b, 0x4c, 0x40, 0x01, 0x0e, 0x00, 0x00, ++ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0, ++ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x01, 0x10, 0x13, 0x10, 0x55, 0x54, 0x57, 0x54, ++ 0x55, 0x7d, 0x46, 0x44, 0x0b, 0x00, 0x00, 0x00, ++ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x04, 0x07, ++ 0x08, 0x08, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x08, 0x0f, 0x10, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x04, 0x14, ++ 0x18, 0x10, 0x20, 0x20, 0x41, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x50, 0x48, 0x48, 0x4c, 0x54, ++ 0xd0, 0x60, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x7c, 0x13, 0x10, 0x11, 0x7c, 0x17, ++ 0x11, 0x13, 0x1a, 0x64, 0x0b, 0x00, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, ++ 0x00, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1f, 0x33, ++ 0x52, 0x12, 0x12, 0x1e, 0x10, 0x03, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c, ++ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x02, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40, ++ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x09, 0x49, 0x22, 0x2c, 0x08, 0x17, 0x21, ++ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x4c, 0xd4, 0x60, 0x80, 0x00, ++ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x19, 0x15, 0x23, 0x41, ++ 0x3f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x04, ++ 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x16, 0x19, ++ 0x10, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x90, 0x90, 0x98, 0xa4, ++ 0xc4, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x12, 0x1c, ++ 0x70, 0x13, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x50, 0x50, 0x50, 0x58, 0xe4, 0x44, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x3f, 0x53, 0x12, ++ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00, ++ 0x08, 0x0a, 0x0a, 0x13, 0x12, 0x31, 0x53, 0x16, ++ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x98, 0x20, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11, ++ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x12, ++ 0x1e, 0x1e, 0x12, 0x1e, 0x73, 0x02, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, ++ 0xf8, 0x48, 0x30, 0x70, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x00, 0x3e, ++ 0x22, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00, ++ 0x80, 0x90, 0x88, 0x88, 0x80, 0xfc, 0x48, 0x48, ++ 0x50, 0x30, 0x20, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f, ++ 0x05, 0x19, 0x6f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc, ++ 0x40, 0x30, 0xec, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, ++ 0x02, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, ++ 0x00, 0xfc, 0x20, 0x40, 0xe0, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x21, 0x7f, 0x08, 0x04, 0x7f, ++ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x20, 0x40, 0xfc, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x06, 0x79, 0x49, 0x2a, 0x24, 0x08, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24, ++ 0x44, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, ++ 0x02, 0x0c, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0xa0, 0xc0, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x10, 0x1f, ++ 0x70, 0x10, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0x20, 0x40, 0x40, 0xfc, ++ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x09, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x48, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x3f, 0x00, 0x1f, 0x10, 0x1f, ++ 0x12, 0x17, 0x16, 0x2a, 0x32, 0x46, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x50, 0xfc, 0x40, 0xc8, ++ 0x28, 0x30, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x41, 0x20, 0x20, 0x07, 0x09, ++ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xe0, 0x1c, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x11, 0x22, 0x11, 0x08, 0x01, 0x01, ++ 0x11, 0x12, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x88, 0x88, 0x10, 0x20, 0x10, 0x88, 0x00, 0x08, ++ 0x08, 0x90, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x11, 0x08, 0x08, 0x01, 0x7f, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x18, 0xe8, 0x08, 0x10, 0xa0, 0x40, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x16, 0x10, 0x16, ++ 0x12, 0x17, 0x28, 0x2f, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xb0, 0x80, 0xb0, ++ 0x80, 0xf0, 0x80, 0xf8, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x08, 0x08, 0x10, 0x1f, 0x32, ++ 0x52, 0x13, 0x12, 0x1e, 0x10, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x94, 0x94, 0x0c, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x70, 0x3f, ++ 0x02, 0x07, 0x1c, 0x64, 0x07, 0x04, 0x00, 0x00, ++ 0x80, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0xf8, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x0f, 0x11, 0x2a, 0x64, 0x18, 0x1f, 0x60, ++ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0x10, 0xec, 0x00, ++ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x06, 0x78, 0x17, ++ 0x10, 0x1f, 0x15, 0x15, 0x29, 0x43, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x80, 0xc0, 0x3c, 0xd0, ++ 0x10, 0xf0, 0x90, 0x50, 0x50, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x08, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x70, 0x90, 0x10, 0x20, 0x40, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x08, 0x7f, 0x08, ++ 0x19, 0x36, 0x52, 0x15, 0x19, 0x60, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x04, 0x1f, 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x15, ++ 0x1f, 0x15, 0x1f, 0x7f, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0x48, ++ 0x50, 0x30, 0x24, 0xd4, 0x8c, 0x04, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x2a, 0x32, 0x2d, 0x25, 0x26, ++ 0x27, 0x24, 0x39, 0x21, 0x22, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xe8, 0xb0, 0x90, 0xf8, 0x04, ++ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x11, 0x0e, 0x1b, 0x71, 0x1f, ++ 0x11, 0x1f, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x08, 0x48, 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x0c, 0x08, 0x0b, ++ 0x18, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x30, 0x30, 0x50, ++ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x02, 0x3e, 0x02, ++ 0x3e, 0x02, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x40, 0x78, 0x40, ++ 0x78, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x22, 0x3e, 0x22, ++ 0x22, 0x3e, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50, ++ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x03, 0x21, 0x11, 0x11, 0x01, 0x0f, 0x10, ++ 0x10, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, ++ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, ++ 0x11, 0x1e, 0x62, 0x04, 0x0b, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25, ++ 0x25, 0x25, 0x3a, 0x22, 0x25, 0x2e, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x10, ++ 0x1d, 0x73, 0x0d, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xa0, ++ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x10, 0x18, 0x35, 0x35, ++ 0x33, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0xd4, 0xd4, 0x7c, 0x54, ++ 0xd4, 0xfc, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x02, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x07, 0x0c, ++ 0x17, 0x64, 0x07, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x20, 0xc0, 0x60, 0x10, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x02, 0x01, 0x79, 0x4b, 0x48, 0x48, 0x48, 0x4f, ++ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x2a, 0x2a, 0x2a, 0x2b, 0x2a, ++ 0x2a, 0x2a, 0x3e, 0x22, 0x20, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x50, 0x88, 0xfc, 0x08, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x13, 0x17, 0x10, ++ 0x17, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x60, 0x90, 0x08, 0xfc, 0x08, ++ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3d, 0x27, 0x64, ++ 0x25, 0x25, 0x3d, 0x21, 0x21, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x60, 0x90, 0x10, 0xfc, 0x08, ++ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x3e, 0x2f, 0x3e, 0x6f, 0x08, ++ 0x0f, 0x0f, 0x0f, 0x0f, 0x2a, 0x45, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x70, 0xfc, 0x70, 0xe0, 0x20, ++ 0xe0, 0xe0, 0xfc, 0xf8, 0x88, 0x70, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x58, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80, ++ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x22, 0x22, 0x22, 0x26, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4c, 0x48, 0x48, ++ 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x80, ++ 0x80, 0xf8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x11, 0x13, 0x19, ++ 0x72, 0x14, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0xfc, ++ 0x40, 0x78, 0x40, 0x78, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x7c, 0x48, ++ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x7c, 0x40, ++ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, ++ 0x3e, 0x2a, 0x28, 0x08, 0x11, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x17, 0x36, ++ 0x32, 0x52, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x0a, 0x12, 0x07, ++ 0x19, 0x61, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xfc, ++ 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x01, 0x1f, ++ 0x11, 0x13, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xfc, 0x00, 0xf0, ++ 0x10, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x22, 0x4c, 0x03, ++ 0x02, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x48, 0x80, 0x40, ++ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0xfc, 0x00, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x29, 0x49, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x88, 0x48, 0x48, 0x10, 0x60, 0x40, 0xfc, 0x90, ++ 0x90, 0xd0, 0x20, 0x30, 0xc8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x49, 0x09, 0x7f, ++ 0x09, 0x09, 0x09, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x00, 0x7f, ++ 0x04, 0x17, 0x14, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0xc0, ++ 0x40, 0x44, 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12, 0x7f, ++ 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc, ++ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x3f, ++ 0x35, 0x55, 0x55, 0x17, 0x14, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x28, 0x4f, 0x19, 0x66, 0x14, 0x1f, ++ 0x60, 0x3f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x90, 0x60, 0x30, 0xec, ++ 0x00, 0xf8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x7c, 0x12, 0x11, 0x10, 0x14, ++ 0x18, 0x71, 0x12, 0x10, 0x10, 0x33, 0x00, 0x00, ++ 0x24, 0x24, 0x48, 0x90, 0x48, 0xa4, 0x40, 0x78, ++ 0x88, 0x90, 0x50, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x1f, 0x1c, ++ 0x77, 0x17, 0x14, 0x17, 0x1c, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80, ++ 0xf8, 0xc8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x13, 0x7d, 0x13, 0x16, 0x11, 0x1b, ++ 0x74, 0x13, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf8, 0x68, 0xf0, 0x90, 0xf8, ++ 0x04, 0xf8, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a, ++ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x02, 0x02, 0x34, 0x0c, 0x1a, 0x69, 0x0a, 0x7f, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x28, 0x31, 0x29, ++ 0x25, 0x25, 0x25, 0x3a, 0x25, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xfc, 0x88, 0x50, 0xfc, 0x60, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7c, 0x14, 0x15, 0x23, 0x48, 0x08, ++ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x02, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x1d, ++ 0x01, 0x1d, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x70, ++ 0x00, 0x70, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x7c, 0x14, 0x17, 0x12, 0x1a, ++ 0x73, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00, ++ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x28, 0x28, ++ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, ++ 0x50, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x12, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x7a, 0x4a, ++ 0x4a, 0x4b, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x05, 0x19, 0x69, 0x09, 0x15, 0x2b, ++ 0x09, 0x15, 0x23, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x30, 0x2c, 0x20, 0x50, 0xa8, ++ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x04, 0x3f, 0x02, 0x7f, 0x04, 0x09, ++ 0x16, 0x61, 0x0e, 0x00, 0x01, 0x1e, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0x90, 0x00, 0xfc, 0xc0, 0x20, ++ 0x50, 0x8c, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, ++ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x51, ++ 0x16, 0x11, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0x60, 0x90, 0xe8, 0x40, 0xfc, 0xa0, 0x10, ++ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x12, 0x12, 0x17, 0x7a, 0x12, 0x1f, 0x10, 0x1f, ++ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00, ++ 0xa0, 0xa0, 0xe0, 0xbc, 0xa8, 0xc8, 0x28, 0xa8, ++ 0xb0, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x14, 0x14, 0x3f, 0x14, 0x14, 0x7f, 0x01, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1b, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc, ++ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x17, 0x36, 0x3d, 0x51, 0x16, ++ 0x11, 0x17, 0x18, 0x29, 0x26, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xe8, 0x90, 0xa8, 0x44, 0x48, ++ 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x12, 0x12, 0x17, ++ 0x18, 0x17, 0x20, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x80, 0x80, 0xf8, ++ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x4f, 0x08, 0x0f, 0x0f, 0x0f, ++ 0x7f, 0x16, 0x63, 0x3f, 0x0d, 0x31, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, ++ 0xfc, 0x90, 0x6c, 0xf0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x1f, 0x02, 0x05, 0x19, 0x6f, ++ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x80, 0x40, 0x30, 0xec, ++ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x01, 0x3b, 0x01, 0x7f, 0x02, 0x3f, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x26, 0x00, 0x00, ++ 0x10, 0xf8, 0x10, 0xfc, 0xa8, 0xf4, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x0c, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x7f, 0x0a, 0x1f, 0x68, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xe8, 0x24, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0xb0, 0x28, 0xfc, 0x50, 0x54, 0xac, 0x38, ++ 0x48, 0x50, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x0f, 0x1f, 0x72, 0x0d, 0x33, 0x0d, 0x77, ++ 0x04, 0x07, 0x07, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x30, 0x48, 0x84, 0x60, 0xdc, ++ 0x40, 0xc0, 0xd0, 0xa0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x3e, 0x7f, 0x09, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x27, 0x24, 0x57, ++ 0x18, 0x08, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00, ++ 0x50, 0x48, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x28, 0x28, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x50, 0x17, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x20, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x17, 0x10, 0x33, 0x52, 0x12, ++ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0x48, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x52, 0x13, ++ 0x12, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x25, 0x25, 0x27, ++ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x10, ++ 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, ++ 0x11, 0x0a, 0x06, 0x07, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x00, 0x00, 0x00, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7f, 0x55, ++ 0x55, 0x7f, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0x74, 0x04, 0x74, 0x54, 0x54, ++ 0x54, 0x74, 0x54, 0x04, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x44, 0x48, 0x48, ++ 0x50, 0x60, 0x40, 0x7f, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x98, ++ 0x78, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x24, 0x27, 0x24, ++ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x31, 0x0b, 0x02, 0x0c, 0x11, 0x66, 0x01, ++ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0xc0, 0x30, 0x0c, 0x00, ++ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x7f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x13, ++ 0x14, 0x1d, 0x23, 0x22, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xc8, ++ 0xf0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20, ++ 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xb0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01, ++ 0x04, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00, ++ 0x90, 0x88, 0x04, 0x24, 0x20, 0xe0, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x10, 0x1d, ++ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x00, 0x18, 0xe0, 0x00, 0x04, 0xfc, 0x00, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x04, ++ 0x04, 0x02, 0x01, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20, ++ 0x40, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x02, 0x04, 0x09, 0x09, 0x0e, 0x78, ++ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x1c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, ++ 0x12, 0x7f, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x12, 0x1c, 0x17, ++ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0xb8, 0xe8, 0xa8, ++ 0xa8, 0xa8, 0xb8, 0xa0, 0x84, 0x7c, 0x00, 0x00, ++ 0x20, 0x20, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f, ++ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x70, 0x80, 0x08, 0x08, 0xf8, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1b, ++ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a, ++ 0x44, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, ++ 0xc0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10, ++ 0x10, 0x10, 0x10, 0x13, 0x1c, 0x60, 0x00, 0x00, ++ 0x60, 0x80, 0x00, 0x00, 0x00, 0x78, 0x80, 0x80, ++ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x12, 0x52, 0x34, 0x27, 0x35, 0x55, 0x17, 0x34, ++ 0x37, 0x55, 0x15, 0x17, 0x14, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x5c, 0x50, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x0c, 0x1a, ++ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e, ++ 0x15, 0x15, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, ++ 0x60, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x1c, 0x03, 0x01, 0x02, 0x7f, ++ 0x01, 0x09, 0x09, 0x11, 0x21, 0x01, 0x00, 0x00, ++ 0x00, 0x20, 0x20, 0x40, 0x80, 0x20, 0x18, 0xe4, ++ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0, ++ 0x90, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2f, 0x72, 0x0c, ++ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x40, 0xc0, ++ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x27, 0x3d, ++ 0x24, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x25, 0x25, 0x3c, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0x18, 0xe0, 0x04, 0x04, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x01, 0x01, ++ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x40, 0x30, 0xc8, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19, ++ 0x35, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28, ++ 0x28, 0xe8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c, ++ 0x03, 0x3d, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x20, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0xe0, 0xa0, ++ 0x90, 0xb0, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0xb0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00, ++ 0x00, 0x3e, 0x01, 0x7d, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa4, 0x28, 0xb0, 0x50, 0x48, ++ 0x84, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x09, 0x0a, 0x04, 0x19, 0x6f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0xe0, 0x30, 0xec, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3c, 0x27, ++ 0x25, 0x3d, 0x1a, 0x14, 0x25, 0x42, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0a, 0x0a, 0x2a, 0x2f, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2f, 0x3b, 0x61, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x1a, 0x2a, 0x7e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x29, 0x25, 0x3f, ++ 0x23, 0x25, 0x29, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0x48, 0xf8, ++ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x0f, 0x09, 0x0f, 0x01, 0x1f, ++ 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, ++ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, ++ 0x08, 0x0a, 0x0b, 0x12, 0x12, 0x32, 0x52, 0x12, ++ 0x12, 0x12, 0x12, 0x13, 0x1c, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x90, 0x50, 0x50, 0x10, 0x10, ++ 0x10, 0x10, 0xb0, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10, ++ 0x17, 0x12, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13, ++ 0x12, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x01, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x40, 0x80, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, ++ 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x08, 0x32, 0x0c, 0x12, 0x7f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x20, 0xc8, 0x30, 0x48, 0xfc, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x10, ++ 0x1f, 0x71, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x78, 0x48, ++ 0x4f, 0x49, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x21, 0x11, 0x11, 0x02, 0x02, 0x14, ++ 0x10, 0x20, 0x20, 0x41, 0x46, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x06, ++ 0x12, 0x11, 0x21, 0x22, 0x4f, 0x40, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64, ++ 0xa8, 0x98, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x0f, 0x00, ++ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x61, 0x3f, 0x23, 0x2d, 0x2b, ++ 0x33, 0x2d, 0x25, 0x2b, 0x31, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x0c, 0xf8, 0x18, 0x68, 0x58, ++ 0x98, 0x68, 0x28, 0x58, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x3f, 0x5b, 0x15, 0x1b, 0x15, ++ 0x1b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0xf8, 0xb4, 0x70, 0xb0, 0x50, ++ 0xb0, 0xf8, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x08, 0x1f, ++ 0x28, 0x4f, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x7c, 0x10, 0x17, 0x11, 0x21, 0x39, 0x6e, ++ 0x29, 0x28, 0x39, 0x2a, 0x27, 0x00, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x10, 0x10, 0x54, 0x64, ++ 0x98, 0x88, 0x10, 0xa8, 0xfc, 0x44, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x09, ++ 0x09, 0x11, 0x11, 0x21, 0x41, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x20, ++ 0x10, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f, ++ 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0, ++ 0x20, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x1f, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3d, 0x24, 0x27, ++ 0x3c, 0x27, 0x25, 0x3c, 0x20, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x10, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x02, 0x04, 0x39, 0x08, 0x08, 0x7e, 0x09, 0x08, ++ 0x3e, 0x23, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x21, 0x21, 0x02, 0x0c, ++ 0x08, 0x08, 0x10, 0x10, 0x23, 0x2c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x90, 0x50, ++ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x1f, ++ 0x14, 0x17, 0x24, 0x24, 0x47, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xc8, 0x70, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x3f, 0x04, ++ 0x04, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x20, ++ 0x20, 0x20, 0x14, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x39, 0x07, 0x7a, 0x02, 0x3f, 0x00, 0x3b, ++ 0x02, 0x3b, 0x2a, 0x2b, 0x3a, 0x20, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x28, 0xa8, ++ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x00, 0x7d, 0x55, 0x55, 0x55, 0x7d, 0x55, ++ 0x55, 0x55, 0x7d, 0x42, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1f, 0x28, 0x24, 0x45, 0x00, ++ 0x1f, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0x90, 0x10, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x01, 0x7f, ++ 0x00, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00, ++ 0xfc, 0x80, 0x60, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x7c, 0x04, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x3c, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x47, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x09, 0x7f, 0x22, 0x12, 0x14, ++ 0x7f, 0x08, 0x3e, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, ++ 0x70, 0xb0, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x7f, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, ++ 0x00, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x15, 0x7b, 0x2b, 0x29, 0x29, ++ 0x7b, 0x55, 0x1a, 0x12, 0x24, 0x49, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0xa0, 0x20, ++ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x7f, 0x02, 0x04, 0x3f, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x80, 0x60, 0x90, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x09, 0x7f, 0x03, 0x0d, 0x71, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x60, 0x1c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x10, ++ 0x14, 0x12, 0x22, 0x20, 0x4f, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa8, 0xa0, ++ 0xa8, 0xa8, 0xb0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x00, 0x13, ++ 0x1e, 0x11, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58, ++ 0x4c, 0x50, 0xe0, 0x50, 0x4c, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0a, 0x1c, ++ 0x2f, 0x48, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40, ++ 0xfc, 0xc0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x06, 0x38, 0x3f, 0x24, 0x25, 0x4f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x30, 0xc0, 0xfc, 0x90, 0x10, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x21, 0x41, 0x1f, 0x01, 0x0f, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xe0, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x22, 0x14, ++ 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x50, 0x50, ++ 0x48, 0x44, 0x44, 0x44, 0x58, 0x40, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0c, 0x17, 0x14, ++ 0x37, 0x55, 0x14, 0x15, 0x16, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0x40, 0xf8, 0x90, 0xe0, ++ 0x5c, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13, ++ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00, ++ 0x08, 0x08, 0x2f, 0x28, 0x28, 0x2e, 0x71, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00, ++ 0x00, 0x00, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x10, ++ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x14, 0x12, 0x1f, 0x13, ++ 0x1c, 0x1f, 0x11, 0x23, 0x20, 0x4f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x90, 0xa0, 0xfc, 0xe0, ++ 0x98, 0xfc, 0x20, 0xa0, 0xe0, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x01, 0x14, 0x14, 0x24, 0x03, ++ 0x08, 0x36, 0x35, 0x51, 0x55, 0x0c, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0x90, 0x88, 0x28, 0xe0, ++ 0x20, 0xd8, 0xd4, 0x44, 0x50, 0x30, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f, ++ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x19, 0x61, 0x0f, 0x01, 0x3f, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x30, 0x0c, 0xe0, 0x00, 0xf8, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x44, 0x07, 0x04, 0x07, 0x04, ++ 0x00, 0x7f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0xc0, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x04, 0x08, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x73, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0xa8, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x16, 0x11, 0x10, 0x1f, ++ 0x70, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x50, 0x4c, 0xf0, 0x40, 0xfc, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36, ++ 0x35, 0x55, 0x14, 0x24, 0x24, 0x4d, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x48, 0x48, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x7e, 0x08, 0x7e, ++ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x18, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, ++ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x07, 0x1c, 0x67, ++ 0x04, 0x07, 0x04, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x10, 0xf0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x09, 0x0c, 0x1a, ++ 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x24, ++ 0x28, 0x78, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x07, ++ 0x1c, 0x67, 0x04, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x39, 0x03, 0x7e, 0x03, 0x3a, 0x03, 0x3a, ++ 0x07, 0x38, 0x29, 0x2e, 0x38, 0x20, 0x00, 0x00, ++ 0x88, 0x08, 0xc8, 0x48, 0xfc, 0x48, 0xe8, 0x78, ++ 0xd8, 0xc8, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x13, 0x12, 0x03, 0x02, 0x72, 0x12, ++ 0x14, 0x15, 0x19, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x90, ++ 0x00, 0xa8, 0x54, 0x54, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x48, 0x48, ++ 0x50, 0x60, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x06, 0x06, ++ 0x0a, 0x0a, 0x12, 0x22, 0x42, 0x06, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x17, 0x11, 0x31, 0x5f, 0x10, ++ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x24, 0x42, ++ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x09, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x29, 0x4a, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x88, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x3f, 0x24, 0x3f, 0x1e, 0x13, ++ 0x1e, 0x12, 0x1e, 0x14, 0x1e, 0x61, 0x00, 0x00, ++ 0x78, 0x90, 0x20, 0xf8, 0x48, 0xf8, 0x10, 0xfc, ++ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0xc0, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x03, 0x0c, 0x79, 0x49, 0x2a, 0x2c, 0x7f, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc, ++ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x7f, 0x02, ++ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xfc, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x28, 0x48, 0x0e, 0x08, 0x7f, ++ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x19, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x88, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x02, 0x02, 0x3e, 0x20, 0x3e, 0x22, ++ 0x12, 0x0e, 0x1a, 0x62, 0x02, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88, ++ 0x48, 0x38, 0x68, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x7f, 0x04, 0x1f, 0x64, ++ 0x07, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x02, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x1f, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x13, 0x12, 0x1e, 0x12, 0x12, 0x1e, ++ 0x12, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50, ++ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x00, 0x7f, 0x00, ++ 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x3f, 0x01, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x03, ++ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80, ++ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x1e, 0x24, 0x27, 0x54, ++ 0x08, 0x09, 0x0a, 0x14, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x48, 0x33, 0x12, 0x34, 0x48, 0x0f, 0x18, ++ 0x29, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x10, 0xfc, 0x10, ++ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7f, 0x10, ++ 0x10, 0x11, 0x1e, 0x64, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x19, 0x70, 0x17, 0x10, 0x7f, 0x12, 0x1b, ++ 0x36, 0x37, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00, ++ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, ++ 0x00, 0x3b, 0x28, 0x2f, 0x38, 0x2b, 0x2a, 0x3b, ++ 0x2a, 0x2b, 0x28, 0x2b, 0x28, 0x4f, 0x00, 0x00, ++ 0x08, 0xf0, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, ++ 0x08, 0x0b, 0x3d, 0x09, 0x09, 0x7f, 0x09, 0x29, ++ 0x2f, 0x29, 0x3b, 0x28, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x78, 0xc8, 0x68, 0x58, 0xd0, ++ 0x58, 0x68, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x15, ++ 0x16, 0x14, 0x27, 0x24, 0x47, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58, ++ 0x38, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x1f, ++ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x17, 0x17, 0x3b, 0x50, 0x17, ++ 0x10, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0x58, 0x00, 0xfc, ++ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x00, 0x01, 0x3e, 0x12, 0x09, 0x3f, 0x20, 0x5f, ++ 0x04, 0x02, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x08, 0xe0, ++ 0x20, 0x40, 0x80, 0x80, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48, ++ 0x48, 0x79, 0x49, 0x42, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, ++ 0x7f, 0x08, 0x14, 0x22, 0x42, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x20, ++ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x13, 0x12, 0x15, ++ 0x1c, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x08, 0xf0, ++ 0x90, 0xa0, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x79, 0x17, 0x10, 0x3b, 0x36, ++ 0x37, 0x54, 0x52, 0x13, 0x1e, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0xc8, 0x3c, 0xc8, 0x28, 0xd8, 0x58, ++ 0xc8, 0x48, 0x88, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x0b, 0x72, 0x14, 0x0d, 0x13, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00, ++ 0x08, 0xf4, 0x44, 0xa8, 0x90, 0xfc, 0x08, 0xf0, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x7f, ++ 0x02, 0x3f, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xfc, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, ++ 0x22, 0x24, 0x28, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, ++ 0x88, 0x48, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x05, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, ++ 0x26, 0x3c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x11, 0x1f, 0x10, ++ 0x17, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x08, 0xe8, 0x08, ++ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x4f, 0x00, 0x00, 0x7f, ++ 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xe0, 0x00, 0x00, 0xfc, ++ 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e, ++ 0x08, 0x2c, 0x2a, 0x2b, 0x4a, 0x18, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x60, 0x60, ++ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x2c, 0x2a, 0x2a, 0x48, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x08, 0x88, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0c, 0x15, 0x16, 0x34, 0x57, 0x14, ++ 0x15, 0x14, 0x15, 0x14, 0x10, 0x13, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0xe0, 0x3c, 0x40, ++ 0x90, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x4a, 0x09, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x50, 0x88, 0x04, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x13, 0x14, 0x1c, ++ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x26, 0x0a, 0x02, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x6f, ++ 0x02, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xcc, ++ 0x40, 0x78, 0x48, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0xc8, 0x30, 0x20, 0xd0, 0x08, ++ 0x64, 0x10, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x26, 0x7f, ++ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x14, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x58, ++ 0xe8, 0xf8, 0xe8, 0x58, 0x58, 0x48, 0x00, 0x00, ++ 0x00, 0x7f, 0x22, 0x16, 0x1a, 0x63, 0x06, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x58, 0x68, 0x88, 0x18, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x01, 0x7f, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x00, 0xfc, 0x80, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x0a, 0x09, 0x09, 0x08, 0x7f, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x05, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x20, 0x50, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x09, ++ 0x17, 0x61, 0x09, 0x11, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x40, 0x88, ++ 0x90, 0x60, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x04, 0x3f, 0x12, 0x7f, 0x1e, 0x1e, 0x1e, 0x12, ++ 0x17, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0x78, 0x88, 0x78, 0x70, 0x70, 0x74, ++ 0x3c, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x12, 0x1f, 0x34, 0x5f, 0x1e, 0x1f, 0x07, 0x7f, ++ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x48, 0x7c, 0xd0, 0x78, 0x78, 0xfc, 0xc0, 0xfc, ++ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x0a, 0x2a, 0x2f, ++ 0x29, 0x2b, 0x2b, 0x3d, 0x61, 0x03, 0x00, 0x00, ++ 0x10, 0x18, 0xd4, 0x14, 0x90, 0xfc, 0x90, 0x90, ++ 0x30, 0xb0, 0x70, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8, ++ 0x88, 0xf8, 0x8c, 0xf8, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x13, ++ 0x15, 0x15, 0x19, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0xe8, ++ 0x28, 0xe8, 0x28, 0x18, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14, ++ 0x18, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xfc, 0x80, 0xf0, 0x90, 0xb0, ++ 0x70, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7e, 0x18, 0x18, 0x7e, 0x5b, 0x5b, 0x5e, ++ 0x6e, 0x46, 0x7e, 0x43, 0x7f, 0x42, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00, ++ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xf8, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x60, ++ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13, ++ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x20, 0x70, 0x88, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x12, 0x11, 0x21, 0x4f, 0x08, 0x10, 0x12, 0x32, ++ 0x52, 0x12, 0x13, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0x40, 0x78, ++ 0x40, 0x40, 0x40, 0xc0, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x08, 0x0b, ++ 0x7c, 0x08, 0x08, 0x10, 0x11, 0x20, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x60, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x04, 0x03, 0x7f, 0x03, 0x0d, 0x33, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0x00, 0xf8, 0x30, 0x40, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x20, 0x27, 0x00, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x22, 0x0f, 0x10, ++ 0x16, 0x11, 0x20, 0x20, 0x43, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, ++ 0x08, 0x30, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x11, 0x49, 0x22, 0x3e, 0x2a, 0x3f, 0x2a, 0x3e, ++ 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d, ++ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x88, 0xc8, 0x28, 0x30, 0xfc, 0x90, 0x90, 0x50, ++ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x01, 0x3f, 0x01, 0x7f, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x9c, 0xf4, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x08, ++ 0x0a, 0x29, 0x29, 0x28, 0x49, 0x1a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x11, 0x12, 0x12, ++ 0x15, 0x18, 0x10, 0x21, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0x50, ++ 0x50, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x48, 0x0f, 0x10, 0x13, ++ 0x32, 0x53, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x80, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x2f, 0x02, 0x13, ++ 0x16, 0x16, 0x2a, 0x2a, 0x42, 0x47, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x28, 0x30, ++ 0xb0, 0x90, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x18, ++ 0x34, 0x54, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x15, 0x65, 0x2a, 0x18, 0x24, 0x7d, ++ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xf8, 0xa0, 0x78, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x29, 0x25, ++ 0x3f, 0x23, 0x25, 0x39, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x28, 0x48, ++ 0xf8, 0x88, 0x48, 0x38, 0x08, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x3e, 0x0c, 0x74, ++ 0x0d, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54, 0x8c, ++ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x01, 0x1e, 0x12, 0x1f, 0x3e, 0x06, ++ 0x7c, 0x05, 0x0e, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74, ++ 0x8c, 0x0c, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x21, ++ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x08, ++ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x21, 0x49, 0x0f, 0x11, 0x11, 0x35, ++ 0x55, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xbc, 0x40, 0x40, 0xc0, 0x3c, 0x88, 0x88, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x1f, 0x00, 0x02, 0x72, 0x12, ++ 0x14, 0x14, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0x90, 0x88, 0xfc, 0x80, 0xa0, 0x90, 0x90, ++ 0x88, 0x88, 0x88, 0x80, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x17, 0x11, 0x31, 0x52, 0x14, ++ 0x11, 0x13, 0x14, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x80, 0x90, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0, ++ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56, ++ 0x54, 0x7d, 0x46, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x9c, 0xf0, ++ 0x90, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, ++ 0x1f, 0x68, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, ++ 0xf0, 0x2c, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7b, 0x4a, 0x49, 0x79, 0x4f, 0x4d, 0x79, ++ 0x4a, 0x4e, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0x20, 0xfc, 0x18, 0xf8, ++ 0xd0, 0xd0, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x04, 0x45, 0x26, ++ 0x28, 0x29, 0x0e, 0x70, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa4, 0x9c, 0xf0, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x01, 0x3e, 0x11, 0x09, 0x3f, 0x28, 0x4e, ++ 0x12, 0x32, 0x0d, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x30, 0xd0, 0x10, 0x20, 0x40, 0xfc, 0x18, 0xf8, ++ 0x90, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0a, 0x3e, 0x3f, 0x32, 0x44, 0x1b, 0x00, 0x00, ++ 0x20, 0x30, 0x48, 0xf4, 0x50, 0x54, 0xcc, 0x78, ++ 0x48, 0xd0, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x22, 0x13, 0x16, 0x06, 0x0b, 0x12, ++ 0x12, 0x23, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x4a, 0x0b, 0x12, 0x12, 0x32, ++ 0x52, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x1f, 0x28, 0x48, 0x0f, ++ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x36, 0x36, ++ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x1f, 0x25, 0x25, 0x55, ++ 0x09, 0x09, 0x09, 0x11, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8, ++ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x13, ++ 0x10, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x11, 0x09, 0x4b, 0x22, 0x27, 0x0a, 0x0b, 0x12, ++ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40, ++ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x0b, ++ 0x18, 0x1b, 0x28, 0x2b, 0x48, 0x48, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8, ++ 0x88, 0xe8, 0x88, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, ++ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x13, 0x7f, ++ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x4c, 0x70, 0xc0, 0x48, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x02, 0x42, 0x22, 0x24, 0x04, 0x09, 0x04, 0x74, ++ 0x12, 0x12, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0x90, 0x90, 0x20, 0x90, 0x90, ++ 0x48, 0x48, 0x48, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x13, ++ 0x13, 0x10, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xc0, 0xf8, 0xd8, 0x38, 0xf8, ++ 0xf8, 0x10, 0xfc, 0x90, 0x30, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0x78, ++ 0x08, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x23, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x22, 0x22, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a, ++ 0x0c, 0x04, 0x0d, 0x12, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x94, 0x14, 0x0c, 0x80, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e, ++ 0x2a, 0x49, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e, ++ 0x12, 0x10, 0x11, 0x11, 0x22, 0x40, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x1f, 0x01, 0x1f, 0x01, ++ 0x7f, 0x07, 0x1f, 0x64, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xe0, 0x40, ++ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x48, 0x4b, 0x78, 0x4f, ++ 0x48, 0x4b, 0x7c, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x44, 0xf8, 0x50, 0xfc, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x10, ++ 0x13, 0x1d, 0x21, 0x21, 0x41, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0xfc, 0x40, 0x80, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, ++ 0x11, 0x11, 0x20, 0x2a, 0x49, 0x11, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xe0, 0x20, 0x00, 0x48, 0x24, 0x24, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x0c, 0x0f, 0x12, 0x7e, ++ 0x09, 0x2e, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0xe0, 0x40, 0xfc, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x1f, 0x01, ++ 0x7f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xf0, 0x00, ++ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f, 0x01, 0x7f, ++ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xf0, 0x40, 0xfc, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3c, 0x01, 0x7e, 0x03, 0x3c, ++ 0x3c, 0x01, 0x3e, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x50, 0xfc, 0x40, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7c, 0x00, 0x3f, 0x00, 0x3c, ++ 0x01, 0x3e, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x26, 0x38, 0x61, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7e, 0x08, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x50, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x04, ++ 0x0f, 0x08, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x40, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x17, 0x11, 0x10, 0x1f, ++ 0x10, 0x10, 0x20, 0x20, 0x40, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xfc, ++ 0x88, 0x90, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x49, 0x0a, 0x15, 0x10, 0x37, ++ 0x50, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0x08, 0xf4, 0x40, 0xfc, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x18, ++ 0x61, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x26, 0x27, 0x7a, 0x12, 0x7f, ++ 0x12, 0x56, 0x3b, 0x36, 0x1c, 0x61, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x28, 0x31, 0x2b, 0x24, 0x27, ++ 0x24, 0x25, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x90, 0x08, 0xf4, 0x40, 0xfc, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x09, 0x09, 0x0b, 0x15, 0x19, 0x31, 0x51, 0x1f, ++ 0x12, 0x13, 0x14, 0x19, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x0a, 0x09, 0x0f, 0x15, 0x19, 0x31, 0x53, 0x12, ++ 0x13, 0x13, 0x12, 0x13, 0x13, 0x1c, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0xe8, 0x20, 0xe0, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x27, 0x24, 0x3f, 0x24, 0x25, ++ 0x3e, 0x27, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xf8, 0x40, 0xfc, 0xa0, 0x50, ++ 0x48, 0xf4, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x27, 0x24, ++ 0x24, 0x28, 0x28, 0x30, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0xc0, 0x00, 0x00, 0xf8, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x04, 0x3f, 0x24, 0x24, ++ 0x2f, 0x34, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0x98, ++ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x48, ++ 0x7b, 0x4a, 0x43, 0x02, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x12, 0x09, 0x3f, 0x27, 0x44, 0x17, 0x1f, 0x10, ++ 0x0f, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xf0, 0xc0, 0x08, ++ 0xf8, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x4b, 0x2a, 0x29, 0x08, 0x1f, 0x69, 0x08, ++ 0x09, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x1c, 0xe4, 0x48, 0x30, 0x10, 0xfc, 0x10, 0x90, ++ 0x30, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x01, 0x02, ++ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00, ++ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24, ++ 0x7b, 0x4a, 0x0f, 0x16, 0x23, 0x42, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x29, 0x45, 0x05, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x28, 0x20, 0x40, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x4a, 0x29, 0x29, 0x08, 0x0f, ++ 0x19, 0x68, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x18, 0x60, 0x88, 0x48, 0x50, 0x20, 0x10, 0xfc, ++ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x09, 0x09, 0x11, 0x11, ++ 0x21, 0x41, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, ++ 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, ++ 0x03, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x10, 0x08, 0x14, 0x14, 0x20, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x09, 0x09, 0x3f, 0x20, 0x27, 0x24, ++ 0x24, 0x27, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x20, 0xf8, 0x08, 0xc8, 0x48, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0x80, 0xf8, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x11, ++ 0x11, 0x12, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x80, 0x80, 0xfc, 0xc0, ++ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x1a, 0x17, 0x1f, 0x18, ++ 0x1f, 0x1d, 0x2f, 0x2c, 0x48, 0x09, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0xa0, 0x20, 0xbc, 0xc8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x04, 0x3f, 0x0a, 0x7f, 0x00, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x00, ++ 0x10, 0x90, 0x20, 0xa8, 0x48, 0x10, 0x10, 0x24, ++ 0x44, 0x08, 0x08, 0x90, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x00, 0x00, 0x79, 0x0f, 0x09, 0x0f, ++ 0x11, 0x1f, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x84, 0x24, 0xe8, 0x30, 0xe0, ++ 0x10, 0xf0, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x12, 0x1c, ++ 0x70, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00, ++ 0x40, 0x40, 0x60, 0x50, 0x48, 0x48, 0x54, 0x54, ++ 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x11, 0x11, 0x16, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x12, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x1f, ++ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xf0, 0xc0, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x1b, ++ 0x70, 0x11, 0x11, 0x13, 0x14, 0x38, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x03, 0x3c, ++ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, ++ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x48, 0x48, 0x49, 0x79, 0x4a, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, ++ 0x7c, 0x44, 0x7c, 0x44, 0x7c, 0x44, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1b, 0x1a, ++ 0x28, 0x28, 0x48, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x70, 0x10, 0x90, 0x90, 0x90, 0x08, 0x48, 0x44, ++ 0x40, 0xa0, 0x90, 0x18, 0xe4, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0xfc, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7f, 0x13, 0x15, 0x39, 0x35, ++ 0x35, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x90, 0x90, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8, ++ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x02, 0x04, ++ 0x13, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0c, 0x0a, 0x41, 0x21, 0x23, 0x02, 0x13, ++ 0x12, 0x13, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x50, 0x60, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x0a, 0x42, 0x22, 0x2f, 0x00, 0x12, ++ 0x12, 0x14, 0x28, 0x20, 0x41, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48, ++ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x22, 0x07, 0x16, ++ 0x16, 0x1a, 0x2a, 0x22, 0x42, 0x42, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xc8, 0x48, 0x78, 0x48, 0xc8, ++ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x2b, 0x28, 0x48, ++ 0x0f, 0x08, 0x14, 0x13, 0x22, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xd0, 0xf8, 0x90, 0x90, ++ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f, ++ 0x08, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, ++ 0x80, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3f, 0x25, 0x25, ++ 0x3d, 0x25, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x30, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18, ++ 0x2a, 0x4a, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x09, 0x11, 0x63, 0x00, 0x07, 0x7f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x20, 0x18, 0x24, 0xc0, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x11, 0x3d, 0x25, ++ 0x65, 0x25, 0x25, 0x3d, 0x25, 0x01, 0x00, 0x00, ++ 0x40, 0x44, 0x44, 0x48, 0x50, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x11, 0x3f, 0x25, 0x65, ++ 0x25, 0x25, 0x3c, 0x22, 0x22, 0x04, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0x20, 0xf8, ++ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x04, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x13, 0x18, ++ 0x34, 0x57, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x09, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2b, 0x49, 0x0a, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8, ++ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x1f, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x25, 0x42, 0x01, 0x1f, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xe0, 0x00, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2d, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, 0xf8, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f, ++ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0xb0, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x21, 0x11, 0x11, 0x01, 0x1f, 0x10, 0x1f, ++ 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0x10, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x4a, 0x29, 0x28, ++ 0x0b, 0x19, 0x68, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x3c, 0xc8, 0x48, 0x30, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x18, 0x1f, 0x28, ++ 0x4f, 0x08, 0x0f, 0x14, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, ++ 0xf0, 0x80, 0xf8, 0x90, 0x48, 0x44, 0x00, 0x00, ++ 0x10, 0x17, 0x21, 0x4f, 0x0f, 0x15, 0x17, 0x35, ++ 0x57, 0x11, 0x17, 0x11, 0x1e, 0x10, 0x00, 0x00, ++ 0xc0, 0x3c, 0x00, 0xc0, 0xfc, 0x48, 0xc8, 0x48, ++ 0xc8, 0x08, 0xc8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01, ++ 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00, ++ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x01, 0x3e, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x60, 0x20, 0xa0, 0x90, 0x90, 0x48, 0x48, 0x44, ++ 0x40, 0x60, 0x90, 0x90, 0xe8, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3e, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3f, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x02, 0x07, 0x18, 0x7f, 0x11, 0x1f, 0x13, 0x0d, ++ 0x72, 0x0d, 0x32, 0x0c, 0x30, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xf0, 0x10, 0xf0, 0x18, 0x90, ++ 0xa0, 0xc0, 0xa0, 0x98, 0x84, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x27, 0x44, 0x07, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0xc8, 0x40, 0xc0, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x4f, 0x29, 0x1f, 0x69, 0x08, 0x7f, 0x02, ++ 0x1f, 0x14, 0x18, 0x1f, 0x1f, 0x10, 0x00, 0x00, ++ 0x3c, 0xc8, 0x50, 0xfc, 0x10, 0xb0, 0xfc, 0x80, ++ 0xf0, 0xb0, 0xf0, 0xf0, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xa0, 0xb8, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0xf8, 0x90, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x2b, 0x28, 0x31, 0x29, 0x25, ++ 0x25, 0x25, 0x38, 0x27, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0xf8, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x11, 0x09, ++ 0x05, 0x03, 0x03, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x0f, 0x00, 0x00, 0x3d, 0x05, 0x09, 0x09, ++ 0x11, 0x21, 0x43, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x20, ++ 0x10, 0x08, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x7f, 0x09, 0x3f, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x60, 0x80, 0x00, 0xf8, 0x20, 0xfc, 0x20, 0xf8, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x40, 0x07, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x00, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x01, 0x1e, 0x04, 0x3f, 0x15, 0x7f, 0x15, 0x15, ++ 0x3f, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00, ++ 0x08, 0x28, 0x28, 0xa8, 0x28, 0xe8, 0x28, 0x28, ++ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, ++ 0x16, 0x1a, 0x64, 0x06, 0x09, 0x10, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0xa8, 0xa8, ++ 0xb0, 0x90, 0x90, 0xb4, 0xcc, 0x04, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17, ++ 0x15, 0x1b, 0x64, 0x01, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x17, 0x11, 0x12, 0x7f, 0x10, 0x13, 0x10, ++ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0xc8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x12, 0x7f, 0x24, 0x25, 0x24, ++ 0x7b, 0x48, 0x0f, 0x14, 0x20, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0xa8, 0xa4, 0xfc, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0xc8, 0xb0, 0x90, 0xc8, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01, ++ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x19, 0x34, 0x37, 0x30, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x17, 0x1e, ++ 0x72, 0x14, 0x11, 0x16, 0x10, 0x37, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0xd4, ++ 0xf8, 0xf4, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x02, 0x02, 0x07, 0x0c, 0x32, 0x03, 0x0d, 0x71, ++ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, ++ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1d, 0x1b, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xa0, ++ 0xa0, 0x60, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x42, 0x24, 0x23, 0x00, 0x0f, ++ 0x10, 0x13, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0xfc, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x48, 0x2f, 0x28, 0x08, 0x08, ++ 0x18, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, ++ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, 0x2f, ++ 0x48, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0xe8, ++ 0x20, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x1b, 0x71, 0x12, 0x17, 0x7c, 0x13, 0x18, ++ 0x37, 0x34, 0x57, 0x10, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x3d, 0x05, 0x19, ++ 0x63, 0x0f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x48, 0x88, 0x50, 0x30, ++ 0x0c, 0xe0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x7e, 0x03, 0x3c, 0x01, 0x3c, ++ 0x03, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x40, 0xfc, 0x10, 0xa8, 0xfc, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0xe8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0d, 0x3f, 0x2e, 0x2e, 0x36, ++ 0x37, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x20, 0xfc, 0x88, 0x54, 0xfc, 0x50, 0xf8, 0x50, ++ 0xfc, 0x68, 0xd0, 0x50, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0x60, 0x20, 0x1c, 0x00, 0x00, ++ 0x00, 0x07, 0x74, 0x57, 0x54, 0x57, 0x55, 0x55, ++ 0x55, 0x77, 0x4a, 0x4b, 0x12, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x38, 0xc0, 0xf0, 0x50, ++ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x7e, 0x12, 0x12, 0x12, ++ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x29, 0x7e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x11, ++ 0x19, 0x71, 0x11, 0x11, 0x1e, 0x30, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0x20, ++ 0x20, 0x10, 0x50, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x10, 0x1d, 0x25, 0x25, 0x55, ++ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x17, 0x35, 0x39, 0x52, ++ 0x17, 0x1a, 0x17, 0x24, 0x20, 0x47, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xf8, 0x88, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0xf8, 0x30, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x66, 0x2a, 0x1b, 0x24, 0x7f, ++ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8, ++ 0xa8, 0x90, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00, ++ 0x01, 0x7d, 0x2f, 0x2a, 0x3a, 0x2f, 0x28, 0x3b, ++ 0x2a, 0x2f, 0x3a, 0x6b, 0x0a, 0x08, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xa8, ++ 0xa8, 0xb0, 0x90, 0xb4, 0x4c, 0x84, 0x00, 0x00, ++ 0x04, 0x07, 0x08, 0x10, 0x7f, 0x11, 0x11, 0x11, ++ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0x10, ++ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x2a, 0x3e, 0x22, 0x22, 0x22, 0x47, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x19, 0x6f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x09, 0x08, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x20, 0xe0, ++ 0x20, 0xf0, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x61, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0x20, 0x30, 0x28, 0x3c, 0xc4, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x12, 0x23, ++ 0x5c, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xb0, ++ 0x2c, 0x20, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x11, 0x1f, ++ 0x11, 0x11, 0x12, 0x22, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xe0, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x33, 0x52, 0x12, ++ 0x13, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x17, 0x10, 0x33, 0x50, 0x13, ++ 0x10, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf8, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x33, 0x50, 0x17, ++ 0x14, 0x1b, 0x11, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xf0, 0x20, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x14, 0x27, ++ 0x58, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x60, ++ 0x1c, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x4d, 0x0a, 0x12, 0x24, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0x68, ++ 0x68, 0x70, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x49, 0x08, 0x49, 0x29, 0x2b, ++ 0x0a, 0x1f, 0x68, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0xf0, 0xfc, ++ 0x08, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5f, 0x05, 0x7f, 0x05, 0x19, ++ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x68, 0xa0, 0x40, 0xfc, 0x40, 0x30, ++ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x12, 0x12, ++ 0x12, 0x22, 0x42, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x10, 0x08, ++ 0x04, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0xfc, 0xa0, 0x10, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e, ++ 0x72, 0x12, 0x14, 0x14, 0x18, 0x33, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xfc, 0xc8, ++ 0xc8, 0xb0, 0xa0, 0x90, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x08, ++ 0x7e, 0x1c, 0x1b, 0x29, 0x4a, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x14, 0x14, 0x7f, 0x00, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x50, 0xfc, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x03, 0x0d, 0x31, 0x09, 0x08, ++ 0x7f, 0x18, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x80, 0x60, 0x18, 0x20, 0x20, ++ 0xfc, 0x60, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x39, 0x36, ++ 0x34, 0x53, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10, 0xe8, ++ 0x44, 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x43, 0x20, 0x23, 0x00, 0x17, ++ 0x14, 0x1b, 0x21, 0x20, 0x41, 0x4e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x44, 0x20, 0x21, 0x02, 0x10, ++ 0x17, 0x10, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x40, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x3f, 0x21, 0x21, ++ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2a, 0x0c, 0x19, ++ 0x28, 0x48, 0x13, 0x10, 0x20, 0x47, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x40, 0x30, 0x4c, 0x80, ++ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x0a, 0x0a, 0x13, 0x1a, ++ 0x36, 0x57, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x0f, ++ 0x11, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0xa0, ++ 0x10, 0xec, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x27, 0x7e, ++ 0x12, 0x1b, 0x36, 0x34, 0x50, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x20, ++ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0xf0, 0x10, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x00, 0x01, 0x04, ++ 0x14, 0x14, 0x24, 0x44, 0x04, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, 0x90, ++ 0x48, 0x44, 0x04, 0x20, 0x20, 0xe0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x3f, 0x12, 0x14, 0x7f, ++ 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x0c, 0x70, 0x40, 0x40, 0x7c, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x68, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d, ++ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x23, 0x00, 0x00, ++ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90, ++ 0x20, 0x44, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x78, 0x01, 0x06, 0x38, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x24, 0xe8, 0x30, ++ 0xe0, 0x60, 0xa0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x01, ++ 0x01, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x21, 0x12, 0x13, 0x06, 0x0a, 0x73, 0x12, ++ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00, ++ 0x1f, 0x13, 0x1f, 0x14, 0x27, 0x58, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00, ++ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, ++ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x50, 0x10, ++ 0x10, 0x10, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x02, 0x1e, 0x07, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x88, 0x48, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x14, ++ 0x27, 0x58, 0x0f, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xcc, 0x70, ++ 0x44, 0xbc, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x3d, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x3e, 0x08, ++ 0x0e, 0x30, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x88, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f, ++ 0x12, 0x12, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc, ++ 0x80, 0x88, 0x78, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x09, 0x10, 0x10, ++ 0x23, 0x40, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x80, 0x40, ++ 0x30, 0x8c, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3f, 0x3f, 0x2f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x60, 0x90, 0x0c, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x01, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xb0, 0xd0, ++ 0x90, 0x90, 0x94, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x27, 0x11, 0x11, 0x01, 0x01, 0x0f, 0x71, ++ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, ++ 0x10, 0x14, 0x0c, 0x04, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26, ++ 0x27, 0x24, 0x27, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x15, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x68, 0x58, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x7f, 0x00, 0x3f, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08, 0xe8, ++ 0x08, 0x88, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x7a, 0x03, 0x3a, 0x02, 0x3b, ++ 0x02, 0x3a, 0x2b, 0x2e, 0x38, 0x20, 0x00, 0x00, ++ 0x00, 0xc0, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x98, ++ 0x90, 0xd0, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x17, 0x20, 0x48, 0x09, 0x11, 0x25, 0x45, ++ 0x09, 0x09, 0x11, 0x20, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0xc0, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20, ++ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x22, 0x29, 0x25, 0x24, 0x20, ++ 0x27, 0x20, 0x23, 0x2c, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x28, 0x28, 0x28, 0x48, 0x48, ++ 0x88, 0xc8, 0x28, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14, ++ 0x17, 0x14, 0x12, 0x23, 0x23, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xc8, 0x08, 0x88, 0xfc, 0xc8, ++ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12, ++ 0x11, 0x11, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x10, ++ 0x10, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c, ++ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x09, 0x09, 0x7f, 0x09, ++ 0x09, 0x3f, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x21, ++ 0x3d, 0x25, 0x25, 0x3c, 0x24, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x05, 0x05, 0x09, ++ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20, ++ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x29, 0x4a, ++ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7b, 0x48, 0x4b, 0x79, 0x49, 0x4f, 0x79, ++ 0x49, 0x4b, 0x78, 0x48, 0x07, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50, ++ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1c, ++ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x54, 0x94, 0x2c, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x12, 0x0e, 0x32, 0x07, 0x01, 0x3f, ++ 0x04, 0x0b, 0x11, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x38, 0xc8, 0x18, 0x00, 0xf8, ++ 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x7f, 0x08, 0x0f, ++ 0x03, 0x0d, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, ++ 0x10, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x21, 0x17, 0x10, 0x01, 0x0e, 0x71, 0x16, ++ 0x11, 0x16, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x80, 0x88, 0xc8, 0x70, 0xe0, ++ 0x50, 0x48, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x2c, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5e, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, ++ 0xa8, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x29, 0x30, 0x28, 0x27, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0x78, 0x48, ++ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x02, 0x7e, 0x13, 0x10, 0x17, 0x7c, 0x13, ++ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x2d, 0x2c, 0x7e, 0x43, 0x7d, ++ 0x25, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0xf8, 0x48, ++ 0x78, 0x48, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00, ++ 0x11, 0x11, 0x1f, 0x01, 0x3f, 0x20, 0x4f, 0x00, ++ 0x7f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x08, 0xe0, 0x00, ++ 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x1f, 0x01, 0x7f, 0x0f, 0x08, 0x0f, ++ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0, ++ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x49, 0x29, 0x2a, 0x7f, 0x1c, 0x1a, 0x2b, 0x48, ++ 0x7f, 0x12, 0x3a, 0x04, 0x1a, 0x61, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x08, 0x08, 0x48, 0x30, 0x10, ++ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x09, 0x09, 0x7e, 0x09, 0x28, ++ 0x2f, 0x29, 0x39, 0x28, 0x27, 0x41, 0x00, 0x00, ++ 0x80, 0xf8, 0x48, 0x58, 0xf8, 0x88, 0xb0, 0xf8, ++ 0x48, 0x58, 0xf8, 0x88, 0x30, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x3e, 0x52, 0x57, 0x7f, 0x52, 0x2c, ++ 0x3e, 0x52, 0x56, 0x7e, 0x52, 0x2c, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e, ++ 0x72, 0x15, 0x15, 0x19, 0x11, 0x31, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xfc, 0x40, ++ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x40, 0x88, 0x08, 0x10, 0x20, ++ 0xc4, 0x04, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x35, 0x34, ++ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20, ++ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x09, 0x3f, 0x2a, 0x2c, 0x28, 0x3e, 0x22, ++ 0x32, 0x2c, 0x24, 0x2a, 0x32, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x05, 0x19, 0x63, 0x00, 0x03, 0x0f, 0x78, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x60, 0x18, 0x24, 0xc0, 0x40, 0xf8, 0x80, ++ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d, ++ 0x35, 0x53, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x23, 0x10, 0x15, 0x43, 0x23, 0x24, 0x0b, 0x12, ++ 0x13, 0x12, 0x21, 0x21, 0x4f, 0x40, 0x00, 0x00, ++ 0x90, 0x90, 0x64, 0x28, 0xf0, 0x08, 0xf4, 0x10, ++ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x7e, 0x13, 0x14, 0x11, 0x1c, ++ 0x73, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xa8, 0xb8, 0xc8, 0x98, 0x80, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x04, ++ 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12, ++ 0x13, 0x12, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, ++ 0xe0, 0x20, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x0f, ++ 0x12, 0x17, 0x26, 0x2a, 0x52, 0x42, 0x00, 0x00, ++ 0x00, 0x7c, 0x90, 0x78, 0xc8, 0xf8, 0xc8, 0xf8, ++ 0x48, 0x78, 0xb0, 0xa8, 0x44, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2b, 0x2a, ++ 0x3e, 0x2a, 0x2a, 0x3e, 0x23, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x10, 0x10, ++ 0x30, 0x30, 0x48, 0x88, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f, ++ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x0f, 0x40, 0x23, 0x20, 0x0f, 0x00, 0x13, ++ 0x10, 0x2f, 0x21, 0x43, 0x40, 0x0f, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0, ++ 0x80, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00, ++ 0x14, 0x14, 0x1f, 0x24, 0x44, 0x7f, 0x04, 0x3f, ++ 0x25, 0x25, 0x25, 0x26, 0x24, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x3e, 0x09, 0x7f, 0x15, 0x2b, 0x7e, 0x08, ++ 0x7f, 0x01, 0x3f, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x50, 0x70, 0x94, ++ 0x0c, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x26, 0x26, 0x24, ++ 0x79, 0x48, 0x0c, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x10, 0x24, 0x45, 0x09, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x13, 0x3a, 0x34, 0x34, 0x53, ++ 0x10, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x12, ++ 0x12, 0x12, 0x12, 0x2c, 0x21, 0x40, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x29, 0x2f, 0x2a, 0x28, ++ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x0c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3f, 0x1c, 0x2a, 0x49, ++ 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x04, ++ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x09, 0x09, ++ 0x1f, 0x21, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0xf8, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x78, 0x49, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x1b, 0x34, 0x35, ++ 0x30, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x40, 0xfc, 0x90, 0xd0, 0x70, 0x88, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x13, 0x3a, 0x36, ++ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, ++ 0xb8, 0x38, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x47, 0x20, 0x2f, 0x00, 0x03, ++ 0x12, 0x13, 0x22, 0x23, 0x42, 0x42, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x28, 0x28, 0x3f, 0x29, 0x2a, 0x48, ++ 0x0d, 0x78, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x1f, 0x11, 0x21, 0x41, ++ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x22, 0x4c, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c, ++ 0xf4, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x13, 0x7e, 0x02, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, ++ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x00, 0x1f, 0x11, ++ 0x11, 0x1f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x14, 0x1f, 0x24, 0x7f, 0x3f, 0x24, 0x27, 0x01, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0xc8, 0xc8, 0xc8, 0x18, 0x00, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3f, 0x24, 0x24, ++ 0x28, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, ++ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x28, 0xe8, 0x68, ++ 0x50, 0x50, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00, ++ 0x08, 0x7e, 0x08, 0x0e, 0x78, 0x19, 0x07, 0x7f, ++ 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x10, 0xc0, 0xfc, ++ 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3f, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x03, 0x7e, ++ 0x12, 0x12, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0xc0, 0x7c, 0x50, 0xd0, 0x50, ++ 0x90, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x50, 0x7c, ++ 0x90, 0x78, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x09, 0x7f, 0x00, 0x3f, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc, ++ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x78, ++ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0x3c, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x03, 0x04, 0x38, 0x09, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68, ++ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48, ++ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f, ++ 0x08, 0x3f, 0x02, 0x01, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc, ++ 0x00, 0xf0, 0x60, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10, ++ 0x17, 0x14, 0x24, 0x24, 0x44, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x80, ++ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x37, 0x50, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xfc, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x13, 0x12, 0x1f, 0x12, ++ 0x17, 0x16, 0x2a, 0x32, 0x42, 0x06, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0x28, ++ 0x30, 0xb0, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x09, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x10, 0x60, 0x80, 0x00, 0x00, 0xfc, 0x40, 0x40, ++ 0xc0, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x00, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x02, 0x04, 0x07, 0x0c, ++ 0x0c, 0x14, 0x24, 0x44, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x1b, 0x70, 0x13, 0x10, 0x7f, 0x11, 0x19, ++ 0x35, 0x35, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x7f, 0x08, 0x3f, ++ 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x50, 0x50, 0xfc, 0x50, 0xfc, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x01, 0x39, 0x01, 0x3a, 0x02, 0x04, 0x1f, 0x68, ++ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0xb8, 0x40, 0x20, 0xf0, 0x2c, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x12, ++ 0x12, 0x22, 0x44, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x40, 0x50, ++ 0x48, 0x44, 0x44, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e, ++ 0x29, 0x2a, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x50, 0xd8, 0xd8, ++ 0x54, 0x54, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x2b, 0x08, 0x2e, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x20, 0x23, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x13, 0x1c, 0x70, 0x10, 0x10, ++ 0x12, 0x12, 0x0e, 0x01, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x10, ++ 0x1a, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x17, 0x10, 0x17, ++ 0x18, 0x70, 0x11, 0x10, 0x10, 0x37, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc, ++ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x1f, ++ 0x71, 0x10, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x9c, 0xf0, ++ 0x18, 0xb0, 0x00, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d, ++ 0x71, 0x12, 0x12, 0x14, 0x18, 0x30, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x02, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x23, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x0c, 0x00, 0xf8, ++ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x13, ++ 0x1c, 0x70, 0x10, 0x12, 0x0f, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf8, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1e, 0x12, 0x1e, ++ 0x12, 0x1e, 0x14, 0x12, 0x1d, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x78, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x08, 0x08, 0xf8, 0x68, ++ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x01, ++ 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, ++ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x12, 0x12, 0x32, 0x52, 0x12, ++ 0x12, 0x12, 0x12, 0x13, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x0f, 0x11, 0x21, 0x7f, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x3f, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x00, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x09, 0x09, 0x11, 0x21, 0x03, 0x01, ++ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x11, 0x49, 0x2a, 0x24, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x48, 0x48, ++ 0x50, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, ++ 0x19, 0x15, 0x27, 0x39, 0x41, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x48, 0x28, 0x38, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x14, 0x14, 0x13, 0x19, ++ 0x77, 0x11, 0x1f, 0x11, 0x16, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x40, 0xc8, 0xb8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x09, 0x1e, 0x1b, 0x1a, ++ 0x28, 0x2b, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8, ++ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x01, ++ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x08, ++ 0x90, 0xe0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x23, 0x00, 0x17, ++ 0x10, 0x10, 0x20, 0x21, 0x46, 0x40, 0x00, 0x00, ++ 0x90, 0x88, 0xf8, 0x80, 0xf0, 0x80, 0xf8, 0x90, ++ 0x50, 0x60, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x10, ++ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xa0, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x48, 0x2b, 0x20, 0x08, 0x11, 0x22, 0x41, ++ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, ++ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x2f, 0x23, 0x02, 0x14, ++ 0x1b, 0x12, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xd0, 0x88, ++ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x3e, ++ 0x22, 0x26, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x18, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x53, ++ 0x12, 0x1b, 0x16, 0x23, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x48, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x11, 0x11, 0x1e, 0x14, ++ 0x14, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x28, 0xb0, ++ 0xa0, 0xbc, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x10, 0x0f, 0x08, ++ 0x08, 0x7f, 0x03, 0x0c, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x4d, 0x04, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xfc, 0x00, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f, ++ 0x0d, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, ++ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x64, 0x18, 0x1b, 0x25, 0x7d, ++ 0x13, 0x3b, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00, ++ 0x90, 0x98, 0xf4, 0x94, 0x90, 0xfc, 0x50, 0x74, ++ 0x74, 0x58, 0x78, 0x94, 0x2c, 0x44, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x0f, 0x01, 0x7f, 0x10, 0x08, ++ 0x41, 0x22, 0x0c, 0x10, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x80, 0x80, ++ 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24, ++ 0x3d, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x20, ++ 0xe4, 0x78, 0xb0, 0x28, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x32, 0x4a, ++ 0x05, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x90, 0x90, 0x90, 0x90, ++ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1e, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x04, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x1f, 0x12, 0x1f, 0x12, 0x1f, ++ 0x13, 0x12, 0x23, 0x2a, 0x49, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0xfc, 0x00, 0xfc, 0xa4, 0x54, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c, ++ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x08, 0xfc, 0x40, ++ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x27, 0x3c, 0x27, ++ 0x24, 0x3c, 0x18, 0x14, 0x27, 0x40, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc0, 0x78, 0xc0, 0x7c, 0xc8, ++ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x09, 0x28, 0x2f, ++ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0x50, 0x48, 0x78, 0xc0, 0x78, 0xc0, 0x7c, 0xc8, ++ 0x48, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x17, 0x04, 0x03, 0x71, 0x17, ++ 0x11, 0x1f, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x44, 0xfc, 0x20, 0xf8, ++ 0x20, 0xfc, 0xa0, 0x18, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x70, 0x1f, ++ 0x13, 0x1c, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x80, 0xfc, ++ 0xf0, 0x28, 0xe4, 0x10, 0xf0, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x40, 0xfc, ++ 0x48, 0x28, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21, ++ 0x22, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08, ++ 0x88, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x7f, 0x00, 0x3e, 0x22, 0x22, ++ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xfc, 0x00, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x3f, 0x09, ++ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xf8, 0x20, ++ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0f, 0x0a, ++ 0x1f, 0x12, 0x3f, 0x22, 0x42, 0x42, 0x00, 0x00, ++ 0x08, 0x08, 0xd0, 0x20, 0xa0, 0xbc, 0xa8, 0xa8, ++ 0xa8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x19, 0x15, 0x32, 0x4a, 0x0c, ++ 0x19, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0x60, 0x50, 0x90, ++ 0x08, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x60, 0x1f, 0x01, ++ 0x01, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0xf0, 0x00, ++ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7d, 0x0b, 0x0a, 0x13, 0x1a, ++ 0x37, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x88, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0xa8, 0x70, ++ 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x3c, 0x27, 0x24, 0x25, 0x3c, 0x27, 0x25, ++ 0x3f, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x50, ++ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x3a, 0x12, 0x7e, 0x12, 0x1a, ++ 0x36, 0x36, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x48, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x22, 0x14, 0x7f, 0x2a, 0x2a, 0x3e, 0x2a, 0x09, ++ 0x11, 0x2f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08, ++ 0x18, 0xe0, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x7d, 0x45, 0x41, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x17, 0x10, 0x1f, ++ 0x72, 0x13, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x04, 0x18, 0x7f, 0x15, 0x13, 0x1f, 0x10, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0xc0, 0x20, 0x10, 0xfc, 0x50, 0x90, 0xf0, 0x10, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x0e, 0x15, 0x65, 0x04, 0x7f, ++ 0x01, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x2c, 0x20, 0xf8, ++ 0x10, 0x20, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x19, 0x29, 0x49, 0x09, 0x0f, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x03, 0x0c, 0x08, 0x2b, 0x28, 0x2d, ++ 0x29, 0x29, 0x29, 0x2f, 0x3a, 0x64, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x98, 0xe4, 0x10, 0x50, ++ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x07, 0x08, 0x0b, 0x2a, 0x2e, 0x2b, ++ 0x28, 0x28, 0x29, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x7d, 0x17, 0x11, 0x13, 0x3b, 0x2d, 0x6b, ++ 0x28, 0x2a, 0x3a, 0x23, 0x24, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xb8, 0x54, 0x10, 0xfc, ++ 0x48, 0x40, 0x78, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x09, 0x11, 0x19, ++ 0x35, 0x57, 0x11, 0x11, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x0c, ++ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xc0, ++ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x1e, 0x24, 0x7e, 0x2b, ++ 0x3e, 0x2a, 0x3e, 0x3b, 0x2d, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x20, 0x20, 0xfc, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0xb0, 0x98, 0x14, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x22, 0x13, 0x1f, 0x01, 0x05, 0x05, 0x77, ++ 0x15, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xb8, 0x28, 0xe8, 0x38, 0x68, 0x68, 0xf8, ++ 0x28, 0x48, 0x48, 0x98, 0x00, 0xfc, 0x00, 0x00, ++ 0x03, 0x1c, 0x10, 0x1e, 0x10, 0x1f, 0x00, 0x15, ++ 0x13, 0x19, 0x15, 0x15, 0x19, 0x66, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x50, ++ 0x30, 0x90, 0x54, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x09, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x06, 0x09, 0x14, 0x3f, 0x51, 0x1f, 0x11, ++ 0x1f, 0x10, 0x3f, 0x31, 0x5f, 0x11, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0c, 0x04, ++ 0x04, 0x0a, 0x0a, 0x10, 0x21, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x50, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x12, 0x0a, 0x7f, 0x04, 0x3f, 0x1f, 0x01, 0x7f, ++ 0x12, 0x1f, 0x1e, 0x12, 0x7e, 0x03, 0x00, 0x00, ++ 0x90, 0xa0, 0xfc, 0x40, 0xf8, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f, ++ 0x0f, 0x08, 0x1f, 0x18, 0x2f, 0x08, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0, ++ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x3d, 0x25, 0x3d, 0x25, 0x01, ++ 0x7f, 0x08, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x48, 0x00, ++ 0xfc, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x48, 0x28, 0x2f, 0x08, 0x08, ++ 0x18, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, ++ 0x1f, 0x61, 0x1f, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0xc0, ++ 0x30, 0x0c, 0xf0, 0x80, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x05, 0x35, 0x09, 0x1d, 0x65, ++ 0x19, 0x15, 0x66, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x68, 0x10, 0x68, 0xc8, ++ 0x30, 0xa8, 0xc8, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x7f, 0x03, ++ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x80, ++ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x17, 0x14, ++ 0x17, 0x13, 0x23, 0x22, 0x43, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xf8, 0xf8, 0x88, ++ 0xf8, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0xe0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x29, 0x3f, 0x2a, 0x4c, 0x19, 0x6a, 0x08, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x28, 0x48, 0xb0, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x2a, 0x48, ++ 0x09, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x10, ++ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7d, 0x10, 0x11, 0x10, 0x1f, ++ 0x74, 0x13, 0x12, 0x12, 0x12, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x48, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x17, 0x10, 0x13, 0x1e, ++ 0x73, 0x12, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0xfc, 0x40, 0xf8, 0x48, ++ 0xf8, 0x48, 0xf8, 0x48, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x1f, ++ 0x72, 0x13, 0x12, 0x10, 0x10, 0x37, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0x50, 0x78, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x14, 0x1f, ++ 0x70, 0x17, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x11, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x24, 0x3f, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x15, 0x39, 0x35, ++ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0, ++ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x3a, 0x37, ++ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x15, 0x34, 0x3b, 0x32, 0x53, ++ 0x10, 0x17, 0x18, 0x25, 0x26, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x01, 0x03, 0x0c, 0x30, 0x1f, 0x01, 0x7f, 0x01, ++ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0xfc, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, ++ 0x28, 0x4b, 0x10, 0x10, 0x21, 0x4e, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x45, 0x09, 0x12, 0x0f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x38, 0x40, 0x30, 0xc8, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x57, 0x34, 0x3b, 0x12, 0x7f, 0x12, 0x3b, ++ 0x35, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x29, 0x4a, 0x08, 0x00, 0x00, ++ 0x30, 0x90, 0x90, 0xa8, 0x24, 0x50, 0xf8, 0x48, ++ 0x20, 0xe8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x29, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xf8, 0x00, 0xfc, ++ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x25, 0x3e, 0x24, 0x25, 0x3c, ++ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00, ++ 0x70, 0x90, 0x90, 0x48, 0x64, 0x90, 0xf8, 0x48, ++ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x48, 0x28, 0x2f, ++ 0x08, 0x18, 0x28, 0x48, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x1f, 0x72, 0x0c, ++ 0x74, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x80, 0x98, 0xe0, 0x84, ++ 0x7c, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x7f, 0x09, 0x02, 0x0f, 0x7f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x17, 0x14, 0x27, 0x44, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0x80, 0xe0, 0xfc, 0x20, 0xe0, ++ 0x20, 0xe0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x23, 0x22, ++ 0x0b, 0x08, 0x17, 0x11, 0x26, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xb8, 0xa8, ++ 0xf8, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00, ++ 0x04, 0x24, 0x17, 0x04, 0x1c, 0x65, 0x05, 0x01, ++ 0x7f, 0x04, 0x1c, 0x64, 0x07, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00, ++ 0xfc, 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x09, ++ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x02, 0x21, 0x11, 0x17, 0x00, 0x00, 0x7f, 0x10, ++ 0x11, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x80, 0x80, 0xfc, 0xc0, ++ 0x20, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x27, 0x13, 0x12, 0x03, 0x02, 0x73, 0x11, ++ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0xa0, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0x88, 0xf8, ++ 0xf8, 0x80, 0xfc, 0x84, 0xfc, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x08, ++ 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8, ++ 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x70, 0xac, 0x20, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0x28, 0x3c, 0xc4, 0x00, 0x00, ++ 0x08, 0x09, 0x0e, 0x13, 0x12, 0x33, 0x50, 0x11, ++ 0x16, 0x11, 0x16, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0x88, ++ 0xd0, 0x60, 0xb0, 0x28, 0x24, 0xc0, 0x00, 0x00, ++ 0x01, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, ++ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x11, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x50, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x29, 0x28, 0x3b, 0x2a, 0x2b, 0x3b, ++ 0x2b, 0x2b, 0x2b, 0x2b, 0x2d, 0x58, 0x00, 0x00, ++ 0x20, 0xfc, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8, ++ 0xe8, 0x50, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x10, 0x1f, 0x19, ++ 0x1f, 0x18, 0x1f, 0x29, 0x2f, 0x48, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x28, ++ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00, ++ 0x01, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x24, ++ 0x25, 0x3d, 0x19, 0x15, 0x25, 0x41, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x22, 0x12, 0x13, 0x04, 0x0f, 0x70, 0x13, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x12, ++ 0x12, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17, ++ 0x14, 0x14, 0x17, 0x13, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x3e, ++ 0x28, 0x24, 0x26, 0x3a, 0x62, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x10, 0x16, ++ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f, ++ 0x13, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x90, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x44, 0x27, 0x24, 0x07, 0x14, ++ 0x14, 0x17, 0x23, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0x08, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x11, ++ 0x11, 0x11, 0x19, 0x15, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x72, 0x13, ++ 0x10, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xe0, 0x50, 0x4c, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0x09, 0x09, 0x0a, 0x14, 0x10, 0x31, 0x51, 0x12, ++ 0x17, 0x1a, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x20, 0x10, 0x08, 0x88, 0x80, 0x40, 0x20, 0x10, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x17, 0x14, ++ 0x17, 0x1f, 0x18, 0x2f, 0x28, 0x48, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x78, 0x80, 0xf0, 0x90, ++ 0xf0, 0xf8, 0xa8, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3c, 0x27, ++ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8, ++ 0x90, 0x90, 0xb4, 0xac, 0xcc, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x10, 0x1d, 0x16, ++ 0x17, 0x14, 0x24, 0x24, 0x45, 0x1a, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x80, 0xf8, 0x20, 0x20, ++ 0xfc, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7f, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x08, ++ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x0c, 0x12, 0x23, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x40, 0x60, 0x90, 0x10, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, ++ 0x04, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, ++ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x12, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14, 0x17, ++ 0x1c, 0x77, 0x14, 0x14, 0x14, 0x35, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x00, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x05, 0x08, 0x18, ++ 0x28, 0x4f, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0xf8, 0x10, 0x20, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7c, 0x07, 0x08, 0x0b, 0x10, 0x10, 0x1b, ++ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x50, 0x90, 0xa0, 0x48, 0xf4, ++ 0x44, 0x50, 0x48, 0x44, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x02, 0x1f, 0x12, 0x14, 0x1f, ++ 0x1f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x80, 0xf0, 0xd0, 0x50, 0xf0, ++ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x13, 0x12, 0x1f, ++ 0x72, 0x13, 0x12, 0x13, 0x11, 0x36, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x2f, 0x11, 0x12, 0x02, 0x03, 0x0e, 0x72, ++ 0x12, 0x12, 0x13, 0x1e, 0x26, 0x41, 0x00, 0x00, ++ 0x0c, 0xf0, 0x28, 0x48, 0xd0, 0x30, 0x48, 0xfc, ++ 0xa8, 0xa4, 0x24, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x12, 0x12, 0x33, 0x5e, 0x12, ++ 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48, ++ 0x48, 0x58, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x02, 0x03, 0x04, 0x0a, 0x31, 0x01, 0x06, 0x38, ++ 0x03, 0x0c, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x40, 0x80, 0x40, 0x7c, 0x84, ++ 0x88, 0x50, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02, ++ 0x04, 0x04, 0x0a, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, 0x80, ++ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x10, ++ 0x10, 0x11, 0x21, 0x22, 0x44, 0x48, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xc0, ++ 0xa0, 0x20, 0x90, 0x50, 0x48, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3e, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4b, 0x49, 0x49, 0x4f, 0x49, ++ 0x49, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50, ++ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x48, 0x71, 0x53, 0x4d, 0x49, 0x71, ++ 0x41, 0x41, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0x08, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x12, 0x09, 0x08, 0x01, 0x7f, ++ 0x02, 0x04, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00, ++ 0x18, 0xe8, 0x08, 0x10, 0x20, 0x40, 0x00, 0xfc, ++ 0x20, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x19, 0x36, 0x37, 0x30, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0e, ++ 0x78, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x18, 0x18, 0x1c, ++ 0x2a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x88, 0x90, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x7f, ++ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48, 0x50, ++ 0x60, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1b, 0x1c, 0x1b, ++ 0x2b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x32, 0x28, 0x24, ++ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x80, 0x80, 0x98, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x70, ++ 0x50, 0x50, 0xc8, 0xa8, 0x24, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x44, 0x24, 0xa8, 0x90, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11, ++ 0x11, 0x12, 0x15, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, ++ 0x50, 0x48, 0xf4, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x13, 0x7f, 0x15, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x04, 0x24, 0x14, ++ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x10, 0x7f, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x55, 0x55, 0x55, 0x43, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x10, 0x11, ++ 0x01, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0xc0, 0x40, 0x24, 0x14, 0x0c, ++ 0x00, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x09, 0x09, 0x7f, 0x09, 0x0f, 0x00, 0x3f, 0x21, ++ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc, 0x08, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x13, 0x24, 0x04, 0x0f, 0x18, 0x28, ++ 0x4f, 0x09, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x02, 0x02, 0x04, 0x7f, 0x00, 0x0f, 0x08, 0x08, ++ 0x0f, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x40, 0x30, 0xe8, 0x04, 0xe0, 0x20, 0x20, ++ 0xe0, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x12, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x22, ++ 0x26, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x48, 0x70, 0x44, 0x3c, 0x48, 0x70, 0x44, ++ 0x3c, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x04, 0x1f, 0x04, 0x7f, 0x1f, 0x15, 0x1f, 0x15, ++ 0x1f, 0x3f, 0x0a, 0x7f, 0x19, 0x60, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x28, ++ 0x28, 0xb0, 0x14, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x12, 0x22, ++ 0x4f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0x50, 0x88, ++ 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x0f, 0x02, 0x7f, 0x05, ++ 0x19, 0x6d, 0x03, 0x0d, 0x31, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x80, 0xfc, 0x40, ++ 0x30, 0x6c, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x20, 0x07, 0x04, ++ 0x1b, 0x12, 0x22, 0x22, 0x42, 0x40, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0xf0, 0x00, 0xfc, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x27, 0x3c, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x50, 0x88, 0x9c, 0xe4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x25, 0x24, 0x3c, 0x24, 0x27, ++ 0x3d, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x64, ++ 0x58, 0x50, 0x68, 0x84, 0x80, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x02, 0x04, 0x7f, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x30, 0xc8, ++ 0x04, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x04, 0x18, 0x6f, 0x08, 0x09, 0x09, 0x7f, ++ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x90, 0x88, 0x7c, 0xc0, 0x20, 0x14, 0x0c, 0xfc, ++ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x04, 0x1b, 0x68, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0x40, 0x34, 0xec, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x02, 0x03, 0x72, 0x12, ++ 0x12, 0x12, 0x1f, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0x48, ++ 0x30, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x17, 0x00, 0x03, 0x74, 0x12, ++ 0x12, 0x11, 0x16, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, 0x50, ++ 0xe0, 0x50, 0x48, 0xc8, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x2b, 0x24, ++ 0x27, 0x24, 0x38, 0x23, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0xe8, 0x68, 0xb0, ++ 0x30, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00, ++ 0x02, 0x04, 0x1f, 0x68, 0x08, 0x1f, 0x11, 0x1f, ++ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00, ++ 0x90, 0xbc, 0xc0, 0x24, 0x1c, 0xf4, 0x10, 0xf0, ++ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, ++ 0xf8, 0xd8, 0xf8, 0x58, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0x80, 0xfc, 0x40, 0x40, 0x40, ++ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x08, 0x7f, 0x00, 0x00, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x30, 0xc8, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x80, ++ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x29, 0x46, 0x3f, 0x01, 0x3f, ++ 0x21, 0x3f, 0x23, 0x05, 0x19, 0x61, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x20, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x78, 0x48, 0x78, 0x00, 0xfc, ++ 0x10, 0x50, 0x5c, 0x50, 0xb0, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3e, 0x22, 0x3e, 0x00, 0x7f, ++ 0x08, 0x2e, 0x28, 0x38, 0x2d, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x50, 0x88, 0x08, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x15, 0x1f, 0x15, 0x15, 0x13, ++ 0x13, 0x13, 0x23, 0x23, 0x4d, 0x12, 0x00, 0x00, ++ 0x80, 0xfc, 0xa0, 0xfc, 0xf0, 0xf0, 0xfc, 0xe0, ++ 0xe0, 0xe0, 0xf8, 0xf8, 0x48, 0xb0, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x2f, 0x00, 0x17, ++ 0x14, 0x17, 0x24, 0x27, 0x44, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0xf0, ++ 0x90, 0xf0, 0x90, 0xf4, 0x84, 0x7c, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x45, 0x25, 0x3f, 0x00, 0x0f, ++ 0x19, 0x1f, 0x29, 0x2f, 0x49, 0x4b, 0x00, 0x00, ++ 0x40, 0x78, 0xc0, 0x78, 0x08, 0xf8, 0x40, 0x78, ++ 0x40, 0x78, 0x40, 0x78, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4e, 0x48, 0x49, ++ 0x7e, 0x48, 0x43, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x88, 0xc8, 0x50, 0xe0, 0x20, ++ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x01, 0x1e, 0x02, ++ 0x03, 0x7e, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x60, 0x80, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x08, 0x08, 0x0f, ++ 0x18, 0x68, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d, ++ 0x71, 0x11, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40, ++ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x11, 0x13, ++ 0x1d, 0x79, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x80, 0x80, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x12, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x48, 0x40, ++ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x20, 0x17, 0x10, 0x47, 0x20, 0x27, 0x02, 0x13, ++ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8, ++ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x16, 0x7c, 0x11, ++ 0x16, 0x10, 0x1b, 0x6c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xc8, 0x48, 0xf0, 0x20, ++ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xc0, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc, ++ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00, ++ 0x20, 0x17, 0x15, 0x47, 0x22, 0x23, 0x05, 0x1f, ++ 0x15, 0x17, 0x25, 0x21, 0x4e, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0xf0, 0x00, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c, ++ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x40, 0x80, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xe0, 0x20, ++ 0xe0, 0x38, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x17, 0x15, 0x15, 0x15, ++ 0x15, 0x15, 0x15, 0x21, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xd0, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, ++ 0x10, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x40, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12, ++ 0x12, 0x13, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x17, 0x01, 0x00, 0x77, 0x10, ++ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x10, 0x1f, 0x12, ++ 0x12, 0x12, 0x22, 0x22, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x88, ++ 0x48, 0x50, 0x20, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x7f, 0x06, 0x1a, 0x67, 0x0c, 0x17, 0x07, ++ 0x04, 0x07, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xb0, 0xfc, 0x80, 0xe0, 0xe0, ++ 0x80, 0xf0, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x08, 0x88, 0x90, 0xf8, 0x08, 0x08, 0xf8, 0x68, ++ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x22, 0x1e, 0x04, ++ 0x3f, 0x04, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0x88, 0x78, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x22, 0x3e, 0x24, 0x3f, ++ 0x01, 0x3f, 0x08, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04, ++ 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x20, 0x12, 0x12, 0x02, 0x02, 0x72, 0x12, ++ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x3a, 0x36, ++ 0x37, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00, ++ 0x04, 0x04, 0x08, 0x11, 0x01, 0x02, 0x04, 0x18, ++ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x10, 0x00, 0x80, 0x40, 0x30, ++ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b, ++ 0x28, 0x4b, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0xfc, 0x24, 0xf8, 0xf8, 0x20, ++ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x10, 0x17, 0x78, 0x13, 0x1a, 0x37, 0x37, ++ 0x33, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xa0, 0xf8, 0xb8, 0x18, 0xf8, ++ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3f, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0a, 0x09, 0x09, 0x08, 0x7f, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x1f, 0x11, 0x1f, 0x11, 0x11, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf0, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x49, 0x4b, 0x4a, 0x4b, 0x48, ++ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x00, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7c, 0x11, 0x12, 0x10, 0x1f, ++ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa0, 0x24, 0x5c, 0x40, 0xfc, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, ++ 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20, ++ 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08, ++ 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x0a, 0x42, 0x24, 0x21, 0x06, 0x10, ++ 0x12, 0x12, 0x24, 0x21, 0x42, 0x4c, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x18, 0x44, 0x48, ++ 0x48, 0xd0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x11, 0x0f, 0x09, 0x41, 0x21, 0x21, 0x01, 0x1f, ++ 0x14, 0x14, 0x25, 0x26, 0x47, 0x44, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xfc, ++ 0xa0, 0xa4, 0x1c, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x10, ++ 0x14, 0x15, 0x29, 0x22, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x80, 0x88, ++ 0x88, 0x50, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x09, 0x7f, ++ 0x09, 0x08, 0x14, 0x12, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, ++ 0x08, 0x90, 0x90, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x12, 0x12, 0x13, 0x7c, 0x0b, 0x48, 0x2b, ++ 0x2a, 0x32, 0x1e, 0x72, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x09, 0x1f, 0x11, ++ 0x1f, 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x20, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0d, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2b, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x00, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3c, ++ 0x24, 0x26, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x40, 0x60, ++ 0x60, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d, ++ 0x25, 0x25, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x09, 0x1d, 0x23, 0x41, 0x0f, ++ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0, ++ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x7d, 0x02, 0x3a, 0x07, 0x39, ++ 0x05, 0x3b, 0x2a, 0x2b, 0x3c, 0x28, 0x00, 0x00, ++ 0x00, 0x0c, 0xf0, 0x10, 0x50, 0x50, 0x5c, 0x50, ++ 0x50, 0x50, 0xfc, 0x00, 0xc0, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x1b, 0x0d, 0x71, 0x00, 0x00, ++ 0x40, 0xb8, 0x28, 0x28, 0xe8, 0x4c, 0x04, 0xf8, ++ 0x48, 0x28, 0xf0, 0x10, 0x28, 0xc4, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x24, 0x22, ++ 0x22, 0x20, 0x20, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x17, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x11, ++ 0x15, 0x19, 0x61, 0x01, 0x00, 0x0f, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x7a, 0x09, 0x0b, 0x7a, 0x4b, 0x42, 0x7b, ++ 0x48, 0x4f, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x88, 0x48, 0x10, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x65, 0x55, 0x56, 0x44, 0x7f, 0x4c, ++ 0x4e, 0x55, 0x65, 0x44, 0x7f, 0x40, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0x40, 0x40, 0x7c, 0xc8, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x48, 0x7f, 0x48, ++ 0x49, 0x49, 0x7a, 0x4c, 0x09, 0x16, 0x00, 0x00, ++ 0x1c, 0xe4, 0x48, 0x30, 0xf8, 0x80, 0xfc, 0x80, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x3b, 0x35, ++ 0x35, 0x51, 0x51, 0x11, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x06, 0x38, 0x20, 0x20, 0x3c, 0x21, 0x22, 0x3d, ++ 0x20, 0x20, 0x3c, 0x60, 0x20, 0x23, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8, ++ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x20, 0x28, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0x24, ++ 0xa4, 0xa8, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x15, 0x35, 0x55, 0x15, ++ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x3f, 0x28, 0x48, 0x08, 0x7f, ++ 0x08, 0x0c, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x00, 0x12, 0x12, 0x12, 0x7e, 0x13, 0x16, 0x12, ++ 0x12, 0x16, 0x1a, 0x62, 0x02, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48, ++ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7c, 0x04, 0x04, 0x3c, 0x24, 0x23, 0x3c, ++ 0x24, 0x24, 0x04, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x25, 0x3d, ++ 0x25, 0x26, 0x3e, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x20, 0x10, 0x10, 0x40, 0x40, 0x40, 0x48, 0x44, ++ 0x44, 0x44, 0x40, 0x48, 0x48, 0x38, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x24, 0x7f, 0x0c, 0x0a, 0x12, ++ 0x2f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x10, 0x0a, 0x0a, 0x42, 0x22, 0x23, 0x0e, 0x02, ++ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x78, 0xc8, 0x48, 0x48, ++ 0x48, 0x70, 0x40, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0d, 0x19, ++ 0x2f, 0x49, 0x11, 0x12, 0x24, 0x48, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x28, 0x28, ++ 0xe8, 0x28, 0x28, 0xb8, 0xa8, 0x00, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x09, 0x0b, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x7f, 0x07, 0x24, ++ 0x27, 0x27, 0x24, 0x27, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x80, 0xfc, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x14, 0x23, 0x7f, 0x0a, 0x08, ++ 0x3e, 0x08, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x56, 0x56, 0x54, 0x7f, ++ 0x50, 0x18, 0x15, 0x1f, 0x62, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8, ++ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00, ++ 0x00, 0x27, 0x14, 0x17, 0x05, 0x04, 0x77, 0x14, ++ 0x15, 0x14, 0x1b, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0xa0, 0xf8, 0x40, ++ 0xf0, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x7e, 0x08, 0x0e, 0x71, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x90, 0xd4, 0x2c, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x1c, 0x05, 0x03, 0x7e, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0xc0, 0x20, 0xf0, 0x08, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x1f, 0x14, 0x25, 0x44, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x7f, 0x11, ++ 0x11, 0x11, 0x1e, 0x72, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xf0, 0x10, ++ 0x90, 0x50, 0x50, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x0c, 0x03, 0x7f, ++ 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xc0, 0x30, 0xc8, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x11, 0x0e, 0x01, 0x76, 0x10, ++ 0x13, 0x1c, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x88, 0xc8, 0x50, 0x60, 0xd0, ++ 0x48, 0x44, 0x44, 0x80, 0x00, 0xfc, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x09, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x44, 0x08, 0x3f, 0x02, 0x04, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x90, 0x70, 0xf8, 0x40, 0x70, ++ 0x88, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x19, 0x61, ++ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0x0c, ++ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x11, 0x78, 0x2b, 0x2a, 0x2b, ++ 0x2a, 0x7a, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8, ++ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x0f, 0x0c, ++ 0x17, 0x14, 0x27, 0x44, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, 0x21, ++ 0x3f, 0x21, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x14, 0x34, 0x54, 0x14, ++ 0x17, 0x14, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x44, 0x44, 0x44, ++ 0xfc, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x41, 0x01, 0x1f, 0x11, ++ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x1e, ++ 0x73, 0x12, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x17, 0x14, ++ 0x27, 0x44, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x40, 0xe0, 0x50, ++ 0xc8, 0x44, 0xc0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1b, ++ 0x2a, 0x28, 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x13, ++ 0x10, 0x10, 0x20, 0x20, 0x4f, 0x40, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x1f, ++ 0x11, 0x01, 0x01, 0x01, 0x7e, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x20, 0x10, 0xf8, 0x04, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, ++ 0x03, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0x08, 0xb0, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x80, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x08, 0x88, 0x08, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x48, ++ 0xfc, 0x48, 0xa8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x17, 0x13, 0x39, 0x34, ++ 0x37, 0x50, 0x50, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf0, 0x00, ++ 0xfc, 0x80, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x20, 0x1f, 0x12, 0x42, 0x26, 0x2a, 0x03, 0x17, ++ 0x1b, 0x22, 0x26, 0x5a, 0x42, 0x4c, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xb0, 0xfc, 0x20, 0x78, ++ 0xc8, 0xf8, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4f, 0x08, 0x19, ++ 0x2b, 0x4d, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00, ++ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x80, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x20, 0x40, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x09, 0x01, 0x1f, 0x01, 0x7f, 0x01, ++ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0x08, 0xf0, 0x20, 0xfc, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x3d, 0x24, ++ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x24, 0x14, 0x14, 0x04, 0x06, ++ 0x0c, 0x78, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0xa0, ++ 0x90, 0x90, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x07, 0x44, 0x24, 0x27, 0x04, 0x17, 0x14, ++ 0x25, 0x25, 0x45, 0x49, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xe8, 0x88, 0xf8, 0x08, ++ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x49, 0x49, 0x49, 0x49, 0x48, ++ 0x4f, 0x78, 0x49, 0x46, 0x18, 0x00, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x3f, 0x28, 0x7f, 0x14, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x78, 0x40, 0x78, 0x08, 0x78, ++ 0x40, 0x78, 0x78, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x54, 0x54, 0x54, 0x55, ++ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x57, ++ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc, ++ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x3f, 0x22, 0x22, 0x3f, ++ 0x22, 0x22, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x79, 0x09, 0x09, 0x79, 0x49, 0x41, 0x7f, ++ 0x49, 0x49, 0x09, 0x09, 0x11, 0x66, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc, ++ 0x48, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x24, 0x3f, 0x20, ++ 0x2e, 0x2a, 0x2a, 0x2e, 0x2a, 0x41, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xa0, 0xc8, 0x88, 0x90, 0x90, ++ 0xa4, 0x84, 0x88, 0x88, 0x90, 0xa0, 0x00, 0x00, ++ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x10, 0x2f, 0x62, ++ 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x20, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0x28, ++ 0x28, 0xb0, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00, ++ 0x22, 0x2a, 0x4f, 0x10, 0x3f, 0x52, 0x17, 0x13, ++ 0x1c, 0x01, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x20, 0xa0, 0xbc, 0x48, 0xa8, 0x28, 0x90, 0xb0, ++ 0x48, 0x04, 0x90, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x11, 0x10, 0x1d, ++ 0x72, 0x14, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x7d, 0x54, 0x7f, ++ 0x55, 0x53, 0x14, 0x11, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x22, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19, ++ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x43, 0x00, 0x00, ++ 0x00, 0x78, 0xc8, 0x48, 0x48, 0x78, 0x48, 0x48, ++ 0x78, 0x48, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x29, 0x29, 0x2b, 0x29, 0x3d, 0x21, 0x21, 0x39, ++ 0x28, 0x2f, 0x28, 0x29, 0x2e, 0x48, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24, ++ 0x24, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x4a, 0x79, 0x49, 0x48, 0x79, ++ 0x4e, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x7c, 0x2b, 0x28, 0x3b, 0x2a, 0x2a, 0x3b, ++ 0x2a, 0x2c, 0x3a, 0x6a, 0x0c, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x48, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3f, ++ 0x24, 0x24, 0x24, 0x24, 0x24, 0x4f, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc, ++ 0xc8, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x27, ++ 0x3d, 0x25, 0x26, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00, ++ 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xb8, 0x80, 0xfc, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08, ++ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x3d, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3d, ++ 0x00, 0x3f, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x50, 0x70, 0x00, 0xf8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x3e, 0x08, 0x08, 0x7e, 0x09, 0x28, ++ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xb0, 0x00, 0xf8, ++ 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x26, 0x3d, 0x09, 0x28, 0x2d, ++ 0x2a, 0x28, 0x2d, 0x39, 0x62, 0x04, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0x54, 0xd4, 0xd8, 0x50, 0xd8, ++ 0x54, 0x54, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x7f, ++ 0x09, 0x08, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xfc, ++ 0x10, 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x10, 0x33, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x0f, ++ 0x08, 0x0f, 0x29, 0x24, 0x24, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, ++ 0x00, 0xfc, 0x24, 0x94, 0x04, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x2a, 0x2a, 0x3e, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x11, 0x1d, ++ 0x72, 0x14, 0x10, 0x10, 0x11, 0x3e, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x50, 0x48, ++ 0x54, 0xd4, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x00, 0x27, 0x24, 0x27, 0x24, ++ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x24, 0x3f, ++ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x08, 0x08, 0x90, 0xa0, 0xf8, 0x40, 0x40, 0xfc, ++ 0x40, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x04, 0x10, ++ 0x10, 0x20, 0x20, 0x41, 0x42, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, ++ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13, ++ 0x10, 0x11, 0x1c, 0x60, 0x00, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x48, 0x84, 0x20, ++ 0x40, 0x88, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x04, 0x19, 0x77, 0x10, 0x13, 0x1f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x30, 0xc0, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x32, 0x2b, 0x26, ++ 0x27, 0x24, 0x39, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x03, 0x10, ++ 0x13, 0x10, 0x27, 0x20, 0x40, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x3c, 0x2b, 0x30, 0x2f, 0x24, 0x27, 0x38, ++ 0x23, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0xc8, 0x68, 0xb0, 0x70, 0xa8, ++ 0x24, 0xc0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1b, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7d, 0x10, 0x10, 0x3b, 0x35, ++ 0x35, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78, ++ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x20, 0x13, 0x12, 0x02, 0x03, 0x72, 0x13, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x12, 0x19, 0x25, 0x24, 0x78, 0x13, 0x7d, ++ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78, ++ 0x48, 0x48, 0x78, 0x48, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x29, 0x08, 0x1b, ++ 0x2a, 0x4b, 0x12, 0x13, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0xf8, ++ 0x48, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x27, 0x11, 0x10, 0x03, 0x02, 0x73, 0x12, ++ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0xc0, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x17, 0x7c, 0x11, 0x16, 0x10, ++ 0x13, 0x1c, 0x61, 0x06, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xc8, 0x68, 0xb0, ++ 0x30, 0x68, 0xa4, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x0b, 0x0a, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x88, 0xfc, 0x08, ++ 0x48, 0x28, 0x08, 0xfc, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x1e, ++ 0x72, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36, ++ 0x32, 0x53, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xc8, 0x78, 0x48, 0xf8, 0x48, ++ 0x48, 0x78, 0xb0, 0xb4, 0x54, 0x8c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x32, 0x53, 0x12, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x41, 0x20, 0x27, 0x01, 0x11, ++ 0x11, 0x11, 0x21, 0x21, 0x41, 0x46, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2b, 0x29, 0x4a, 0x0c, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x10, 0x00, 0x07, 0x70, 0x10, ++ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xfc, 0x00, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x65, 0x18, 0x11, 0x2a, 0x7f, ++ 0x1a, 0x35, 0x34, 0x31, 0x52, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xb0, 0x90, 0x68, 0x48, 0xf8, ++ 0x48, 0x68, 0xb0, 0x90, 0x28, 0x44, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x35, ++ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x10, ++ 0xf8, 0x14, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x2f, 0x03, 0x12, ++ 0x13, 0x13, 0x22, 0x23, 0x43, 0x4c, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xf0, 0x80, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x12, 0x7d, 0x11, 0x10, 0x17, ++ 0x10, 0x1c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5f, ++ 0x12, 0x1f, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0, ++ 0x90, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x13, 0x7f, 0x2b, 0x28, 0x2f, ++ 0x28, 0x73, 0x5a, 0x16, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc, ++ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e, ++ 0x13, 0x1a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x10, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x3f, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x88, 0x88, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x52, 0x14, 0x28, 0x3e, 0x68, ++ 0x3e, 0x28, 0x3e, 0x29, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f, ++ 0x20, 0x5f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12, ++ 0x12, 0x13, 0x1c, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x20, 0x20, ++ 0x20, 0x90, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x50, 0x17, ++ 0x14, 0x1b, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12, ++ 0x13, 0x12, 0x13, 0x11, 0x16, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x20, 0x10, 0x08, 0x00, 0x00, ++ 0x22, 0x12, 0x14, 0x7f, 0x09, 0x7f, 0x48, 0x7f, ++ 0x59, 0x19, 0x2e, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x01, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x10, 0x17, ++ 0x10, 0x1e, 0x62, 0x03, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x3f, 0x01, 0x09, ++ 0x09, 0x09, 0x09, 0x15, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x3f, 0x21, 0x5f, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x40, 0xfc, 0x08, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x13, 0x12, 0x12, 0x13, ++ 0x12, 0x12, 0x13, 0x1c, 0x27, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x30, 0xc0, 0x40, 0x40, 0xfc, ++ 0x20, 0x20, 0x90, 0x14, 0xec, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1e, 0x12, 0x14, 0x1f, ++ 0x12, 0x1a, 0x14, 0x26, 0x29, 0x50, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x18, 0xe0, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0xf8, 0x00, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x08, 0x10, 0x10, 0x3f, 0x08, ++ 0x48, 0x28, 0x13, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x3f, 0x21, 0x3f, ++ 0x23, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x1b, 0x34, 0x37, 0x32, 0x53, ++ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc, ++ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x1d, ++ 0x71, 0x11, 0x16, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7a, 0x12, 0x17, 0x11, 0x1d, ++ 0x75, 0x12, 0x12, 0x15, 0x18, 0x30, 0x00, 0x00, ++ 0x00, 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0xf8, 0x00, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f, ++ 0x70, 0x12, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x09, 0x08, 0x08, 0x7f, 0x08, 0x1b, 0x1e, 0x1b, ++ 0x2a, 0x28, 0x49, 0x0a, 0x0c, 0x08, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc, ++ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x40, 0x20, 0x20, 0x00, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x11, 0x12, 0x3f, 0x24, 0x64, ++ 0x24, 0x24, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x09, 0x09, 0x11, 0x19, ++ 0x35, 0x55, 0x11, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x0d, 0x39, 0x09, 0x09, 0x7e, 0x09, 0x1c, ++ 0x1a, 0x2b, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x65, 0x28, 0x1b, 0x22, 0x7c, ++ 0x13, 0x3a, 0x36, 0x36, 0x52, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00, ++ 0x08, 0x13, 0x3c, 0x25, 0x35, 0x2f, 0x2c, 0x7e, ++ 0x26, 0x2d, 0x2d, 0x2e, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0x8c, 0xf0, 0x10, 0x10, 0x90, 0xfc, 0x90, ++ 0x90, 0x10, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x24, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x09, 0x2f, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x27, 0x14, 0x17, 0x04, 0x07, 0x04, 0x77, ++ 0x1a, 0x1a, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0xfc, 0x40, 0xf8, ++ 0x48, 0x48, 0x70, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24, ++ 0x22, 0x3a, 0x61, 0x00, 0x7e, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48, ++ 0x44, 0xc4, 0xe4, 0xd8, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x0a, 0x7f, 0x0c, 0x3f, 0x2f, 0x33, 0x3f, ++ 0x3f, 0x04, 0x7f, 0x0a, 0x11, 0x20, 0x00, 0x00, ++ 0x00, 0x78, 0xc8, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0xe4, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x07, 0x24, 0x27, 0x27, 0x24, 0x27, 0x3e, ++ 0x02, 0x7e, 0x12, 0x12, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xc0, 0x48, 0xc8, 0xc8, 0x48, 0xc8, 0xf8, ++ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x02, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x98, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7d, 0x10, 0x13, 0x12, 0x1f, ++ 0x72, 0x12, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8, ++ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x11, 0x1f, ++ 0x76, 0x13, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, 0xf8, ++ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x49, 0x7f, ++ 0x49, 0x5d, 0x55, 0x5d, 0x41, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x42, 0x21, 0x27, 0x04, 0x17, ++ 0x14, 0x15, 0x25, 0x25, 0x45, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xe8, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x7c, 0x45, 0x45, 0x46, 0x7c, ++ 0x44, 0x44, 0x44, 0x7c, 0x40, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x41, 0x1f, 0x11, ++ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12, ++ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0x48, 0xf8, 0x48, ++ 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x25, 0x24, 0x7b, 0x12, 0x7f, ++ 0x12, 0x56, 0x3a, 0x32, 0x1e, 0x62, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8, ++ 0x48, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x27, 0x24, 0x07, 0x10, ++ 0x14, 0x13, 0x22, 0x24, 0x40, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0xf8, 0x88, ++ 0xc8, 0xb8, 0xa8, 0xc8, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x11, 0x11, 0x2f, 0x4b, 0x0a, 0x1f, 0x10, 0x37, ++ 0x54, 0x17, 0x14, 0x17, 0x14, 0x15, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7b, 0x12, 0x1f, 0x10, 0x1f, ++ 0x74, 0x17, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0x48, 0xa8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x11, 0x11, 0x7f, 0x11, 0x7e, 0x57, 0x7c, 0x57, ++ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xbc, 0xc8, 0x68, 0xa8, ++ 0xa8, 0x90, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x22, 0x12, 0x13, 0x04, 0x08, 0x7f, 0x10, ++ 0x10, 0x11, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xc0, ++ 0xa0, 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x12, ++ 0x12, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90, ++ 0x90, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x11, ++ 0x11, 0x1d, 0x61, 0x07, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x03, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x80, ++ 0x80, 0x40, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x1f, 0x12, ++ 0x1f, 0x12, 0x12, 0x22, 0x23, 0x5c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, 0xf8, 0x40, ++ 0xfc, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x17, 0x14, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xfc, 0x80, 0x80, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x21, 0x02, 0x14, ++ 0x12, 0x12, 0x24, 0x28, 0x40, 0x41, 0x00, 0x00, ++ 0x38, 0xc0, 0x40, 0xfc, 0xa0, 0x10, 0x88, 0x84, ++ 0xd0, 0xa8, 0xa4, 0xa4, 0x80, 0x80, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e, ++ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x15, 0x00, 0x00, ++ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8, ++ 0xfc, 0xb4, 0x2c, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x50, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e, ++ 0x22, 0x3e, 0x7f, 0x0c, 0x12, 0x63, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x0f, 0x08, 0x08, 0x08, ++ 0x0f, 0x08, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x20, 0x20, 0x20, ++ 0xe0, 0x20, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10, ++ 0x10, 0x11, 0x11, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, ++ 0xa0, 0x10, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x3f, 0x2a, 0x2a, 0x3f, ++ 0x2a, 0x3f, 0x2c, 0x4a, 0x52, 0x23, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x8c, 0xf8, ++ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x20, 0x1f, 0x18, 0x08, 0x4f, 0x2a, 0x2a, 0x0f, ++ 0x1a, 0x1a, 0x2f, 0x2b, 0x54, 0x48, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xac, 0xc4, 0xfc, ++ 0xa8, 0xa8, 0xd0, 0x30, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x21, ++ 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, ++ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x48, 0x48, 0x48, ++ 0x48, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x11, ++ 0x17, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x60, 0xfc, 0x40, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x30, 0x08, 0x61, 0x17, 0x00, 0x0f, 0x11, 0x26, ++ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xa0, 0x10, 0xfc, 0x40, 0xfc, 0x50, 0x48, ++ 0xc0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x25, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x10, 0x1f, ++ 0x11, 0x17, 0x19, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xf0, 0xa0, 0xfc, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x48, 0x08, 0x17, 0x10, 0x32, ++ 0x52, 0x12, 0x12, 0x15, 0x18, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x0c, 0x02, 0x00, 0x18, 0x04, 0x00, 0x00, ++ 0x07, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x19, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x27, 0x24, 0x04, 0x14, ++ 0x17, 0x15, 0x24, 0x28, 0x49, 0x56, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0x00, ++ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x0e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x20, 0x4f, ++ 0x08, 0x0f, 0x04, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0xe4, ++ 0x20, 0xe0, 0x40, 0x80, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x18, 0x7f, 0x11, ++ 0x11, 0x1f, 0x13, 0x05, 0x19, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x80, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x44, 0x24, 0xfc, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24, ++ 0x25, 0x3e, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x20, 0x11, 0x11, 0x02, 0x0f, 0x70, 0x1f, ++ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0xf8, 0x84, 0xf8, ++ 0xa0, 0x90, 0x88, 0x88, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x09, 0x0a, 0x7f, 0x08, 0x1f, ++ 0x31, 0x5f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0xe0, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x23, 0x7d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x1a, 0x0e, 0x75, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0x00, ++ 0xf8, 0x48, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65, ++ 0x25, 0x25, 0x27, 0x3c, 0x25, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x10, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3e, 0x22, 0x24, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x38, ++ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x12, 0x12, 0x3c, 0x06, 0x19, ++ 0x61, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x48, 0x50, 0x20, 0xd0, 0x0c, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x13, 0x10, ++ 0x17, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xe0, 0x00, ++ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x48, 0x50, 0x50, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x04, 0x1b, ++ 0x61, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x0f, 0x09, 0x11, 0x12, 0x3f, 0x51, 0x11, ++ 0x17, 0x11, 0x11, 0x11, 0x1e, 0x10, 0x00, 0x00, ++ 0x08, 0xe8, 0x28, 0xa8, 0x68, 0xe8, 0x28, 0x28, ++ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, ++ 0x0f, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x01, 0x03, 0x0c, 0x32, 0x01, 0x03, 0x0c, ++ 0x73, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x20, 0x40, 0x80, 0x40, 0x30, ++ 0x0c, 0x80, 0x00, 0x00, 0xc0, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x0b, 0x0a, ++ 0x13, 0x10, 0x21, 0x22, 0x2c, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x10, 0x17, ++ 0x10, 0x17, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0x90, 0xf0, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x11, 0x17, 0x11, 0x7d, 0x10, 0x11, 0x17, ++ 0x14, 0x1b, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x10, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x13, 0x12, 0x13, ++ 0x12, 0x1f, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x1f, 0x64, 0x07, 0x04, ++ 0x07, 0x04, 0x7f, 0x02, 0x04, 0x3f, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0xf0, 0x0c, 0xc0, 0x00, ++ 0xc0, 0x00, 0xfc, 0x80, 0x60, 0x90, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x7f, 0x04, 0x04, ++ 0x0f, 0x0c, 0x14, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0x00, 0xfc, 0x24, 0x24, 0xe4, 0x38, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x7d, 0x47, 0x42, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x33, 0x52, ++ 0x13, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x1f, ++ 0x71, 0x11, 0x10, 0x10, 0x13, 0x3c, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0, ++ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x15, ++ 0x30, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x50, 0xa0, 0x18, 0xf4, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7e, 0x11, 0x39, 0x34, 0x35, ++ 0x56, 0x50, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x3f, 0x34, ++ 0x37, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x12, 0x3b, 0x36, ++ 0x37, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x21, 0x11, 0x02, 0x0a, 0x14, 0x21, 0x22, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x43, 0x23, 0x25, 0x0a, 0x17, ++ 0x10, 0x12, 0x22, 0x23, 0x42, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8, ++ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x00, 0x1f, ++ 0x12, 0x23, 0x24, 0x49, 0x42, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x08, ++ 0x0f, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48, ++ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x11, 0x10, 0x16, 0x15, 0x39, 0x32, 0x35, 0x51, ++ 0x11, 0x19, 0x14, 0x24, 0x27, 0x40, 0x00, 0x00, ++ 0xc8, 0x48, 0xb0, 0xa4, 0xf8, 0x08, 0xf4, 0x10, ++ 0xf0, 0x10, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x11, 0x09, 0x09, 0x01, 0x3f, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x20, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x1a, ++ 0x2a, 0x4b, 0x12, 0x11, 0x21, 0x4f, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x05, 0x08, 0x0b, 0x14, ++ 0x37, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x90, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x3f, ++ 0x00, 0x7f, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x42, 0x04, 0x1f, ++ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x80, 0x40, 0xf0, ++ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x10, 0x17, ++ 0x10, 0x13, 0x12, 0x12, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x08, 0xe8, ++ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7f, 0x12, 0x1b, ++ 0x36, 0x37, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x98, 0xe4, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x0c, 0x12, 0x7d, 0x09, 0x08, ++ 0x7f, 0x08, 0x08, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x7f, 0x0f, 0x09, 0x0f, ++ 0x09, 0x0f, 0x3f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x80, 0xfc, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x11, 0x09, 0x49, 0x21, 0x21, ++ 0x0f, 0x09, 0x13, 0x1c, 0x23, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x39, 0x28, 0x2b, 0x38, 0x2f, ++ 0x29, 0x3b, 0x2c, 0x2b, 0x28, 0x58, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x50, 0xe0, 0xf8, 0xa0, 0xfc, ++ 0x50, 0x58, 0xe4, 0x50, 0x48, 0xc0, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3c, 0x01, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x02, 0x3d, 0x27, 0x24, 0x3f, 0x25, 0x26, 0x27, ++ 0x3c, 0x24, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0x10, 0xf8, 0xfc, ++ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, ++ 0x08, 0x04, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x20, 0x20, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x29, 0x08, 0x2e, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x20, 0x14, 0x12, 0x02, 0x00, 0x71, 0x12, ++ 0x1d, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0x28, 0x24, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x23, 0x10, 0x17, 0x00, 0x01, 0x77, 0x10, ++ 0x10, 0x11, 0x12, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0xec, 0xa0, ++ 0xb8, 0x28, 0x08, 0x30, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5d, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0xe8, 0x68, 0x74, 0x94, 0xf8, 0x08, 0xfc, 0x88, ++ 0xf8, 0x90, 0x50, 0x60, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x79, 0x49, 0x53, 0x65, 0x59, 0x4a, 0x4f, ++ 0x48, 0x4a, 0x72, 0x43, 0x42, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x88, 0xf8, ++ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, ++ 0x12, 0x14, 0x08, 0x0e, 0x71, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x02, 0x39, 0x2b, 0x28, 0x2f, 0x39, 0x2b, 0x2d, ++ 0x39, 0x29, 0x29, 0x2b, 0x2a, 0x5c, 0x00, 0x00, ++ 0x48, 0x50, 0xf8, 0xa0, 0xfc, 0xf0, 0x48, 0xf4, ++ 0xf0, 0x40, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f, ++ 0x2f, 0x2a, 0x2e, 0x2a, 0x27, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x28, 0x28, ++ 0xf8, 0xa8, 0xa8, 0x28, 0x28, 0x78, 0x00, 0x00, ++ 0x11, 0x1e, 0x12, 0x3f, 0x2f, 0x6a, 0x2f, 0x2a, ++ 0x2f, 0x22, 0x2f, 0x22, 0x23, 0x2c, 0x00, 0x00, ++ 0xa0, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0x28, 0xa8, 0x28, 0xc8, 0x98, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x3e, 0x08, 0x0f, 0x72, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x40, 0x40, 0x5f, 0x40, 0x4f, 0x48, ++ 0x48, 0x48, 0x4f, 0x48, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x08, 0xc8, 0x48, ++ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x08, 0x0f, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0x20, 0xe0, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x21, 0x1f, 0x10, 0x03, 0x72, 0x13, 0x13, 0x1a, ++ 0x67, 0x03, 0x7f, 0x04, 0x02, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0x10, ++ 0xf0, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x17, 0x3b, 0x36, 0x37, 0x52, ++ 0x13, 0x10, 0x13, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x12, 0x13, 0x16, ++ 0x1b, 0x70, 0x13, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x0c, 0x44, 0x27, 0x24, 0x05, 0x15, ++ 0x15, 0x15, 0x25, 0x24, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0x28, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7b, 0x49, 0x4f, 0x7b, 0x4a, 0x4b, 0x7a, ++ 0x4b, 0x48, 0x7b, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x04, 0x7f, 0x0f, 0x09, 0x0f, 0x09, ++ 0x0f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x04, 0x74, 0x54, ++ 0x54, 0x54, 0x74, 0x44, 0x04, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x0c, 0x08, 0x1f, 0x24, 0x4f, ++ 0x12, 0x3f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8, ++ 0x08, 0xe8, 0x48, 0x48, 0xc8, 0x30, 0x00, 0x00, ++ 0x02, 0x21, 0x1f, 0x10, 0x03, 0x02, 0x73, 0x12, ++ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8, ++ 0xa8, 0xa8, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x57, ++ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc, ++ 0x60, 0x50, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x20, 0x26, 0x39, 0x21, 0x23, 0x1f, 0x11, 0x11, ++ 0x7f, 0x11, 0x11, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x2f, 0x22, 0x21, 0x3f, 0x22, ++ 0x27, 0x2a, 0x33, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x00, 0xf8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x21, 0x49, 0x09, 0x11, 0x10, 0x37, ++ 0x50, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x27, 0x48, 0x0b, 0x12, 0x12, 0x33, ++ 0x53, 0x10, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x08, 0xd0, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00, ++ 0x20, 0x10, 0x17, 0x40, 0x23, 0x20, 0x03, 0x12, ++ 0x14, 0x10, 0x20, 0x21, 0x42, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08, ++ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x2b, 0x28, 0x3c, 0x2b, 0x28, 0x48, ++ 0x0f, 0x79, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x7f, 0x2a, 0x29, 0x5f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0xec, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x80, 0xf0, 0x80, ++ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f, ++ 0x09, 0x7f, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xc0, 0x00, 0x00, ++ 0x04, 0x44, 0x28, 0x13, 0x32, 0x4a, 0x0a, 0x1b, ++ 0x2a, 0x48, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8, ++ 0x48, 0x50, 0x48, 0x78, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x01, 0x3d, ++ 0x02, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x08, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x2a, 0x4a, 0x0c, 0x09, 0x0a, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x78, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x13, 0x38, 0x35, ++ 0x36, 0x51, 0x56, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x80, 0xe8, ++ 0x68, 0xb0, 0x68, 0xa4, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x3c, 0x24, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x11, 0x01, ++ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x80, 0x88, 0x78, 0x00, ++ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x3a, 0x37, ++ 0x36, 0x52, 0x53, 0x16, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0xb8, 0x28, 0x28, 0xac, 0x4c, 0x04, 0xf8, ++ 0x28, 0xa8, 0x10, 0x30, 0x48, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x1f, 0x18, ++ 0x18, 0x1f, 0x28, 0x28, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0xf8, 0x88, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x1f, 0x10, 0x1f, ++ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x40, 0x00, 0x00, ++ 0x10, 0xfc, 0x80, 0x40, 0xe4, 0xdc, 0x44, 0xc0, ++ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x01, 0x01, ++ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x5f, 0x01, 0x1f, 0x11, ++ 0x1f, 0x11, 0x1f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf0, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, ++ 0x28, 0x30, 0x3f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x98, 0x98, ++ 0x78, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x24, 0x1f, 0x14, 0x4f, 0x24, 0x3f, 0x00, 0x1f, ++ 0x19, 0x2f, 0x29, 0x4f, 0x49, 0x4b, 0x00, 0x00, ++ 0x20, 0x20, 0x78, 0x90, 0x20, 0xf8, 0x28, 0xfc, ++ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x02, 0x02, 0x73, 0x5e, 0x52, 0x5a, 0x5a, 0x5a, ++ 0x7f, 0x5a, 0x4a, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x7c, 0x90, 0x20, 0xf8, 0xc8, 0xf8, 0xc8, ++ 0xf8, 0xc8, 0x78, 0xb0, 0xa8, 0xc4, 0x00, 0x00, ++ 0x02, 0x02, 0x03, 0x7e, 0x22, 0x22, 0x22, 0x22, ++ 0x3f, 0x22, 0x22, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x30, 0xc0, 0x00, 0x20, 0x20, 0x20, 0x20, ++ 0xe0, 0x20, 0x20, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x19, 0x35, 0x35, 0x30, 0x53, ++ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf0, ++ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x00, ++ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x22, 0x02, 0x0a, ++ 0x0b, 0x0a, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc0, 0x48, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x27, ++ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x88, 0x48, 0x70, 0xa0, 0x30, ++ 0x70, 0xa8, 0x24, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x02, 0x02, 0x72, 0x12, ++ 0x12, 0x14, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x0f, 0x78, 0x08, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x3e, 0x28, 0x0a, 0x0a, 0x07, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x18, ++ 0x6f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, ++ 0xec, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x01, 0x3f, 0x2d, ++ 0x4d, 0x1f, 0x00, 0x7f, 0x04, 0x3f, 0x00, 0x00, ++ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0x00, 0xfc, 0x68, ++ 0x60, 0xf0, 0x00, 0xfc, 0x60, 0x90, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x3c, 0xe0, 0x28, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x02, 0x04, 0x18, 0x67, 0x00, ++ 0x3f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x80, 0x40, 0x30, 0xcc, 0x00, ++ 0xf8, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x09, 0x3f, 0x09, 0x09, 0x3f, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x22, ++ 0x24, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x48, ++ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x0f, 0x09, 0x11, 0x21, 0x41, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x11, 0x11, 0x15, 0x15, 0x15, ++ 0x15, 0x15, 0x15, 0x3f, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xd0, 0x10, ++ 0x10, 0x10, 0x14, 0xec, 0x0c, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x14, 0x10, 0x3e, 0x28, 0x49, ++ 0x7e, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x90, 0xfc, 0x90, ++ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x3a, 0x01, 0x7d, 0x00, 0x38, 0x07, 0x39, ++ 0x01, 0x39, 0x29, 0x2b, 0x3c, 0x28, 0x00, 0x00, ++ 0x20, 0x28, 0xa8, 0x70, 0x20, 0xfc, 0x70, 0x70, ++ 0xa8, 0xa4, 0x20, 0x20, 0xc0, 0x3c, 0x00, 0x00, ++ 0x25, 0x15, 0x1f, 0x45, 0x2f, 0x2a, 0x0f, 0x12, ++ 0x1f, 0x22, 0x2f, 0x43, 0x44, 0x58, 0x00, 0x00, ++ 0x28, 0x28, 0xb0, 0x7c, 0xd0, 0xd0, 0xfc, 0x50, ++ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x1c, ++ 0x77, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0x10, 0xf8, 0x04, ++ 0xf8, 0x40, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0xfc, 0x04, ++ 0x74, 0x54, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7f, 0x14, 0x13, 0x3a, 0x36, ++ 0x36, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, ++ 0xb8, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7f, ++ 0x12, 0x3b, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x03, 0x7c, 0x56, 0x55, 0x55, 0x7e, 0x57, ++ 0x54, 0x56, 0x7d, 0x45, 0x42, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xb0, 0x48, 0xf8, ++ 0xa8, 0xa8, 0x10, 0x90, 0x68, 0x44, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x24, 0x22, ++ 0x2f, 0x21, 0x2f, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x88, ++ 0xe8, 0x08, 0xe8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x13, 0x3a, 0x37, ++ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xc8, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x3e, 0x2b, 0x3e, 0x08, ++ 0x3e, 0x08, 0x7f, 0x14, 0x22, 0x40, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x27, 0x21, 0x01, 0x09, ++ 0x0b, 0x0a, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10, ++ 0x90, 0x60, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12, ++ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x38, ++ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x1f, ++ 0x00, 0x00, 0x01, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20, ++ 0x20, 0x20, 0x90, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x21, 0x11, 0x13, 0x02, 0x04, 0x79, 0x11, ++ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48, ++ 0x44, 0x44, 0x40, 0xc0, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x28, 0x49, 0x0e, ++ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, 0x08, ++ 0x08, 0x48, 0x48, 0xc8, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25, ++ 0x25, 0x3d, 0x19, 0x15, 0x22, 0x45, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x00, 0xfc, 0x60, ++ 0x64, 0x58, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, 0x25, 0x29, ++ 0x21, 0x22, 0x24, 0x28, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x88, 0x48, 0x28, 0x28, ++ 0x88, 0x48, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x3e, 0x2c, 0x0a, 0x0f, 0x19, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x03, 0x7c, 0x11, 0x49, 0x2a, 0x24, 0x3f, 0x02, ++ 0x04, 0x07, 0x7c, 0x04, 0x04, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x0f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, ++ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f, ++ 0x11, 0x12, 0x24, 0x38, 0x40, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x80, 0x88, 0xc8, ++ 0xb0, 0xa0, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x04, 0x3c, 0x04, ++ 0x3c, 0x04, 0x3c, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x40, 0x78, 0x40, ++ 0x78, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x10, 0x30, 0x57, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x13, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x20, 0x00, 0x00, ++ 0x00, 0x1c, 0xe0, 0x20, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x0d, 0x03, 0x02, 0x0c, 0x30, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x10, 0x60, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x01, 0x3c, ++ 0x00, 0x3d, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xc8, 0x68, 0x88, 0x30, 0x40, ++ 0xa0, 0xa8, 0x84, 0x94, 0x90, 0x70, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x47, 0x27, 0x23, 0x00, 0x0f, ++ 0x08, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc, ++ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7e, 0x07, 0x0a, 0x0b, 0x1a, ++ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0x4c, 0xf8, 0xd8, 0xf8, 0xd8, ++ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0a, 0x10, 0x18, ++ 0x34, 0x55, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8, ++ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x3f, 0x23, 0x54, 0x14, 0x23, 0x1f, 0x12, ++ 0x1f, 0x00, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xa0, 0x50, 0xc8, 0xf0, 0x90, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x2f, 0x44, 0x09, ++ 0x13, 0x00, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe8, 0x08, ++ 0x30, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x09, 0x49, 0x37, 0x11, 0x31, 0x48, 0x0b, 0x1a, ++ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x7f, 0x15, 0x2b, 0x7e, ++ 0x08, 0x0f, 0x70, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, 0x50, 0x74, ++ 0x94, 0x0c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x20, 0x4f, 0x08, 0x08, ++ 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x80, 0x80, 0xf0, 0x80, 0x80, ++ 0x80, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x00, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x40, ++ 0x80, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x1c, ++ 0x70, 0x11, 0x15, 0x15, 0x19, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0x10, ++ 0xa0, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00, ++ 0x12, 0x12, 0x13, 0x7a, 0x16, 0x15, 0x1d, 0x13, ++ 0x1a, 0x74, 0x18, 0x15, 0x14, 0x38, 0x00, 0x00, ++ 0x30, 0x28, 0xa8, 0xa0, 0xfc, 0xa0, 0x30, 0x50, ++ 0x48, 0x84, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x11, 0x11, 0x15, 0x15, 0x3b, 0x32, 0x36, 0x59, ++ 0x12, 0x14, 0x18, 0x25, 0x24, 0x48, 0x00, 0x00, ++ 0x20, 0x28, 0xe4, 0x64, 0x7c, 0xa0, 0xa0, 0x50, ++ 0x50, 0x88, 0x04, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x78, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x08, 0x13, 0x12, 0x3a, 0x0a, ++ 0x4b, 0x2a, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8, ++ 0x38, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x1a, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x40, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x09, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x3f, 0x2a, 0x7f, ++ 0x0f, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, 0xa8, 0xf8, ++ 0xe0, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x19, 0x34, 0x34, 0x33, 0x52, ++ 0x12, 0x12, 0x12, 0x13, 0x13, 0x12, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0x20, 0x40, 0x20, 0x28, 0xa8, ++ 0x48, 0x48, 0xa8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x05, ++ 0x14, 0x17, 0x25, 0x25, 0x49, 0x56, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf0, ++ 0x00, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x67, 0x1a, 0x1a, 0x26, 0x7e, ++ 0x12, 0x1b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8, ++ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x01, 0x3e, 0x22, ++ 0x3e, 0x22, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0x4c, 0x70, 0x44, 0x44, 0x3c, 0x40, ++ 0x4c, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x25, 0x3c, 0x25, 0x25, 0x3d, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x88, 0x48, 0x48, 0x10, 0x20, 0x18, 0x98, 0x68, ++ 0x28, 0x58, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3b, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b, 0x3a, ++ 0x2a, 0x2b, 0x2a, 0x2a, 0x2c, 0x5b, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8, ++ 0x00, 0xfc, 0xc8, 0xb0, 0xd0, 0x0c, 0x00, 0x00, ++ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x1f, 0x17, ++ 0x10, 0x1f, 0x12, 0x12, 0x23, 0x5c, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf8, 0xf0, ++ 0x00, 0xfc, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x02, 0x7e, 0x02, 0x3a, 0x2a, 0x2a, ++ 0x2a, 0x3a, 0x2a, 0x02, 0x02, 0x0d, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x12, 0x09, 0x07, 0x19, 0x6f, ++ 0x09, 0x09, 0x0f, 0x01, 0x01, 0x7e, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0x80, 0xc0, 0x30, 0xec, ++ 0x20, 0x20, 0xe0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x13, 0x1e, ++ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x17, 0x10, 0x11, 0x1a, ++ 0x77, 0x12, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x10, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48, ++ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x14, 0x7f, 0x1c, ++ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x13, ++ 0x12, 0x12, 0x24, 0x24, 0x49, 0x56, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x22, 0x02, 0x12, ++ 0x12, 0x12, 0x24, 0x24, 0x48, 0x50, 0x00, 0x00, ++ 0x20, 0xc0, 0x08, 0x30, 0xc0, 0xc8, 0xc8, 0xb0, ++ 0xa0, 0x90, 0x90, 0x88, 0x84, 0x80, 0x00, 0x00, ++ 0x00, 0x3e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x1f, ++ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x11, 0x11, 0x21, 0x3d, 0x65, ++ 0x25, 0x25, 0x26, 0x3e, 0x25, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x28, 0x30, 0x20, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x30, 0x0b, 0x62, 0x0b, 0x12, 0x24, 0x27, 0x09, ++ 0x7f, 0x02, 0x07, 0x08, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0x9c, 0x00, ++ 0xfc, 0x20, 0x40, 0xe0, 0x10, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x29, 0x24, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0xf8, 0x80, 0xf0, 0x80, ++ 0xf0, 0x80, 0xfc, 0x24, 0x94, 0x38, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11, ++ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x00, 0x09, 0x24, 0x24, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc, ++ 0x04, 0x24, 0x94, 0x04, 0x04, 0x38, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x57, 0x10, ++ 0x10, 0x17, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0, ++ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x13, 0x18, 0x15, 0x12, 0x1f, ++ 0x11, 0x1f, 0x21, 0x22, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0x90, 0xd4, 0x24, 0x18, 0xf8, ++ 0x44, 0xf8, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x13, ++ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x17, 0x18, ++ 0x70, 0x17, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0, ++ 0xa0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x29, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x70, 0x68, 0xa8, ++ 0xa4, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x03, 0x0d, 0x71, 0x01, 0x1f, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xc0, 0x30, 0x08, 0x04, 0xf0, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x28, 0x28, 0x2b, 0x2a, 0x3f, 0x22, 0x23, 0x3a, ++ 0x28, 0x29, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8, ++ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7c, 0x04, 0x1c, 0x64, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x88, 0xf0, 0x80, 0x84, 0x7c, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x25, 0x3d, ++ 0x25, 0x25, 0x25, 0x25, 0x24, 0x4c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x24, ++ 0x24, 0x24, 0x24, 0x2c, 0x20, 0x20, 0x00, 0x00, ++ 0x02, 0x7e, 0x02, 0x3e, 0x7f, 0x05, 0x7f, 0x0f, ++ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0x40, 0x78, 0x7c, 0x40, 0xfc, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x78, 0x48, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x12, 0x11, 0x31, 0x5f, 0x10, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x20, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x17, 0x10, ++ 0x11, 0x1d, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x24, 0x24, 0x24, ++ 0x7f, 0x48, 0x0d, 0x16, 0x24, 0x40, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x0a, 0x18, 0x1c, 0x1b, ++ 0x2a, 0x28, 0x49, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xa8, 0xa8, 0xfc, ++ 0xa8, 0xa8, 0xfc, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2b, 0x28, 0x49, 0x0e, 0x08, 0x08, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x0a, 0x2c, 0x28, 0x28, 0x48, ++ 0x0b, 0x08, 0x14, 0x13, 0x26, 0x40, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x40, ++ 0xfc, 0xe0, 0xd0, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x19, 0x29, 0x48, 0x08, 0x09, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0x08, 0xf8, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x20, ++ 0x44, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x08, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x22, 0x3f, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x29, 0x28, 0x30, 0x2b, 0x24, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x90, 0xa0, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x21, 0x10, 0x17, 0x00, 0x01, 0x70, 0x11, ++ 0x10, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xa4, 0x1c, 0x00, 0x00, ++ 0x02, 0x0d, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x3e, 0x29, 0x49, 0x09, 0x7f, ++ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x41, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x08, 0xc8, ++ 0x48, 0x48, 0x48, 0x48, 0x48, 0x88, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e, ++ 0x1c, 0x1b, 0x2a, 0x48, 0x08, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x24, 0xa4, 0xa8, ++ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x02, 0x3e, 0x02, 0x7f, 0x04, 0x25, ++ 0x15, 0x16, 0x1d, 0x64, 0x04, 0x0c, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, ++ 0x10, 0x17, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x10, 0xfc, 0x10, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x11, 0x11, 0x1d, ++ 0x71, 0x11, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x13, ++ 0x12, 0x12, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x43, 0x10, 0x09, 0x41, ++ 0x29, 0x09, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x30, 0x40, 0xf8, 0x08, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x7f, ++ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x0f, 0x4b, 0x22, 0x23, ++ 0x12, 0x13, 0x2f, 0x21, 0x40, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x20, 0x11, 0x13, 0x02, 0x02, 0x73, 0x12, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4b, 0x48, ++ 0x4f, 0x49, 0x7b, 0x4c, 0x43, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x23, 0x22, 0x03, 0x12, ++ 0x13, 0x10, 0x2f, 0x20, 0x43, 0x4c, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x80, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x15, 0x35, 0x38, 0x33, 0x50, ++ 0x17, 0x19, 0x17, 0x24, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0xa0, 0xf8, 0xa0, ++ 0xfc, 0x50, 0x58, 0xe4, 0x58, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x64, 0x2b, 0x1a, 0x27, 0x7e, ++ 0x13, 0x38, 0x37, 0x35, 0x50, 0x10, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0a, 0x3e, 0x3a, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x08, 0x08, 0xd0, 0x30, 0x28, 0x44, 0x88, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x01, ++ 0x03, 0x0e, 0x31, 0x01, 0x06, 0x78, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, ++ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x42, 0x47, 0x51, 0x49, 0x4b, ++ 0x45, 0x59, 0x43, 0x40, 0x7f, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x08, 0x28, 0x28, 0xc8, 0x48, ++ 0x28, 0x28, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f, ++ 0x08, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x00, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x12, 0x10, 0x3c, 0x24, 0x65, ++ 0x27, 0x25, 0x3d, 0x21, 0x21, 0x01, 0x00, 0x00, ++ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f, 0x03, ++ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x20, 0xfc, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x3e, 0x23, 0x3e, 0x21, 0x4f, 0x7f, ++ 0x01, 0x0f, 0x3f, 0x01, 0x7f, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x30, 0xcc, 0xe0, 0xfc, ++ 0x20, 0xe0, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x5f, 0x01, 0x7f, ++ 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x18, 0xe0, 0x00, 0xfc, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x54, 0x55, 0x19, 0x11, 0x17, 0x00, 0x00, ++ 0x70, 0xfc, 0x58, 0xe8, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x57, 0x54, 0x55, 0x57, ++ 0x55, 0x5d, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0xf8, ++ 0x54, 0xf0, 0x50, 0x50, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0x90, 0x90, 0x94, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, ++ 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x07, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x08, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, ++ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, ++ 0xa8, 0x24, 0xf8, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x23, 0x10, 0x15, 0x43, 0x22, 0x27, 0x09, 0x01, ++ 0x1f, 0x11, 0x21, 0x22, 0x44, 0x58, 0x00, 0x00, ++ 0x90, 0x90, 0x64, 0x28, 0x10, 0xf8, 0x24, 0x20, ++ 0xfc, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x22, 0x42, ++ 0x3f, 0x02, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x48, 0x44, ++ 0xf8, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x21, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x68, 0x28, 0xd4, 0x54, 0x88, 0xfc, 0x50, 0x50, ++ 0xfc, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01, ++ 0x7f, 0x02, 0x07, 0x1a, 0x61, 0x1e, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xfc, 0x00, 0xf0, 0x20, 0xc0, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x28, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50, ++ 0x30, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1e, 0x7f, 0x00, ++ 0x1e, 0x1e, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1c, ++ 0x70, 0x11, 0x11, 0x12, 0x14, 0x3b, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf8, 0x88, ++ 0xc8, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x14, 0x23, 0x44, 0x04, 0x0b, ++ 0x18, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x50, 0x48, 0xfc, ++ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x25, 0x25, ++ 0x29, 0x3f, 0x28, 0x2b, 0x28, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x28, ++ 0xe8, 0x48, 0xa8, 0x68, 0x28, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x15, 0x15, 0x15, 0x17, ++ 0x17, 0x13, 0x21, 0x22, 0x42, 0x04, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x54, 0x52, 0x53, 0x5f, 0x52, ++ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00, ++ 0x04, 0x08, 0xf0, 0xa0, 0xa0, 0x3c, 0xe8, 0x28, ++ 0xe8, 0x28, 0xa8, 0xc8, 0x48, 0x88, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x10, 0x7d, 0x11, 0x11, 0x10, ++ 0x17, 0x1c, 0x65, 0x05, 0x05, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x08, 0xe8, 0x28, 0xe8, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x18, 0x2f, 0x48, 0x0f, 0x08, ++ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, ++ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x11, 0x10, 0x33, 0x50, 0x10, ++ 0x17, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x49, 0x29, 0x2a, 0x08, 0x7f, 0x08, 0x08, ++ 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x11, 0x09, 0x09, 0x3f, 0x01, 0x01, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x10, 0x10, 0x20, 0xf8, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x12, 0x12, 0x12, ++ 0x11, 0x11, 0x10, 0x21, 0x26, 0x58, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, ++ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x0a, 0x4a, 0x2c, 0x28, 0x7e, 0x08, 0x08, ++ 0x0f, 0x79, 0x11, 0x12, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0xc8, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x5d, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50, ++ 0x50, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x12, 0x12, 0x17, 0x7c, 0x16, 0x15, 0x15, 0x1f, ++ 0x74, 0x16, 0x16, 0x1a, 0x18, 0x31, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8, ++ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x01, 0x7d, 0x11, 0x17, 0x10, 0x14, 0x7a, 0x13, ++ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x7c, 0x10, 0xd0, 0x90, 0x90, 0xfc, 0x10, ++ 0x10, 0x10, 0x90, 0x90, 0x7c, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x0a, 0x0a, 0x0d, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09, ++ 0x09, 0x09, 0x11, 0x12, 0x22, 0x24, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x90, 0x50, 0x50, ++ 0x10, 0x10, 0x10, 0x14, 0x14, 0x0c, 0x00, 0x00, ++ 0x28, 0x29, 0x29, 0x29, 0x3f, 0x21, 0x21, 0x3d, ++ 0x25, 0x25, 0x26, 0x26, 0x45, 0x46, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x09, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7c, 0x12, 0x12, 0x12, 0x12, 0x7e, 0x12, ++ 0x12, 0x10, 0x1d, 0x61, 0x02, 0x04, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x02, 0x7d, 0x55, 0x54, 0x57, 0x7c, 0x54, ++ 0x57, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x3f, 0x5f, 0x15, 0x7f, 0x15, 0x3f, 0x23, ++ 0x0c, 0x03, 0x3f, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x40, 0xc0, 0x7c, 0xc8, 0x48, 0x30, 0xd8, 0x44, ++ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x7f, ++ 0x12, 0x1a, 0x1a, 0x2a, 0x22, 0x47, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x49, 0x27, 0x20, ++ 0x0b, 0x0d, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x38, 0xc8, 0x50, 0xfc, 0xe0, ++ 0xf8, 0x54, 0xf0, 0x50, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22, ++ 0x22, 0x3e, 0x19, 0x15, 0x22, 0x47, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8, ++ 0xa8, 0xb0, 0x10, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x4d, 0x7f, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0xf8, 0x88, 0x88, 0x88, ++ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x01, 0x3f, 0x11, 0x09, 0x09, 0x7f, 0x01, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x30, 0xc0, 0x10, 0x10, 0x20, 0x40, 0xfc, 0x00, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x12, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x1c, 0x05, 0x14, 0x14, 0x12, 0x22, 0x3f, 0x52, ++ 0x12, 0x12, 0x12, 0x22, 0x2d, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x2a, 0x48, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x27, 0x39, 0x63, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x17, 0x12, 0x12, 0x1f, ++ 0x72, 0x10, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x4a, 0x4f, 0x4a, 0x7a, 0x4b, ++ 0x4a, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x11, 0x09, 0x7f, 0x03, 0x05, 0x19, ++ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x30, 0xd0, 0x10, 0x20, 0xfc, 0x80, 0x40, 0x30, ++ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x3e, 0x32, 0x2a, 0x7f, 0x2a, 0x2a, 0x47, ++ 0x3f, 0x02, 0x0f, 0x74, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, ++ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x09, 0x7f, 0x05, 0x19, ++ 0x6f, 0x09, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xd0, 0x20, 0xfc, 0x40, 0x30, ++ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x12, 0x12, 0x24, 0x49, 0x0f, ++ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x50, 0x48, 0x44, 0xc4, 0xe0, ++ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x2f, 0x21, 0x2f, 0x21, ++ 0x2f, 0x22, 0x22, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x40, 0x78, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x04, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, ++ 0x04, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x03, 0x05, 0x19, 0x61, 0x01, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x88, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x14, 0x14, 0x14, 0x17, ++ 0x14, 0x14, 0x14, 0x25, 0x26, 0x58, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x40, 0x40, 0x44, 0xc8, ++ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x4a, 0x0a, 0x12, 0x13, 0x32, ++ 0x52, 0x12, 0x12, 0x14, 0x15, 0x1e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88, ++ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x02, 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7e, 0x04, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x21, 0x3e, 0x42, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x40, 0x78, ++ 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7e, 0x12, 0x13, 0x12, 0x1e, ++ 0x72, 0x12, 0x12, 0x12, 0x13, 0x3c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x1e, ++ 0x72, 0x12, 0x12, 0x14, 0x15, 0x3e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88, ++ 0x90, 0x50, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x05, 0x09, ++ 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x7c, 0x40, 0x00, ++ 0xfc, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10, ++ 0x10, 0x10, 0x11, 0x16, 0x18, 0x60, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x20, 0x22, 0x02, 0x12, ++ 0x14, 0x14, 0x28, 0x21, 0x42, 0x44, 0x00, 0x00, ++ 0x40, 0x28, 0x28, 0x88, 0x90, 0x90, 0xb0, 0xa8, ++ 0xc4, 0xc4, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, ++ 0x2b, 0x4a, 0x12, 0x14, 0x25, 0x4e, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x48, 0x50, 0xf0, ++ 0x10, 0xa0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x12, ++ 0x11, 0x11, 0x10, 0x20, 0x23, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x88, 0x90, 0x80, 0xf0, 0x10, ++ 0x20, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7c, 0x10, 0x13, 0x12, 0x13, 0x3e, 0x27, ++ 0x64, 0x25, 0x27, 0x3c, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x18, 0x70, 0x10, 0x10, 0x7e, 0x12, 0x1a, ++ 0x36, 0x34, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x20, 0x28, 0x88, 0x88, 0x90, 0x90, 0xb0, ++ 0xa8, 0xc4, 0x84, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x67, 0x18, 0x10, 0x2b, 0x7c, ++ 0x18, 0x37, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0, ++ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x12, 0x7f, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x40, 0x58, 0x60, 0x44, ++ 0x3c, 0x40, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x12, 0x12, 0x15, 0x1e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x30, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50, ++ 0x50, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x02, 0x3f, 0x02, 0x3f, 0x3f, 0x44, 0x1f, 0x68, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x80, 0xf8, 0x88, 0xf8, 0xfc, 0x84, 0xf8, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x27, 0x14, 0x14, 0x07, 0x04, 0x77, 0x1c, ++ 0x14, 0x14, 0x17, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x90, 0xfc, 0xc8, 0xa8, 0x30, 0xfc, 0x90, ++ 0x90, 0xfc, 0x90, 0x10, 0x10, 0xfc, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02, ++ 0x02, 0x7e, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x7c, 0x40, ++ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x0e, 0x32, 0x12, 0x12, 0x7f, ++ 0x12, 0x12, 0x22, 0x22, 0x42, 0x02, 0x00, 0x00, ++ 0x00, 0xc8, 0x70, 0x50, 0x48, 0x28, 0x18, 0xc8, ++ 0x50, 0x70, 0x28, 0x24, 0x14, 0x0c, 0x00, 0x00, ++ 0x10, 0x15, 0x12, 0x7e, 0x10, 0x10, 0x3e, 0x36, ++ 0x36, 0x52, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0xa8, 0xa8, 0x98, 0x80, 0x7c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x12, 0x7f, 0x12, 0x1e, ++ 0x12, 0x1e, 0x12, 0x7f, 0x15, 0x63, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x10, 0x20, 0xfc, 0xa8, 0xb0, ++ 0xf8, 0xc8, 0xa8, 0x90, 0x68, 0x84, 0x00, 0x00, ++ 0x09, 0x09, 0x0f, 0x11, 0x17, 0x34, 0x57, 0x16, ++ 0x17, 0x16, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48, ++ 0xf8, 0x48, 0xf8, 0x48, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x17, 0x10, ++ 0x17, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x68, 0x80, 0xf0, ++ 0x80, 0xfc, 0x80, 0x80, 0x84, 0x7c, 0x00, 0x00, ++ 0x12, 0x1a, 0x2a, 0x4a, 0x1f, 0x18, 0x20, 0x7f, ++ 0x26, 0x26, 0x2a, 0x2b, 0x32, 0x20, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x48, 0xc8, 0xe8, ++ 0x28, 0x30, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x80, ++ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x1e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0x80, ++ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x17, 0x14, ++ 0x17, 0x14, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x1f, 0x11, ++ 0x1f, 0x1f, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a, ++ 0x28, 0x29, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x50, ++ 0xc8, 0x24, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x04, 0x18, 0x73, 0x12, 0x13, 0x7e, 0x13, 0x18, ++ 0x35, 0x37, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa8, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x22, 0x22, 0x22, 0x24, ++ 0x24, 0x28, 0x30, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, ++ 0x48, 0x38, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09, ++ 0x09, 0x09, 0x15, 0x13, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x10, 0x20, 0x00, 0x00, 0xf0, ++ 0x00, 0x00, 0x00, 0x00, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x04, ++ 0x14, 0x17, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80, ++ 0x98, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x1f, 0x10, 0x10, ++ 0x17, 0x10, 0x13, 0x20, 0x20, 0x47, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x40, 0xfc, 0x20, 0xc0, ++ 0x10, 0x60, 0x84, 0x18, 0x60, 0x80, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x24, 0x3f, ++ 0x26, 0x25, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xa0, 0x58, ++ 0x4c, 0x50, 0xe0, 0x58, 0x44, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x7f, 0x04, 0x1a, ++ 0x63, 0x06, 0x19, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x88, 0x78, ++ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x25, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x78, 0x0f, 0x09, 0x39, 0x23, 0x22, 0x3a, ++ 0x2b, 0x0a, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00, ++ 0x00, 0x78, 0xc8, 0x08, 0x38, 0xa0, 0xa0, 0xb8, ++ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x02, 0x01, 0x00, 0x04, 0x04, 0x04, 0x24, 0x24, ++ 0x24, 0x45, 0x46, 0x04, 0x1c, 0x63, 0x00, 0x00, ++ 0x00, 0x10, 0x90, 0x90, 0x20, 0x20, 0x50, 0x48, ++ 0x84, 0x04, 0x00, 0x10, 0x10, 0xf0, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x09, 0x7f, ++ 0x09, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x20, 0xfc, ++ 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x01, 0x1f, ++ 0x01, 0x1f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x20, 0xf0, 0x10, 0xfc, 0x10, 0xf0, ++ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x11, 0x01, 0x01, 0x70, 0x13, ++ 0x12, 0x13, 0x12, 0x13, 0x2c, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x1b, 0x34, 0x34, ++ 0x37, 0x50, 0x50, 0x11, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xfc, 0xa0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x08, 0x08, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x11, 0x7f, 0x24, 0x27, 0x24, ++ 0x74, 0x48, 0x09, 0x16, 0x24, 0x43, 0x00, 0x00, ++ 0x1c, 0xe4, 0x48, 0x30, 0xfc, 0x40, 0xfc, 0x40, ++ 0xf8, 0xc8, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x02, 0x1f, 0x10, 0x10, 0x10, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x7b, 0x02, 0x3c, 0x01, 0x38, ++ 0x03, 0x3d, 0x28, 0x29, 0x38, 0x2b, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xb8, 0xa8, 0xc8, 0x98, 0xc0, ++ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x30, 0x57, 0x10, ++ 0x11, 0x13, 0x15, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xc0, ++ 0x48, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x07, 0x04, 0x3f, 0x29, 0x2e, 0x38, 0x27, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x32, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xa8, 0x48, 0x10, 0x94, 0x24, ++ 0x08, 0x08, 0x10, 0x20, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x34, 0x35, ++ 0x30, 0x57, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0, ++ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7d, 0x05, 0x09, ++ 0x09, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x88, 0x90, 0x60, 0x40, 0x20, ++ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x00, 0x13, ++ 0x10, 0x17, 0x21, 0x22, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, ++ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d, ++ 0x01, 0x7f, 0x19, 0x36, 0x53, 0x34, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x70, 0x50, 0x78, 0xd8, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x1f, 0x00, 0x1f, ++ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xf0, 0x00, 0xf0, ++ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x03, ++ 0x04, 0x1c, 0x64, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x10, ++ 0x90, 0xa0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3f, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x28, 0xa8, 0xb0, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x18, 0x66, 0x14, 0x19, 0x6a, 0x0c, 0x14, ++ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x24, 0x2f, 0x29, 0x2f, ++ 0x29, 0x2f, 0x24, 0x3f, 0x44, 0x45, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48, ++ 0x48, 0x78, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x10, 0x1b, 0x12, ++ 0x32, 0x53, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x00, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0b, 0x1a, ++ 0x6a, 0x0a, 0x13, 0x12, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x40, 0xf8, 0x48, ++ 0x68, 0x98, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0xa4, 0x28, ++ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x1f, 0x11, 0x11, ++ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x7c, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0x90, 0x00, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x08, 0xf0, 0x80, 0x80, 0xfc, 0x90, 0x90, 0x90, ++ 0xfc, 0x00, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x00, 0x7f, 0x08, ++ 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x20, ++ 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x24, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0xf8, 0x28, 0xfc, 0x68, 0x70, 0xc4, 0x3c, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, ++ 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0xc0, 0x40, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x37, ++ 0x33, 0x55, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xe0, 0x08, 0x08, 0x90, 0x50, ++ 0x64, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x08, 0x08, 0x4a, 0x2a, ++ 0x12, 0x12, 0x1a, 0x2a, 0x27, 0x40, 0x00, 0x00, ++ 0x20, 0xe8, 0x24, 0xfc, 0xa0, 0xa0, 0xa0, 0xe0, ++ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x12, ++ 0x1f, 0x20, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, ++ 0xfc, 0x00, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x22, 0x12, 0x1a, 0x4b, 0x2a, 0x3f, 0x03, 0x16, ++ 0x16, 0x2f, 0x29, 0x42, 0x44, 0x49, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0xa0, 0x78, 0xc8, 0x78, 0xc8, ++ 0xf8, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x01, 0x04, 0x1f, 0x62, 0x0c, 0x3f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x80, 0x40, 0xf0, 0x4c, 0xc0, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5f, 0x09, 0x33, 0x7f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x30, 0xc8, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x2e, 0x28, 0x28, 0x7f, 0x0c, 0x2a, ++ 0x29, 0x49, 0x1a, 0x04, 0x18, 0x63, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x3f, 0x40, 0x3e, 0x2a, 0x2b, ++ 0x7f, 0x2a, 0x2a, 0x7f, 0x43, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x22, 0x13, 0x14, 0x7f, 0x14, 0x14, 0x14, 0x7f, ++ 0x14, 0x14, 0x14, 0x24, 0x27, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0xd0, 0xb0, ++ 0xb0, 0x90, 0x94, 0xec, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x00, 0x01, 0x03, 0x05, 0x19, ++ 0x61, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0x00, 0x80, 0x60, 0x10, ++ 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x0b, 0x18, 0x29, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, ++ 0x13, 0x1c, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x7f, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x11, 0x7c, 0x25, 0x24, 0x27, ++ 0x7a, 0x4b, 0x0e, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x44, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5f, 0x07, 0x04, 0x07, 0x00, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0xc0, 0x40, 0xc0, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x5f, 0x0f, 0x08, 0x0f, 0x00, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0xe0, 0x20, 0xe0, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x08, ++ 0x18, 0x28, 0x48, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x13, 0x16, ++ 0x1a, 0x12, 0x12, 0x22, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x10, 0x10, 0xfc, 0x10, ++ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x17, 0x38, 0x35, 0x35, 0x53, ++ 0x15, 0x19, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0x24, ++ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x1f, ++ 0x70, 0x10, 0x10, 0x11, 0x16, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x0a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, ++ 0x08, 0x7f, 0x1e, 0x12, 0x23, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x0c, 0x32, 0x03, 0x0c, 0x70, 0x0f, 0x08, ++ 0x0f, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x60, 0x30, 0x48, 0x80, 0x60, 0xdc, 0x00, 0x00, ++ 0xf8, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x22, 0x12, 0x12, 0x7f, 0x00, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x90, 0x90, 0xa0, 0xfc, 0x00, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x22, 0x22, 0x03, 0x10, ++ 0x10, 0x17, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x70, 0x88, 0x48, 0x50, 0x00, 0xf8, 0x30, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x08, 0x10, 0x24, 0x04, 0x04, 0x02, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x08, 0x48, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x17, ++ 0x11, 0x30, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0x10, 0xfc, ++ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x13, 0x16, 0x1a, 0x12, 0x12, ++ 0x2f, 0x29, 0x4a, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0x90, 0x50, 0x50, 0xb0, ++ 0xf8, 0xc8, 0xa8, 0x48, 0x28, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x17, 0x14, ++ 0x17, 0x13, 0x22, 0x23, 0x43, 0x02, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf8, 0xf8, 0x88, ++ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x1f, 0x01, ++ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf0, 0x00, ++ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x00, 0x00, ++ 0x08, 0x90, 0xfc, 0xa8, 0xa8, 0xb0, 0xfc, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x02, 0x07, 0x18, 0x61, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x24, 0x3f, 0x24, 0x3d, 0x25, ++ 0x25, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00, ++ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70, ++ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x04, 0x14, ++ 0x17, 0x14, 0x14, 0x2c, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0x20, 0x20, 0xf0, 0x28, 0x24, ++ 0xa4, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x29, 0x33, 0x2b, 0x25, ++ 0x25, 0x25, 0x25, 0x39, 0x21, 0x21, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x12, 0x13, 0x35, 0x51, 0x1f, ++ 0x12, 0x12, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0xfc, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x16, 0x12, 0x17, 0x1a, ++ 0x72, 0x17, 0x10, 0x15, 0x14, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, ++ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x7f, 0x04, 0x04, 0x17, ++ 0x14, 0x14, 0x14, 0x17, 0x78, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0xc0, ++ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x2a, 0x7f, 0x0a, 0x3f, 0x08, ++ 0x0f, 0x12, 0x6a, 0x0d, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa0, 0xfc, 0xa0, 0xf8, 0x20, ++ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x14, 0x1f, 0x12, 0x3f, 0x22, 0x5f, ++ 0x12, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xe8, 0x28, 0xc8, ++ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0xf0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x2a, 0x4a, 0x7f, ++ 0x0a, 0x0a, 0x7f, 0x14, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0xa0, 0xa0, 0xfc, ++ 0xa0, 0xa0, 0xfc, 0x90, 0x48, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x12, 0x14, 0x7f, 0x00, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x08, ++ 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x37, ++ 0x33, 0x53, 0x52, 0x14, 0x17, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x38, 0xc8, 0x48, 0xf8, 0x58, 0x58, ++ 0xf8, 0x6c, 0x5c, 0x7c, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x11, 0x17, 0x15, 0x15, ++ 0x17, 0x15, 0x11, 0x21, 0x2e, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0xd0, 0x10, 0x10, 0xd0, 0x50, 0x50, ++ 0xd0, 0x10, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x7f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xfc, 0x20, ++ 0xe0, 0x20, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x23, 0x3e, ++ 0x08, 0x2f, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x78, 0xc8, 0x50, 0x30, ++ 0xc8, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x10, 0x37, 0x50, 0x10, ++ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f, ++ 0x49, 0x7f, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x21, 0x4b, 0x0d, 0x11, 0x11, 0x31, ++ 0x50, 0x11, 0x16, 0x10, 0x11, 0x1e, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x54, 0x57, ++ 0x56, 0x5f, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x30, 0x00, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x09, 0x09, 0x10, 0x1b, ++ 0x36, 0x57, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x27, 0x24, 0x24, 0x4f, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x11, 0x11, 0x13, 0x7d, 0x09, 0x0b, 0x13, 0x1d, ++ 0x34, 0x51, 0x16, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x80, 0xf0, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x1f, 0x12, 0x1f, 0x11, 0x29, 0x4b, ++ 0x15, 0x31, 0x50, 0x13, 0x10, 0x17, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x00, 0xfc, 0xf0, ++ 0xf0, 0xf0, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x42, 0x23, 0x22, 0x03, 0x12, ++ 0x13, 0x12, 0x22, 0x24, 0x44, 0x48, 0x00, 0x00, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x08, 0xf8, 0x08, ++ 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x24, 0x24, ++ 0x3f, 0x24, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x80, ++ 0xf8, 0x88, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x0c, ++ 0x78, 0x08, 0x09, 0x09, 0x0f, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, ++ 0xa0, 0x90, 0x08, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x05, 0x15, ++ 0x17, 0x15, 0x21, 0x22, 0x42, 0x44, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0x28, 0xf8, 0x28, 0x20, ++ 0xfc, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x30, 0x51, ++ 0x11, 0x11, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, ++ 0x20, 0x10, 0x08, 0x78, 0x84, 0x04, 0x00, 0x00, ++ 0x09, 0x29, 0x29, 0x29, 0x3e, 0x2a, 0x4c, 0x09, ++ 0x0d, 0x7a, 0x08, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28, ++ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0x88, 0xfc, 0x88, 0xc8, 0xa8, ++ 0xa8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x07, 0x00, 0x08, 0x08, 0x10, 0x10, 0x3f, 0x42, ++ 0x02, 0x02, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x20, 0x20, 0x10, 0xe8, 0x24, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4b, 0x4a, 0x4a, 0x4c, 0x49, ++ 0x49, 0x7a, 0x4c, 0x40, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0x28, ++ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x03, 0x79, 0x4f, 0x49, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x13, 0x11, 0x17, 0x7d, 0x13, 0x12, 0x13, ++ 0x16, 0x1b, 0x62, 0x03, 0x03, 0x1c, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x1f, 0x35, 0x37, 0x32, 0x53, ++ 0x12, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x12, 0x13, 0x1c, ++ 0x70, 0x10, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x48, 0x01, ++ 0x09, 0x09, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x60, 0xb0, 0x28, 0x24, 0x10, ++ 0x10, 0xa0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x7f, 0x06, 0x1c, 0x6f, 0x1f, 0x2f, 0x08, ++ 0x0f, 0x1f, 0x11, 0x1f, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x60, 0x90, 0xfc, 0xe0, 0xe0, 0x80, ++ 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x09, 0x1e, ++ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00, ++ 0x09, 0x3f, 0x07, 0x19, 0x6f, 0x09, 0x0f, 0x09, ++ 0x0f, 0x3f, 0x04, 0x7f, 0x0c, 0x30, 0x00, 0x00, ++ 0x20, 0xf8, 0xc0, 0x30, 0xfc, 0x20, 0xe0, 0x20, ++ 0xe0, 0xf8, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0xe0, 0x20, 0xa0, 0xa0, 0x90, 0x10, 0xf8, 0x54, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x07, ++ 0x04, 0x18, 0x6f, 0x02, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xc0, ++ 0x40, 0x30, 0xec, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x08, 0x08, 0x04, 0x04, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2f, 0x24, ++ 0x27, 0x24, 0x27, 0x24, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xe8, 0x48, ++ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x22, ++ 0x22, 0x24, 0x28, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x88, ++ 0x48, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x0a, 0x09, 0x09, 0x17, 0x11, 0x31, 0x51, 0x1f, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x08, ++ 0x08, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40, ++ 0x40, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12, ++ 0x16, 0x1b, 0x64, 0x04, 0x09, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0xfc, 0x8c, 0x50, 0xfc, 0x50, ++ 0x50, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x49, 0x2a, 0x7f, 0x5d, 0x5b, 0x6b, 0x41, ++ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x30, 0x30, 0xc8, 0x04, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x2a, 0x1c, 0x7f, 0x5d, 0x5b, 0x69, 0x4b, ++ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x44, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, ++ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x7f, 0x04, 0x04, 0x24, 0x14, ++ 0x14, 0x14, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0x48, 0x48, ++ 0x50, 0x60, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x4d, 0x29, 0x2a, 0x7f, ++ 0x49, 0x5d, 0x5b, 0x6b, 0x49, 0x4b, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x7c, 0xc8, 0x48, ++ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20, ++ 0x2f, 0x21, 0x22, 0x24, 0x28, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88, ++ 0xe8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x29, 0x27, ++ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x20, 0x24, 0x28, 0xf0, 0x20, 0x24, 0xe4, 0x5c, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x09, 0x09, 0x01, 0x7f, 0x03, 0x03, ++ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x20, 0x00, 0xfc, 0x80, 0x80, ++ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x02, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x52, 0x12, ++ 0x17, 0x16, 0x1a, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x10, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0x7c, 0x10, ++ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00, ++ 0x00, 0x1e, 0x13, 0x1e, 0x10, 0x3f, 0x32, 0x5f, ++ 0x12, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, ++ 0x20, 0x20, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, ++ 0x2a, 0x4b, 0x16, 0x16, 0x2b, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x90, 0xfc, 0xa8, 0xb0, ++ 0x7c, 0x90, 0xfc, 0x90, 0x90, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x3e, 0x08, 0x0f, 0x70, 0x00, ++ 0x7f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x29, 0x08, ++ 0x0f, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0xd0, 0xec, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x1f, ++ 0x10, 0x14, 0x12, 0x22, 0x20, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc, ++ 0x48, 0x48, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x5f, 0x11, 0x12, 0x14, ++ 0x10, 0x1f, 0x10, 0x13, 0x1c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0xf0, 0x10, 0x90, 0x50, ++ 0x88, 0x90, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13, ++ 0x16, 0x16, 0x1b, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4a, ++ 0x03, 0x04, 0x1a, 0x01, 0x06, 0x78, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0x04, ++ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x08, 0x0f, ++ 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7f, 0x00, 0x1f, 0x10, 0x1f, ++ 0x10, 0x1f, 0x29, 0x2f, 0x49, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0x08, 0xf8, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7f, ++ 0x11, 0x3b, 0x37, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, ++ 0x54, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x70, 0x11, ++ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x08, ++ 0x08, 0x08, 0x30, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x12, 0x03, 0x03, 0x72, 0x12, ++ 0x12, 0x14, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x90, 0x60, ++ 0x20, 0xd0, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x27, 0x10, 0x13, 0x02, 0x03, 0x72, 0x13, ++ 0x16, 0x17, 0x1a, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0xfc, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13, ++ 0x12, 0x11, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x2a, 0x3e, ++ 0x2c, 0x0c, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x88, 0x88, 0x08, 0x34, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x13, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x48, 0x0c, 0x14, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xf8, 0x48, 0x48, 0xf8, ++ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x04, 0x04, 0x04, ++ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x40, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x28, 0x28, 0x7c, 0x29, 0x39, 0x13, 0x7d, 0x55, ++ 0x55, 0x7d, 0x11, 0x7d, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0x7c, 0x54, 0x7c, 0x54, 0x7c, ++ 0x54, 0x50, 0x20, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x50, 0x17, ++ 0x10, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x17, 0x1a, 0x29, 0x7f, 0x09, 0x7f, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x2f, 0x29, 0x2f, ++ 0x29, 0x2f, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xf8, 0x08, 0xe8, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f, ++ 0x72, 0x12, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x09, 0x7f, 0x01, 0x09, ++ 0x09, 0x11, 0x23, 0x01, 0x06, 0x78, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x20, ++ 0x10, 0x28, 0x48, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f, ++ 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x20, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x0b, 0x0a, 0x16, 0x3b, ++ 0x56, 0x16, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x04, 0x18, 0x77, 0x10, 0x13, 0x7e, 0x13, 0x1a, ++ 0x37, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x7f, 0x05, 0x1f, 0x61, 0x06, 0x18, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xfc, 0x40, 0xf0, 0x2c, 0x20, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x7f, 0x19, 0x6f, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xfc, 0x30, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x7f, 0x0a, 0x1b, 0x6a, 0x12, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0xfc, 0x20, 0x50, 0xac, 0xa0, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x21, 0x26, 0x40, 0x00, 0x00, ++ 0x80, 0x90, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x64, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, ++ 0x07, 0x1c, 0x67, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, ++ 0xc0, 0x70, 0xcc, 0x40, 0xc0, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x08, 0x08, 0x7f, 0x12, 0x11, ++ 0x11, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x90, 0x90, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0xfc, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x17, 0x09, 0x49, 0x21, ++ 0x29, 0x09, 0x17, 0x11, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x58, 0xfc, 0xf0, 0x50, 0xf0, ++ 0x50, 0xf0, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x08, 0x04, 0x7f, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40, 0xfc, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0a, 0x1f, 0x12, 0x32, 0x53, 0x12, ++ 0x12, 0x12, 0x14, 0x14, 0x18, 0x13, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xa0, 0x7c, 0x48, 0xc8, 0xa8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x13, 0x30, 0x57, 0x11, ++ 0x13, 0x14, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xf8, 0xa0, 0xfc, 0x50, ++ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x00, ++ 0x1f, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, ++ 0x88, 0xb0, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x11, 0x01, 0x7f, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x22, 0x12, 0x14, ++ 0x7f, 0x08, 0x3e, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0xf8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x09, ++ 0x17, 0x61, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x20, ++ 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x40, 0x1f, 0x01, 0x01, ++ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0xf0, 0x00, 0x00, ++ 0xf0, 0x00, 0x20, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x54, 0x57, 0x57, 0x54, ++ 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x4c, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x1f, 0x02, 0x07, 0x3c, 0x03, 0x0d, 0x77, ++ 0x01, 0x0f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0xf0, 0x00, 0xe0, 0x40, 0x80, 0x60, 0xdc, ++ 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x1e, 0x12, 0x1e, ++ 0x12, 0x1e, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0x78, 0x48, 0x78, ++ 0x48, 0x78, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x11, 0x11, 0x12, 0x17, 0x18, ++ 0x13, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0xc8, 0x48, ++ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7e, 0x13, 0x14, 0x10, 0x1f, ++ 0x72, 0x12, 0x12, 0x12, 0x12, 0x31, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48, 0xc8, ++ 0x48, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x1f, 0x11, ++ 0x33, 0x54, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xf0, 0xa0, 0xfc, 0x50, ++ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x0f, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x43, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x03, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x12, ++ 0x1e, 0x12, 0x12, 0x22, 0x23, 0x46, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x48, ++ 0x78, 0x48, 0x88, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x20, 0x20, 0x07, 0x00, ++ 0x08, 0x08, 0x10, 0x11, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x90, 0x88, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x43, 0x22, 0x27, 0x08, 0x03, ++ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8, ++ 0x70, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x00, ++ 0x01, 0x01, 0x03, 0x14, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xf8, 0x60, ++ 0x80, 0x00, 0x00, 0x90, 0x48, 0x44, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x13, 0x20, 0x3c, 0x65, ++ 0x25, 0x25, 0x25, 0x3d, 0x25, 0x20, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8, ++ 0x30, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x12, 0x15, 0x65, 0x28, 0x18, 0x27, 0x7d, ++ 0x19, 0x35, 0x35, 0x31, 0x52, 0x14, 0x00, 0x00, ++ 0x20, 0x38, 0xc8, 0x30, 0xe8, 0x24, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x26, 0x24, 0x3d, ++ 0x25, 0x25, 0x25, 0x25, 0x25, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x04, 0xe4, 0x24, 0x24, 0xe4, ++ 0x38, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x7c, 0x44, 0x44, 0x7c, ++ 0x44, 0x44, 0x7c, 0x44, 0x41, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0xf8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x21, 0x1f, 0x10, 0x03, 0x7f, ++ 0x10, 0x13, 0x10, 0x17, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xf0, 0x20, 0xe0, 0x5c, 0xf8, ++ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x7f, 0x09, 0x09, 0x11, 0x77, 0x11, 0x16, ++ 0x11, 0x03, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0xfc, 0x50, 0x4c, ++ 0x40, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x02, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x00, 0x7f, ++ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x00, 0xfc, ++ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x04, 0x3f, 0x04, 0x04, ++ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x78, 0xc8, 0x50, 0x50, 0xe0, 0x50, 0x48, ++ 0xc4, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x78, 0xd0, 0x20, 0x70, 0xac, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x2a, 0x49, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x24, 0x26, 0x3a, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xe8, 0x28, 0x28, 0xe8, ++ 0xb0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x17, 0x14, 0x17, ++ 0x17, 0x17, 0x14, 0x27, 0x2d, 0x52, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xd0, 0x50, 0xd0, ++ 0xd0, 0xf4, 0x0c, 0xfc, 0x54, 0xe4, 0x00, 0x00, ++ 0x00, 0x3f, 0x2d, 0x2d, 0x2d, 0x3f, 0x2d, 0x2d, ++ 0x2d, 0x3f, 0x2d, 0x2d, 0x2d, 0x5b, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c, ++ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x3f, 0x01, 0x01, 0x1f, 0x00, 0x00, ++ 0x00, 0x09, 0x0e, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x10, 0x37, 0x54, 0x1f, ++ 0x10, 0x10, 0x10, 0x11, 0x16, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x44, 0xfc, ++ 0x40, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x11, 0x09, 0x0a, 0x7f, 0x00, ++ 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, ++ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x10, 0x10, 0x10, ++ 0x10, 0x1c, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x78, ++ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x55, ++ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x08, 0x07, 0x01, ++ 0x04, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x00, ++ 0x80, 0x90, 0x08, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x17, 0x39, 0x35, 0x35, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, ++ 0x10, 0x10, 0x11, 0x22, 0x2c, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x80, 0xfc, ++ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x04, ++ 0x7f, 0x09, 0x15, 0x67, 0x19, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x40, ++ 0xfc, 0x20, 0x50, 0xcc, 0x30, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x20, 0x20, 0x20, 0x1f, 0x02, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x30, ++ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1c, 0x1b, 0x1b, ++ 0x2b, 0x2c, 0x4b, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x50, ++ 0xf8, 0x44, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x2f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xe8, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7d, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x39, 0x2f, 0x29, 0x2f, 0x38, 0x2b, 0x2a, ++ 0x3b, 0x2a, 0x29, 0x29, 0x2e, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0xd0, 0x10, 0xe0, 0x08, 0xc8, 0x50, ++ 0xe4, 0x44, 0x88, 0xc8, 0x10, 0x20, 0x00, 0x00, ++ 0x01, 0x39, 0x03, 0x7d, 0x01, 0x3d, 0x01, 0x3c, ++ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x04, 0x18, 0x6a, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x65, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x06, 0x38, 0x24, 0x26, 0x3a, 0x6f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f, ++ 0x09, 0x2a, 0x1d, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x50, 0x88, 0xf4, 0xa0, 0xa0, 0xf8, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x2b, 0x28, 0x30, 0x28, 0x24, ++ 0x24, 0x24, 0x24, 0x39, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x48, 0x4f, 0x48, 0x48, ++ 0x48, 0x78, 0x48, 0x41, 0x06, 0x18, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, ++ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x0a, 0x4a, 0x2c, 0x28, ++ 0x7f, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x7c, 0x04, 0x04, 0x04, ++ 0x04, 0x1c, 0x64, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x17, 0x11, 0x30, 0x57, 0x10, ++ 0x13, 0x10, 0x17, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xfc, 0x40, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, ++ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x1f, 0x01, ++ 0x7f, 0x15, 0x2f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf0, 0x00, ++ 0xfc, 0x50, 0xe8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x10, 0x13, 0x1c, ++ 0x71, 0x10, 0x17, 0x10, 0x13, 0x3c, 0x00, 0x00, ++ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44, ++ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x28, 0x28, 0x3e, 0x29, 0x29, 0x4a, ++ 0x0e, 0x78, 0x08, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, ++ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x78, 0x4b, 0x48, 0x7f, 0x49, 0x49, 0x7a, ++ 0x4c, 0x4b, 0x78, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x19, 0x71, 0x11, 0x11, 0x7d, 0x10, 0x19, ++ 0x36, 0x35, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x58, ++ 0x64, 0x90, 0x60, 0x88, 0x30, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x3f, 0x22, 0x7e, 0x04, ++ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x21, 0x22, 0x04, 0x0b, ++ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0, ++ 0x10, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x13, 0x2a, ++ 0x45, 0x05, 0x09, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x50, 0x88, 0x8c, 0xf4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x12, 0x12, ++ 0x16, 0x1b, 0x65, 0x05, 0x09, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x56, 0x55, ++ 0x57, 0x54, 0x58, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x50, ++ 0xfc, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x09, 0x1f, 0x61, 0x05, ++ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x20, 0xf0, 0x0c, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x05, ++ 0x09, 0x11, 0x2f, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x40, ++ 0x20, 0x10, 0xe8, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x2a, ++ 0x7e, 0x2b, 0x3e, 0x2a, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x68, 0xd8, 0xd8, 0x48, ++ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0a, 0x09, 0x09, ++ 0x09, 0x08, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x03, 0x08, 0x08, 0x1f, 0x21, 0x42, 0x0c, 0x30, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0xc0, 0x40, 0x20, 0xf0, 0x28, 0x24, 0x20, 0xc0, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12, 0x17, ++ 0x10, 0x17, 0x20, 0x3f, 0x40, 0x01, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x30, 0xc0, ++ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x12, ++ 0x17, 0x10, 0x23, 0x2e, 0x43, 0x02, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xd4, 0x90, ++ 0xfc, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x1f, 0x12, 0x1f, 0x17, 0x1a, 0x17, 0x14, ++ 0x17, 0x17, 0x25, 0x22, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xfc, 0x70, 0xa8, 0xf4, 0x90, ++ 0xf0, 0xf0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x17, ++ 0x16, 0x1a, 0x13, 0x22, 0x42, 0x02, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0x70, ++ 0xf0, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13, ++ 0x10, 0x1f, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x09, 0x7e, 0x12, 0x13, 0x12, ++ 0x3c, 0x24, 0x07, 0x0a, 0x12, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70, ++ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x48, 0x7f, 0x48, ++ 0x48, 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x2f, 0x49, 0x09, 0x7f, ++ 0x09, 0x09, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x4a, 0x4b, ++ 0x48, 0x7b, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x0f, 0x09, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x90, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x0f, 0x08, 0x0f, 0x7f, ++ 0x05, 0x1f, 0x69, 0x09, 0x09, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0xe0, 0x20, 0xe0, 0xfc, ++ 0x40, 0xf0, 0x2c, 0x20, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1a, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60, ++ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x78, 0xc8, 0xf8, ++ 0x48, 0x78, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0x30, 0xf8, 0xb8, 0xd8, 0xf8, ++ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x12, 0x3e, 0x35, ++ 0x34, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0xfc, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xfc, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x02, 0x12, 0x12, ++ 0x22, 0x42, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x40, 0x40, 0x50, 0x48, ++ 0x44, 0x44, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x30, 0x53, 0x10, ++ 0x10, 0x17, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x13, 0x1c, ++ 0x70, 0x11, 0x12, 0x14, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, 0x01, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x00, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08, ++ 0x08, 0x09, 0x11, 0x12, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0xe0, ++ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x21, 0x11, 0x12, 0x07, 0x00, 0x70, 0x11, ++ 0x12, 0x12, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x40, 0x80, 0x00, ++ 0x04, 0x04, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x12, ++ 0x14, 0x14, 0x18, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0x90, ++ 0x50, 0x48, 0x04, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x29, 0x2b, 0x3b, 0x25, ++ 0x2b, 0x3f, 0x25, 0x2f, 0x35, 0x25, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8, ++ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x16, 0x1b, 0x12, ++ 0x13, 0x10, 0x27, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0x30, 0xd8, 0xf4, 0x10, ++ 0xf0, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x33, 0x52, ++ 0x13, 0x17, 0x10, 0x10, 0x11, 0x1e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8, ++ 0xf8, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x21, 0x11, 0x1f, 0x41, 0x2f, 0x20, 0x0f, 0x18, ++ 0x1a, 0x2a, 0x2b, 0x4a, 0x48, 0x48, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x80, 0xf8, 0x88, ++ 0xa8, 0xa8, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x07, 0x15, ++ 0x17, 0x23, 0x21, 0x40, 0x41, 0x4e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x28, ++ 0xf8, 0xf0, 0x20, 0xc0, 0xe0, 0x1c, 0x00, 0x00, ++ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x1f, 0x12, ++ 0x1f, 0x3f, 0x04, 0x02, 0x07, 0x78, 0x00, 0x00, ++ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xf0, 0x90, ++ 0xf0, 0xe0, 0x40, 0x80, 0x80, 0x78, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48, ++ 0x49, 0x7a, 0x4c, 0x48, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, 0xe0, ++ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x03, ++ 0x05, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x80, ++ 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x2c, ++ 0x0d, 0x0d, 0x16, 0x17, 0x24, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x70, 0x70, ++ 0xa8, 0x24, 0xa0, 0xa0, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, ++ 0x00, 0x00, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x4d, 0x3f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0xa0, 0x30, 0xf8, 0x20, 0xe0, 0x20, ++ 0xe0, 0x20, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x24, 0x24, 0xfc, 0x24, 0x24, 0xfc, ++ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x45, 0x15, 0x14, 0x25, ++ 0x07, 0x19, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x48, 0x84, 0x24, ++ 0xe0, 0x00, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x23, 0x54, 0x15, 0x27, 0x19, ++ 0x0f, 0x09, 0x0f, 0x01, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x90, 0x28, 0xe4, 0x00, ++ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x07, 0x11, ++ 0x13, 0x14, 0x23, 0x20, 0x41, 0x46, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x10, ++ 0xe8, 0x44, 0xf8, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x0f, 0x08, 0x7f, ++ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xfc, ++ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x18, 0x70, 0x11, 0x12, 0x7c, 0x13, 0x18, ++ 0x34, 0x34, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xe8, 0x04, 0xf8, 0x10, ++ 0x60, 0x28, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d, ++ 0x25, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x0c, 0x70, 0x64, 0x64, 0x68, ++ 0x50, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13, ++ 0x3d, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c, ++ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1b, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x1f, ++ 0x10, 0x10, 0x10, 0x16, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0xfc, ++ 0x40, 0x40, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x79, 0x49, 0x49, 0x79, 0x49, 0x49, 0x79, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x04, 0x19, 0x0a, 0x7e, 0x0a, 0x1b, ++ 0x1c, 0x2b, 0x48, 0x08, 0x09, 0x1a, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x90, 0x50, 0x20, 0xd0, 0x4c, ++ 0x40, 0xf8, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x00, 0x3f, ++ 0x21, 0x43, 0x1e, 0x01, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xfc, ++ 0x08, 0xe0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x1a, 0x2a, 0x7f, 0x0a, 0x0a, ++ 0x0a, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa0, 0xa0, 0xf8, 0xa0, 0xa0, ++ 0xa0, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x04, 0x3f, 0x09, 0x0f, 0x11, ++ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x40, 0x20, 0xf0, 0x08, 0x00, 0xf0, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x01, 0x00, 0x7f, 0x00, 0x01, ++ 0x02, 0x04, 0x18, 0x60, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x88, 0x90, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e, ++ 0x14, 0x7f, 0x1b, 0x2c, 0x48, 0x19, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c, ++ 0xd0, 0x70, 0xac, 0xf8, 0x48, 0x98, 0x00, 0x00, ++ 0x04, 0x3e, 0x05, 0x04, 0x7f, 0x14, 0x14, 0x3c, ++ 0x34, 0x34, 0x36, 0x3f, 0x63, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1c, 0x1a, ++ 0x2a, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x11, 0x7d, 0x25, 0x26, 0x25, ++ 0x75, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x50, 0x78, 0xc0, 0x3c, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3a, 0x24, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, ++ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x01, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x00, 0xfc, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x02, 0x02, 0x07, 0x04, 0x0c, 0x12, 0x21, 0x02, ++ 0x07, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3c, 0x24, ++ 0x24, 0x24, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x7c, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, ++ 0x44, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0x88, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x02, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x18, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x24, 0x12, 0x12, 0x00, 0x0f, 0x71, 0x11, ++ 0x12, 0x14, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0x90, 0x90, 0xa0, 0x80, 0xf8, 0xc0, 0xa0, ++ 0x90, 0x88, 0x80, 0x80, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x90, 0x50, 0x20, 0x40, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x10, 0x7d, 0x27, 0x24, 0x24, ++ 0x77, 0x48, 0x0c, 0x14, 0x27, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xa0, 0x10, 0xf8, 0x48, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x28, 0x28, 0x28, 0x3e, 0x28, 0x48, 0x08, ++ 0x0e, 0x78, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x88, 0x88, 0x90, 0xa0, 0xc0, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x24, 0x27, 0x05, 0x17, ++ 0x17, 0x15, 0x25, 0x2a, 0x4c, 0x50, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0x68, ++ 0xb0, 0x10, 0xb0, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x04, 0x07, 0x08, 0x11, 0x7f, 0x11, 0x11, 0x1f, ++ 0x12, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0xc0, 0x80, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x90, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x20, ++ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7c, ++ 0x13, 0x3a, 0x36, 0x32, 0x52, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x64, 0x1b, 0x1a, 0x26, 0x7e, ++ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xe8, ++ 0xa8, 0xe8, 0xa8, 0xa8, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x02, 0x3f, 0x24, 0x24, 0x27, ++ 0x24, 0x27, 0x24, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xc8, ++ 0x48, 0xc8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x08, 0x3f, 0x09, 0x7f, 0x11, ++ 0x1d, 0x25, 0x55, 0x09, 0x16, 0x61, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xfc, 0x54, 0x74, 0x54, ++ 0x74, 0x54, 0xfc, 0x04, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x11, 0x19, 0x11, ++ 0x31, 0x50, 0x17, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x7e, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x28, 0x4f, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x01, 0x1f, 0x11, ++ 0x10, 0x10, 0x10, 0x10, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x08, 0xfc, 0x00, ++ 0x90, 0x90, 0x60, 0x64, 0x9c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x07, 0x01, 0x02, ++ 0x7f, 0x04, 0x0f, 0x10, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0xfc, 0x20, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x1f, 0x00, 0x01, 0x01, 0x7f, 0x01, 0x03, 0x1f, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0xf0, 0x60, 0x80, 0x00, 0xfc, 0x00, 0x00, 0xf0, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x1e, 0x02, 0x02, 0x3f, 0x02, 0x02, ++ 0x7f, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0xfc, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x4b, 0x30, 0x10, 0x37, 0x48, 0x08, 0x1b, ++ 0x2a, 0x4a, 0x0a, 0x0a, 0x0f, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x60, 0xfc, 0x40, 0xc0, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x07, 0x00, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x17, 0x66, 0x1a, 0x1b, 0x26, 0x7f, ++ 0x12, 0x3a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8, ++ 0x88, 0x88, 0x88, 0x78, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x7e, 0x09, 0x7e, 0x08, ++ 0x1d, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x58, 0xe0, 0x40, 0x5c, ++ 0xe0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x2f, 0x40, 0x7f, 0x03, ++ 0x3d, 0x06, 0x39, 0x06, 0x78, 0x03, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xe8, 0x00, 0xfc, 0x48, ++ 0xd0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x1f, 0x10, 0x37, 0x50, 0x17, ++ 0x10, 0x17, 0x15, 0x15, 0x17, 0x15, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0x30, 0xfc, 0x20, 0x78, ++ 0xc8, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x05, ++ 0x09, 0x11, 0x21, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x40, ++ 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x20, 0x50, 0x50, ++ 0x88, 0x04, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x10, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, ++ 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, ++ 0xf0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x22, 0x44, ++ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x09, 0x0c, 0x12, 0x2b, 0x48, 0x3c, 0x24, 0x3f, ++ 0x24, 0x3c, 0x28, 0x25, 0x3b, 0x62, 0x00, 0x00, ++ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x03, 0x03, 0x03, ++ 0x05, 0x05, 0x09, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, ++ 0x1f, 0x10, 0x21, 0x22, 0x4c, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, ++ 0xfc, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x0c, ++ 0x1a, 0x1a, 0x28, 0x48, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x68, ++ 0x58, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x09, 0x7f, 0x09, 0x09, 0x0f, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27, ++ 0x24, 0x24, 0x27, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8, ++ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x20, ++ 0x22, 0x2a, 0x2a, 0x32, 0x21, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88, ++ 0x88, 0x28, 0x58, 0x58, 0xc8, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x09, 0x15, 0x13, 0x21, ++ 0x42, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, ++ 0xd0, 0x30, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x11, 0x11, 0x17, 0x19, 0x71, ++ 0x11, 0x11, 0x11, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x30, 0xd0, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x10, 0x11, 0x01, 0x07, 0x10, ++ 0x13, 0x22, 0x22, 0x42, 0x43, 0x02, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xa0, 0x10, 0x38, 0xc4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x08, 0x08, 0x10, 0x11, 0x31, ++ 0x53, 0x14, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x90, 0x50, ++ 0x20, 0xa0, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x02, 0x0c, 0x32, 0x01, 0x06, 0x78, 0x3f, 0x12, ++ 0x1e, 0x12, 0x1e, 0x13, 0x7e, 0x02, 0x00, 0x00, ++ 0xc0, 0x30, 0x48, 0x80, 0x60, 0x1c, 0xf8, 0x50, ++ 0x70, 0x48, 0x44, 0x44, 0x78, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1e, ++ 0x12, 0x13, 0x1e, 0x62, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2b, 0x2a, 0x3e, ++ 0x08, 0x3e, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x28, 0x30, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x7c, 0x04, 0x05, 0x3d, 0x26, 0x20, 0x3c, ++ 0x24, 0x25, 0x05, 0x06, 0x08, 0x30, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, 0xa8, ++ 0xa8, 0x24, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x01, 0x7f, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x13, 0x12, 0x12, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0x10, 0x60, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x11, 0x21, 0x49, 0x09, 0x12, 0x14, 0x37, ++ 0x51, 0x11, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0xf0, ++ 0x10, 0x20, 0xc0, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x27, 0x14, 0x0f, 0x14, 0x67, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xc8, 0x50, 0xe0, 0x58, 0xc4, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x2b, 0x08, 0x2d, ++ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc, ++ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x00, 0x09, 0x08, 0x08, 0x7e, 0x05, 0x24, 0x14, ++ 0x14, 0x08, 0x0e, 0x70, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x53, 0x14, 0x11, 0x11, 0x12, 0x00, 0x00, ++ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a, ++ 0x7f, 0x12, 0x3c, 0x04, 0x1a, 0x63, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, ++ 0x50, 0x60, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x12, 0x19, 0x25, 0x24, 0x79, 0x10, 0x7f, ++ 0x11, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0x70, 0x50, ++ 0x70, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x19, 0x37, 0x34, 0x37, 0x54, ++ 0x17, 0x14, 0x17, 0x14, 0x14, 0x15, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x7e, 0x12, 0x1e, 0x1e, ++ 0x12, 0x17, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x9c, 0x90, 0x90, 0x90, ++ 0x10, 0x30, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0a, ++ 0x0b, 0x0a, 0x12, 0x12, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x4f, 0x29, 0x2b, 0x0a, 0x1b, ++ 0x2b, 0x4a, 0x10, 0x15, 0x25, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0xc0, 0x30, 0xfc, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0x98, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0x7d, 0x03, 0x3c, 0x03, 0x3a, ++ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57, ++ 0x7e, 0x13, 0x7e, 0x13, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4b, 0x4d, 0x49, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x90, 0x90, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x11, 0x31, 0x52, 0x13, ++ 0x15, 0x19, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x11, 0x11, 0x31, 0x57, 0x17, ++ 0x1a, 0x14, 0x11, 0x16, 0x11, 0x1e, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf0, 0xf0, 0xf0, 0xfc, 0x58, ++ 0xe8, 0xf4, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x04, 0x03, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x07, 0x06, ++ 0x05, 0x09, 0x08, 0x11, 0x26, 0x58, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, ++ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x02, 0x3f, 0x22, 0x7f, 0x04, 0x07, 0x0c, ++ 0x0f, 0x14, 0x27, 0x44, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x05, 0x25, 0x39, 0x2b, 0x2b, 0x25, 0x27, ++ 0x2b, 0x3f, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x20, 0x28, 0xc8, 0x58, 0x58, 0x28, 0x38, ++ 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x15, 0x36, 0x54, 0x15, 0x16, ++ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x0f, 0x0f, 0x0f, 0x3f, 0x25, ++ 0x57, 0x23, 0x0e, 0x31, 0x07, 0x78, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0xe0, 0xe0, 0xfc, 0x38, ++ 0xe8, 0xe4, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x17, 0x11, 0x1d, ++ 0x71, 0x11, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0, ++ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x04, 0x04, 0x0f, 0x0c, 0x17, ++ 0x24, 0x47, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x3a, 0x36, ++ 0x37, 0x52, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x23, 0x22, 0x03, 0x12, ++ 0x13, 0x20, 0x2f, 0x40, 0x43, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x84, 0x04, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x40, 0x23, 0x22, 0x02, 0x0b, ++ 0x0a, 0x0a, 0x13, 0x12, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0xb0, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x09, 0x48, 0x30, 0x17, 0x30, 0x4b, 0x0a, 0x1a, ++ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, ++ 0x38, 0x18, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x21, 0x11, 0x12, 0x7f, 0x0c, 0x3f, 0x2d, 0x2d, ++ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xa4, 0x20, 0xfc, 0x20, 0x20, ++ 0x30, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21, 0x21, 0x21, ++ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x08, 0x08, 0x18, 0x14, ++ 0x35, 0x51, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x80, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x0a, 0x14, 0x19, ++ 0x37, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3d, 0x02, 0x3d, ++ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x22, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xe4, ++ 0xa0, 0xb8, 0xa8, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x02, 0x22, 0x12, 0x1f, 0x02, 0x02, 0x73, 0x12, ++ 0x12, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x7c, 0x88, 0x90, ++ 0xfc, 0x90, 0x90, 0xb0, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x00, 0x3f, 0x21, ++ 0x21, 0x3f, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x00, 0xf8, 0x08, ++ 0x08, 0xf8, 0x08, 0x00, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x3e, 0x04, 0x3f, 0x15, 0x15, 0x7f, 0x15, ++ 0x15, 0x3f, 0x04, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x80, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0x48, ++ 0x44, 0xc4, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x0c, ++ 0x14, 0x16, 0x29, 0x4f, 0x38, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x7f, ++ 0x55, 0x67, 0x5f, 0x49, 0x49, 0x4b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0x30, 0x28, 0x38, 0xe4, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x02, 0x02, 0x05, 0x08, 0x10, ++ 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x10, 0x90, 0x60, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x02, 0x01, 0x01, 0x7f, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0x80, 0xfc, 0x08, 0x10, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01, ++ 0x3f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, ++ 0xf8, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x00, ++ 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, ++ 0x12, 0x09, 0x7f, 0x10, 0x17, 0x3f, 0x40, 0x07, ++ 0x07, 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x20, 0xd0, 0xf8, 0x04, 0xc0, ++ 0xc0, 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x09, 0x31, 0x2f, 0x27, 0x35, 0x27, 0x25, 0x37, ++ 0x2f, 0x21, 0x7f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x38, 0xe8, 0xc8, 0x58, 0xc8, 0x48, 0xd8, ++ 0xe8, 0x08, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x0c, 0x08, 0x7f, 0x09, 0x0a, ++ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x27, 0x24, 0x67, 0x27, 0x24, ++ 0x27, 0x26, 0x2b, 0x2b, 0x32, 0x22, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40, ++ 0xf8, 0x48, 0xf8, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x12, 0x53, 0x24, 0x14, 0x08, ++ 0x0c, 0x12, 0x16, 0x3a, 0x61, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x11, 0x22, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x09, 0x12, 0x04, ++ 0x18, 0x6f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x20, 0x10, 0x90, 0x40, ++ 0x30, 0xec, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x10, 0x1f, 0x17, 0x10, ++ 0x17, 0x14, 0x27, 0x27, 0x44, 0x04, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80, ++ 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xb0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x10, 0x1f, ++ 0x71, 0x13, 0x14, 0x11, 0x12, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x10, 0x13, 0x18, ++ 0x77, 0x10, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40, ++ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x79, 0x11, 0x16, 0x12, 0x19, ++ 0x72, 0x17, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x28, 0x28, 0xfc, 0xd0, 0x7c, ++ 0xd0, 0xfc, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b, ++ 0x4e, 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xb8, 0x88, 0xf8, 0x20, 0xf8, ++ 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xf8, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x37, ++ 0x31, 0x53, 0x54, 0x11, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x18, 0x1d, 0x1b, ++ 0x2a, 0x28, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x24, ++ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x11, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08, ++ 0x08, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x10, ++ 0x11, 0x23, 0x25, 0x41, 0x41, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0, ++ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x16, 0x35, 0x35, 0x3a, 0x50, ++ 0x11, 0x1f, 0x15, 0x25, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0, ++ 0x10, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, ++ 0x1f, 0x11, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x4c, 0x12, 0x3f, 0x01, 0x0f, ++ 0x01, 0x3f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x48, 0xb8, 0xf0, 0x00, 0xe0, ++ 0x00, 0xf8, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x4a, 0x2b, 0x2c, 0x09, 0x7e, 0x19, ++ 0x1b, 0x19, 0x1b, 0x2d, 0x29, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xfc, ++ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x09, 0x7f, 0x09, 0x09, 0x0f, ++ 0x01, 0x3f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xe0, 0xf0, ++ 0x00, 0xf8, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x01, 0x3f, 0x24, 0x49, 0x12, ++ 0x04, 0x1f, 0x68, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x48, 0x20, 0x90, ++ 0x40, 0xf0, 0x2c, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1f, 0x12, 0x12, 0x1f, 0x02, ++ 0x7f, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0x90, 0xf0, 0x00, ++ 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x03, 0x3c, ++ 0x03, 0x38, 0x2a, 0x2a, 0x3b, 0x22, 0x00, 0x00, ++ 0x08, 0x30, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40, ++ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x29, 0x09, 0x2f, ++ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00, ++ 0x00, 0xf8, 0xa0, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x27, 0x12, 0x11, 0x01, 0x03, 0x70, 0x17, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x3c, 0xc8, 0x48, 0x50, 0x20, 0xf8, 0x40, 0xfc, ++ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x29, 0x31, 0x28, 0x27, ++ 0x25, 0x25, 0x3a, 0x24, 0x21, 0x22, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x05, 0x1f, ++ 0x67, 0x04, 0x07, 0x05, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x40, 0xf0, ++ 0xcc, 0x40, 0xe0, 0x20, 0xc0, 0x38, 0x00, 0x00, ++ 0x14, 0x12, 0x2a, 0x0c, 0x13, 0x3e, 0x52, 0x1f, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x20, 0x50, 0x88, ++ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x1e, ++ 0x72, 0x13, 0x1e, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x80, 0x80, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0xc8, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22, ++ 0x7e, 0x22, 0x22, 0x3e, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa8, 0x30, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x20, 0x07, 0x10, ++ 0x10, 0x20, 0x20, 0x41, 0x42, 0x4c, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x0a, 0x42, 0x24, 0x20, 0x01, 0x12, ++ 0x17, 0x1a, 0x22, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0x20, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x20, 0x10, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x0a, 0x0e, 0x32, 0x07, 0x01, ++ 0x3f, 0x04, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x28, 0x38, 0xc8, 0x18, 0x00, ++ 0xf8, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x1a, 0x6f, 0x09, 0x0f, 0x09, ++ 0x0f, 0x1f, 0x04, 0x7f, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x98, 0x68, 0xf8, 0x20, 0xe0, 0x20, ++ 0xe0, 0xf0, 0x40, 0xfc, 0x60, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x27, 0x00, 0x12, ++ 0x12, 0x22, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19, ++ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x88, 0x90, 0xfc, 0x90, ++ 0xf8, 0x90, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x48, 0xd0, ++ 0x28, 0xfc, 0xa4, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x17, 0x18, ++ 0x37, 0x54, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x09, 0x05, 0x05, 0x7f, 0x01, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x00, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x09, 0x05, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x40, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x3e, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x00, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x13, ++ 0x1f, 0x22, 0x22, 0x42, 0x43, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30, ++ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x4a, 0x20, ++ 0x25, 0x0f, 0x11, 0x11, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0x60, 0x60, ++ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x30, 0x48, ++ 0xfc, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x02, 0x0c, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x02, 0x0c, 0x32, 0x22, 0x32, 0x2a, 0x2a, 0x22, ++ 0x22, 0x2e, 0x74, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0x88, ++ 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x11, 0x11, 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x17, ++ 0x15, 0x17, 0x15, 0x21, 0x2e, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0xf0, 0x00, 0xf0, 0xd0, 0x10, 0xd0, ++ 0x50, 0xd0, 0x54, 0xec, 0x2c, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x7f, 0x17, 0x34, 0x3f, 0x3d, ++ 0x55, 0x55, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0x44, 0xfc, 0xf4, ++ 0xf4, 0x54, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00, ++ 0x20, 0x17, 0x15, 0x47, 0x24, 0x27, 0x05, 0x17, ++ 0x10, 0x17, 0x25, 0x25, 0x5f, 0x40, 0x00, 0x00, ++ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0, ++ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3e, 0x3f, 0x24, ++ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0x7c, 0x80, 0x00, 0x78, ++ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, ++ 0x27, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, ++ 0xc8, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x48, 0x7d, 0x7c, 0x7e, 0x4f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x78, 0x00, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x0c, 0x0e, ++ 0x15, 0x15, 0x24, 0x44, 0x04, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x1f, ++ 0x19, 0x05, 0x02, 0x05, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x00, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x14, 0x1b, 0x12, ++ 0x14, 0x1c, 0x14, 0x27, 0x24, 0x47, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x80, 0xfc, 0xf0, 0xf0, ++ 0x90, 0xf0, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f, ++ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0, ++ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x3e, 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x05, ++ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0xc8, 0x48, 0x48, 0x98, 0x00, ++ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x12, 0x13, 0x12, 0x7e, 0x13, ++ 0x10, 0x13, 0x18, 0x60, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x7e, 0x12, 0x12, 0x12, 0x7f, 0x10, ++ 0x17, 0x14, 0x1c, 0x67, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0x28, 0xa8, 0x68, 0x98, 0xf8, 0x40, ++ 0xfc, 0x64, 0x94, 0xf4, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x29, 0x2f, 0x09, 0x1f, ++ 0x29, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x48, 0xa8, 0x28, 0x28, 0xe8, ++ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3f, ++ 0x01, 0x7f, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, ++ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x1b, ++ 0x34, 0x57, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x1f, ++ 0x01, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x26, 0x3a, 0x37, 0x3e, 0x08, ++ 0x7f, 0x4d, 0x53, 0x7f, 0x41, 0x43, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0xd0, 0x50, 0x78, 0x50, ++ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x28, 0x2b, 0x30, 0x29, 0x26, ++ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x5c, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x48, 0x0f, 0x10, 0x13, 0x30, ++ 0x53, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x21, 0x16, 0x02, 0x19, 0x62, ++ 0x0f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x50, 0x80, 0xb0, 0x4c, ++ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x00, 0x08, 0x04, 0x04, ++ 0x02, 0x02, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x13, 0x10, 0x2f, 0x48, 0x13, ++ 0x30, 0x57, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xf0, 0x90, 0xfc, 0x90, 0xf0, ++ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x12, 0x12, 0x1f, ++ 0x70, 0x11, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x55, ++ 0x56, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x37, 0x32, 0x2a, 0x3c, 0x65, 0x0a, 0x1f, ++ 0x64, 0x3f, 0x15, 0x0e, 0x07, 0x78, 0x00, 0x00, ++ 0x04, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0x24, 0x24, ++ 0xa4, 0xa4, 0x24, 0x04, 0x84, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x27, 0x00, 0x12, ++ 0x12, 0x22, 0x22, 0x42, 0x44, 0x48, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x08, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x21, 0x16, 0x14, 0x45, 0x24, 0x25, 0x0e, 0x10, ++ 0x17, 0x24, 0x27, 0x44, 0x47, 0x44, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0xc8, 0x58, 0x80, ++ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x10, 0x10, 0x13, 0x7c, 0x11, ++ 0x11, 0x11, 0x1e, 0x62, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xf8, 0x08, 0x50, ++ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x06, 0x39, 0x20, 0x24, 0x26, 0x39, 0x62, 0x1f, ++ 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x65, ++ 0x25, 0x25, 0x3d, 0x25, 0x22, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x60, 0x90, 0xe8, 0x08, 0x50, ++ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48, ++ 0x48, 0x50, 0x50, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x2a, 0x30, 0x2b, 0x25, ++ 0x25, 0x26, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0x40, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x1f, 0x11, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x14, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x22, 0x14, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xf8, 0x08, 0xf8, 0x80, 0xf8, ++ 0x80, 0xf8, 0x80, 0xf8, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x12, 0x33, 0x50, 0x11, ++ 0x17, 0x14, 0x14, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x80, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14, ++ 0x17, 0x14, 0x27, 0x2a, 0x4a, 0x11, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90, ++ 0xf0, 0x90, 0xf8, 0x44, 0x34, 0xf0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x0e, 0x0a, ++ 0x0a, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0x28, 0x48, 0x70, ++ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x17, 0x11, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x2f, 0x20, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0x28, 0xe0, 0xf0, 0x90, 0xf0, ++ 0x90, 0xf0, 0xf8, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f, ++ 0x20, 0x44, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0x08, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x14, 0x13, 0x33, 0x55, 0x11, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x29, 0x29, ++ 0x29, 0x29, 0x2f, 0x28, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x28, 0x28, ++ 0x28, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x23, 0x10, 0x17, 0x00, 0x11, 0x16, ++ 0x20, 0x21, 0x46, 0x40, 0x01, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x21, 0x7f, 0x24, 0x1f, 0x68, 0x0f, ++ 0x08, 0x0f, 0x05, 0x09, 0x31, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xfc, 0x48, 0xf0, 0x2c, 0xe0, ++ 0x20, 0xe0, 0x60, 0x10, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x90, 0x1c, ++ 0x70, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x0b, 0x40, 0x22, 0x0a, 0x0d, 0x12, 0x21, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x98, 0x14, 0x64, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x22, 0x02, 0x13, ++ 0x10, 0x12, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x0c, 0x4a, 0x32, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x38, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, ++ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x4f, 0x2a, 0x29, 0x0b, 0x1d, ++ 0x29, 0x49, 0x11, 0x12, 0x24, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, ++ 0xf0, 0x10, 0xf0, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x78, 0x4f, 0x4a, 0x79, 0x4b, 0x4d, 0x79, ++ 0x49, 0x49, 0x7a, 0x4a, 0x44, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x04, 0x18, 0x73, 0x10, 0x17, 0x7c, 0x11, 0x1a, ++ 0x34, 0x35, 0x52, 0x10, 0x11, 0x1e, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c, ++ 0xf0, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x10, 0x55, 0x35, 0x39, 0x11, 0x7f, 0x11, 0x19, ++ 0x35, 0x35, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0xf0, 0x50, ++ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x0f, ++ 0x0a, 0x09, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0xf0, ++ 0x10, 0x20, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x20, 0x17, 0x12, 0x01, 0x03, 0x75, 0x11, ++ 0x11, 0x11, 0x12, 0x14, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x0f, 0x09, ++ 0x0f, 0x0f, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xe0, 0x20, ++ 0xe0, 0xe0, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x28, 0x33, 0x28, 0x25, 0x26, ++ 0x24, 0x25, 0x3a, 0x20, 0x21, 0x2e, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x24, 0x9c, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x00, 0x7e, ++ 0x12, 0x12, 0x12, 0x1c, 0x10, 0x13, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x02, 0x7f, 0x02, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x11, 0x14, 0x65, 0x18, 0x1b, 0x26, 0x7d, ++ 0x19, 0x34, 0x35, 0x36, 0x50, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64, ++ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x11, 0x13, 0x34, 0x5b, 0x12, ++ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17, ++ 0x10, 0x17, 0x10, 0x20, 0x3f, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, ++ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x0c, 0x1a, 0x1a, ++ 0x29, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x60, 0xe0, 0xd0, ++ 0x50, 0x48, 0x44, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16, ++ 0x1a, 0x1b, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x30, 0xf0, 0xe8, ++ 0xa8, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x17, 0x34, 0x39, 0x56, 0x11, ++ 0x11, 0x1a, 0x16, 0x21, 0x22, 0x44, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48, ++ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x7d, 0x17, 0x11, 0x11, 0x7f, 0x13, ++ 0x13, 0x15, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x78, 0x78, ++ 0x54, 0x94, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x01, 0x7d, 0x51, 0x52, 0x7b, 0x4d, 0x49, 0x49, ++ 0x78, 0x53, 0x52, 0x7e, 0x43, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, ++ 0x10, 0x10, 0x7e, 0x10, 0x7d, 0x57, 0x7c, 0x57, ++ 0x7e, 0x12, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x2b, 0x30, 0x29, 0x26, 0x25, ++ 0x25, 0x26, 0x3b, 0x24, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48, ++ 0xfc, 0x68, 0xa8, 0xfc, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x05, 0x3b, 0x2e, 0x28, 0x41, 0x00, 0x00, ++ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, 0xa8, ++ 0xfc, 0x68, 0xe8, 0x7c, 0x88, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f, ++ 0x2a, 0x2f, 0x2a, 0x2a, 0x2f, 0x59, 0x00, 0x00, ++ 0x20, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x64, 0x48, ++ 0xfc, 0xa8, 0xa8, 0x7c, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x13, 0x7c, 0x13, ++ 0x12, 0x13, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x80, 0x7c, 0x14, 0x94, 0xd4, 0x24, 0x4c, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x30, 0x09, ++ 0x0d, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x08, 0x30, ++ 0x60, 0x18, 0xf4, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x12, ++ 0x13, 0x24, 0x24, 0x48, 0x53, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, ++ 0xfc, 0x40, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x1c, ++ 0x03, 0x7f, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xc0, ++ 0x30, 0xc8, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x7f, 0x1c, 0x1a, 0x2a, ++ 0x48, 0x7f, 0x08, 0x14, 0x22, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x1f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x09, 0x1b, 0x2c, 0x4b, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x0f, 0x0a, 0x12, 0x13, 0x34, 0x54, 0x1a, ++ 0x11, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0xe8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x21, 0x11, 0x12, 0x05, 0x08, 0x17, ++ 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0xe8, 0x04, 0xf8, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x1e, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x17, ++ 0x15, 0x15, 0x15, 0x29, 0x29, 0x57, 0x00, 0x00, ++ 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x24, 0x24, 0x24, ++ 0x24, 0x24, 0x44, 0x44, 0x84, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x1f, 0x18, 0x0d, 0x12, 0x1e, 0x20, ++ 0x7e, 0x0a, 0x0a, 0x0c, 0x08, 0x0b, 0x00, 0x00, ++ 0x10, 0x10, 0xf0, 0x10, 0xfc, 0x20, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x18, 0x35, 0x37, 0x34, 0x53, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x10, 0x11, 0x12, 0x7c, 0x13, ++ 0x10, 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x08, 0x08, 0x1c, ++ 0x2a, 0x4a, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60, ++ 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c, ++ 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xe8, 0x04, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x08, 0x3f, 0x00, 0x3e, 0x01, ++ 0x7e, 0x08, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, ++ 0xa4, 0xb8, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02, ++ 0x0f, 0x70, 0x1f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80, ++ 0xe0, 0x1c, 0xf0, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x0f, ++ 0x00, 0x3f, 0x12, 0x0a, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x70, 0x70, 0xe0, ++ 0x00, 0xf8, 0x90, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x3e, 0x22, 0x2b, 0x1f, 0x12, 0x1f, ++ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x88, 0xa8, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x24, 0x35, 0x2e, ++ 0x3f, 0x2e, 0x35, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0xa8, 0x28, 0xc4, 0xfc, 0x80, 0xfc, ++ 0x94, 0x94, 0x98, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3f, 0x27, 0x2a, 0x32, 0x22, ++ 0x27, 0x24, 0x27, 0x44, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xfc, 0x30, 0xe8, 0xa4, 0x20, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x3f, 0x27, 0x2a, 0x32, ++ 0x20, 0x24, 0x24, 0x44, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xfc, 0x70, 0xa8, 0xa4, ++ 0x80, 0xf0, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x12, 0x12, 0x2a, ++ 0x46, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x11, 0x23, 0x01, 0x06, 0x78, ++ 0x0f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x28, 0x44, 0x84, 0x80, 0x80, ++ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x0f, 0x11, 0x29, 0x06, 0x04, ++ 0x18, 0x60, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x08, 0x88, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x08, 0x18, 0x90, 0x48, 0x44, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x0f, 0x19, 0x26, 0x0d, 0x31, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x18, ++ 0xfc, 0x10, 0xa0, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x11, 0x17, 0x11, 0x1f, ++ 0x11, 0x17, 0x23, 0x2d, 0x71, 0x01, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xfc, 0x40, 0xf0, 0x50, 0xfc, ++ 0x50, 0xf0, 0x60, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x22, 0x44, ++ 0x01, 0x14, 0x14, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x44, 0xc4, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x1b, 0x34, 0x35, 0x36, 0x52, ++ 0x13, 0x12, 0x15, 0x11, 0x12, 0x1c, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, 0x48, ++ 0xfc, 0xa8, 0xa8, 0x7c, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x15, 0x12, 0x42, 0x20, 0x20, 0x0e, 0x12, ++ 0x12, 0x23, 0x22, 0x42, 0x45, 0x48, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x20, 0xfc, 0x20, 0x20, 0xa0, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x10, 0x17, 0x36, 0x3b, 0x52, ++ 0x13, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x5f, 0x12, 0x1f, 0x17, 0x11, ++ 0x1f, 0x11, 0x2f, 0x27, 0x59, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xfc, 0x20, 0xfc, 0xf0, 0x50, ++ 0xfc, 0x50, 0xf0, 0x70, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x64, 0x1b, 0x1a, 0x27, 0x7e, ++ 0x1b, 0x34, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38, ++ 0x2a, 0x2e, 0x3b, 0x6a, 0x09, 0x0a, 0x00, 0x00, ++ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0xa4, ++ 0xa8, 0xa8, 0xb8, 0xa8, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x20, 0x17, 0x13, 0x02, 0x73, ++ 0x12, 0x13, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0xfc, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x00, 0x20, 0x17, 0x10, 0x03, 0x02, 0x73, 0x12, ++ 0x13, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x09, 0x02, ++ 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x07, 0x19, 0x7f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x12, 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x48, 0xe4, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x16, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x32, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0xf0, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0xa8, 0xf4, 0x14, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x48, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22, ++ 0x23, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0x50, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x08, 0x2e, ++ 0x29, 0x28, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3e, ++ 0x23, 0x3e, 0x0f, 0x28, 0x2e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x00, 0x78, ++ 0xd0, 0x70, 0xfc, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x3f, 0x20, 0x41, 0x01, 0x3f, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x01, 0x0f, 0x09, 0x7f, 0x09, 0x0f, 0x0f, 0x09, ++ 0x0f, 0x7f, 0x04, 0x0f, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0xe0, 0x20, ++ 0xe0, 0xfc, 0x40, 0x40, 0xc0, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x25, 0x25, 0x46, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xb0, ++ 0xa8, 0xa4, 0x24, 0xb8, 0xa0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x0f, 0x01, 0x01, 0x3f, 0x04, ++ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xe0, 0x00, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, ++ 0x28, 0x24, 0x27, 0x39, 0x62, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x0a, 0x09, 0x7f, 0x08, 0x0d, 0x1a, 0x1a, ++ 0x2b, 0x48, 0x09, 0x08, 0x08, 0x0f, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48, 0x40, ++ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7c, 0x14, 0x17, 0x3c, 0x3f, ++ 0x36, 0x55, 0x54, 0x15, 0x16, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0xa4, 0xa8, 0xa8, 0xb0, 0xa8, 0xa4, ++ 0x24, 0x24, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x13, ++ 0x12, 0x22, 0x22, 0x42, 0x43, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, ++ 0x88, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17, ++ 0x17, 0x16, 0x2a, 0x2b, 0x52, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x40, 0xf8, ++ 0x68, 0xd8, 0x48, 0x68, 0xd8, 0x58, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x49, 0x09, 0x0f, 0x11, ++ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x44, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x09, 0x36, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, ++ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x04, 0x7f, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x40, 0xfc, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf4, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x03, 0x02, ++ 0x06, 0x1b, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x10, 0xf0, 0x20, 0x40, 0xfc, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x04, 0x3f, 0x0a, 0x7f, 0x1e, 0x12, 0x1e, 0x1e, ++ 0x16, 0x7f, 0x07, 0x07, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0xf8, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xf4, ++ 0x7c, 0xfc, 0xc0, 0xf8, 0xc0, 0x40, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d, ++ 0x51, 0x19, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, ++ 0x50, 0xf0, 0x54, 0x4c, 0x4c, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, ++ 0x24, 0x22, 0x27, 0x39, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x04, 0x04, ++ 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x40, 0x20, ++ 0x10, 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x0e, 0x15, 0x25, 0x5f, 0x12, 0x1f, ++ 0x12, 0x1f, 0x17, 0x24, 0x47, 0x18, 0x00, 0x00, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x58, 0x60, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7d, 0x08, 0x0b, 0x18, 0x16, ++ 0x35, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, 0x40, 0x64, ++ 0x68, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x27, 0x3c, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xfc, 0x20, 0x24, ++ 0xb8, 0x70, 0x68, 0xa4, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0x7c, 0x01, 0x3b, 0x04, 0x3b, ++ 0x02, 0x3a, 0x2b, 0x2a, 0x3a, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x17, 0x10, 0x31, 0x52, 0x10, ++ 0x17, 0x10, 0x11, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0x40, ++ 0xfc, 0x90, 0xd0, 0x20, 0xd0, 0x08, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3f, 0x00, 0x3c, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x03, 0x0d, 0x71, 0x01, 0x3f, ++ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xc0, 0x30, 0x08, 0x00, 0xf8, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x24, 0x3c, 0x25, ++ 0x26, 0x3c, 0x18, 0x14, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x25, 0x3d, ++ 0x27, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x10, ++ 0xfc, 0x54, 0x54, 0x54, 0x64, 0xcc, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x07, ++ 0x79, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0x90, 0x90, 0x60, 0x64, 0x9c, ++ 0x04, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x0c, 0x1b, 0x1a, ++ 0x28, 0x4b, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0x50, 0x94, 0x54, 0x4c, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x7f, 0x3f, 0x22, 0x3e, 0x2b, 0x5f, 0x08, ++ 0x0f, 0x0f, 0x0f, 0x0f, 0x29, 0x44, 0x00, 0x00, ++ 0x30, 0x28, 0xfc, 0x60, 0xa4, 0x1c, 0xe0, 0x20, ++ 0xe0, 0xe0, 0xfc, 0xfc, 0x24, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x02, 0x07, 0x05, 0x04, 0x04, ++ 0x0a, 0x09, 0x09, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0xa0, 0xa0, ++ 0x20, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x0f, 0x08, 0x08, 0x0f, ++ 0x08, 0x08, 0x0f, 0x08, 0x00, 0x7f, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xe0, 0x20, 0x20, 0xe0, ++ 0x20, 0x20, 0xe0, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c, ++ 0x03, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x18, 0xe0, 0x40, 0x7c, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x7f, 0x07, 0x07, 0x3f, 0x27, ++ 0x24, 0x27, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xc0, 0xc0, 0xf8, 0xc8, ++ 0x48, 0xd8, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x14, 0x13, 0x1f, 0x1a, ++ 0x1a, 0x1f, 0x1a, 0x12, 0x24, 0x48, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xa0, 0x20, 0xfc, 0xb4, ++ 0xd8, 0x90, 0xb0, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x35, 0x37, ++ 0x32, 0x54, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68, ++ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x42, 0x24, 0x29, 0x03, 0x10, ++ 0x13, 0x12, 0x27, 0x24, 0x40, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x64, 0xf0, 0x10, ++ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x12, 0x11, 0x21, 0x3d, 0x65, ++ 0x26, 0x26, 0x3c, 0x25, 0x22, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68, ++ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x26, 0x25, 0x3d, 0x25, 0x27, ++ 0x3e, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68, ++ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x40, 0x20, ++ 0x20, 0xa0, 0x10, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x21, 0x21, 0x21, 0x3f, ++ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x01, 0x03, 0x05, 0x09, 0x31, ++ 0x41, 0x01, 0x01, 0x00, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0x00, 0x80, 0x60, 0x10, 0x08, ++ 0x04, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x11, 0x21, ++ 0x41, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, ++ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, ++ 0x7c, 0x44, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x05, 0x04, 0x04, ++ 0x7f, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xa0, 0xa0, ++ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x06, 0x18, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x79, ++ 0x09, 0x09, 0x19, 0x69, 0x01, 0x01, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x00, 0x20, 0x2c, ++ 0x30, 0x20, 0x24, 0x1c, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x1d, ++ 0x65, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x60, 0x80, 0x00, 0xfc, 0x48, 0x70, 0x40, 0x48, ++ 0x38, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x07, 0x7a, 0x29, 0x3f, 0x56, 0x08, 0x7f, 0x55, ++ 0x7d, 0x5d, 0x55, 0x49, 0x55, 0x63, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x19, 0x08, 0x7e, 0x12, 0x14, ++ 0x1b, 0x10, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0xf8, 0xa8, 0xa8, 0xfc, 0x64, ++ 0xf8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x11, 0x09, 0x09, 0x1f, 0x01, ++ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x10, 0x10, 0x20, 0xf0, 0x10, ++ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x7f, 0x08, 0x7e, ++ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0x20, 0xfc, 0x24, 0x28, ++ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x3f, ++ 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x20, ++ 0x20, 0x20, 0x10, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x3c, 0x20, 0x20, ++ 0x3c, 0x24, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x08, 0x08, ++ 0x78, 0x48, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x07, 0x3c, 0x24, 0x24, ++ 0x24, 0x3c, 0x20, 0x03, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0xc8, 0xa8, 0xb0, ++ 0x90, 0xa8, 0xc4, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x7f, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x07, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xc0, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x09, 0x09, 0x11, 0x21, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f, ++ 0x20, 0x4f, 0x01, 0x3f, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0xc8, 0x00, 0xf8, 0x00, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x0c, 0x12, 0x12, 0x11, 0x21, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, ++ 0x50, 0x50, 0x90, 0x88, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x0f, 0x09, 0x11, 0x11, 0x31, 0x51, 0x11, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x38, 0x28, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, ++ 0x11, 0x12, 0x22, 0x24, 0x48, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, ++ 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x28, 0x48, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, 0x44, ++ 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x1f, 0x30, 0x50, 0x10, ++ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0x88, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x32, 0x52, 0x11, ++ 0x11, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, ++ 0xc0, 0x80, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x30, 0x52, 0x12, ++ 0x14, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x10, 0x34, 0x52, 0x11, ++ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x68, 0x1c, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x30, 0x5f, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x11, 0x11, 0x32, 0x55, 0x19, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xc0, 0x40, 0x20, 0x10, 0x28, 0x24, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x31, 0x51, 0x11, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xe0, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x0a, 0x0a, 0x12, 0x13, 0x34, 0x58, 0x1f, ++ 0x10, 0x10, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, ++ 0xc0, 0xa0, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x17, 0x10, 0x30, 0x50, 0x13, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x37, 0x54, 0x14, ++ 0x17, 0x14, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0, ++ 0xfc, 0xa4, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x13, 0x12, 0x34, 0x53, 0x12, ++ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, ++ 0x48, 0x48, 0xc8, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x50, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x04, 0x88, 0x80, 0x88, 0x90, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x57, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x04, 0x08, 0x00, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x10, 0x30, 0x53, 0x10, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x12, 0x14, 0x30, 0x51, 0x16, ++ 0x10, 0x13, 0x10, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x80, 0xf8, 0x08, 0x90, 0x60, 0x40, 0xa0, 0x7c, ++ 0x84, 0x48, 0x30, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x13, 0x12, 0x34, 0x5f, 0x10, ++ 0x10, 0x11, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x04, 0x18, 0x60, 0xc0, 0x40, ++ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x14, 0x12, 0x32, 0x50, 0x11, ++ 0x12, 0x1c, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x57, 0x16, ++ 0x16, 0x16, 0x16, 0x1a, 0x18, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x90, 0xf0, 0xb0, ++ 0xb0, 0xb0, 0xf4, 0x8c, 0x8c, 0x84, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x13, 0x32, 0x52, 0x12, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x53, 0x15, ++ 0x19, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x0a, 0x09, 0x09, 0x17, 0x10, 0x30, 0x53, 0x10, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x0d, 0x13, 0x23, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x30, 0x48, 0x88, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x12, ++ 0x12, 0x1f, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90, ++ 0x90, 0xf0, 0x90, 0x90, 0x90, 0xb0, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x2f, 0x27, 0x60, 0x3f, 0x2a, ++ 0x31, 0x27, 0x25, 0x25, 0x3f, 0x20, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x80, 0xfc, 0x48, ++ 0x24, 0xf0, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13, ++ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x11, 0x17, 0x31, 0x51, 0x12, ++ 0x14, 0x1f, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x80, 0xa0, 0x90, 0x38, 0xc8, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x25, 0x25, 0x51, 0x11, ++ 0x19, 0x15, 0x25, 0x21, 0x4f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x53, 0x10, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x04, 0xf8, 0x30, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x12, 0x17, 0x32, 0x52, 0x13, ++ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x68, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x13, 0x32, 0x52, 0x13, ++ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13, ++ 0x10, 0x13, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x0f, 0x11, 0x11, 0x3f, 0x51, 0x13, ++ 0x13, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0x28, ++ 0xa8, 0x68, 0x68, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x09, 0x08, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13, ++ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc, ++ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x13, 0x32, 0x53, 0x12, ++ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x32, 0x5f, 0x10, ++ 0x13, 0x12, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0x10, 0xfc, 0x08, ++ 0xc8, 0x48, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13, ++ 0x12, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc, ++ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x32, 0x52, 0x12, ++ 0x12, 0x13, 0x15, 0x15, 0x19, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x12, 0x13, 0x32, 0x52, 0x13, ++ 0x12, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x12, 0x34, 0x51, 0x12, ++ 0x13, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0xa8, 0xa4, 0x1c, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x31, 0x52, 0x14, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x30, 0xc8, 0x48, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x11, 0x31, 0x52, 0x14, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xe0, 0xa0, 0x24, 0x24, 0x1c, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0a, 0x13, 0x12, 0x32, 0x5f, 0x12, ++ 0x13, 0x16, 0x16, 0x1a, 0x12, 0x16, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x88, 0x48, 0x48, 0xc8, 0x28, ++ 0x30, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10, ++ 0x17, 0x14, 0x17, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x13, 0x10, 0x37, 0x50, 0x13, ++ 0x12, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x10, 0x13, 0x32, 0x53, 0x12, ++ 0x13, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x10, ++ 0x10, 0x11, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x40, ++ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x14, 0x14, 0x34, 0x55, 0x15, ++ 0x17, 0x15, 0x15, 0x19, 0x19, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x88, 0x88, 0x88, 0xfc, 0x48, ++ 0x28, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x17, 0x14, 0x37, 0x54, 0x14, ++ 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x04, 0x04, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x0c, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x17, 0x34, 0x57, 0x15, ++ 0x15, 0x16, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xfc, 0x44, 0x74, 0x54, ++ 0x54, 0xec, 0xcc, 0x44, 0x44, 0x4c, 0x00, 0x00, ++ 0x08, 0x0f, 0x0d, 0x15, 0x15, 0x35, 0x55, 0x14, ++ 0x17, 0x15, 0x14, 0x15, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, ++ 0xfc, 0x90, 0x60, 0xd8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x14, 0x17, 0x34, 0x54, 0x17, ++ 0x14, 0x14, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0x78, ++ 0x48, 0x28, 0x30, 0x10, 0x28, 0xc4, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1f, 0x19, 0x15, ++ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x30, 0x50, ++ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0b, 0x12, 0x12, 0x33, 0x5e, 0x10, ++ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xa4, 0x5c, 0x80, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x10, 0x11, 0x33, 0x52, 0x12, ++ 0x13, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0x60, 0x90, 0xfc, 0x10, 0x60, ++ 0x88, 0x30, 0xc4, 0x08, 0x30, 0xc0, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x13, ++ 0x14, 0x1c, 0x15, 0x16, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x88, 0xc8, 0x28, 0x08, 0xe8, 0x30, 0x00, 0x00, ++ 0x08, 0x0a, 0x0a, 0x12, 0x1f, 0x32, 0x52, 0x17, ++ 0x14, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10, ++ 0x13, 0x1d, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x09, 0x09, 0x0b, 0x12, 0x15, 0x39, 0x52, 0x14, ++ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x68, 0xb0, ++ 0x80, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00, ++ 0x09, 0x08, 0x08, 0x11, 0x17, 0x38, 0x57, 0x14, ++ 0x16, 0x15, 0x16, 0x15, 0x14, 0x15, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x12, ++ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x1f, 0x15, 0x34, 0x54, 0x1b, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0xa8, 0x28, ++ 0x30, 0x10, 0x90, 0xa8, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x52, 0x13, ++ 0x12, 0x10, 0x1f, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x08, 0x0f, 0x0c, 0x14, 0x14, 0x34, 0x54, 0x15, ++ 0x15, 0x15, 0x15, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x0a, 0x0a, 0x0f, 0x12, 0x1f, 0x32, 0x52, 0x1f, ++ 0x12, 0x13, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0x7c, 0xc8, 0x48, 0xa8, 0xa8, ++ 0x30, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x1e, 0x12, 0x12, ++ 0x1e, 0x08, 0x0c, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xf0, 0x90, 0x90, ++ 0xf0, 0x20, 0x20, 0x50, 0x88, 0x08, 0x00, 0x00, ++ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x50, 0x1f, ++ 0x11, 0x17, 0x1a, 0x13, 0x12, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x80, 0xfc, ++ 0x20, 0xf8, 0x24, 0xe0, 0x08, 0xf8, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x12, 0x33, 0x53, 0x10, ++ 0x17, 0x10, 0x1f, 0x12, 0x11, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xf8, 0x48, ++ 0xfc, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x17, 0x12, 0x33, 0x53, 0x12, ++ 0x13, 0x10, 0x1f, 0x11, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48, ++ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x10, 0x33, 0x52, 0x13, ++ 0x11, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf8, 0x08, 0xf8, ++ 0x10, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00, ++ 0x08, 0x0f, 0x0a, 0x14, 0x13, 0x32, 0x53, 0x12, ++ 0x13, 0x12, 0x15, 0x14, 0x1a, 0x12, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x44, 0xf0, 0x10, 0xf8, 0x08, ++ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x17, 0x11, 0x37, 0x51, 0x11, ++ 0x16, 0x17, 0x10, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc, ++ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00, ++ 0x09, 0x0f, 0x0d, 0x15, 0x17, 0x33, 0x55, 0x19, ++ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0x30, 0xb4, 0x4c, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x09, 0x09, 0x0f, 0x11, 0x1f, 0x33, 0x52, 0x14, ++ 0x1b, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x30, 0xb0, 0xc8, ++ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x0f, 0x09, 0x1f, 0x10, 0x33, 0x52, 0x13, ++ 0x12, 0x13, 0x10, 0x13, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, ++ 0x08, 0x0f, 0x09, 0x17, 0x15, 0x37, 0x53, 0x12, ++ 0x13, 0x13, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x0f, 0x0b, 0x12, 0x13, 0x32, 0x53, 0x17, ++ 0x13, 0x12, 0x13, 0x12, 0x13, 0x17, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x11, 0x17, 0x30, 0x53, 0x12, ++ 0x12, 0x13, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xb8, 0xa8, ++ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00, ++ 0x09, 0x09, 0x0b, 0x12, 0x17, 0x3a, 0x53, 0x12, ++ 0x13, 0x10, 0x17, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, ++ 0xfc, 0x00, 0xbc, 0xa4, 0xe4, 0x0c, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x50, 0x17, ++ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, ++ 0xe0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x0f, 0x0d, 0x17, 0x14, 0x37, 0x55, 0x17, ++ 0x10, 0x13, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x11, 0x3e, 0x2a, 0x6a, 0x2e, 0x32, ++ 0x23, 0x22, 0x23, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xb8, 0xe8, 0x14, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x0f, 0x08, 0x13, 0x1f, 0x33, 0x50, 0x13, ++ 0x1f, 0x10, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0x40, 0xf8, ++ 0xfc, 0x08, 0xfc, 0x48, 0x28, 0x18, 0x00, 0x00, ++ 0x09, 0x0f, 0x09, 0x13, 0x12, 0x33, 0x50, 0x17, ++ 0x14, 0x18, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, ++ 0x44, 0xf8, 0x90, 0x60, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x0a, 0x13, 0x12, 0x33, 0x52, 0x10, ++ 0x17, 0x15, 0x17, 0x15, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, ++ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00, ++ 0x15, 0x1f, 0x15, 0x17, 0x22, 0x2f, 0x6a, 0x2f, ++ 0x22, 0x2f, 0x22, 0x2f, 0x25, 0x28, 0x00, 0x00, ++ 0x28, 0xa8, 0x28, 0x7c, 0x50, 0xd0, 0xfc, 0xd0, ++ 0x50, 0xfc, 0x50, 0xd0, 0x7c, 0xc0, 0x00, 0x00, ++ 0x0f, 0x08, 0x0f, 0x15, 0x10, 0x37, 0x54, 0x17, ++ 0x14, 0x17, 0x15, 0x19, 0x19, 0x17, 0x00, 0x00, ++ 0xbc, 0x00, 0xbc, 0xb4, 0x40, 0xfc, 0xa0, 0xf8, ++ 0xa8, 0xf8, 0xe4, 0x38, 0xe4, 0x1c, 0x00, 0x00, ++ 0x13, 0x12, 0x13, 0x20, 0x2f, 0x6b, 0x29, 0x2f, ++ 0x2a, 0x2b, 0x2b, 0x32, 0x37, 0x20, 0x00, 0x00, ++ 0xb8, 0xa8, 0xb8, 0x00, 0xfc, 0xa0, 0x20, 0xfc, ++ 0xe8, 0xa8, 0x90, 0xd0, 0xa8, 0xc4, 0x00, 0x00, ++ 0x09, 0x0f, 0x0d, 0x11, 0x13, 0x33, 0x52, 0x13, ++ 0x10, 0x13, 0x10, 0x17, 0x12, 0x14, 0x00, 0x00, ++ 0x50, 0xfc, 0x18, 0xf0, 0xf8, 0x58, 0xe8, 0xf8, ++ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0xa4, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x02, 0x3c, 0x20, 0x20, 0x3e, 0x20, 0x20, 0x3f, ++ 0x24, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x08, 0xf8, ++ 0x88, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x08, 0x08, 0x08, ++ 0x0f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0x20, ++ 0xe0, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x02, 0x03, 0x04, 0x18, 0x7f, 0x11, 0x11, 0x1f, ++ 0x13, 0x03, 0x05, 0x09, 0x11, 0x60, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x40, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22, 0x3e, ++ 0x14, 0x14, 0x15, 0x26, 0x2c, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x88, 0x88, 0xf8, ++ 0x50, 0x50, 0x50, 0x94, 0x94, 0x0c, 0x00, 0x00, ++ 0x08, 0x3e, 0x14, 0x7f, 0x00, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x14, 0x15, 0x26, 0x4d, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x3f, 0x21, 0x2d, 0x25, ++ 0x25, 0x2b, 0x33, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x68, 0x28, ++ 0x28, 0x58, 0x98, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x07, 0x02, 0x04, 0x18, 0x6f, 0x00, 0x3e, 0x22, ++ 0x3a, 0x27, 0x3a, 0x26, 0x22, 0x26, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x48, 0x48, ++ 0x90, 0x20, 0x90, 0x90, 0x48, 0x48, 0x00, 0x00, ++ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x04, 0x04, 0x07, ++ 0x08, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x00, 0x00, 0xe0, ++ 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, ++ 0x04, 0x3c, 0x04, 0x1f, 0x69, 0x0f, 0x09, 0x0f, ++ 0x04, 0x3f, 0x04, 0x7f, 0x08, 0x30, 0x00, 0x00, ++ 0x48, 0x70, 0x44, 0xfc, 0x20, 0xe0, 0x20, 0xe0, ++ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x27, 0x24, 0x24, 0x27, ++ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, 0xc8, ++ 0x08, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x47, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x11, ++ 0x11, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x28, 0x28, 0x30, 0x27, ++ 0x24, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x98, 0x78, 0x08, 0xc8, ++ 0x48, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f, ++ 0x10, 0x17, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0, ++ 0x10, 0xd0, 0x10, 0xd0, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x1f, 0x04, 0x7f, 0x01, 0x1f, ++ 0x11, 0x1f, 0x11, 0x7f, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x07, 0x18, ++ 0x7f, 0x11, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xc0, 0x80, ++ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x20, 0x40, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11, ++ 0x1f, 0x13, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x5e, 0x00, 0x00, 0x7f, 0x14, ++ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x40, 0x7c, 0x40, 0xf8, 0x88, ++ 0x50, 0x30, 0x68, 0x8c, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x5f, 0x02, 0x06, 0x19, 0x6b, ++ 0x0c, 0x35, 0x06, 0x0c, 0x30, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0x48, 0x48, 0x50, ++ 0xa0, 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f, ++ 0x04, 0x1f, 0x6a, 0x25, 0x25, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xf8, 0x48, 0x28, 0x28, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x7f, 0x0f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x7f, 0x09, 0x1f, 0x69, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0xfc, 0x20, 0xf0, 0x2c, 0x60, 0x00, 0x00, ++ 0x00, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x17, 0x10, 0x00, 0x00, 0x1f, ++ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc, ++ 0xc0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x02, 0x02, 0x12, ++ 0x13, 0x22, 0x20, 0x40, 0x5f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x13, 0x12, 0x02, 0x02, 0x12, ++ 0x13, 0x22, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x10, 0x17, 0x00, 0x00, 0x11, ++ 0x11, 0x22, 0x24, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x44, 0xe4, 0xe8, 0xf0, 0x60, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x03, 0x22, 0x12, 0x12, 0x03, 0x02, 0x10, ++ 0x10, 0x21, 0x21, 0x42, 0x44, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x0f, 0x22, 0x12, 0x13, 0x04, 0x04, 0x1a, ++ 0x13, 0x21, 0x22, 0x42, 0x44, 0x08, 0x00, 0x00, ++ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x07, 0x24, 0x14, 0x17, 0x04, 0x04, 0x15, ++ 0x15, 0x25, 0x25, 0x44, 0x47, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x88, 0xe8, ++ 0x28, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x27, 0x10, 0x13, 0x02, 0x02, 0x13, ++ 0x10, 0x22, 0x22, 0x44, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x07, 0x20, 0x13, 0x12, 0x02, 0x02, 0x13, ++ 0x11, 0x20, 0x27, 0x41, 0x42, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, ++ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0x48, 0x00, 0x00, ++ 0x00, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, ++ 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x12, 0x1f, 0x11, 0x14, ++ 0x17, 0x15, 0x1d, 0x22, 0x25, 0x58, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x10, 0xf0, 0x00, ++ 0x70, 0x54, 0x54, 0xcc, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x11, 0x13, ++ 0x13, 0x15, 0x15, 0x29, 0x31, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x90, ++ 0x50, 0x50, 0x34, 0x2c, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x10, 0x17, 0x30, 0x50, 0x13, 0x10, ++ 0x07, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x17, 0x14, 0x17, 0x14, 0x17, ++ 0x10, 0x1f, 0x11, 0x27, 0x21, 0x4f, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xd0, 0x50, 0xd0, 0x50, 0xd0, ++ 0x10, 0xf0, 0x14, 0xcc, 0x0c, 0xe4, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x0f, 0x00, 0x40, 0x41, 0x5d, 0x55, 0x55, 0x55, ++ 0x5d, 0x55, 0x41, 0x46, 0x7f, 0x40, 0x00, 0x00, ++ 0xe0, 0x40, 0x88, 0x08, 0xf8, 0x98, 0x68, 0x28, ++ 0x58, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x22, 0x12, 0x0a, 0x06, ++ 0x05, 0x04, 0x08, 0x10, 0x20, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x90, 0x70, 0x1c, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x04, 0x7f, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x09, 0x09, 0x09, 0x7f, ++ 0x08, 0x0c, 0x12, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1f, 0x2a, 0x2a, 0x4a, 0x12, ++ 0x14, 0x24, 0x08, 0x11, 0x01, 0x06, 0x00, 0x00, ++ 0x08, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x7f, 0x08, ++ 0x0a, 0x09, 0x11, 0x1f, 0x70, 0x00, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x2a, 0x2a, 0x2a, 0x7f, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x21, 0x00, 0x00, ++ 0x08, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x06, 0x3c, 0x04, 0x04, 0x7f, 0x04, 0x04, ++ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x14, 0x22, 0x5d, 0x00, 0x7f, ++ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x3c, 0x06, 0x19, 0x64, 0x04, 0x7f, ++ 0x0c, 0x0e, 0x15, 0x25, 0x44, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x22, 0x12, 0x15, 0x7e, 0x14, 0x15, 0x14, 0x7f, ++ 0x14, 0x14, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x54, 0x2a, 0x2a, ++ 0x00, 0x7f, 0x08, 0x08, 0x0f, 0x78, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x22, ++ 0x3e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x08, 0x1c, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x49, 0x49, 0x7f, ++ 0x4c, 0x1a, 0x19, 0x29, 0x48, 0x08, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x01, ++ 0x3d, 0x25, 0x25, 0x3d, 0x21, 0x03, 0x00, 0x00, ++ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x10, 0x1f, ++ 0x2b, 0x4b, 0x15, 0x25, 0x09, 0x16, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x3e, 0x2a, 0x36, 0x2a, 0x2a, ++ 0x26, 0x00, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x18, 0x00, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x70, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x7f, 0x15, 0x75, 0x15, 0x35, ++ 0x5c, 0x0e, 0x15, 0x24, 0x44, 0x04, 0x00, 0x00, ++ 0x88, 0x28, 0x28, 0xe8, 0x28, 0xe8, 0x28, 0x68, ++ 0xe8, 0x28, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x12, 0x12, 0x7f, 0x12, 0x14, 0x0a, 0x11, 0x1f, ++ 0x20, 0x5f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x08, 0x48, 0xc8, 0x48, 0x48, 0x48, 0x48, 0xc8, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x24, 0x49, 0x24, 0x3f, 0x24, 0x3f, 0x24, 0x3f, ++ 0x04, 0x7f, 0x0e, 0x15, 0x64, 0x04, 0x00, 0x00, ++ 0x88, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0xe8, 0x28, 0x08, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x7f, 0x00, 0x3e, ++ 0x00, 0x7f, 0x2a, 0x29, 0x49, 0x18, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d, ++ 0x3f, 0x12, 0x1a, 0x15, 0x24, 0x48, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x08, 0x88, 0x98, 0x00, 0x00, ++ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d, ++ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xa8, 0x68, 0x68, 0x28, ++ 0x38, 0x28, 0x4c, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d, ++ 0x3f, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0x28, 0x68, 0x68, 0xa8, 0xa8, ++ 0x28, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x49, 0x3e, 0x2a, ++ 0x2a, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xc8, 0x48, ++ 0x68, 0x58, 0x8c, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e, ++ 0x10, 0x3f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x04, 0x7f, 0x0a, 0x7f, 0x2e, 0x2e, 0x3f, 0x51, ++ 0x1f, 0x11, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x08, 0xe8, 0xa8, 0x28, 0xa8, 0xe8, 0x68, 0x28, ++ 0x28, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x7c, 0x28, 0x2a, 0x2a, 0x7e, 0x12, ++ 0x1e, 0x70, 0x10, 0x11, 0x21, 0x42, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90, ++ 0x90, 0xfc, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2a, 0x7e, 0x12, ++ 0x1e, 0x72, 0x12, 0x14, 0x24, 0x49, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90, ++ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1e, 0x23, 0x22, 0x7a, 0x2a, ++ 0x2a, 0x2a, 0x3a, 0x22, 0x03, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7e, 0x12, 0x12, 0x13, 0x22, 0x4c, 0x00, ++ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x08, 0x3e, 0x00, ++ 0x3e, 0x22, 0x22, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x1f, 0x21, 0x02, 0x7f, 0x06, ++ 0x0a, 0x1f, 0x62, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0xf8, 0x08, 0x80, 0xfc, 0x40, ++ 0x20, 0xf0, 0x2c, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x2a, 0x2a, 0x55, 0x54, 0x2a, 0x2a, ++ 0x00, 0x7f, 0x08, 0x08, 0x0e, 0x79, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x22, 0x3e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3e, 0x22, ++ 0x3f, 0x22, 0x3e, 0x22, 0x3f, 0x61, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0x40, ++ 0xf8, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f, ++ 0x22, 0x5f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc, ++ 0x08, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x3e, 0x22, ++ 0x3e, 0x3e, 0x22, 0x3e, 0x12, 0x61, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x2a, 0x54, 0x2a, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, ++ 0x08, 0x7e, 0x1c, 0x2a, 0x49, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x23, 0x3e, ++ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0xf8, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x2b, 0x5d, 0x2b, 0x4d, 0x1a, 0x61, ++ 0x09, 0x34, 0x0a, 0x34, 0x09, 0x32, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x06, 0x38, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f, ++ 0x08, 0x7f, 0x08, 0x7e, 0x3a, 0x55, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x3f, 0x25, 0x2f, 0x2a, 0x2f, ++ 0x2a, 0x2f, 0x3f, 0x33, 0x3f, 0x50, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0xa0, 0x78, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xe8, 0x68, 0xc8, 0xd8, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x24, 0x3f, ++ 0x24, 0x7e, 0x24, 0x3e, 0x24, 0x3f, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x10, 0x20, 0x40, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x12, 0x12, 0x2e, 0x45, ++ 0x04, 0x08, 0x10, 0x01, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, ++ 0x48, 0xa8, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0f, 0x10, 0x11, 0x39, 0x57, ++ 0x13, 0x14, 0x18, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x48, 0x48, ++ 0x48, 0xc8, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x10, 0x10, 0x3f, 0x52, 0x12, ++ 0x1f, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, 0x48, ++ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x12, 0x3f, 0x42, 0x1f, 0x12, ++ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0xe8, 0x08, 0xc8, 0x48, ++ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x4f, 0x08, 0x0f, ++ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x88, 0x88, 0x88, ++ 0xc8, 0x48, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x3f, 0x40, 0x7e, ++ 0x10, 0x1e, 0x22, 0x02, 0x02, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x1c, ++ 0x70, 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x27, 0x24, 0x27, ++ 0x24, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xf0, ++ 0x90, 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x24, 0x35, 0x2b, 0x29, 0x21, ++ 0x25, 0x25, 0x29, 0x29, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0xa0, 0xf8, 0x20, 0xf8, 0x20, ++ 0xf8, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x27, 0x24, 0x3f, 0x27, 0x24, ++ 0x27, 0x27, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x90, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0xf0, 0x18, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x21, 0x27, 0x38, 0x27, 0x25, ++ 0x27, 0x22, 0x25, 0x29, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0x40, 0xf0, 0x08, 0x70, 0x50, ++ 0x70, 0x20, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x20, 0x23, 0x22, 0x23, 0x20, 0x2f, ++ 0x29, 0x2f, 0x29, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0x78, ++ 0x48, 0x78, 0x48, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x3f, 0x04, 0x04, 0x08, 0x11, 0x21, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11, ++ 0x11, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, ++ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x01, 0x09, 0x09, 0x08, ++ 0x7f, 0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20, ++ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x21, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x01, 0x21, 0x13, 0x12, 0x07, 0x1a, 0x13, 0x22, ++ 0x23, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x20, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40, ++ 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x80, 0x40, 0x20, ++ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x12, ++ 0x12, 0x12, 0x12, 0x22, 0x22, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x60, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x1e, 0x12, 0x12, 0x32, 0x2a, 0x4c, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0xb0, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x21, 0x49, 0x0c, 0x12, 0x11, ++ 0x3f, 0x52, 0x12, 0x12, 0x1e, 0x10, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x70, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x08, ++ 0x17, 0x64, 0x04, 0x05, 0x04, 0x03, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0xf0, 0x80, 0xfc, 0x40, 0x20, ++ 0xd0, 0x4c, 0x40, 0x80, 0x10, 0xf0, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x13, 0x12, 0x12, 0x12, 0x1f, 0x12, ++ 0x13, 0x13, 0x25, 0x25, 0x49, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x90, 0xa8, 0x28, 0xd0, 0x14, ++ 0x24, 0x08, 0x10, 0x24, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17, ++ 0x14, 0x14, 0x17, 0x23, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x28, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x10, 0x13, 0x12, 0x13, 0x13, ++ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0xf0, ++ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x38, 0x00, 0x00, ++ 0x00, 0x1f, 0x18, 0x14, 0x15, 0x1f, 0x12, 0x1a, ++ 0x1a, 0x1f, 0x1a, 0x22, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0x20, 0xfc, 0x54, 0x98, ++ 0x90, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15, ++ 0x17, 0x15, 0x1f, 0x25, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x10, 0xe0, 0x40, 0x7c, 0x50, ++ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x17, 0x16, 0x1a, 0x1f, 0x18, ++ 0x1f, 0x1d, 0x1d, 0x2f, 0x28, 0x49, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xa0, 0xfc, 0xc8, 0xa8, ++ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, ++ 0x04, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x10, 0x08, 0xf8, 0x04, 0x04, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x08, 0x15, 0x7e, 0x04, 0x18, ++ 0x63, 0x0c, 0x01, 0x0e, 0x00, 0x1f, 0x00, 0x00, ++ 0x00, 0x40, 0xf0, 0x10, 0x28, 0xfc, 0x40, 0xb0, ++ 0x0c, 0x40, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x5f, 0x10, 0x1f, 0x17, 0x1f, ++ 0x02, 0x7f, 0x1a, 0x64, 0x19, 0x07, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0xf0, 0x10, 0xd0, 0xf0, 0xf0, ++ 0x00, 0xfc, 0xb0, 0xcc, 0x20, 0xd0, 0x00, 0x00, ++ 0x12, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x24, 0x3f, ++ 0x20, 0x1f, 0x02, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x48, 0xfc, 0x90, 0xf8, 0x90, 0xf8, 0x90, 0xfc, ++ 0x80, 0xf0, 0x60, 0x80, 0xe0, 0x1c, 0x00, 0x00, ++ 0x05, 0x39, 0x21, 0x3d, 0x21, 0x21, 0x3f, 0x01, ++ 0x3f, 0x04, 0x02, 0x01, 0x06, 0x78, 0x00, 0x00, ++ 0x00, 0x78, 0x08, 0x78, 0x08, 0x08, 0xf8, 0x00, ++ 0xf0, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x3f, 0x24, ++ 0x3f, 0x0f, 0x02, 0x01, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0x48, ++ 0xf8, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00, ++ 0x13, 0x17, 0x54, 0x5b, 0x33, 0x1b, 0x2a, 0x23, ++ 0x40, 0x1f, 0x04, 0x03, 0x06, 0x38, 0x00, 0x00, ++ 0x90, 0xd4, 0x34, 0xb8, 0xd0, 0x98, 0xa4, 0xc4, ++ 0x00, 0xe0, 0x40, 0x80, 0xc0, 0x38, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x00, 0x78, 0x48, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x79, 0x4a, 0x42, 0x04, 0x08, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x00, 0x78, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x79, 0x49, 0x42, 0x04, 0x08, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0, ++ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x48, 0x48, 0x48, 0x4f, 0x48, ++ 0x48, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x4a, 0x4a, 0x4c, ++ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4a, 0x4a, 0x4a, 0x4b, 0x48, ++ 0x48, 0x48, 0x79, 0x4a, 0x44, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60, ++ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x7a, 0x42, 0x44, 0x00, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x49, 0x49, 0x49, ++ 0x49, 0x79, 0x49, 0x42, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x00, 0xe0, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x48, 0x49, 0x49, 0x49, ++ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0xe0, 0x60, 0xa0, 0xa0, 0x20, 0x60, 0xa0, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48, ++ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x90, 0x88, 0x3c, 0xe4, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8, ++ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4a, 0x4f, 0x48, ++ 0x48, 0x48, 0x79, 0x49, 0x42, 0x04, 0x00, 0x00, ++ 0x60, 0x20, 0x20, 0x20, 0x10, 0x10, 0xf8, 0x94, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x01, 0x06, 0x78, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, ++ 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x79, 0x4a, 0x42, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x88, ++ 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x48, ++ 0x48, 0x49, 0x79, 0x42, 0x44, 0x00, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0xc0, 0x44, 0x64, 0xe8, 0xf0, ++ 0xe0, 0x50, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xc8, 0x48, 0x48, 0x48, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x12, 0x34, 0x4c, 0x0d, 0x13, ++ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x60, 0x50, 0x88, 0x08, 0xfc, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x48, 0x4a, 0x49, ++ 0x48, 0x48, 0x78, 0x48, 0x41, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0x90, ++ 0xa0, 0x60, 0x50, 0x88, 0x3c, 0xc4, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x4a, 0x7a, 0x4c, 0x47, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, ++ 0xa0, 0x90, 0xd0, 0xa8, 0xf8, 0x14, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a, ++ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x28, 0x2f, 0x28, 0x28, 0x2e, 0x38, ++ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x80, 0x88, 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, ++ 0x00, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x07, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xc0, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4a, ++ 0x4b, 0x7a, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0xf8, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x49, ++ 0x49, 0x49, 0x79, 0x49, 0x47, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x72, 0x52, 0x5f, 0x55, 0x55, 0x55, ++ 0x5d, 0x53, 0x72, 0x52, 0x44, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0xc8, 0x48, 0x48, 0x30, ++ 0x30, 0x10, 0xb0, 0xa8, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x02, 0x7a, 0x4a, 0x4a, 0x4b, 0x4a, 0x48, ++ 0x4a, 0x4a, 0x7a, 0x4a, 0x43, 0x02, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x49, 0x4b, 0x4d, 0x49, ++ 0x49, 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4a, 0x4a, 0x4d, 0x49, 0x49, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x28, 0x28, ++ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48, ++ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x00, 0x7f, ++ 0x04, 0x07, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x00, 0xe0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x17, 0x10, 0x17, ++ 0x14, 0x14, 0x14, 0x27, 0x24, 0x40, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8, ++ 0xb0, 0x90, 0xb4, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x49, 0x4f, 0x48, 0x48, ++ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0x88, 0x3c, 0xc4, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x49, 0x49, 0x4b, 0x4c, 0x48, ++ 0x48, 0x78, 0x48, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x94, 0x90, ++ 0x60, 0x60, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x49, 0x4f, 0x49, 0x49, 0x49, ++ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20, ++ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x49, 0x4b, 0x4c, 0x48, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x02, 0x04, 0x00, 0x19, 0x62, ++ 0x0f, 0x08, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x44, 0x48, 0xb0, 0x10, 0x08, ++ 0xe4, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1e, 0x12, 0x12, 0x12, 0x12, 0x1e, 0x1a, ++ 0x18, 0x14, 0x15, 0x22, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x60, ++ 0x50, 0x88, 0x08, 0x00, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x4a, 0x4a, 0x4a, ++ 0x4b, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0x38, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x4b, 0x48, 0x48, ++ 0x4f, 0x48, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x30, 0xc0, 0x40, 0x7c, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x48, ++ 0x49, 0x4e, 0x78, 0x48, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x40, 0x88, ++ 0x90, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x09, 0x09, 0x09, 0x3f, 0x20, ++ 0x27, 0x24, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0xf8, 0x08, ++ 0xc8, 0x48, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x7a, 0x4c, 0x48, 0x48, 0x49, 0x4b, ++ 0x4d, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x78, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x11, 0x1f, 0x00, 0x7f, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49, ++ 0x49, 0x7f, 0x49, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0xa0, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x28, 0x28, ++ 0x90, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x49, 0x4a, ++ 0x4b, 0x7e, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xe0, 0x90, 0x80, 0xfc, 0x40, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x49, 0x49, 0x4f, ++ 0x48, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x79, 0x48, 0x41, 0x02, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x4f, 0x48, 0x49, ++ 0x4b, 0x7c, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x80, 0x88, 0xe8, 0x90, 0x90, 0xfc, 0x40, 0xf8, ++ 0x30, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x01, 0x01, ++ 0x7f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x20, 0x10, ++ 0xfc, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4a, 0x4a, 0x4b, ++ 0x4a, 0x7a, 0x4b, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x49, 0x48, 0x48, 0x4f, 0x49, ++ 0x49, 0x7f, 0x49, 0x41, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x10, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4f, 0x4a, 0x4a, 0x4a, 0x4b, ++ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xe8, 0x28, 0x44, 0xa4, 0x90, ++ 0x90, 0x80, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4a, ++ 0x4a, 0x7a, 0x4c, 0x44, 0x0b, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x72, 0x57, 0x55, 0x59, 0x5f, 0x51, ++ 0x55, 0x75, 0x55, 0x45, 0x07, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28, ++ 0xe8, 0x28, 0x28, 0xf0, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x49, 0x4a, 0x48, ++ 0x4b, 0x78, 0x48, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0x24, 0x1c, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0f, 0x18, 0x1f, 0x28, 0x4f, 0x08, 0x0f, ++ 0x00, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x07, 0x7c, 0x4a, 0x49, 0x4a, 0x4c, 0x4f, ++ 0x4c, 0x7a, 0x49, 0x41, 0x02, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xa8, 0x10, 0xa8, 0xc8, 0xf8, ++ 0xc8, 0xa8, 0x30, 0x90, 0xa8, 0x44, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x48, 0x4b, 0x4a, 0x4b, 0x4a, ++ 0x4b, 0x78, 0x4f, 0x40, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x7a, 0x4a, 0x4c, 0x49, 0x4a, 0x48, ++ 0x4a, 0x7a, 0x4c, 0x41, 0x02, 0x0c, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x50, 0x40, ++ 0x48, 0xc8, 0xb0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x4a, 0x4c, 0x4b, 0x4a, ++ 0x4a, 0x7b, 0x4a, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x08, 0x10, 0xe0, 0x38, 0x08, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x4e, 0x48, 0x4b, 0x48, ++ 0x48, 0x78, 0x4d, 0x45, 0x09, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xec, 0x00, 0xf8, 0x10, ++ 0xa0, 0x50, 0x48, 0x04, 0x14, 0xf0, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4a, 0x4b, 0x4a, ++ 0x4a, 0x7b, 0x4c, 0x44, 0x09, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50, ++ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x4b, ++ 0x4b, 0x7d, 0x45, 0x09, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x80, 0x38, 0x28, 0x28, 0xe8, 0x28, 0xa8, ++ 0xa8, 0x78, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4b, 0x48, 0x4f, 0x48, 0x49, ++ 0x4e, 0x79, 0x4e, 0x41, 0x06, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x88, 0xc8, ++ 0xf0, 0x60, 0xd0, 0x48, 0x44, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4c, 0x48, 0x49, 0x4a, ++ 0x48, 0x7b, 0x4d, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x88, 0xf0, 0x90, 0xa0, 0x60, ++ 0x90, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x79, 0x49, 0x4b, 0x4c, 0x48, 0x49, ++ 0x4f, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x60, 0x98, ++ 0xf4, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x70, 0x57, 0x54, 0x57, 0x54, 0x57, ++ 0x56, 0x76, 0x57, 0x4a, 0x08, 0x10, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0xc8, 0x28, 0xa8, ++ 0xb0, 0x90, 0xb4, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x48, 0x49, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x5f, 0x11, ++ 0x11, 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0xf0, 0x10, ++ 0x30, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x01, 0x7f, 0x49, 0x49, 0x4f, 0x49, 0x49, ++ 0x4b, 0x7b, 0x4d, 0x49, 0x01, 0x01, 0x00, 0x00, ++ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90, ++ 0x50, 0x70, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b, ++ 0x4a, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x77, 0x54, 0x57, 0x54, 0x57, 0x54, ++ 0x54, 0x77, 0x54, 0x47, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0xa8, 0x30, 0xa0, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x49, 0x48, 0x4b, 0x4a, 0x4c, ++ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x58, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x48, 0x4b, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xa8, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x71, 0x52, 0x57, 0x58, 0x57, 0x54, ++ 0x56, 0x75, 0x56, 0x45, 0x04, 0x05, 0x00, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0xf0, 0x08, 0xac, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x51, 0x57, 0x55, 0x55, 0x57, ++ 0x51, 0x73, 0x53, 0x45, 0x09, 0x01, 0x00, 0x00, ++ 0x08, 0x08, 0xe8, 0x28, 0xe8, 0x68, 0x68, 0xe8, ++ 0x28, 0xa8, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x49, 0x49, 0x49, 0x48, 0x4b, ++ 0x4a, 0x7c, 0x48, 0x40, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4a, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x45, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, ++ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x4a, 0x4b, 0x4a, ++ 0x4b, 0x78, 0x4f, 0x40, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x88, 0xfc, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x00, 0x7b, 0x48, 0x49, 0x48, 0x4f, 0x49, ++ 0x49, 0x7a, 0x4a, 0x44, 0x0b, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4b, 0x4a, 0x4b, 0x4b, 0x4a, ++ 0x4b, 0x79, 0x4b, 0x44, 0x01, 0x0e, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4f, 0x48, 0x49, 0x4e, 0x48, ++ 0x4b, 0x7a, 0x4b, 0x42, 0x03, 0x02, 0x00, 0x00, ++ 0x80, 0xf8, 0x90, 0xfc, 0xd8, 0xe0, 0x88, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x02, 0x7a, 0x4b, 0x48, 0x4f, 0x48, 0x4b, ++ 0x4a, 0x7b, 0x4a, 0x40, 0x00, 0x0f, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x80, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0x50, 0x48, 0x7c, 0x84, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, ++ 0x4a, 0x7a, 0x4a, 0x43, 0x01, 0x0e, 0x00, 0x00, ++ 0x18, 0xe0, 0x04, 0xfc, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00, ++ 0x00, 0x07, 0x74, 0x54, 0x54, 0x54, 0x54, 0x55, ++ 0x55, 0x75, 0x55, 0x44, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0xf8, 0x68, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x52, 0x5f, 0x52, 0x5f, ++ 0x52, 0x73, 0x54, 0x44, 0x08, 0x13, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0x20, 0x7c, 0xc8, 0x48, 0xa8, ++ 0x28, 0x90, 0x90, 0xa8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x49, 0x48, 0x4f, 0x49, 0x49, ++ 0x49, 0x79, 0x49, 0x41, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x02, 0x02, 0x7a, 0x4f, 0x4a, 0x4a, 0x4b, 0x4a, ++ 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x13, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xbc, 0x40, 0x60, 0xbc, 0xd0, ++ 0x90, 0xfc, 0xb0, 0xa8, 0xc8, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5a, 0x5a, ++ 0x7f, 0x57, 0x46, 0x0a, 0x12, 0x02, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xd4, 0x98, 0x90, ++ 0x90, 0x30, 0xa8, 0xa8, 0x44, 0x84, 0x00, 0x00, ++ 0x00, 0x00, 0x77, 0x54, 0x54, 0x57, 0x54, 0x55, ++ 0x55, 0x75, 0x55, 0x4a, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x90, 0xfc, 0x90, 0xd8, ++ 0xf8, 0xf8, 0xfc, 0xbc, 0xd4, 0x90, 0x00, 0x00, ++ 0x00, 0x04, 0x73, 0x52, 0x58, 0x54, 0x54, 0x50, ++ 0x5e, 0x72, 0x53, 0x42, 0x05, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x49, 0x4b, 0x4a, 0x4f, 0x49, ++ 0x49, 0x79, 0x49, 0x40, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0x08, 0xfc, 0xf0, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1e, 0x12, 0x12, 0x1e, 0x00, 0x3f, 0x01, ++ 0x7f, 0x00, 0x1e, 0x12, 0x1e, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, 0xf8, 0x00, ++ 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00, ++ 0x05, 0x16, 0x2c, 0x12, 0x3f, 0x20, 0x4f, 0x08, ++ 0x0f, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x28, 0x70, 0xb0, 0x48, 0xfc, 0x08, 0xe0, 0x20, ++ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x05, 0x75, 0x55, 0x57, 0x5c, 0x51, 0x5f, ++ 0x52, 0x73, 0x52, 0x43, 0x04, 0x08, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x20, 0xa4, 0xfc, 0x20, 0xf8, ++ 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x05, 0x05, 0x75, 0x5f, 0x55, 0x57, 0x55, 0x57, ++ 0x55, 0x7f, 0x55, 0x45, 0x08, 0x11, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0x50, ++ 0x50, 0xd0, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x57, 0x54, 0x57, 0x54, ++ 0x57, 0x72, 0x5f, 0x42, 0x02, 0x03, 0x00, 0x00, ++ 0x00, 0x38, 0xe8, 0x28, 0xa8, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0x28, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x02, 0x02, 0x73, 0x56, 0x5a, 0x5f, 0x52, 0x52, ++ 0x52, 0x77, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, ++ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x49, 0x4f, 0x49, 0x49, 0x49, ++ 0x49, 0x79, 0x48, 0x45, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x20, 0xfc, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0xc0, 0x28, 0x14, 0xf4, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x4b, 0x4b, 0x4d, 0x49, 0x4b, ++ 0x48, 0x7f, 0x4a, 0x42, 0x04, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0xb0, 0x78, 0x54, 0x10, 0xf8, ++ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x00, 0x07, 0x70, 0x5f, 0x50, 0x57, 0x55, 0x57, ++ 0x54, 0x77, 0x54, 0x47, 0x05, 0x09, 0x00, 0x00, ++ 0x80, 0xf8, 0x88, 0xfc, 0x88, 0xf8, 0xa8, 0xb8, ++ 0x88, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x02, 0x02, 0x7b, 0x4d, 0x48, 0x48, 0x4f, 0x49, ++ 0x49, 0x79, 0x4a, 0x44, 0x1f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x88, 0x00, 0xfc, 0x50, ++ 0x50, 0x58, 0xe4, 0x44, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x48, 0x4b, 0x4a, 0x4b, ++ 0x48, 0x7f, 0x48, 0x41, 0x06, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x01, 0x07, 0x79, 0x48, 0x4f, 0x49, 0x49, 0x49, ++ 0x4b, 0x7a, 0x4a, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x10, 0xfc, 0x50, 0x40, 0xfc, 0xf0, 0x10, 0xf0, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4c, 0x4a, 0x4a, 0x4c, 0x4b, ++ 0x4a, 0x7f, 0x48, 0x47, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xa8, 0xa4, 0x94, 0x70, 0xf8, ++ 0xa8, 0xfc, 0x00, 0xfc, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x49, 0x4b, ++ 0x4b, 0x7a, 0x4b, 0x47, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8, ++ 0xf8, 0x48, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x01, 0x06, 0x76, 0x55, 0x5f, 0x51, 0x52, 0x57, ++ 0x59, 0x77, 0x55, 0x43, 0x03, 0x0c, 0x00, 0x00, ++ 0x04, 0xf4, 0xb4, 0xb4, 0x74, 0x94, 0x94, 0xf4, ++ 0x34, 0xd4, 0x54, 0x84, 0xc4, 0x0c, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49, ++ 0x49, 0x78, 0x4b, 0x42, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50, ++ 0xf0, 0xa0, 0xf0, 0x78, 0xc0, 0x7c, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4b, 0x4b, 0x4d, 0x49, 0x49, ++ 0x49, 0x7f, 0x4a, 0x42, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0xf8, 0x50, 0xf0, 0x50, ++ 0xf0, 0xfc, 0x48, 0x78, 0xc0, 0x7c, 0x00, 0x00, ++ 0x01, 0x0f, 0x71, 0x55, 0x54, 0x5d, 0x55, 0x55, ++ 0x5d, 0x75, 0x50, 0x45, 0x04, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xd0, 0x14, 0xd8, 0x50, 0x54, ++ 0xd4, 0x4c, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x17, 0x13, 0x6a, 0x2b, 0x13, 0x2a, 0x7b, 0x13, ++ 0x21, 0x3f, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0xf8, 0xa8, 0xb0, 0xb0, 0xa8, 0x28, 0xb8, 0xa0, ++ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x4a, 0x4b, ++ 0x4a, 0x7c, 0x4f, 0x43, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, ++ 0xa8, 0xc4, 0xfc, 0x20, 0xe0, 0x18, 0x00, 0x00, ++ 0x1e, 0x12, 0x1e, 0x3f, 0x20, 0x2f, 0x22, 0x3f, ++ 0x29, 0x2f, 0x2f, 0x29, 0x3f, 0x41, 0x00, 0x00, ++ 0x78, 0x48, 0x78, 0xfc, 0x20, 0xa0, 0x20, 0xfc, ++ 0x48, 0xa8, 0x30, 0xb0, 0x48, 0x84, 0x00, 0x00, ++ 0x1e, 0x12, 0x1e, 0x7f, 0x02, 0x1f, 0x1f, 0x13, ++ 0x1f, 0x0c, 0x7e, 0x12, 0x1e, 0x12, 0x00, 0x00, ++ 0xf0, 0x90, 0xf0, 0xfc, 0x00, 0xf0, 0x90, 0xf0, ++ 0xf0, 0x60, 0xfc, 0x90, 0xf0, 0x90, 0x00, 0x00, ++ 0x00, 0x07, 0x74, 0x5f, 0x55, 0x57, 0x57, 0x54, ++ 0x57, 0x77, 0x54, 0x47, 0x07, 0x04, 0x00, 0x00, ++ 0x18, 0xf0, 0x88, 0xfc, 0x28, 0xf8, 0x88, 0x88, ++ 0xfc, 0xc8, 0x28, 0xa8, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x79, 0x49, 0x49, 0x4b, 0x48, 0x4f, ++ 0x4a, 0x7b, 0x4b, 0x42, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc, ++ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x55, 0x55, 0x57, 0x5a, 0x52, ++ 0x5f, 0x77, 0x56, 0x4a, 0x12, 0x02, 0x00, 0x00, ++ 0x28, 0x28, 0xa8, 0x7c, 0x68, 0xa8, 0xbc, 0x28, ++ 0xa8, 0x3c, 0xa8, 0xa8, 0x3c, 0x20, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x52, 0x5f, 0x5a, 0x5f, 0x5a, ++ 0x5f, 0x72, 0x5f, 0x42, 0x02, 0x02, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x7c, 0xd4, 0xfc, 0xd4, 0xfc, ++ 0xa8, 0x7c, 0x88, 0x7c, 0x28, 0x18, 0x00, 0x00, ++ 0x01, 0x0f, 0x73, 0x57, 0x52, 0x5f, 0x57, 0x5f, ++ 0x53, 0x7e, 0x53, 0x4f, 0x01, 0x07, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xa0, 0xf8, 0xa8, 0xe8, 0xbc, ++ 0xac, 0x44, 0xf0, 0xfc, 0x10, 0xf8, 0x00, 0x00, ++ 0x00, 0x07, 0x75, 0x55, 0x57, 0x55, 0x55, 0x57, ++ 0x55, 0x75, 0x57, 0x46, 0x05, 0x09, 0x00, 0x00, ++ 0x30, 0x50, 0x48, 0xfc, 0xac, 0xf4, 0xfc, 0x00, ++ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x0f, 0x08, 0x7f, 0x5b, 0x5b, 0x5f, 0x5d, 0x5f, ++ 0x5b, 0x7b, 0x4e, 0x0b, 0x10, 0x27, 0x00, 0x00, ++ 0xf8, 0x08, 0xf8, 0x58, 0x58, 0xf8, 0x28, 0xf8, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xa8, 0xf0, 0x00, 0x00, ++ 0x03, 0x0e, 0x73, 0x5e, 0x53, 0x5c, 0x52, 0x5f, ++ 0x55, 0x76, 0x57, 0x45, 0x06, 0x07, 0x00, 0x00, ++ 0x80, 0x78, 0xa8, 0x28, 0xc8, 0x98, 0xf0, 0xfc, ++ 0x28, 0xd8, 0xf8, 0x28, 0xd8, 0xf8, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x22, 0x22, 0x24, 0x2c, 0x34, ++ 0x24, 0x24, 0x24, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x88, 0x98, 0xa8, 0xc8, 0x88, ++ 0x98, 0x98, 0x78, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x22, 0x2c, 0x37, 0x20, 0x2f, ++ 0x21, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x88, 0x68, 0xd8, 0x08, 0xe8, ++ 0x28, 0x28, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x29, 0x21, 0x2f, 0x21, ++ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x98, 0x78, 0x08, 0xe8, 0x08, ++ 0xe8, 0x28, 0x28, 0xc8, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3f, 0x22, 0x27, 0x26, 0x2b, ++ 0x32, 0x23, 0x22, 0x22, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x68, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x2f, 0x21, 0x2f, 0x22, 0x3f, ++ 0x27, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xc8, 0x48, 0xf8, ++ 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x27, 0x21, 0x2f, 0x24, 0x22, ++ 0x2f, 0x21, 0x27, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xc8, 0x08, 0xe8, 0x48, 0x88, ++ 0xe8, 0x08, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x37, 0x22, 0x3f, 0x24, 0x2f, ++ 0x34, 0x25, 0x24, 0x23, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xd8, 0x88, 0xf8, 0x48, 0xe8, ++ 0x58, 0x88, 0x28, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x2e, 0x2a, ++ 0x2e, 0x23, 0x3c, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xa8, 0xf8, 0x88, 0xa8, 0xa8, ++ 0x58, 0x78, 0xb8, 0x18, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x27, 0x22, 0x2f, 0x27, 0x27, ++ 0x27, 0x24, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xe8, 0xc8, 0xc8, ++ 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x27, 0x24, 0x2f, 0x28, 0x2f, 0x2f, ++ 0x28, 0x2f, 0x26, 0x38, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0x48, 0xe8, 0x28, 0xe8, 0xe8, ++ 0x28, 0xe8, 0x68, 0x18, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x2f, 0x27, 0x25, 0x27, 0x25, ++ 0x27, 0x2f, 0x20, 0x2f, 0x22, 0x3f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0xc8, 0x48, 0xc8, 0x48, ++ 0xe8, 0xe8, 0x48, 0xe8, 0x48, 0xf8, 0x00, 0x00, ++ 0x00, 0x3f, 0x27, 0x24, 0x27, 0x21, 0x3f, 0x2f, ++ 0x2b, 0x2a, 0x2b, 0x2f, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0x48, 0xc8, 0x08, 0xf8, 0xe8, ++ 0xa8, 0xa8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x09, 0x15, 0x25, 0x7f, 0x00, ++ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x50, 0x90, 0xfc, 0x00, ++ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x2f, 0x2a, 0x2f, 0x3f, 0x27, 0x24, ++ 0x27, 0x3e, 0x27, 0x2c, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xc8, 0x48, ++ 0xd8, 0xa8, 0x48, 0x38, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, ++ 0x14, 0x19, 0x61, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0xa0, ++ 0xa0, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, ++ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x60, 0x50, 0x48, ++ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12, ++ 0x16, 0x1a, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x11, 0x7e, 0x12, 0x14, 0x10, ++ 0x14, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x44, 0x48, 0x50, 0xc0, ++ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x11, ++ 0x15, 0x1a, 0x62, 0x04, 0x08, 0x00, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x12, 0x7e, 0x12, 0x12, 0x12, ++ 0x16, 0x1a, 0x62, 0x02, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x11, ++ 0x16, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48, ++ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x17, 0x7d, 0x11, 0x11, 0x11, ++ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x05, 0x3d, 0x05, 0x0d, ++ 0x35, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x48, ++ 0x38, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x08, 0x0b, 0x18, 0x28, 0x49, 0x09, ++ 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x50, 0x48, 0x5c, 0xe0, 0x20, 0x10, 0x14, 0x0c, ++ 0x04, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x12, 0x13, 0x13, ++ 0x16, 0x1a, 0x64, 0x04, 0x09, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x08, ++ 0x90, 0x90, 0x60, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x11, 0x7d, 0x13, 0x15, 0x11, ++ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0x10, 0xfc, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x13, 0x7e, 0x17, 0x12, 0x12, ++ 0x17, 0x1a, 0x62, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0x48, ++ 0xc8, 0x70, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x10, 0x7c, 0x11, 0x10, 0x10, ++ 0x14, 0x18, 0x61, 0x00, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68, ++ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13, ++ 0x16, 0x1a, 0x62, 0x02, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4, ++ 0x44, 0x48, 0x30, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x10, 0x11, 0x12, 0x7c, 0x10, 0x11, 0x13, ++ 0x15, 0x19, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x13, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x10, ++ 0x17, 0x18, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x10, 0x10, ++ 0x17, 0x18, 0x61, 0x01, 0x02, 0x04, 0x00, 0x00, ++ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90, ++ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x10, 0x7c, 0x13, 0x10, 0x13, ++ 0x14, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc, ++ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x12, ++ 0x10, 0x1f, 0x60, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x50, 0x88, 0xfc, 0x84, 0x80, 0xf8, 0x40, ++ 0x40, 0xfc, 0xc0, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x10, 0x11, 0x16, 0x7f, 0x12, 0x12, 0x13, ++ 0x16, 0x1a, 0x63, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x10, 0x7f, 0x12, 0x12, 0x13, ++ 0x16, 0x1a, 0x63, 0x02, 0x02, 0x02, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x11, 0x7d, 0x12, 0x10, 0x10, ++ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x48, 0x44, 0x44, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x11, 0x7c, 0x10, 0x13, 0x10, ++ 0x17, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x44, 0xa4, 0x18, 0x90, 0xe0, 0x90, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x12, 0x02, ++ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x80, ++ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x11, 0x17, 0x11, 0x7c, 0x10, 0x10, 0x11, ++ 0x15, 0x1b, 0x65, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xa0, 0xa0, 0xa4, 0x28, ++ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x11, 0x12, 0x14, ++ 0x10, 0x1f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x13, 0x12, 0x12, ++ 0x13, 0x1e, 0x64, 0x04, 0x08, 0x11, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, ++ 0x14, 0x1b, 0x60, 0x00, 0x0f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x48, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x11, 0x11, 0x7d, 0x11, 0x13, 0x12, ++ 0x16, 0x1a, 0x62, 0x02, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x70, 0x50, 0x50, 0xf8, 0x08, ++ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00, ++ 0x01, 0x11, 0x13, 0x15, 0x7d, 0x11, 0x11, 0x11, ++ 0x17, 0x1a, 0x63, 0x05, 0x09, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xfc, 0x00, 0xf8, 0x48, 0x48, 0xb0, 0x00, 0x00, ++ 0x08, 0x09, 0x11, 0x11, 0x30, 0x57, 0x10, 0x13, ++ 0x14, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x40, 0xfc, 0xe0, 0x58, ++ 0x44, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x13, ++ 0x16, 0x1b, 0x62, 0x05, 0x05, 0x08, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, ++ 0x00, 0xfc, 0xa4, 0x54, 0x54, 0x18, 0x00, 0x00, ++ 0x08, 0x0c, 0x2a, 0x2a, 0x59, 0x14, 0x22, 0x3f, ++ 0x21, 0x5f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x30, 0xa8, 0xa8, 0x60, 0x50, 0x88, 0xfc, ++ 0x08, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x4a, 0x25, 0x21, 0x0f, 0x12, 0x23, ++ 0x21, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x68, 0xfc, 0x68, 0xfc, ++ 0x30, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x36, 0x22, 0x36, 0x22, 0x23, 0x3e, 0x2b, ++ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x73, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x94, 0x14, 0x0c, 0xf8, ++ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x15, 0x7d, 0x15, 0x17, 0x15, ++ 0x15, 0x1d, 0x67, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x10, 0x10, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7f, 0x10, 0x17, 0x10, ++ 0x14, 0x1c, 0x64, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, 0xfc, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, ++ 0x0a, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10, ++ 0x10, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x3e, ++ 0x0c, 0x71, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x28, 0x30, 0x20, ++ 0x60, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x2f, 0x29, 0x2f, 0x79, 0x2f, 0x28, 0x2b, ++ 0x2a, 0x3b, 0x6a, 0x0b, 0x0a, 0x08, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x08, 0xe8, ++ 0x28, 0xe8, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0x17, 0x7c, 0x14, 0x17, 0x14, ++ 0x16, 0x1e, 0x6b, 0x08, 0x1f, 0x00, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xfc, 0xb8, 0xc8, 0x78, 0xa0, ++ 0xa8, 0xa8, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x11, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x13, ++ 0x16, 0x1b, 0x60, 0x0f, 0x01, 0x00, 0x00, 0x00, ++ 0x60, 0x10, 0xfc, 0xa0, 0xf8, 0xb8, 0x38, 0xf8, ++ 0x08, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00, ++ 0x00, 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, ++ 0x17, 0x18, 0x6f, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, ++ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x13, 0x7e, 0x13, 0x10, 0x13, ++ 0x17, 0x18, 0x63, 0x0d, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x58, ++ 0x58, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x10, ++ 0x17, 0x1a, 0x62, 0x02, 0x03, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0xd8, 0x64, 0xfc, 0x00, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x17, 0x11, 0x10, 0x7d, 0x10, 0x17, 0x10, ++ 0x15, 0x1f, 0x61, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x10, 0xfc, 0x50, 0x48, 0xf8, 0x50, 0xfc, 0x50, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x29, 0x3a, 0x25, 0x25, 0x39, ++ 0x21, 0x21, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x20, 0xf8, 0xf8, 0x08, 0xf8, ++ 0xf8, 0x18, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x10, 0x14, 0x65, 0x1a, 0x14, 0x7c, ++ 0x09, 0x11, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90, ++ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x2f, 0x2e, 0x2f, 0x2f, 0x28, 0x2f, ++ 0x2f, 0x49, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x98, 0x94, 0xfc, 0x90, 0xb0, 0xa8, ++ 0xc8, 0x84, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0e, 0x3f, 0x2d, 0x52, 0x2c, 0x1e, 0x73, ++ 0x1e, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x50, 0x20, 0x50, 0x88, ++ 0x04, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x13, 0x10, 0x17, 0x7c, 0x13, 0x10, 0x17, ++ 0x16, 0x1a, 0x67, 0x02, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc, ++ 0xa8, 0x94, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x13, 0x7e, 0x12, 0x13, 0x12, ++ 0x16, 0x1a, 0x62, 0x04, 0x04, 0x0b, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xfc, 0x90, 0xf0, 0xfc, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x3e, 0x2a, ++ 0x3e, 0x2b, 0x3f, 0x1f, 0x01, 0x7f, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xf8, 0xa8, ++ 0xf8, 0xa8, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x13, 0x12, 0x12, 0x7e, 0x12, 0x12, 0x12, ++ 0x17, 0x1a, 0x65, 0x05, 0x08, 0x13, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xf8, 0x20, 0xf8, ++ 0xfc, 0xe8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x11, 0x7f, 0x10, 0x17, 0x14, ++ 0x17, 0x1b, 0x61, 0x07, 0x00, 0x03, 0x00, 0x00, ++ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x48, ++ 0x58, 0x58, 0xf0, 0xfc, 0x90, 0xf8, 0x00, 0x00, ++ 0x00, 0x17, 0x13, 0x12, 0x7f, 0x10, 0x17, 0x13, ++ 0x10, 0x1f, 0x61, 0x0f, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8, ++ 0xa0, 0xfc, 0x48, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x3e, 0x14, 0x7f, 0x3e, 0x22, 0x3e, 0x3e, ++ 0x26, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x80, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0xb8, 0x9c, ++ 0x7c, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x24, 0x24, 0x24, 0x3c, 0x27, 0x04, 0x04, ++ 0x7c, 0x24, 0x24, 0x24, 0x47, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x00, 0x3f, 0x22, 0x5e, ++ 0x10, 0x1e, 0x12, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0xf0, ++ 0x10, 0xf0, 0x90, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x3f, 0x20, 0x5f, ++ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x08, 0xf0, ++ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x17, 0x10, 0x11, 0x7d, 0x12, 0x14, 0x13, ++ 0x16, 0x1b, 0x62, 0x03, 0x02, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x50, 0x70, 0xc0, 0x3c, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x3f, 0x20, 0x5f, 0x02, ++ 0x1e, 0x10, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0xfc, 0x08, 0xf0, 0x80, ++ 0xf0, 0x10, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x00, 0x7f, 0x0f, 0x01, ++ 0x0f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x00, ++ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x07, 0x04, 0x0c, 0x14, 0x22, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x22, 0x22, 0x17, 0x14, 0x08, 0x18, 0x24, ++ 0x02, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x40, 0x40, ++ 0x80, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x03, 0x0c, 0x7f, 0x12, 0x14, 0x0f, 0x08, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x3c, 0x03, 0x7c, 0x00, 0x00, ++ 0xc0, 0x80, 0xf0, 0x90, 0x50, 0xe0, 0x20, 0xe0, ++ 0xe0, 0x20, 0xe0, 0x40, 0x80, 0x78, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x7f, 0x01, 0x03, ++ 0x0c, 0x32, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0xf0, ++ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x01, ++ 0x06, 0x1a, 0x01, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xf0, ++ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x2a, 0x3e, 0x2b, 0x3e, 0x08, 0x7e, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0x9c, ++ 0x24, 0x68, 0x98, 0x10, 0x20, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f, ++ 0x01, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0xfc, ++ 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x01, 0x1f, 0x01, 0x01, 0x01, 0x7f, 0x03, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, ++ 0x80, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x02, 0x04, 0x19, 0x61, ++ 0x01, 0x1f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, ++ 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x04, 0x1f, 0x60, 0x1f, ++ 0x02, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0xf0, 0x0c, 0xf0, ++ 0x00, 0xe0, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x09, 0x09, 0x09, 0x15, 0x15, ++ 0x23, 0x02, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x20, 0x20, 0x50, 0x48, ++ 0x88, 0x80, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x08, 0x04, 0x04, 0x7f, 0x00, ++ 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x20, 0x20, 0x40, 0xfc, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x09, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x50, 0x48, 0x48, 0xc0, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x03, 0x0c, 0x70, 0x1f, 0x12, 0x12, 0x14, ++ 0x11, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xf0, 0x90, 0xb0, 0x70, ++ 0x10, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x05, 0x19, 0x6f, 0x01, ++ 0x1f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0xec, 0x00, ++ 0xf0, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x22, 0x0e, 0x01, 0x03, ++ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x30, 0xe0, 0x10, 0x08, 0x48, 0x40, 0xa0, 0x10, ++ 0xf0, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x24, 0x24, 0x3c, 0x05, 0x7c, 0x24, 0x24, 0x45, ++ 0x01, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x02, 0x7f, 0x09, 0x1f, 0x61, 0x1f, 0x02, ++ 0x0f, 0x74, 0x07, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0xf0, 0x4c, 0xf8, 0x40, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x07, 0x10, 0x2f, 0x42, 0x1f, 0x12, 0x14, 0x1f, ++ 0x10, 0x1f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00, ++ 0xe0, 0x20, 0xf0, 0x8c, 0xf0, 0xb0, 0x70, 0xf0, ++ 0x10, 0xf0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00, ++ 0x02, 0x04, 0x1f, 0x13, 0x15, 0x13, 0x1f, 0x13, ++ 0x15, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x90, 0x50, 0x90, 0xf0, 0x90, ++ 0x50, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24, ++ 0x44, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0x90, ++ 0x30, 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x0c, 0x7f, 0x13, 0x12, ++ 0x13, 0x17, 0x15, 0x17, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x30, 0xfc, 0xe0, 0x20, ++ 0xe0, 0x70, 0x50, 0x70, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x3e, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0x88, 0x48, ++ 0x48, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c, ++ 0x15, 0x15, 0x14, 0x24, 0x25, 0x46, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, ++ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x10, 0x17, 0x30, 0x50, 0x17, ++ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x80, 0x80, 0xfc, ++ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x12, 0x12, 0x31, 0x50, 0x17, ++ 0x11, 0x11, 0x13, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xf8, 0x80, 0xfc, ++ 0x10, 0x10, 0xe0, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x24, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0a, 0x13, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x3e, 0x24, 0x06, 0x0b, 0x11, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0xa8, 0xfc, 0x88, ++ 0xc8, 0xa8, 0xa8, 0xfc, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3d, 0x24, 0x06, 0x08, 0x11, 0x26, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0xa0, ++ 0xfc, 0x24, 0x78, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x02, ++ 0x7f, 0x04, 0x0f, 0x11, 0x06, 0x38, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, ++ 0xfc, 0x40, 0x40, 0xc0, 0x20, 0x10, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x12, 0x13, 0x12, ++ 0x3c, 0x24, 0x06, 0x0b, 0x11, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x11, 0x7d, 0x27, 0x25, 0x25, ++ 0x79, 0x49, 0x0d, 0x15, 0x21, 0x41, 0x00, 0x00, ++ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, ++ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x12, 0x11, 0x7d, 0x24, 0x24, 0x25, ++ 0x7a, 0x48, 0x0d, 0x15, 0x22, 0x44, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xa0, 0xb0, 0xa8, ++ 0xa8, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x10, 0x7c, 0x27, 0x24, 0x24, ++ 0x78, 0x4b, 0x0c, 0x14, 0x20, 0x41, 0x00, 0x00, ++ 0x60, 0xa8, 0xa4, 0xa4, 0xa0, 0xfc, 0xa8, 0xa8, ++ 0xd8, 0x90, 0x94, 0xac, 0xcc, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x24, 0x25, 0x25, ++ 0x75, 0x49, 0x0d, 0x15, 0x25, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x49, 0x29, 0x22, 0x0c, 0x10, 0x20, 0x27, ++ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x54, 0xd4, 0x60, 0xc0, 0x00, ++ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2f, ++ 0x2a, 0x72, 0x12, 0x1c, 0x27, 0x48, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0xa4, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x13, ++ 0x3c, 0x04, 0x06, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3c, 0x05, 0x06, 0x0a, 0x10, 0x23, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x20, 0xfc, 0x24, 0x44, 0x84, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x15, 0x7e, 0x2e, 0x2d, 0x2d, ++ 0x75, 0x55, 0x1f, 0x2c, 0x24, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x25, 0x24, ++ 0x78, 0x08, 0x0c, 0x10, 0x27, 0x40, 0x00, 0x00, ++ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x18, 0xe0, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x11, 0x7e, 0x24, 0x24, 0x25, ++ 0x6b, 0x18, 0x0c, 0x14, 0x21, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x04, 0x88, 0xb8, 0xe8, 0x68, ++ 0x68, 0xf0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b, ++ 0x6a, 0x12, 0x13, 0x1c, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, 0x7f, ++ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, ++ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x7e, 0x12, 0x12, 0x12, ++ 0x3a, 0x24, 0x07, 0x0a, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08, ++ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, ++ 0x00, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x2a, 0x2a, 0x2a, ++ 0x6a, 0x12, 0x1a, 0x14, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x24, ++ 0x6b, 0x1a, 0x0e, 0x12, 0x2f, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x08, 0x7e, 0x13, 0x12, 0x12, ++ 0x3c, 0x24, 0x06, 0x0b, 0x10, 0x20, 0x00, 0x00, ++ 0x50, 0xfc, 0x50, 0xf8, 0x50, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xfc, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x10, 0x7f, 0x2a, 0x2a, 0x2b, ++ 0x29, 0x72, 0x11, 0x1a, 0x20, 0x43, 0x00, 0x00, ++ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8, ++ 0x98, 0xa8, 0x98, 0xa8, 0x88, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x7b, 0x2a, 0x2a, 0x2b, ++ 0x28, 0x73, 0x11, 0x18, 0x20, 0x47, 0x00, 0x00, ++ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x10, 0xa0, 0xe0, 0x1c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x25, ++ 0x75, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x20, 0xf8, 0x20, ++ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x10, 0x7c, 0x27, 0x24, 0x24, ++ 0x78, 0x08, 0x0d, 0x16, 0x22, 0x44, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xb8, 0xa0, 0xfc, 0x80, 0xf8, ++ 0x80, 0xfc, 0x54, 0xac, 0xac, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x7a, 0x2a, 0x2a, 0x2b, ++ 0x2b, 0x73, 0x13, 0x1a, 0x23, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x13, 0x7a, 0x2d, 0x29, 0x29, ++ 0x28, 0x73, 0x1a, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, ++ 0x40, 0xf8, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x17, 0x79, 0x2f, 0x2d, 0x2d, ++ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xd0, 0x3c, 0xe8, 0x68, 0x68, ++ 0xd8, 0x98, 0x50, 0x58, 0x28, 0x44, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x13, 0x7a, 0x2a, 0x2b, 0x28, ++ 0x29, 0x70, 0x17, 0x19, 0x22, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x00, ++ 0xf0, 0x00, 0xfc, 0x50, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a, ++ 0x2a, 0x72, 0x12, 0x1a, 0x22, 0x43, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0xe8, ++ 0xa8, 0xe8, 0xa8, 0xe8, 0xa8, 0x78, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x13, 0x7a, 0x2b, 0x2a, 0x2a, ++ 0x2b, 0x72, 0x12, 0x1b, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0x48, ++ 0xf8, 0xe8, 0xd8, 0x58, 0x48, 0x58, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x13, 0x7c, 0x25, 0x26, 0x24, ++ 0x7b, 0x0a, 0x0e, 0x12, 0x22, 0x42, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xf8, 0xa0, 0xf0, 0xa8, 0xe4, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x98, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x13, 0x7c, 0x2b, 0x2a, 0x2b, ++ 0x2a, 0x73, 0x18, 0x17, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x21, 0x3e, 0x32, 0x5e, ++ 0x02, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0x50, 0xfc, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x01, 0x7d, 0x55, 0x55, 0x7f, 0x56, 0x7e, 0x12, ++ 0x7f, 0x15, 0x15, 0x26, 0x26, 0x4c, 0x00, 0x00, ++ 0x00, 0x7c, 0x54, 0x54, 0xfc, 0xd4, 0xfc, 0x90, ++ 0xfc, 0x14, 0x94, 0xa4, 0x24, 0x4c, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x15, 0x7f, 0x2d, 0x2f, 0x29, ++ 0x2f, 0x71, 0x12, 0x1a, 0x24, 0x48, 0x00, 0x00, ++ 0x08, 0xc8, 0x48, 0x48, 0xfc, 0x54, 0xd4, 0x14, ++ 0xd4, 0x78, 0x48, 0x48, 0x54, 0xe4, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x13, 0x7d, 0x26, 0x24, 0x27, ++ 0x24, 0x78, 0x08, 0x14, 0x20, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x11, 0x7d, 0x25, 0x25, 0x27, ++ 0x7a, 0x0b, 0x0f, 0x17, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0xf8, ++ 0x48, 0xf8, 0xf8, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x11, 0x7f, 0x2d, 0x2d, 0x2f, ++ 0x2b, 0x73, 0x15, 0x19, 0x29, 0x41, 0x00, 0x00, ++ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc, ++ 0x24, 0xbc, 0x64, 0x3c, 0x18, 0x64, 0x00, 0x00, ++ 0x10, 0x17, 0x13, 0x12, 0x7b, 0x28, 0x2b, 0x29, ++ 0x28, 0x77, 0x11, 0x1f, 0x29, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0, ++ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x12, 0x12, 0x13, 0x15, 0x78, 0x2f, 0x2a, 0x2e, ++ 0x2a, 0x76, 0x12, 0x1e, 0x23, 0x4e, 0x00, 0x00, ++ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8, ++ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x13, 0x7b, 0x2d, 0x29, 0x29, ++ 0x2f, 0x73, 0x13, 0x1d, 0x29, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x78, 0x48, ++ 0xf8, 0x48, 0xf8, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, ++ 0x0f, 0x71, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0x80, 0x00, 0x30, 0xc0, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x08, 0x1f, 0x20, ++ 0x40, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0xe8, 0x70, ++ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x1e, 0x11, 0x11, 0x2f, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xe0, 0x40, 0x80, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x3f, 0x20, 0x4f, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x08, 0xe0, 0x40, ++ 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x6f, ++ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0, ++ 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7c, 0x07, 0x08, 0x0a, 0x11, 0x10, 0x14, ++ 0x18, 0x70, 0x11, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, 0x68, ++ 0x48, 0x90, 0x30, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x00, 0x3f, 0x22, 0x3f, 0x00, ++ 0x3e, 0x04, 0x0e, 0x78, 0x09, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf0, 0x50, 0x50, 0xd0, ++ 0x50, 0x70, 0xb4, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x04, 0x7f, 0x0a, 0x34, 0x0a, 0x3f, 0x01, ++ 0x1f, 0x00, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x28, 0xd0, 0x28, 0xfc, 0x04, ++ 0xf0, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x37, 0x2d, 0x2d, 0x3f, 0x3f, 0x2d, ++ 0x2d, 0x2d, 0x7d, 0x16, 0x14, 0x24, 0x00, 0x00, ++ 0x04, 0x78, 0x58, 0x54, 0x94, 0x00, 0x7c, 0x08, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x1a, 0x11, 0x1e, 0x12, 0x1d, 0x12, 0x3f, ++ 0x20, 0x4f, 0x00, 0x3f, 0x01, 0x03, 0x00, 0x00, ++ 0x80, 0xf0, 0x10, 0xf0, 0x90, 0x70, 0x90, 0xfc, ++ 0x08, 0xe0, 0xc0, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x02, 0x03, 0x0c, 0x77, ++ 0x00, 0x01, 0x7f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x80, 0x60, 0xdc, ++ 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x04, 0x0b, 0x0b, 0x15, 0x10, 0x1f, ++ 0x70, 0x13, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x50, 0x40, 0xfc, ++ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x01, 0x01, 0x3f, 0x20, 0x20, ++ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x08, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x22, 0x42, 0x02, 0x02, ++ 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x04, 0x08, 0x00, 0x10, 0x60, ++ 0x80, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x3f, 0x51, 0x1f, 0x10, ++ 0x10, 0x1f, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x04, 0xf8, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5f, 0x10, 0x17, 0x10, 0x1f, ++ 0x12, 0x12, 0x12, 0x22, 0x23, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x80, 0x48, 0x50, 0x20, 0x90, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x47, 0x18, 0x7f, 0x11, 0x11, ++ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xc0, 0x80, 0xf0, 0x10, 0x10, ++ 0xf0, 0x90, 0xa0, 0x94, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x20, 0x3e, 0x40, 0x7f, 0x14, ++ 0x14, 0x14, 0x14, 0x25, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x44, 0x78, 0x40, 0xf8, 0x88, ++ 0x50, 0x30, 0x70, 0x88, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x44, 0x08, 0x0f, 0x18, ++ 0x2f, 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0x40, 0x80, 0xf8, 0x80, ++ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x00, 0x7f, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x64, 0x25, 0x3c, 0x27, ++ 0x04, 0x7c, 0x15, 0x16, 0x24, 0x44, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x40, 0xf8, 0x40, 0xfc, ++ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x65, 0x24, 0x3d, 0x24, ++ 0x07, 0x7c, 0x15, 0x15, 0x25, 0x45, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x08, 0xf8, 0x40, 0xf0, 0x90, ++ 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x3f, 0x27, 0x45, 0x7f, 0x09, 0x0f, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xe8, 0x20, 0xfc, 0x40, 0xc0, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x25, 0x64, 0x27, 0x3c, 0x25, 0x07, ++ 0x7e, 0x15, 0x14, 0x14, 0x24, 0x47, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x10, 0xfc, 0x10, 0xf0, 0xfc, ++ 0x08, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x5f, 0x04, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x01, 0x7f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf0, 0x40, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x00, 0xfc, 0xc0, 0x38, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5e, 0x0a, 0x16, 0x0b, 0x12, ++ 0x0c, 0x77, 0x01, 0x06, 0x01, 0x0e, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x50, 0xb0, 0x50, 0x80, ++ 0xe0, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x5c, 0x10, 0x1e, 0x10, 0x1f, ++ 0x08, 0x1f, 0x65, 0x12, 0x12, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x00, 0xf8, 0x48, 0xa8, 0xa8, 0x30, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x5f, 0x12, 0x1f, 0x7f, 0x0f, ++ 0x08, 0x0f, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0xfc, 0xe0, ++ 0x20, 0xe0, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x3e, 0x49, 0x3f, 0x0e, 0x38, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x20, 0xfc, 0xa8, 0xf8, 0xe0, ++ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00, ++ 0x01, 0x3f, 0x3e, 0x48, 0x3f, 0x0e, 0x39, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x08, 0x0f, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0xf8, 0xb0, 0xa8, 0x68, 0xe0, ++ 0x20, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x22, 0x22, 0x3e, ++ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x34, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x24, 0x24, 0x24, 0x3d, 0x26, 0x04, 0x7c, ++ 0x17, 0x15, 0x14, 0x24, 0x44, 0x04, 0x00, 0x00, ++ 0x40, 0x78, 0x88, 0xd0, 0x30, 0xa0, 0xd0, 0x90, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x01, 0x3f, 0x00, 0x7f, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf8, 0x48, 0xfc, 0x40, 0xc0, 0x00, 0x00, ++ 0x0a, 0x4a, 0x2a, 0x2b, 0x7f, 0x11, 0x0a, 0x3f, ++ 0x04, 0x3f, 0x04, 0x04, 0x07, 0x78, 0x00, 0x00, ++ 0x08, 0x88, 0x88, 0x08, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x1f, 0x11, 0x21, 0x49, 0x09, ++ 0x11, 0x11, 0x21, 0x41, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x20, 0x10, ++ 0x10, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x12, 0x12, 0x3f, 0x12, 0x1e, 0x12, 0x1e, 0x13, ++ 0x7f, 0x2c, 0x2d, 0x33, 0x20, 0x1f, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c, ++ 0x68, 0x30, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, 0x02, 0x02, ++ 0x02, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x14, 0x12, 0x12, 0x7e, 0x15, 0x14, 0x14, ++ 0x14, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0x50, 0x90, 0x20, 0x28, 0x48, ++ 0x90, 0x10, 0x20, 0x44, 0x84, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x1f, ++ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x14, 0x14, 0x14, ++ 0x17, 0x14, 0x14, 0x24, 0x27, 0x5c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x44, ++ 0xc8, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x14, 0x17, ++ 0x14, 0x14, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x80, 0x88, 0xf8, ++ 0x88, 0x88, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x14, 0x12, 0x12, ++ 0x1f, 0x11, 0x12, 0x24, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0x90, 0x90, 0xa0, ++ 0xfc, 0xc0, 0xa0, 0x90, 0x8c, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x14, 0x27, 0x23, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x12, 0x15, 0x1a, ++ 0x13, 0x14, 0x1c, 0x24, 0x24, 0x47, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x12, 0x11, 0x17, 0x11, ++ 0x11, 0x1f, 0x11, 0x22, 0x24, 0x48, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x10, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x10, 0x1f, 0x10, ++ 0x17, 0x11, 0x13, 0x3e, 0x22, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x40, 0xf8, 0x80, ++ 0xfc, 0x08, 0x10, 0xfc, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x16, 0x16, 0x17, 0x15, ++ 0x17, 0x17, 0x1d, 0x27, 0x21, 0x4f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0xb0, 0xb0, 0xf0, 0x50, ++ 0xf0, 0xf8, 0x48, 0xc8, 0x68, 0xf0, 0x00, 0x00, ++ 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, 0x3f, ++ 0x21, 0x22, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x7f, ++ 0x02, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x55, 0x55, 0x56, 0x55, 0x54, ++ 0x54, 0x54, 0x7c, 0x45, 0x41, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf0, 0x20, ++ 0x40, 0x80, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x04, 0x04, 0x07, ++ 0x04, 0x0a, 0x09, 0x10, 0x23, 0x4c, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xc0, 0x40, 0x40, 0xf0, ++ 0x10, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x18, ++ 0x67, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0x30, ++ 0xcc, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x07, 0x04, 0x18, 0x6f, 0x02, 0x02, 0x0c, 0x30, ++ 0x01, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0xc0, 0x40, 0x30, 0xec, 0x20, 0x20, 0x20, 0xc0, ++ 0x00, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x02, 0x3f, ++ 0x04, 0x04, 0x0f, 0x08, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf8, ++ 0x40, 0x40, 0x80, 0xe0, 0x10, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x54, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x10, 0x50, 0x94, 0x0c, 0xec, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x55, 0x55, 0x56, 0x54, 0x57, ++ 0x54, 0x54, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc, ++ 0x20, 0x20, 0x10, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x54, 0x57, 0x54, 0x54, 0x54, ++ 0x57, 0x7c, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x90, 0x98, 0xe4, 0x90, 0x90, 0x90, ++ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x54, 0x54, 0x54, 0x54, 0x55, ++ 0x55, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x21, 0x02, 0x04, 0x1f, ++ 0x60, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x40, 0xf0, ++ 0x0c, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x54, 0x54, 0x57, 0x54, 0x54, ++ 0x57, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x20, 0x06, 0x38, 0x08, 0x7f, ++ 0x08, 0x0e, 0x78, 0x08, 0x09, 0x18, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x08, 0x50, 0x48, 0x40, 0xfc, ++ 0x48, 0x48, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x55, 0x55, 0x55, 0x56, 0x56, ++ 0x54, 0x54, 0x7c, 0x45, 0x42, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8, 0x44, ++ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x57, 0x55, 0x7c, 0x44, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x40, 0x80, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x56, 0x54, 0x55, 0x55, 0x55, ++ 0x55, 0x7d, 0x45, 0x41, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x01, 0x0f, 0x08, 0x0f, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xe0, 0x20, 0xe0, 0xe0, ++ 0x00, 0xfc, 0xf8, 0x88, 0x48, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x56, 0x54, 0x54, 0x54, 0x55, ++ 0x57, 0x55, 0x7d, 0x45, 0x41, 0x01, 0x00, 0x00, ++ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0xa0, 0x10, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x09, 0x7f, 0x09, ++ 0x09, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x46, 0x43, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x00, 0x3f, 0x24, 0x22, 0x3f, ++ 0x21, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x48, 0x88, 0xf8, ++ 0x08, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x01, 0x3f, 0x08, 0x04, 0x7f, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x20, 0x40, 0xfc, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x61, ++ 0x1f, 0x09, 0x05, 0x05, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c, ++ 0xf0, 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x7e, 0x47, 0x45, 0x09, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0x04, 0xfc, 0x20, 0xa8, 0xa8, ++ 0xf8, 0x20, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x20, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1e, 0x10, 0x1c, 0x70, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x08, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x04, 0x0f, 0x08, ++ 0x1f, 0x28, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x80, 0xf8, 0x80, ++ 0xf0, 0x80, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x56, 0x55, 0x54, 0x57, ++ 0x54, 0x55, 0x7c, 0x44, 0x40, 0x00, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x57, 0x54, 0x54, 0x55, 0x56, ++ 0x54, 0x55, 0x7e, 0x44, 0x41, 0x0e, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0xa4, 0x5c, 0x40, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x22, 0x04, 0x1f, 0x60, ++ 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x88, 0x40, 0xf0, 0x0c, ++ 0xf0, 0x90, 0xf0, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x55, 0x57, 0x54, 0x57, 0x56, ++ 0x56, 0x57, 0x7e, 0x46, 0x42, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x01, 0x21, 0x21, 0x3f, 0x24, 0x24, 0x7f, 0x24, ++ 0x25, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x00, 0x08, 0x08, 0xf8, 0x48, 0x40, 0x7c, 0xa8, ++ 0x30, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3e, 0x22, 0x3e, ++ 0x22, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8, 0x88, 0xf8, ++ 0x88, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x54, ++ 0x57, 0x56, 0x7e, 0x47, 0x42, 0x02, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x40, ++ 0xf8, 0x68, 0x58, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7d, 0x46, 0x42, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0x28, 0xf8, 0x00, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x02, 0x1f, 0x11, 0x1f, 0x11, ++ 0x1f, 0x12, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0xb0, 0xa8, 0xfc, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x04, 0x7f, 0x01, 0x1f, 0x01, ++ 0x7f, 0x08, 0x0f, 0x11, 0x3f, 0x40, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x40, 0xfc, 0x00, 0xf0, 0x00, ++ 0xfc, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x54, 0x57, 0x56, 0x56, 0x57, ++ 0x55, 0x56, 0x7d, 0x46, 0x40, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x40, 0x40, 0xf8, ++ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x56, 0x56, 0x56, 0x56, 0x57, ++ 0x57, 0x57, 0x7f, 0x46, 0x43, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x08, 0x7f, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x2a, 0x3e, 0x09, 0x7f, 0x0a, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x08, 0x30, 0xc0, 0x80, 0xfc, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x57, 0x54, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7c, 0x47, 0x40, 0x00, 0x00, 0x00, ++ 0x40, 0xf8, 0x20, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x57, 0x55, 0x57, 0x55, 0x55, ++ 0x56, 0x7f, 0x44, 0x40, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x54, 0x55, 0x56, 0x55, 0x55, ++ 0x55, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00, 0x00, ++ 0xe0, 0x68, 0x50, 0x94, 0xf8, 0x08, 0xf4, 0x10, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x10, 0x13, 0x54, 0x55, 0x54, 0x57, 0x54, ++ 0x57, 0x57, 0x7d, 0x47, 0x41, 0x03, 0x00, 0x00, ++ 0x08, 0x90, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, ++ 0x24, 0xfc, 0xa8, 0x14, 0x2c, 0xc4, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x54, 0x55, 0x57, 0x54, 0x57, ++ 0x56, 0x7f, 0x45, 0x41, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xb8, ++ 0xa8, 0xb8, 0x10, 0x90, 0xa8, 0x44, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x08, 0x2b, 0x17, 0x18, 0x2b, ++ 0x4b, 0x18, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x18, 0x94, 0xd4, 0x7c, 0x90, ++ 0x90, 0x10, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x00, 0x3c, 0x27, 0x28, 0x33, ++ 0x29, 0x25, 0x25, 0x3b, 0x20, 0x27, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x40, 0xf8, 0x90, 0x60, 0x9c, ++ 0xf0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x24, 0x38, 0x22, 0x1e, 0x21, ++ 0x3e, 0x48, 0x7e, 0x08, 0x15, 0x62, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x00, 0xf8, 0x50, 0x20, 0xfc, ++ 0x28, 0xa0, 0xb8, 0xa0, 0x60, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x7f, 0x44, 0x41, 0x02, 0x00, 0x00, ++ 0x40, 0xd8, 0x68, 0x48, 0xf8, 0x28, 0x68, 0xf8, ++ 0x68, 0x68, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x54, 0x55, 0x55, 0x55, 0x57, ++ 0x54, 0x57, 0x7d, 0x45, 0x40, 0x03, 0x00, 0x00, ++ 0x70, 0xa0, 0xf8, 0x88, 0xf8, 0xb0, 0xe4, 0x5c, ++ 0xe0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00, ++ 0x01, 0x21, 0x3f, 0x0c, 0x39, 0x7f, 0x1d, 0x2b, ++ 0x49, 0x7e, 0x14, 0x3c, 0x0d, 0x32, 0x00, 0x00, ++ 0x00, 0x08, 0xf8, 0x40, 0xf0, 0x50, 0xf0, 0x50, ++ 0xf0, 0xd0, 0xe8, 0xfc, 0x44, 0x3c, 0x00, 0x00, ++ 0x21, 0x3f, 0x24, 0x3b, 0x1e, 0x5e, 0x52, 0x5e, ++ 0x5e, 0x52, 0x5e, 0x3e, 0x14, 0x63, 0x00, 0x00, ++ 0x08, 0xf8, 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00, ++ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56, ++ 0x13, 0x01, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4, ++ 0x90, 0x00, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x21, 0x3f, 0x1e, 0x12, 0x1e, 0x3f, 0x2f, 0x24, ++ 0x3f, 0x29, 0x2f, 0x2f, 0x3f, 0x41, 0x00, 0x00, ++ 0x08, 0xf8, 0xf0, 0x90, 0xf0, 0xfc, 0x20, 0x20, ++ 0xfc, 0x48, 0xb0, 0x90, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x11, 0x11, 0x22, 0x44, ++ 0x22, 0x11, 0x11, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x88, 0x10, 0x10, 0x20, 0x40, ++ 0x20, 0x10, 0x10, 0x88, 0x88, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x09, 0x09, 0x0d, ++ 0x13, 0x13, 0x21, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x20, 0x20, 0x20, 0x20, 0x60, ++ 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x1f, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, ++ 0x00, 0x00, 0x04, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x14, ++ 0x17, 0x14, 0x14, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x90, ++ 0xf0, 0x10, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x10, 0x1e, 0x71, 0x01, ++ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0x80, 0x64, 0x1c, 0x04, ++ 0xf0, 0x10, 0x10, 0x10, 0xe0, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x00, 0x7f, 0x00, 0x0f, 0x00, 0x3f, ++ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xfc, 0x20, 0xe0, 0x00, 0xfc, ++ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x56, 0x54, 0x57, ++ 0x54, 0x58, 0x50, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, ++ 0x7f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, ++ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, ++ 0x0a, 0x0a, 0x7f, 0x0a, 0x0b, 0x10, 0x3f, 0x21, ++ 0x5f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x08, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x55, 0x57, 0x55, 0x55, ++ 0x55, 0x55, 0x59, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x90, 0x90, 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x59, 0x12, 0x13, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xfc, 0x50, 0x58, ++ 0xe8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x55, ++ 0x54, 0x55, 0x59, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x55, 0x59, 0x10, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x55, 0x55, 0x55, 0x55, ++ 0x54, 0x57, 0x58, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x57, 0x56, 0x57, 0x57, ++ 0x57, 0x56, 0x5b, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0x58, 0xf8, 0x48, 0xd8, 0x58, ++ 0xe8, 0x78, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x56, ++ 0x57, 0x55, 0x58, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0xa8, ++ 0xf8, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7d, 0x55, 0x57, 0x54, 0x57, ++ 0x56, 0x57, 0x5a, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0xa0, 0xb0, 0xe8, 0x68, 0xa0, 0xfc, 0x20, 0xe8, ++ 0x68, 0xd8, 0x50, 0xd4, 0x2c, 0x44, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x55, 0x55, 0x55, 0x55, ++ 0x55, 0x54, 0x5b, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x50, 0xf0, 0x50, ++ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x2a, 0x49, 0x7f, 0x5d, 0x55, 0x5d, 0x41, ++ 0x3f, 0x21, 0x21, 0x21, 0x21, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x88, 0x50, 0x30, 0xcc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, ++ 0x08, 0x3e, 0x09, 0x7e, 0x08, 0x3e, 0x0f, 0x71, ++ 0x1f, 0x11, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x7f, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x04, 0x04, 0x04, 0x7f, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x01, 0x01, 0x1a, 0x06, 0x01, 0x00, ++ 0x00, 0x01, 0x02, 0x04, 0x3f, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0x00, 0x10, 0x10, 0x20, 0x20, 0xc0, ++ 0x80, 0x20, 0x10, 0x78, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x12, ++ 0x11, 0x17, 0x10, 0x21, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xfc, 0x68, 0xec, 0xec, 0xa0, ++ 0x10, 0x20, 0xd0, 0x08, 0xfc, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x11, 0x1f, 0x10, 0x17, ++ 0x10, 0x10, 0x1f, 0x20, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0x40, 0xf8, 0x80, 0xf0, ++ 0x80, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x13, 0x22, 0x24, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x12, 0x1f, 0x12, 0x13, ++ 0x16, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x78, 0xc8, 0x48, 0x78, ++ 0xc8, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x13, 0x13, 0x13, ++ 0x12, 0x13, 0x11, 0x27, 0x20, 0x4f, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0xf0, ++ 0x10, 0xf0, 0xf0, 0x20, 0xe0, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15, ++ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x78, 0x50, 0x50, 0x7c, ++ 0x50, 0x10, 0x30, 0x34, 0xd4, 0x8c, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x12, 0x17, 0x15, 0x17, 0x15, ++ 0x17, 0x14, 0x15, 0x26, 0x24, 0x43, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x70, 0x50, 0x54, 0x8c, ++ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x8c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x11, 0x16, 0x11, 0x16, ++ 0x13, 0x1c, 0x13, 0x21, 0x20, 0x47, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0x98, 0xe8, 0x98, 0xe8, ++ 0x70, 0xdc, 0x60, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x13, 0x1f, 0x10, 0x17, ++ 0x14, 0x17, 0x24, 0x27, 0x43, 0x0c, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xf8, 0xe0, 0xfc, 0x80, 0xf0, ++ 0x90, 0xf0, 0x90, 0xf0, 0x30, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x15, 0x15, 0x1f, 0x15, 0x17, 0x15, ++ 0x17, 0x15, 0x3f, 0x25, 0x44, 0x08, 0x00, 0x00, ++ 0x80, 0xfc, 0x08, 0x70, 0xc0, 0x40, 0x7c, 0x50, ++ 0x50, 0x50, 0xd0, 0x50, 0x90, 0x90, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x17, 0x10, 0x17, ++ 0x14, 0x17, 0x14, 0x23, 0x23, 0x4c, 0x00, 0x00, ++ 0x80, 0xfc, 0x08, 0xc8, 0x08, 0xfc, 0x08, 0xc8, ++ 0xa8, 0xa8, 0x88, 0x08, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x14, 0x17, 0x14, 0x17, 0x17, ++ 0x1f, 0x12, 0x14, 0x3b, 0x20, 0x5f, 0x00, 0x00, ++ 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xf0, ++ 0xfc, 0x28, 0xb8, 0xe0, 0x80, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x19, 0x16, 0x17, 0x19, ++ 0x17, 0x14, 0x1f, 0x21, 0x21, 0x46, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xd4, 0x24, 0x18, 0x7c, 0x50, ++ 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x13, 0x16, 0x1a, 0x1f, ++ 0x12, 0x12, 0x17, 0x25, 0x24, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, ++ 0xa8, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x29, 0x32, 0x2f, 0x2a, ++ 0x2f, 0x2a, 0x2f, 0x28, 0x28, 0x51, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0x78, 0x28, 0x28, 0xd8, 0xb0, ++ 0xb0, 0xfc, 0xd0, 0xfc, 0x90, 0x90, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x17, 0x15, 0x15, 0x15, ++ 0x17, 0x10, 0x13, 0x3f, 0x26, 0x58, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf8, 0xf0, 0xd0, 0x50, 0xd0, ++ 0xf0, 0xe0, 0x80, 0xfc, 0xb0, 0x8c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x14, 0x17, 0x15, 0x15, ++ 0x15, 0x15, 0x25, 0x2b, 0x4a, 0x17, 0x00, 0x00, ++ 0x80, 0xfc, 0xf0, 0xfc, 0xe8, 0x78, 0xf0, 0x50, ++ 0xf0, 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x35, 0x2a, 0x2f, 0x29, 0x2f, ++ 0x20, 0x2f, 0x2a, 0x2f, 0x28, 0x47, 0x00, 0x00, ++ 0x80, 0xfc, 0xa8, 0x28, 0xbc, 0x68, 0x68, 0xbc, ++ 0x28, 0xbc, 0xa8, 0xa8, 0x7c, 0xe0, 0x00, 0x00, ++ 0x00, 0x3f, 0x3f, 0x29, 0x2f, 0x29, 0x2f, 0x29, ++ 0x3f, 0x3f, 0x25, 0x2f, 0x25, 0x4f, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0xb4, 0xfc, ++ 0x00, 0xfc, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x3f, 0x2a, 0x2b, 0x2f, 0x2b, ++ 0x2e, 0x2a, 0x2f, 0x3a, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0x54, 0xfc, ++ 0x20, 0x58, 0xd4, 0xc4, 0x48, 0x38, 0x00, 0x00, ++ 0x00, 0x3c, 0x04, 0x08, 0x08, 0x10, 0x3c, 0x04, ++ 0x24, 0x28, 0x18, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x78, 0x08, 0x10, 0x13, 0x22, 0x7a, 0x0b, ++ 0x4a, 0x32, 0x13, 0x2a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x04, 0x7f, 0x04, 0x04, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x02, 0x02, 0x04, 0x3f, 0x04, ++ 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x20, 0x10, 0xf8, 0x48, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x24, 0x24, 0x3c, 0x07, 0x7c, 0x24, 0x25, 0x44, ++ 0x04, 0x7f, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7e, 0x1d, ++ 0x2a, 0x49, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xfc, 0x28, 0xd0, 0x28, 0xfc, ++ 0xa8, 0x24, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x03, 0x07, 0x7f, 0x2a, 0x1c, 0x7f, 0x1c, ++ 0x2a, 0x48, 0x04, 0x7f, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xfc, 0x50, 0x88, 0xfc, 0x48, ++ 0x48, 0x98, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x00, 0x07, 0x78, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x10, 0x10, 0x0c, 0xf0, 0x80, 0x80, 0x40, ++ 0x40, 0x20, 0x24, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x34, 0x0d, 0x1a, 0x6a, 0x09, 0x7e, ++ 0x18, 0x1c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x18, 0x14, 0x14, 0xfc, 0x10, 0x10, 0xf0, 0x50, ++ 0x50, 0x54, 0x4c, 0x6c, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x1f, ++ 0x10, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8, ++ 0x08, 0x08, 0x10, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x12, 0x3a, 0x06, 0x19, 0x6f, ++ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xe0, ++ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x09, 0x79, 0x49, 0x41, 0x41, ++ 0x79, 0x49, 0x09, 0x0f, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x7b, 0x0a, 0x0a, 0x7a, 0x4b, 0x42, 0x7a, ++ 0x4a, 0x0b, 0x0a, 0x0c, 0x14, 0x69, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8, ++ 0xa8, 0xb8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x0b, 0x7a, 0x4b, 0x40, 0x7f, ++ 0x48, 0x0b, 0x0a, 0x0b, 0x0a, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0xfc, ++ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x7b, 0x0a, 0x0b, 0x78, 0x4b, 0x42, 0x7b, ++ 0x4a, 0x0b, 0x08, 0x0f, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x0e, 0x7b, 0x4a, 0x43, 0x7a, ++ 0x4b, 0x0a, 0x0b, 0x0a, 0x0b, 0x32, 0x00, 0x00, ++ 0x00, 0xfc, 0x58, 0x44, 0xf8, 0xd8, 0xf8, 0xd8, ++ 0x68, 0xd8, 0xf8, 0xd8, 0x68, 0x58, 0x00, 0x00, ++ 0x13, 0x6f, 0x2b, 0x17, 0x7f, 0x3a, 0x57, 0x1f, ++ 0x00, 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00, ++ 0x90, 0xe8, 0xa8, 0x94, 0xfc, 0xb8, 0xd4, 0xe0, ++ 0x20, 0xe0, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x12, 0x12, 0x24, 0x4f, 0x00, ++ 0x0f, 0x08, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x50, 0x48, 0xc4, 0xe4, 0x20, ++ 0xe0, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x07, 0x04, 0x04, 0x04, 0x04, ++ 0x0f, 0x08, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xe0, 0x20, 0x20, 0x20, 0x20, ++ 0xe0, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x03, 0x04, 0x0f, 0x00, 0x7f, 0x01, 0x07, ++ 0x79, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0x80, 0xfc, 0x00, 0x48, ++ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x08, 0x3e, 0x08, 0x0e, 0x78, ++ 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20, ++ 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x07, 0x0f, 0x7f, 0x00, 0x3f, 0x2f, 0x49, ++ 0x0f, 0x09, 0x0f, 0x7f, 0x0d, 0x31, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xfc, 0x00, 0xfc, 0xe8, 0x20, ++ 0xe0, 0x20, 0xe0, 0xfc, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x01, ++ 0x02, 0x04, 0x00, 0x00, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x90, 0x10, ++ 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22, ++ 0x3e, 0x22, 0x12, 0x14, 0x1e, 0x70, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x14, 0x24, ++ 0x48, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x00, 0x01, ++ 0x03, 0x05, 0x09, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x80, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x17, 0x24, 0x08, 0x08, 0x18, ++ 0x28, 0x48, 0x08, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x12, 0x22, 0x2a, 0x4b, 0x14, 0x14, 0x38, ++ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x13, 0x14, 0x24, 0x4b, 0x0a, 0x1a, ++ 0x2b, 0x4a, 0x08, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0, ++ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x22, 0x4a, 0x0a, 0x12, 0x12, 0x32, ++ 0x52, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x11, 0x15, 0x25, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4, ++ 0x44, 0x48, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x22, 0x4a, 0x0c, 0x12, 0x12, 0x30, ++ 0x53, 0x10, 0x10, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x48, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x09, 0x11, 0x15, 0x26, 0x4b, 0x0d, 0x19, ++ 0x29, 0x49, 0x09, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x11, 0x11, 0x21, 0x4a, 0x0a, 0x14, 0x10, 0x32, ++ 0x52, 0x12, 0x12, 0x15, 0x14, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xa8, 0xa4, 0x44, 0x40, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x22, 0x4a, 0x0a, 0x12, 0x17, 0x30, ++ 0x52, 0x12, 0x12, 0x13, 0x14, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x4f, 0x08, 0x10, 0x17, 0x30, ++ 0x50, 0x1f, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xb8, 0xa0, ++ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x27, 0x49, 0x09, 0x13, 0x12, 0x34, ++ 0x50, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4, 0x44, ++ 0xe0, 0xd0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x11, 0x15, 0x25, 0x49, 0x09, 0x18, ++ 0x2f, 0x48, 0x0b, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, ++ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x21, 0x4e, 0x09, 0x11, 0x17, 0x31, ++ 0x52, 0x17, 0x10, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x32, ++ 0x5f, 0x12, 0x13, 0x12, 0x14, 0x19, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0xa0, 0xfc, 0xc8, 0xa8, 0x28, ++ 0xb0, 0x10, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x18, 0x37, 0x34, 0x31, 0x50, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x90, ++ 0x90, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x19, 0x36, 0x34, 0x30, 0x57, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x19, 0x35, 0x35, 0x37, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x13, 0x3a, 0x36, 0x34, 0x50, ++ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x44, 0x48, 0x60, 0x60, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x1a, ++ 0x62, 0x0b, 0x0a, 0x12, 0x22, 0x06, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, ++ 0x0c, 0x20, 0x90, 0x48, 0x48, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x27, 0x24, 0x27, 0x27, 0x24, ++ 0x27, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10, ++ 0xf0, 0xfc, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x01, 0x04, 0x08, 0x10, 0x6f, 0x02, 0x04, 0x18, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0xc0, 0x40, 0x20, 0x10, 0xec, 0x20, 0x20, 0xc0, ++ 0x00, 0x90, 0x88, 0x04, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x18, 0x34, 0x34, 0x31, 0x57, 0x10, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1b, 0x35, 0x35, 0x32, 0x56, ++ 0x1a, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0x20, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x3b, 0x34, 0x34, 0x50, 0x13, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x3b, 0x36, 0x34, 0x53, 0x12, ++ 0x12, 0x12, 0x13, 0x12, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0xc8, 0x48, ++ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x52, 0x12, ++ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88, ++ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x11, 0x11, 0x21, 0x41, 0x01, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x12, 0x2e, 0x45, 0x08, 0x01, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0x48, 0x88, 0xc8, 0x30, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x32, 0x52, ++ 0x13, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0, ++ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x19, 0x35, 0x36, 0x30, 0x57, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x57, ++ 0x10, 0x10, 0x10, 0x11, 0x12, 0x1c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x40, 0xc0, 0xa0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x19, 0x34, 0x34, 0x33, 0x50, ++ 0x11, 0x11, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0xc0, 0x48, 0x68, 0xf0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xfc, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x08, 0x0b, 0x10, 0x10, 0x37, 0x50, 0x10, 0x13, ++ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x19, 0x35, 0x36, 0x30, 0x50, ++ 0x11, 0x17, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0xa0, 0x60, 0x60, 0x90, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x17, 0x10, 0x30, 0x51, 0x12, 0x14, ++ 0x11, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48, 0x44, ++ 0x40, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x1b, 0x34, 0x36, 0x39, 0x54, ++ 0x15, 0x16, 0x17, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x48, 0x48, 0xa8, 0xa8, ++ 0x68, 0x28, 0xe8, 0x28, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x32, 0x52, ++ 0x1f, 0x12, 0x12, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x10, ++ 0xfc, 0x94, 0x94, 0xa4, 0xa4, 0xcc, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x13, 0x12, 0x12, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x90, 0x50, 0x50, ++ 0x10, 0xa0, 0xa0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x12, 0x19, 0x35, 0x34, 0x37, 0x50, ++ 0x10, 0x10, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x02, 0x04, 0x18, 0x61, 0x06, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x50, 0xa0, 0x10, 0x0c, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50, ++ 0x17, 0x11, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x18, 0x37, 0x36, 0x32, 0x52, ++ 0x12, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x19, 0x36, 0x37, 0x32, 0x53, ++ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x18, 0x34, 0x37, 0x30, 0x50, ++ 0x13, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x36, 0x32, 0x52, ++ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0x00, 0xfc, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1a, 0x37, 0x34, 0x33, 0x52, ++ 0x13, 0x12, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x30, 0x53, ++ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x51, ++ 0x11, 0x17, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x37, 0x32, 0x52, ++ 0x12, 0x13, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0xe8, ++ 0xd8, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x10, 0x3b, 0x36, 0x36, 0x53, ++ 0x12, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xc8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x1a, 0x34, 0x37, 0x32, 0x53, ++ 0x12, 0x13, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1b, 0x34, 0x34, 0x31, 0x52, ++ 0x10, 0x11, 0x12, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0x24, 0x9c, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x14, 0x37, 0x32, 0x35, 0x50, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf0, 0x20, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x1a, 0x37, 0x36, 0x32, 0x53, ++ 0x12, 0x10, 0x10, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0xe0, 0xd0, 0x54, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x52, ++ 0x13, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, 0x48, 0x48, ++ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x53, ++ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x48, 0xa8, 0x28, 0x28, 0x28, 0xe8, 0x28, 0xa8, ++ 0x68, 0x68, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x19, 0x34, 0x34, 0x31, 0x56, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0x40, 0xb0, 0x0c, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1e, 0x10, 0x1e, 0x02, 0x7f, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0x80, 0xfc, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x13, 0x18, 0x17, 0x34, 0x31, 0x36, 0x51, ++ 0x10, 0x10, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0, ++ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x01, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf8, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x1b, 0x34, 0x37, 0x31, 0x53, ++ 0x15, 0x11, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x10, 0xf8, ++ 0x14, 0x10, 0x60, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x19, 0x35, 0x35, 0x32, 0x54, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x98, 0x64, 0x44, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x18, 0x34, 0x35, 0x31, 0x52, ++ 0x10, 0x17, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xe0, 0xa0, 0xa4, 0x24, 0x1c, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x34, 0x37, 0x30, 0x53, ++ 0x10, 0x17, 0x11, 0x13, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x80, 0xfc, 0x10, 0xe0, 0xd0, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1a, 0x36, 0x36, 0x32, 0x52, ++ 0x12, 0x12, 0x12, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xe8, 0x48, 0xe8, 0x48, ++ 0xe8, 0xa8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x57, ++ 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xfc, ++ 0x48, 0x28, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x13, 0x1a, 0x36, 0x37, 0x32, 0x53, ++ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0xf8, ++ 0x88, 0x88, 0xe8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50, ++ 0x13, 0x12, 0x12, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x35, 0x30, 0x57, ++ 0x10, 0x10, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x12, 0x11, 0x24, 0x4a, 0x08, 0x11, 0x32, 0x52, ++ 0x10, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0x78, 0x00, 0x00, 0xfc, 0x10, 0x10, 0x10, ++ 0x30, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x19, 0x35, 0x35, 0x31, 0x50, ++ 0x13, 0x10, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x0f, 0x02, 0x7f, 0x0f, 0x14, 0x67, ++ 0x04, 0x07, 0x21, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0xe0, 0x80, 0xfc, 0xe0, 0x50, 0xcc, ++ 0x40, 0xc0, 0x08, 0x84, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x19, 0x35, 0x37, 0x31, 0x51, ++ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x50, 0x90, ++ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x12, 0x3b, 0x34, 0x37, 0x50, ++ 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x31, 0x51, ++ 0x13, 0x14, 0x13, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0x40, ++ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x34, 0x31, 0x51, ++ 0x11, 0x11, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x35, 0x32, 0x50, ++ 0x10, 0x11, 0x15, 0x15, 0x19, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0xa8, 0xa8, 0x68, 0x58, 0xb0, ++ 0x80, 0x50, 0x48, 0x14, 0x14, 0xf0, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x1c, 0x3f, 0x3c, 0x37, 0x54, ++ 0x14, 0x17, 0x13, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0x28, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x1a, 0x35, 0x35, 0x30, 0x53, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x28, 0x28, 0x50, 0x50, 0x28, 0x68, 0x80, 0xf8, ++ 0x28, 0xc8, 0x68, 0x98, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x29, 0x3f, 0x24, 0x3b, ++ 0x61, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8, ++ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x1d, 0x35, 0x35, 0x31, 0x51, ++ 0x10, 0x11, 0x16, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x80, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x06, 0x38, 0x3e, 0x22, 0x3f, 0x3e, 0x3e, 0x23, ++ 0x4c, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x94, 0xfc, 0x90, 0x60, 0xb0, ++ 0x0c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x1a, 0x35, 0x34, 0x37, 0x54, ++ 0x12, 0x12, 0x17, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0xb0, ++ 0xb0, 0xd0, 0xf4, 0xcc, 0xac, 0x84, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5e, ++ 0x00, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x48, 0x30, 0xd8, ++ 0x04, 0x10, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52, ++ 0x10, 0x11, 0x11, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xd0, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x1f, 0x34, 0x37, 0x30, 0x57, ++ 0x10, 0x13, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x48, 0xb0, 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, ++ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x17, 0x17, 0x14, 0x27, 0x24, ++ 0x59, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0xf0, 0x10, 0xf0, 0xb0, ++ 0x8c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x18, 0x34, 0x36, 0x32, 0x52, ++ 0x12, 0x12, 0x12, 0x13, 0x11, 0x16, 0x00, 0x00, ++ 0x10, 0x64, 0x84, 0xf8, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0xfc, 0x98, 0x04, 0x00, 0x00, ++ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09, ++ 0x13, 0x20, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08, ++ 0x18, 0x80, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x19, 0x36, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x12, 0x13, 0x15, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0, ++ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53, ++ 0x12, 0x10, 0x17, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x13, 0x08, 0x4b, 0x22, 0x23, 0x0a, 0x13, 0x22, ++ 0x22, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0xf0, 0xa0, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0x58, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x33, 0x50, ++ 0x17, 0x10, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x1f, 0x34, 0x37, 0x35, 0x57, ++ 0x14, 0x13, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x24, 0xa8, 0x98, 0x90, 0x68, 0x84, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53, ++ 0x12, 0x13, 0x14, 0x17, 0x18, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x48, 0x68, 0xd0, 0x50, 0x4c, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x19, 0x35, 0x36, 0x37, 0x50, ++ 0x11, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0x90, 0xf8, 0x10, 0x18, 0xa4, 0xfc, 0xa0, ++ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, ++ 0x08, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x08, 0xf0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10, ++ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x37, 0x55, ++ 0x17, 0x11, 0x17, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x04, 0x38, 0xe0, 0x20, 0xe0, 0x7c, 0xe8, 0x68, ++ 0xe8, 0x28, 0xe8, 0x48, 0x48, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x22, 0x4c, 0x0a, 0x12, 0x33, 0x54, ++ 0x18, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x10, 0x10, 0xa8, 0x44, 0x40, 0x78, 0x40, 0xc0, ++ 0x3c, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x1a, 0x35, 0x36, 0x34, 0x51, ++ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x13, 0x15, 0x39, 0x35, 0x35, 0x51, ++ 0x17, 0x11, 0x13, 0x14, 0x11, 0x12, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x19, 0x34, 0x37, 0x33, 0x50, ++ 0x16, 0x12, 0x12, 0x12, 0x15, 0x18, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20, ++ 0xf8, 0x88, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x32, 0x53, ++ 0x10, 0x17, 0x10, 0x17, 0x11, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0xfc, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x17, 0x39, 0x3f, 0x35, 0x57, ++ 0x15, 0x17, 0x11, 0x17, 0x11, 0x17, 0x00, 0x00, ++ 0x50, 0x90, 0x10, 0xd0, 0x3c, 0xd4, 0x54, 0xd4, ++ 0x54, 0xd4, 0x14, 0xe4, 0xe4, 0x4c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x25, 0x3f, 0x27, 0x3a, ++ 0x23, 0x3f, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf8, 0xe0, 0x20, ++ 0xe0, 0xf8, 0x00, 0xa8, 0x24, 0xe4, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x53, ++ 0x10, 0x17, 0x11, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, ++ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x1d, 0x3c, 0x3f, 0x34, 0x55, ++ 0x17, 0x16, 0x17, 0x1a, 0x1b, 0x12, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x58, 0x00, 0x00, ++ 0x01, 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x04, 0x7f, ++ 0x0f, 0x08, 0x0f, 0x25, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x40, 0xfc, ++ 0xe0, 0x20, 0xe0, 0x08, 0xa4, 0xe4, 0x00, 0x00, ++ 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a, 0x4b, ++ 0x01, 0x04, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0x30, 0x48, 0x84, ++ 0x00, 0x90, 0x88, 0x24, 0x24, 0xe0, 0x00, 0x00, ++ 0x02, 0x3c, 0x09, 0x7e, 0x08, 0x3e, 0x22, 0x3e, ++ 0x20, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x88, 0x88, 0xfc, 0x88, 0xf8, 0x88, 0x88, 0xf8, ++ 0x88, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x35, 0x35, 0x30, 0x57, ++ 0x11, 0x11, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x40, 0xfc, ++ 0xf0, 0x10, 0xf0, 0x50, 0x48, 0xc8, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x1b, 0x37, 0x35, 0x31, 0x51, ++ 0x11, 0x11, 0x10, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xf8, ++ 0x20, 0xfc, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x32, 0x53, ++ 0x12, 0x13, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x0b, 0x10, 0x17, 0x31, 0x53, 0x1d, 0x11, ++ 0x11, 0x11, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa0, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x58, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x23, 0x12, 0x13, 0x03, 0x0a, 0x13, 0x25, ++ 0x24, 0x09, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x54, ++ 0xac, 0x18, 0x80, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x36, 0x37, 0x32, 0x53, ++ 0x12, 0x12, 0x12, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x48, 0xf8, ++ 0xa8, 0x48, 0x68, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x12, 0x12, 0x13, 0x1e, 0x36, 0x37, 0x32, 0x52, ++ 0x12, 0x17, 0x10, 0x15, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, ++ 0xa8, 0xfc, 0x00, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x34, 0x37, 0x30, 0x57, ++ 0x11, 0x17, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x1a, 0x37, 0x36, 0x33, 0x52, ++ 0x13, 0x10, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, ++ 0x58, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14, ++ 0x14, 0x14, 0x20, 0x2a, 0x4a, 0x11, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0x90, 0xf8, ++ 0x90, 0xfc, 0x80, 0x48, 0x14, 0xf4, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x37, 0x30, 0x57, ++ 0x17, 0x11, 0x1f, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0x5c, ++ 0x5c, 0xc8, 0x28, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x12, 0x13, 0x14, 0x19, 0x37, 0x3d, 0x3d, 0x57, ++ 0x15, 0x15, 0x17, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x00, 0xbc, 0x94, 0x14, 0xe4, 0x4c, 0x68, 0xe8, ++ 0x7c, 0x48, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00, ++ 0x14, 0x7f, 0x1c, 0x3f, 0x2a, 0x3e, 0x7f, 0x3e, ++ 0x0f, 0x71, 0x04, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x88, 0x88, ++ 0x30, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x19, 0x34, 0x37, 0x32, 0x53, ++ 0x10, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x1b, 0x36, 0x36, 0x33, 0x53, ++ 0x12, 0x12, 0x14, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x17, 0x7a, 0x11, 0x3f, 0x3b, 0x35, 0x59, ++ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x10, 0xd0, 0xbc, 0x10, 0xf8, 0xb8, 0x34, 0x54, ++ 0x10, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x11, 0x11, 0x1b, 0x36, ++ 0x37, 0x52, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x20, 0xf8, 0x40, ++ 0xf0, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x1b, 0x36, 0x36, 0x32, 0x53, ++ 0x13, 0x10, 0x17, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, ++ 0xf0, 0x40, 0xfc, 0xf0, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x1b, 0x36, 0x37, 0x33, 0x50, ++ 0x17, 0x10, 0x13, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40, ++ 0xfc, 0x80, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x11, 0x0f, 0x49, 0x21, 0x27, 0x0f, 0x15, 0x15, ++ 0x26, 0x24, 0x01, 0x24, 0x24, 0x43, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf0, 0xfc, 0x74, 0x54, 0x54, ++ 0xec, 0x44, 0x00, 0x88, 0x24, 0xe4, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x11, 0x3f, 0x3d, 0x35, 0x57, ++ 0x13, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0x3c, 0xd4, 0x14, 0xec, 0x7c, 0x64, 0xfc, ++ 0x24, 0xbc, 0x64, 0x7c, 0x28, 0x44, 0x00, 0x00, ++ 0x12, 0x12, 0x13, 0x1d, 0x38, 0x3f, 0x32, 0x56, ++ 0x12, 0x16, 0x12, 0x16, 0x13, 0x1e, 0x00, 0x00, ++ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8, ++ 0xa8, 0xd0, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x19, 0x3f, 0x32, 0x36, 0x52, ++ 0x16, 0x12, 0x16, 0x12, 0x13, 0x1e, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8, ++ 0xd8, 0x90, 0xd4, 0xac, 0xcc, 0x04, 0x00, 0x00, ++ 0x10, 0x7c, 0x13, 0x38, 0x7c, 0x45, 0x7e, 0x00, ++ 0x3c, 0x24, 0x3d, 0x25, 0x1e, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa8, 0x30, 0x30, 0x48, 0xc4, ++ 0x20, 0x20, 0x48, 0x44, 0x54, 0x30, 0x00, 0x00, ++ 0x11, 0x17, 0x11, 0x1b, 0x36, 0x37, 0x31, 0x51, ++ 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0x20, 0xfc, ++ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x1b, 0x37, 0x36, 0x33, 0x51, ++ 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0x20, ++ 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x19, 0x35, 0x37, 0x30, 0x57, ++ 0x12, 0x13, 0x13, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xf0, 0xf0, 0xf8, 0x10, 0xfc, ++ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00, ++ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7c, 0x3b, 0x56, ++ 0x13, 0x01, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0x7c, 0xb8, 0xd4, ++ 0x90, 0x00, 0x88, 0xa4, 0x24, 0xe0, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x03, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x08, 0x08, 0xfc, 0x80, 0x88, 0x88, ++ 0x50, 0x60, 0xe4, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x12, 0x14, 0x18, 0x61, 0x06, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x18, 0x14, ++ 0x12, 0x12, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, ++ 0x1f, 0x10, 0x10, 0x20, 0x21, 0x46, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x88, 0x88, 0x48, ++ 0x50, 0x30, 0x24, 0x54, 0x8c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x1e, 0x01, ++ 0x7f, 0x00, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, ++ 0x20, 0x10, 0xfc, 0x90, 0x64, 0xb4, 0x2c, 0x10, ++ 0xfc, 0x90, 0x60, 0xe4, 0x1c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x10, ++ 0x1f, 0x01, 0x7f, 0x00, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0xf0, 0x10, ++ 0xf0, 0x08, 0xfc, 0xb0, 0xe4, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x0f, 0x08, 0x0f, 0x0f, 0x08, ++ 0x3f, 0x21, 0x5f, 0x00, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0x20, ++ 0xfc, 0x28, 0xf8, 0xa0, 0xe4, 0x1c, 0x00, 0x00, ++ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, ++ 0x7f, 0x2a, 0x2b, 0x31, 0x20, 0x1f, 0x00, 0x00, ++ 0x28, 0x24, 0xa4, 0x3c, 0xe0, 0x28, 0x28, 0x28, ++ 0xb0, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x12, 0x1f, 0x32, ++ 0x3f, 0x52, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0xa8, 0x28, ++ 0xb8, 0x10, 0x94, 0x2c, 0xcc, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x4c, 0x16, ++ 0x69, 0x34, 0x09, 0x32, 0x0c, 0x70, 0x00, 0x00, ++ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0x28, ++ 0x10, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0x20, 0x3c, 0xe0, 0x28, 0x28, ++ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x04, 0x07, 0x3f, 0x2b, 0x3d, 0x27, 0x3f, 0x20, ++ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x5c, 0x00, 0x00, ++ 0x30, 0x28, 0xa8, 0x20, 0x3c, 0xe0, 0x28, 0x28, ++ 0x18, 0x10, 0x34, 0x4c, 0x8c, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x19, 0x2a, 0x5d, 0x2a, 0x5a, 0x1f, ++ 0x24, 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x00, 0x00, ++ 0x30, 0xa8, 0xa8, 0xa0, 0xbc, 0xe0, 0xa8, 0xa8, ++ 0x18, 0x10, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, ++ 0x19, 0x19, 0x2f, 0x29, 0x49, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, ++ 0x80, 0x80, 0x84, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x1f, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x11, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x30, 0x90, 0xa0, ++ 0x60, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x12, 0x11, 0x14, ++ 0x18, 0x70, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, ++ 0xd0, 0xb0, 0x1c, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x12, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x88, ++ 0x88, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7c, 0x10, 0x10, 0x13, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x17, ++ 0x18, 0x70, 0x11, 0x12, 0x14, 0x38, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf0, 0x90, 0x90, 0x90, 0xfc, ++ 0x80, 0xc0, 0x40, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x13, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x13, 0x30, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50, ++ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x17, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x60, 0x40, 0xfc, 0x48, 0x50, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x12, 0x12, 0x14, 0x38, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x50, 0x48, 0x48, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x10, 0x14, ++ 0x18, 0x70, 0x13, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x10, 0x90, 0x90, ++ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x15, ++ 0x19, 0x71, 0x12, 0x12, 0x14, 0x39, 0x00, 0x00, ++ 0x90, 0x88, 0x88, 0xfc, 0x80, 0x90, 0x90, 0xd0, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x10, 0x14, ++ 0x18, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x60, 0x50, ++ 0x48, 0x48, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x15, ++ 0x1a, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x60, 0x60, 0xd0, 0x48, ++ 0x44, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x16, 0x12, 0x12, 0x15, ++ 0x19, 0x72, 0x12, 0x1f, 0x10, 0x30, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0x28, ++ 0x28, 0xa8, 0xa8, 0xc8, 0x48, 0x98, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x12, 0x13, 0x16, ++ 0x1a, 0x73, 0x12, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x7f, 0x12, 0x12, 0x3c, 0x06, 0x19, 0x60, ++ 0x0f, 0x1f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0xe0, ++ 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x01, ++ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0xc0, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x13, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xa0, ++ 0x60, 0x30, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x16, ++ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0xa4, 0x9c, 0x70, 0xf8, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x14, ++ 0x1b, 0x72, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x02, 0x05, 0x38, 0x08, 0x08, 0x3e, 0x08, 0x08, ++ 0x0e, 0x79, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x12, 0x11, 0x10, 0x14, ++ 0x1b, 0x70, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x50, 0x48, 0x48, 0xf0, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x13, 0x12, 0x16, 0x16, ++ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x13, 0x12, 0x16, ++ 0x1b, 0x70, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa0, 0xa0, ++ 0xfc, 0xa4, 0xa4, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x17, 0x16, ++ 0x1a, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x48, 0x28, 0x28, 0xfc, 0x08, ++ 0x88, 0x48, 0x48, 0xfc, 0x08, 0x30, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7e, 0x17, 0x12, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x38, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x78, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xc8, 0x98, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x11, 0x15, ++ 0x18, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10, ++ 0xa0, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x13, 0x14, 0x10, 0x14, ++ 0x19, 0x77, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xa0, 0x40, 0xa0, ++ 0xf8, 0x14, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x10, 0x11, 0x14, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x17, 0x11, 0x11, 0x15, ++ 0x19, 0x77, 0x11, 0x11, 0x12, 0x34, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x20, ++ 0x20, 0xfc, 0x20, 0x10, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x12, 0x14, 0x15, ++ 0x19, 0x72, 0x14, 0x10, 0x10, 0x31, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98, ++ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x10, 0x14, ++ 0x1b, 0x70, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x0a, 0x0d, 0x3a, 0x0c, 0x3a, 0x0c, 0x39, 0x00, ++ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0xe0, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7c, 0x13, 0x10, 0x10, 0x15, ++ 0x19, 0x72, 0x14, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x20, 0x40, 0xc8, 0xe8, 0xf0, 0x50, ++ 0x50, 0x48, 0x44, 0xc0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x12, 0x16, ++ 0x1a, 0x73, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x08, 0x10, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x10, 0x13, 0x16, ++ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x16, ++ 0x1a, 0x70, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4, ++ 0x44, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17, ++ 0x18, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x13, 0x10, ++ 0x1f, 0x71, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0x58, 0x48, 0x58, 0x48, 0x48, 0xf8, 0x40, ++ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x10, ++ 0x18, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x11, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x33, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x20, 0x20, 0x38, 0x48, 0x68, ++ 0x98, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x11, 0x13, 0x14, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0x10, 0xfc, 0x08, ++ 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x11, 0x16, 0x7c, 0x14, 0x17, 0x15, 0x15, ++ 0x1d, 0x75, 0x15, 0x19, 0x19, 0x31, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x20, ++ 0x20, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17, ++ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0xc8, 0x88, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x11, 0x17, 0x11, ++ 0x19, 0x73, 0x10, 0x10, 0x17, 0x30, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50, ++ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x28, 0x3e, 0x48, 0x7f, 0x08, 0x3e, 0x2a, 0x2e, ++ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0xd8, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7e, 0x15, 0x11, 0x12, 0x17, ++ 0x18, 0x72, 0x12, 0x13, 0x12, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0x08, 0xe8, 0x88, 0xe8, ++ 0x88, 0xa8, 0xa8, 0xe8, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x12, 0x13, 0x16, ++ 0x1b, 0x70, 0x17, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x17, 0x10, 0x16, ++ 0x1a, 0x72, 0x12, 0x13, 0x14, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0xfc, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x13, 0x16, ++ 0x1a, 0x72, 0x13, 0x12, 0x10, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x30, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x1e, ++ 0x73, 0x12, 0x14, 0x14, 0x1b, 0x3c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x40, ++ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x10, 0x17, 0x10, 0x14, ++ 0x1b, 0x70, 0x13, 0x10, 0x13, 0x30, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0xe0, 0x20, 0xfc, 0x40, 0xe8, ++ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x11, 0x16, 0x10, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x20, 0x20, 0xe4, 0x5c, 0x80, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x13, 0x12, 0x16, ++ 0x1b, 0x70, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x12, 0x11, 0x14, ++ 0x18, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0x08, 0xf4, 0x40, ++ 0x40, 0xf8, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x7e, 0x13, 0x10, 0x17, 0x10, ++ 0x1b, 0x72, 0x12, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x13, 0x14, ++ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x17, 0x11, 0x12, ++ 0x1a, 0x73, 0x12, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xfc, 0x40, 0x58, ++ 0x48, 0x58, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x12, 0x12, 0x17, ++ 0x1a, 0x72, 0x13, 0x16, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x17, 0x14, ++ 0x1e, 0x75, 0x16, 0x15, 0x14, 0x35, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x11, 0x11, 0x17, 0x12, ++ 0x1f, 0x30, 0x52, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x80, 0xf0, 0x90, 0x60, 0x40, 0x80, 0xf8, 0x40, ++ 0xfc, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x02, 0x3f, 0x08, ++ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0xf0, 0xe0, 0x80, 0xf8, 0xe0, ++ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x10, 0x17, 0x10, 0x17, ++ 0x1a, 0x77, 0x12, 0x17, 0x12, 0x32, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0x40, 0xf8, ++ 0x48, 0xfc, 0x48, 0xfc, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x10, 0x17, 0x11, ++ 0x19, 0x72, 0x14, 0x18, 0x17, 0x30, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x13, 0x12, 0x12, 0x17, ++ 0x19, 0x72, 0x15, 0x12, 0x14, 0x33, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xb8, 0x20, 0x20, 0xb8, ++ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x15, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x13, 0x15, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0, ++ 0x10, 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7d, 0x11, 0x17, 0x10, 0x17, ++ 0x1a, 0x73, 0x13, 0x12, 0x17, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0xf0, 0xf0, 0xfc, 0x10, 0xfc, ++ 0xa8, 0xb8, 0xb8, 0xac, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x11, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, ++ 0xfc, 0x00, 0xfc, 0xa4, 0xe4, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x10, 0x17, ++ 0x19, 0x72, 0x15, 0x12, 0x14, 0x31, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x98, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17, ++ 0x1a, 0x70, 0x17, 0x11, 0x10, 0x30, 0x00, 0x00, ++ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x7f, 0x12, 0x10, 0x11, 0x15, ++ 0x1b, 0x75, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x98, 0xa0, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x7f, 0x3f, 0x08, ++ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0x60, ++ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x13, 0x12, 0x17, ++ 0x18, 0x73, 0x10, 0x17, 0x11, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x50, 0xf8, 0x10, 0xfc, 0x10, 0xb0, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7a, 0x15, 0x12, 0x14, 0x11, ++ 0x1e, 0x71, 0x10, 0x11, 0x10, 0x33, 0x00, 0x00, ++ 0x00, 0xf8, 0x98, 0xa8, 0xd8, 0xa8, 0xc8, 0x20, ++ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x11, 0x12, 0x13, 0x7f, 0x12, 0x17, 0x15, 0x1d, ++ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00, ++ 0xb8, 0x68, 0xb8, 0x78, 0xa8, 0xfc, 0xf8, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0xa4, 0x3c, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x17, ++ 0x1a, 0x77, 0x13, 0x12, 0x14, 0x38, 0x00, 0x00, ++ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0x28, 0xc8, 0x48, 0x88, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x17, 0x11, 0x11, ++ 0x1e, 0x73, 0x10, 0x10, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xfc, 0x10, 0xfc, ++ 0x00, 0xf8, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00, ++ 0x11, 0x12, 0x11, 0x7d, 0x12, 0x17, 0x11, 0x17, ++ 0x1c, 0x77, 0x15, 0x11, 0x11, 0x36, 0x00, 0x00, ++ 0xd0, 0x54, 0xa4, 0x18, 0x08, 0x74, 0x50, 0x54, ++ 0x8c, 0xf8, 0x48, 0x30, 0x28, 0xc4, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x17, 0x11, 0x15, ++ 0x19, 0x71, 0x11, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0x18, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x11, 0x15, 0x13, 0x79, 0x12, 0x14, 0x13, 0x12, ++ 0x1c, 0x73, 0x10, 0x10, 0x11, 0x32, 0x00, 0x00, ++ 0x10, 0x54, 0xb4, 0x18, 0xa8, 0x44, 0xfc, 0x48, ++ 0x40, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x17, ++ 0x1b, 0x74, 0x12, 0x12, 0x14, 0x30, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xd0, 0x54, ++ 0xec, 0x44, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x12, 0x13, 0x16, ++ 0x1b, 0x72, 0x13, 0x14, 0x15, 0x38, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38, 0xfc, 0x68, ++ 0xb8, 0x70, 0xb8, 0x58, 0x94, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x12, 0x13, 0x17, ++ 0x18, 0x77, 0x14, 0x15, 0x14, 0x34, 0x00, 0x00, ++ 0x40, 0xa0, 0x58, 0xfc, 0xa8, 0x68, 0x98, 0xf8, ++ 0x40, 0xfc, 0xa4, 0xf4, 0x14, 0x0c, 0x00, 0x00, ++ 0x10, 0x17, 0x13, 0x7e, 0x12, 0x12, 0x13, 0x15, ++ 0x19, 0x71, 0x11, 0x11, 0x17, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x10, 0x13, 0x10, 0x17, ++ 0x19, 0x77, 0x10, 0x13, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x12, 0x12, 0x79, 0x14, 0x12, 0x13, 0x10, ++ 0x1e, 0x72, 0x13, 0x12, 0x15, 0x38, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e, ++ 0x07, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x13, 0x10, ++ 0x1b, 0x72, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16, ++ 0x1b, 0x72, 0x13, 0x12, 0x12, 0x32, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x88, 0xe8, ++ 0xa8, 0x48, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x0a, 0x13, 0x1a, 0x13, 0x18, 0x12, 0x7f, 0x08, ++ 0x17, 0x6f, 0x01, 0x3f, 0x01, 0x03, 0x00, 0x00, ++ 0x30, 0x90, 0x30, 0x90, 0xb0, 0x90, 0xfc, 0xe0, ++ 0x10, 0xec, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x06, 0x1b, 0x12, 0x1b, 0x12, 0x1a, 0x12, 0x7f, ++ 0x09, 0x17, 0x61, 0x1f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xb0, 0x10, 0xb0, 0x90, 0xb0, 0x90, 0xfc, ++ 0x20, 0xd0, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x2f, 0x21, 0x7e, 0x2a, 0x2a, 0x36, 0x22, ++ 0x33, 0x62, 0x23, 0x22, 0x24, 0x68, 0x00, 0x00, ++ 0x80, 0xfc, 0x48, 0xb8, 0xa8, 0xa8, 0xb4, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x11, 0x11, 0x17, ++ 0x1d, 0x70, 0x11, 0x10, 0x11, 0x37, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x10, 0xf0, 0xfc, ++ 0xf8, 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x10, 0x11, 0x17, 0x14, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x90, 0x88, 0x1c, 0xe4, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x10, 0x17, 0x11, 0x14, ++ 0x19, 0x77, 0x13, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0xe8, 0x40, ++ 0xf0, 0xfc, 0x88, 0xfc, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x11, 0x17, ++ 0x19, 0x71, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf8, 0x58, 0xe4, 0xf4, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x20, 0x2f, 0x2a, 0x7f, 0x2f, 0x2a, 0x2f, 0x2b, ++ 0x32, 0x63, 0x23, 0x23, 0x21, 0x6e, 0x00, 0x00, ++ 0x40, 0xfc, 0x80, 0x78, 0xfc, 0xb4, 0xfc, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x14, 0x17, 0x15, 0x79, 0x10, 0x17, 0x10, 0x17, ++ 0x1c, 0x77, 0x14, 0x17, 0x14, 0x35, 0x00, 0x00, ++ 0x20, 0xfc, 0x50, 0x18, 0xa0, 0xfc, 0x00, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x13, 0x12, 0x16, ++ 0x1a, 0x72, 0x12, 0x14, 0x14, 0x3b, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x24, 0x27, 0x2b, 0x7f, 0x2b, 0x2d, 0x2f, 0x28, ++ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00, ++ 0x80, 0xf8, 0x68, 0xe8, 0x70, 0xf0, 0xe8, 0x68, ++ 0xe4, 0x24, 0xe4, 0x38, 0xa0, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x14, 0x1f, 0x10, ++ 0x1f, 0x74, 0x17, 0x17, 0x14, 0x35, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x20, 0xa8, 0xf0, 0x64, ++ 0x9c, 0xa0, 0xa8, 0xb0, 0xa4, 0x9c, 0x00, 0x00, ++ 0x10, 0x13, 0x7d, 0x1a, 0x36, 0x51, 0x13, 0x7f, ++ 0x05, 0x1f, 0x6f, 0x3f, 0x01, 0x03, 0x00, 0x00, ++ 0x90, 0x90, 0x7c, 0xb0, 0xd8, 0x94, 0x50, 0xfc, ++ 0xc0, 0x30, 0xec, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x12, 0x12, 0x15, 0x7d, 0x12, 0x13, 0x15, 0x17, ++ 0x18, 0x77, 0x10, 0x11, 0x16, 0x30, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xac, 0xb4, 0xfc, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x13, 0x7a, 0x13, 0x10, 0x13, 0x11, ++ 0x18, 0x77, 0x10, 0x17, 0x11, 0x33, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0, ++ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x12, 0x13, 0x11, 0x7f, 0x12, 0x17, 0x13, 0x12, ++ 0x1b, 0x77, 0x15, 0x17, 0x15, 0x35, 0x00, 0x00, ++ 0x48, 0xf8, 0x20, 0xf8, 0x40, 0xf0, 0xf0, 0x40, ++ 0xf8, 0xf8, 0x58, 0xf8, 0x48, 0xd8, 0x00, 0x00, ++ 0x11, 0x17, 0x11, 0x7f, 0x11, 0x12, 0x15, 0x1d, ++ 0x71, 0x11, 0x11, 0x11, 0x11, 0x36, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0xb0, 0x48, 0xf4, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x25, 0x2f, 0x25, 0x7f, 0x2f, 0x2a, 0x2f, 0x22, ++ 0x3f, 0x62, 0x2f, 0x23, 0x24, 0x68, 0x00, 0x00, ++ 0x28, 0xa8, 0x28, 0x7c, 0xd0, 0xd0, 0xfc, 0x50, ++ 0xd0, 0x7c, 0xd0, 0x50, 0xfc, 0x40, 0x00, 0x00, ++ 0x13, 0x6f, 0x2b, 0x17, 0x7c, 0x3b, 0x56, 0x13, ++ 0x0f, 0x1f, 0x01, 0x7f, 0x01, 0x03, 0x00, 0x00, ++ 0x90, 0xe8, 0xa8, 0x94, 0x7c, 0xb8, 0xd4, 0xe0, ++ 0x80, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x13, 0x12, 0x13, 0x7f, 0x13, 0x11, 0x13, 0x16, ++ 0x1a, 0x73, 0x13, 0x10, 0x10, 0x37, 0x00, 0x00, ++ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0x20, 0xfc, 0xf0, ++ 0xf0, 0xfc, 0xf0, 0xa0, 0xe0, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x3f, 0x04, 0x02, ++ 0x02, 0x01, 0x00, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x20, ++ 0x20, 0x40, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x0f, 0x0c, 0x14, 0x22, ++ 0x02, 0x01, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x1d, 0x26, 0x24, ++ 0x04, 0x04, 0x04, 0x08, 0x08, 0x33, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x24, 0x25, 0x25, 0x26, 0x24, 0x24, ++ 0x26, 0x3c, 0x64, 0x04, 0x05, 0x06, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0c, 0x14, 0x15, 0x35, 0x56, 0x14, ++ 0x14, 0x14, 0x14, 0x14, 0x10, 0x13, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x55, 0x7e, 0x54, ++ 0x54, 0x54, 0x7c, 0x44, 0x01, 0x06, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x10, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x14, 0x12, 0x26, 0x65, 0x14, ++ 0x0c, 0x0c, 0x0a, 0x12, 0x20, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x90, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x7f, ++ 0x08, 0x0e, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x50, 0x50, ++ 0x60, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x2a, 0x3e, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x08, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0x40, 0xf8, 0x88, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x3e, 0x49, 0x0a, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x1b, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x90, 0x90, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x41, 0x5d, ++ 0x55, 0x55, 0x5d, 0x55, 0x41, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48, ++ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x2a, 0x29, 0x49, 0x08, 0x7f, 0x49, 0x6b, ++ 0x6b, 0x6b, 0x6b, 0x49, 0x49, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x48, 0x48, ++ 0x30, 0x30, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x22, 0x3e, 0x00, ++ 0x7f, 0x41, 0x5d, 0x55, 0x5d, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8, 0x48, 0x48, ++ 0x28, 0x30, 0x10, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x04, 0x3f, 0x25, 0x7f, 0x25, 0x3f, 0x3f, 0x25, ++ 0x3f, 0x08, 0x7f, 0x12, 0x1e, 0x71, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x48, 0xc8, 0x48, 0x50, ++ 0x30, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x3f, 0x40, 0x77, 0x55, ++ 0x77, 0x12, 0x12, 0x2d, 0x25, 0x49, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xc8, 0xc8, 0x28, 0x28, ++ 0x30, 0x10, 0x30, 0x48, 0x88, 0x04, 0x00, 0x00, ++ 0x49, 0x2a, 0x7f, 0x49, 0x5d, 0x6b, 0x4b, 0x00, ++ 0x7f, 0x08, 0x1e, 0x72, 0x0c, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0x00, ++ 0xfc, 0x88, 0xb0, 0xc4, 0x84, 0x7c, 0x00, 0x00, ++ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57, ++ 0x12, 0x07, 0x3c, 0x03, 0x0e, 0x70, 0x00, 0x00, ++ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4, ++ 0x10, 0xf8, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e, 0x2a, ++ 0x2a, 0x3e, 0x23, 0x22, 0x22, 0x46, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50, ++ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x12, 0x12, 0x7f, 0x12, 0x1e, 0x12, 0x1e, 0x12, ++ 0x7f, 0x2a, 0x2b, 0x33, 0x20, 0x1f, 0x00, 0x00, ++ 0x10, 0x90, 0x50, 0x50, 0x10, 0x90, 0x50, 0x50, ++ 0x1c, 0x70, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32, ++ 0x32, 0x52, 0x13, 0x1f, 0x12, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x12, 0x5b, 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x5b, ++ 0x6d, 0x52, 0x6d, 0x7f, 0x7f, 0x40, 0x00, 0x00, ++ 0x08, 0x70, 0x40, 0x40, 0x40, 0x7c, 0x50, 0x50, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x12, 0x1c, 0x14, ++ 0x14, 0x15, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0xa8, 0xa8, ++ 0xa8, 0xfc, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x12, 0x13, 0x1c, 0x14, ++ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0x20, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x04, 0x02, 0x3f, 0x21, 0x41, ++ 0x3f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x40, 0x80, 0xfc, 0x08, 0x00, ++ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x10, 0x1c, 0x15, ++ 0x14, 0x14, 0x27, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0xe0, 0x40, 0x78, 0xc0, ++ 0x40, 0x7c, 0xc0, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x11, 0x12, 0x1c, 0x14, ++ 0x15, 0x14, 0x24, 0x24, 0x45, 0x18, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xa0, 0xa0, 0xf8, 0xa0, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x10, 0x1c, 0x17, ++ 0x14, 0x15, 0x25, 0x25, 0x45, 0x1a, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0xfc, 0x50, 0x98, 0xe8, ++ 0x10, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x10, 0x11, 0x1c, 0x14, ++ 0x17, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x80, 0xfc, 0x18, 0xe8, 0xb0, 0xfc, 0x70, 0xa8, ++ 0xfc, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7c, 0x13, 0x10, 0x1c, 0x17, ++ 0x14, 0x14, 0x24, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x18, 0xe8, 0x28, 0xb0, 0xfc, 0x70, 0xa8, 0x24, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x01, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x21, 0x21, 0x21, 0x3f, 0x21, ++ 0x01, 0x02, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x80, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f, ++ 0x01, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x7f, ++ 0x01, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x1f, ++ 0x10, 0x10, 0x11, 0x21, 0x26, 0x58, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x80, 0x80, 0xc0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f, ++ 0x04, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x40, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x4a, 0x7a, 0x4a, ++ 0x4a, 0x4a, 0x7a, 0x4c, 0x44, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x80, 0x88, ++ 0x90, 0xe0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x7e, 0x00, 0x3c, 0x05, 0x05, 0x7e, 0x0e, ++ 0x0d, 0x15, 0x14, 0x24, 0x44, 0x0c, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x48, 0x48, ++ 0x78, 0x48, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x3c, ++ 0x22, 0x22, 0x2e, 0x72, 0x04, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x7f, ++ 0x08, 0x0f, 0x12, 0x22, 0x04, 0x09, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0xfc, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x3f, ++ 0x22, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xf8, 0x40, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x7a, 0x49, 0x49, 0x48, 0x7f, 0x48, ++ 0x48, 0x48, 0x79, 0x49, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x14, 0x3e, 0x02, 0x7f, 0x00, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x50, 0xf8, 0x08, 0xfc, 0x00, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x12, ++ 0x0a, 0x0a, 0x1c, 0x64, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x90, 0x90, ++ 0xe0, 0xa0, 0x90, 0x94, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x01, 0x78, 0x4b, 0x48, 0x4f, 0x79, 0x4b, ++ 0x4e, 0x4a, 0x7a, 0x4a, 0x02, 0x00, 0x00, 0x00, ++ 0x08, 0xd0, 0x70, 0x88, 0x80, 0xfc, 0x40, 0xf8, ++ 0x48, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x0f, 0x01, 0x3f, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x7f, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xe0, 0x00, 0xf8, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x48, 0x4b, 0x48, 0x78, 0x4f, ++ 0x48, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x4a, 0x4c, 0x7f, 0x48, ++ 0x4b, 0x4a, 0x7a, 0x4a, 0x03, 0x02, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x3f, 0x20, ++ 0x2f, 0x20, 0x3f, 0x24, 0x26, 0x5c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x00, ++ 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x3f, ++ 0x20, 0x3e, 0x24, 0x24, 0x38, 0x43, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x88, 0xfc, ++ 0x80, 0x48, 0x50, 0x24, 0xd4, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x0e, 0x78, 0x09, 0x1a, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x4f, 0x49, 0x49, 0x7b, 0x4b, ++ 0x4b, 0x4d, 0x7d, 0x49, 0x01, 0x01, 0x00, 0x00, ++ 0x04, 0x08, 0x30, 0xe0, 0x20, 0xbc, 0x68, 0x68, ++ 0x28, 0x28, 0x48, 0x48, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x02, 0x7e, ++ 0x02, 0x3e, 0x02, 0x0e, 0x74, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xfc, ++ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x3f, 0x21, 0x7f, ++ 0x0f, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x08, 0xf8, ++ 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x49, 0x48, 0x4b, 0x7a, 0x4a, ++ 0x4a, 0x4f, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x50, 0x40, 0xf8, 0x48, 0x48, ++ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4f, 0x48, 0x4b, 0x7a, 0x4b, ++ 0x4a, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4f, 0x48, 0x79, 0x49, ++ 0x49, 0x49, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x49, 0x49, 0x49, 0x78, 0x4f, ++ 0x49, 0x4b, 0x7c, 0x49, 0x02, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0x28, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x49, 0x79, 0x49, ++ 0x48, 0x4f, 0x78, 0x48, 0x01, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x3e, 0x22, 0x3f, 0x3e, 0x26, 0x39, 0x1f, ++ 0x04, 0x07, 0x04, 0x07, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0xfc, 0x30, 0xd4, 0x0c, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x23, 0x13, 0x11, 0x01, 0x73, ++ 0x15, 0x11, 0x11, 0x19, 0x27, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0xf8, 0x10, 0xfc, 0x20, ++ 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x4f, 0x49, 0x4f, 0x79, 0x49, ++ 0x4e, 0x4b, 0x78, 0x40, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc, ++ 0x00, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x48, 0x4b, 0x4a, 0x7b, 0x48, ++ 0x4f, 0x48, 0x79, 0x4f, 0x01, 0x03, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x3c, 0xc8, 0xe8, 0xa8, 0x28, ++ 0xf0, 0x90, 0x98, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x08, 0x2a, 0x49, 0x7f, 0x49, 0x5d, 0x6b, 0x49, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x48, 0x30, 0x30, 0xc8, ++ 0xf4, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x07, 0x79, 0x4b, 0x49, 0x49, 0x7f, 0x49, ++ 0x49, 0x4b, 0x78, 0x4f, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf8, 0x50, 0x50, 0xfc, 0x50, ++ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x07, 0x7a, 0x49, 0x4b, 0x4d, 0x79, 0x49, ++ 0x49, 0x49, 0x79, 0x42, 0x04, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xb0, 0x18, 0xf4, 0x10, 0xf0, ++ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x4a, 0x7d, 0x49, ++ 0x4a, 0x48, 0x7b, 0x48, 0x00, 0x07, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x10, 0xfc, 0x68, 0x98, 0xf4, ++ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x4c, 0x7f, 0x48, ++ 0x4f, 0x48, 0x7b, 0x48, 0x07, 0x00, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8, ++ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x4b, 0x7a, 0x4a, ++ 0x4a, 0x4a, 0x7c, 0x44, 0x08, 0x03, 0x00, 0x00, ++ 0x40, 0xfc, 0x90, 0xfc, 0xf0, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x4a, 0x7a, 0x4a, ++ 0x4a, 0x4a, 0x7a, 0x44, 0x07, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x00, 0x20, 0x20, 0x20, ++ 0x40, 0x50, 0x88, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x78, 0x49, 0x4f, 0x4b, 0x79, 0x4f, ++ 0x4b, 0x4d, 0x7f, 0x47, 0x04, 0x01, 0x00, 0x00, ++ 0x90, 0xf8, 0x40, 0xf0, 0xfc, 0xa8, 0x24, 0xfc, ++ 0xa8, 0x28, 0xd0, 0xb4, 0xcc, 0x84, 0x00, 0x00, ++ 0x1f, 0x17, 0x1f, 0x01, 0x7f, 0x1e, 0x12, 0x1e, ++ 0x3f, 0x0f, 0x7f, 0x0c, 0x77, 0x1c, 0x00, 0x00, ++ 0xf0, 0xd0, 0xf0, 0x00, 0xfc, 0xf0, 0x90, 0xf0, ++ 0xf8, 0xe0, 0xfc, 0x90, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x3f, 0x20, ++ 0x20, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x90, 0x10, ++ 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f, ++ 0x11, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00, ++ 0x20, 0x10, 0xf0, 0x10, 0xd0, 0x10, 0x10, 0xf8, ++ 0x10, 0xa0, 0xc0, 0x44, 0x34, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x12, 0x07, ++ 0x19, 0x71, 0x12, 0x14, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x08, 0x88, 0x48, 0x08, 0xe8, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x20, 0x24, 0x24, 0x24, 0x24, 0xfc, 0x24, 0x20, ++ 0x24, 0x24, 0x24, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4f, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, ++ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x07, 0x07, 0x04, 0x7f, 0x08, ++ 0x17, 0x64, 0x07, 0x07, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xc0, 0xc0, 0x40, 0xfc, 0x20, ++ 0xd0, 0x48, 0xc4, 0xc0, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x25, 0x25, 0x3e, 0x27, 0x24, ++ 0x3f, 0x24, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0xfc, 0x08, 0xf0, 0xfc, 0xc8, ++ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x01, 0x39, 0x2f, 0x2a, 0x2a, 0x3f, 0x28, 0x2b, ++ 0x3a, 0x2b, 0x2a, 0x2b, 0x2a, 0x5a, 0x00, 0x00, ++ 0x20, 0x3c, 0xe0, 0xb8, 0x88, 0xf8, 0x20, 0xb8, ++ 0xa0, 0xb8, 0xa0, 0xbc, 0xa4, 0x9c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x4f, 0x15, 0x7f, ++ 0x14, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0xe8, 0x70, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x01, 0x09, 0x09, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x01, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0xfc, 0x00, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x11, 0x11, 0x11, ++ 0x11, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0x10, ++ 0x60, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x04, 0x08, 0x10, 0x21, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x78, 0x08, 0x08, 0x70, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x09, 0x08, 0x08, 0x7e, 0x08, 0x0c, 0x1a, 0x1a, ++ 0x18, 0x28, 0x29, 0x49, 0x0a, 0x0c, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xe0, ++ 0xa0, 0xa0, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, ++ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1d, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc0, 0x40, 0x20, ++ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7e, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x13, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x78, 0x48, 0x48, ++ 0x88, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x7f, 0x03, 0x05, 0x09, 0x11, ++ 0x61, 0x01, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x80, 0x40, 0x20, 0x10, ++ 0x0c, 0x00, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x03, 0x05, 0x19, 0x61, 0x04, ++ 0x08, 0x11, 0x61, 0x02, 0x04, 0x1f, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x40, ++ 0x30, 0x08, 0x04, 0x20, 0x70, 0x88, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7e, 0x08, 0x1f, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x60, 0x20, 0xfc, 0x24, 0x28, ++ 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa4, 0x2c, 0x28, ++ 0x70, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7d, 0x11, 0x1a, 0x37, 0x34, ++ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0xe0, 0xa0, 0xa0, 0x10, 0x10, 0x08, 0xf4, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x18, 0x37, 0x34, ++ 0x30, 0x50, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x50, 0x90, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x28, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x14, 0x14, 0x19, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28, ++ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1a, 0x1b, ++ 0x2a, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0xf8, ++ 0x48, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x01, 0x1f, 0x19, 0x15, 0x15, ++ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x00, 0xf0, 0x50, 0x50, 0x90, ++ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x28, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x00, 0x90, 0x88, 0x04, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x36, ++ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x70, 0x90, 0x20, 0x20, ++ 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x11, 0x3a, 0x35, 0x35, ++ 0x51, 0x51, 0x11, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x28, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x1e, 0x1a, 0x1a, ++ 0x28, 0x28, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x4a, 0x0a, 0x0c, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x60, ++ 0x30, 0x28, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x0f, 0x09, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x10, 0x10, 0xd4, 0x0c, 0xec, 0x04, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x34, ++ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x40, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x12, 0x1b, 0x35, 0x35, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0x28, ++ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x11, 0x19, 0x37, 0x35, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0x88, 0xfc, 0x08, 0x48, 0x28, ++ 0x28, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x12, 0x39, 0x35, ++ 0x34, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x10, 0x10, 0x10, 0x10, ++ 0x90, 0xa0, 0xa0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x0a, 0x0b, 0x0c, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x70, 0x58, 0xf8, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x13, 0x3a, 0x37, ++ 0x35, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0xa0, 0x10, 0xe8, 0xfc, 0x58, 0xe8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x09, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x1a, 0x34, 0x35, ++ 0x31, 0x52, 0x54, 0x10, 0x10, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98, ++ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x22, 0x54, 0x0f, 0x18, 0x61, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x90, 0x90, 0xfc, 0x10, 0x10, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x19, 0x36, 0x37, ++ 0x30, 0x50, 0x51, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x90, 0xf8, 0x04, 0xf8, ++ 0x80, 0xf0, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x08, 0x1f, 0x1a, 0x1a, ++ 0x29, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x40, 0xfc, ++ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1f, 0x34, 0x34, ++ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x50, 0x88, 0xfc, 0x44, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x1f, 0x34, 0x35, ++ 0x31, 0x51, 0x51, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x18, 0xe4, 0x00, 0x50, ++ 0x50, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x10, 0x18, 0x35, 0x35, ++ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x08, 0x10, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1a, 0x1b, ++ 0x2a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x50, 0x88, 0xfc, 0xa4, 0xa0, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x12, 0x7d, 0x11, 0x18, 0x37, 0x34, ++ 0x30, 0x53, 0x50, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xf8, 0x08, ++ 0x08, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x13, 0x1a, 0x36, 0x37, ++ 0x32, 0x52, 0x53, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37, ++ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x08, 0x0f, ++ 0x09, 0x01, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xe0, 0xe0, 0x20, 0xe0, 0xf8, 0x00, 0xf0, ++ 0x10, 0x60, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x12, 0x1c, 0x37, 0x34, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x29, 0x4a, 0x08, 0x09, 0x0e, 0x00, 0x00, ++ 0x40, 0x50, 0x98, 0xe4, 0xa0, 0xa4, 0x5c, 0x40, ++ 0xf0, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x36, 0x36, ++ 0x32, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xa8, ++ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0d, 0x16, 0x14, 0x37, 0x54, ++ 0x17, 0x14, 0x15, 0x16, 0x14, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0xa0, 0x60, 0xdc, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x7a, 0x17, 0x1a, 0x3a, 0x37, ++ 0x32, 0x52, 0x54, 0x14, 0x18, 0x13, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0xa4, 0xa4, 0xa4, 0xb8, 0xa0, 0x20, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x1a, 0x37, 0x31, ++ 0x35, 0x55, 0x52, 0x12, 0x15, 0x18, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x17, 0x11, 0x38, 0x35, ++ 0x37, 0x50, 0x53, 0x12, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0, ++ 0xfc, 0x08, 0xfc, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x35, ++ 0x31, 0x57, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0xfc, 0x10, 0x10, 0x10, ++ 0x10, 0xfc, 0x10, 0x08, 0x04, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x11, 0x1a, 0x35, 0x34, ++ 0x30, 0x53, 0x50, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x00, 0xf8, 0x10, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x07, ++ 0x04, 0x06, 0x05, 0x09, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x70, 0x70, 0xa8, 0x24, 0xc0, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x34, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x40, 0x80, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x2a, 0x4b, 0x08, 0x7f, ++ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0xfc, ++ 0x00, 0xc0, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x10, 0x1b, 0x36, 0x36, ++ 0x33, 0x52, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa0, 0xa0, 0xa0, 0xb8, 0x08, 0x08, ++ 0xb8, 0xa8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34, ++ 0x30, 0x50, 0x53, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, ++ 0x9c, 0xe0, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x17, 0x10, 0x38, 0x37, ++ 0x35, 0x51, 0x53, 0x15, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x90, 0x90, 0xf0, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x19, 0x34, 0x37, ++ 0x30, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x10, 0x60, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x07, 0x04, 0x07, 0x04, 0x7f, ++ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xc0, 0x40, 0xc0, 0x40, 0xfc, ++ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7e, 0x14, 0x12, 0x39, 0x37, ++ 0x35, 0x51, 0x52, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x88, 0xa8, 0xa8, 0xc8, 0xf8, ++ 0xc8, 0xa8, 0xa8, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, ++ 0x2e, 0x0c, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xb8, 0x30, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1a, 0x37, 0x36, ++ 0x32, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x68, 0x58, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7f, 0x10, 0x1b, 0x34, 0x35, ++ 0x36, 0x53, 0x50, 0x10, 0x11, 0x12, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xf8, 0x40, 0xfc, 0xa0, 0x50, ++ 0x4c, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7c, 0x14, 0x1f, 0x3c, 0x35, ++ 0x35, 0x55, 0x55, 0x15, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0xc8, 0xf8, 0x48, 0x58, ++ 0x58, 0x58, 0xf8, 0x18, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x18, 0x35, 0x36, ++ 0x33, 0x50, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa0, 0xa4, 0x1c, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x0f, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20, ++ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x09, 0x1d, 0x1b, 0x1b, ++ 0x29, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x20, 0x10, 0xd4, 0x0c, ++ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x08, 0x1c, 0x1b, 0x1a, ++ 0x28, 0x2b, 0x48, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x54, ++ 0x7c, 0xc8, 0x30, 0x14, 0x6c, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x0a, 0x1c, 0x1a, 0x1b, ++ 0x28, 0x28, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x10, 0x12, 0x13, 0x7e, 0x12, 0x1b, 0x34, 0x35, ++ 0x32, 0x50, 0x51, 0x16, 0x10, 0x17, 0x00, 0x00, ++ 0x20, 0x28, 0xc8, 0x68, 0x98, 0xf8, 0xa0, 0x24, ++ 0x9c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x11, 0x17, 0x39, 0x35, ++ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x24, 0x24, 0xe8, 0x28, 0x18, ++ 0x90, 0x50, 0x68, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37, ++ 0x30, 0x50, 0x51, 0x10, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x40, 0xfc, ++ 0x90, 0x90, 0xe0, 0x30, 0xc8, 0x08, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x13, 0x1d, 0x31, 0x7f, ++ 0x01, 0x1f, 0x13, 0x1d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0x60, 0x10, 0xfc, ++ 0x00, 0xf0, 0x90, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x13, 0x18, 0x37, 0x36, ++ 0x31, 0x51, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x48, ++ 0x68, 0x70, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x7f, 0x15, 0x19, 0x3f, 0x35, ++ 0x35, 0x51, 0x52, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xe8, 0x28, 0x28, 0xe8, 0x28, ++ 0x28, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x13, 0x1a, 0x37, 0x36, ++ 0x33, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x01, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x39, 0x34, ++ 0x34, 0x50, 0x52, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf0, 0x20, ++ 0x40, 0xa0, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1a, 0x36, 0x36, ++ 0x33, 0x52, 0x54, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x48, 0xfc, 0xc8, ++ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7f, 0x10, 0x1a, 0x36, 0x35, ++ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8, ++ 0xb0, 0xb0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x36, ++ 0x32, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x7d, 0x12, 0x17, 0x39, 0x35, ++ 0x37, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00, ++ 0x08, 0xc8, 0x28, 0xa8, 0xa8, 0xe8, 0x68, 0x28, ++ 0xe8, 0x28, 0x28, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36, ++ 0x36, 0x53, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x19, 0x36, 0x36, ++ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x9c, 0xf4, 0x54, 0x64, 0x98, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x09, 0x09, 0x7f, 0x09, 0x19, 0x1f, 0x1a, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x20, 0x24, 0xe8, 0x30, 0x20, 0xe4, 0x3c, 0x40, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x11, 0x19, 0x37, 0x36, ++ 0x32, 0x52, 0x53, 0x12, 0x10, 0x11, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x17, 0x39, 0x35, ++ 0x37, 0x53, 0x55, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x50, 0x90, 0x10, 0x14, 0x34, 0xf8, 0x58, 0x90, ++ 0x50, 0x50, 0x28, 0x28, 0x44, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x10, 0x1f, 0x35, 0x35, ++ 0x31, 0x51, 0x51, 0x11, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x10, 0xf0, ++ 0x10, 0xf0, 0x1c, 0xf0, 0x10, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x79, 0x17, 0x11, 0x39, 0x37, ++ 0x35, 0x57, 0x50, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x24, 0xe4, 0x24, 0xc4, 0x18, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34, ++ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, ++ 0xe8, 0xf0, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x10, 0x1f, 0x34, 0x34, ++ 0x31, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x60, 0x90, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x35, ++ 0x37, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0xfc, 0xa0, 0xa8, 0x18, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x12, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x10, 0x1f, 0x34, 0x37, ++ 0x30, 0x53, 0x50, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0xf8, 0x10, 0xf0, 0x20, 0xfc, 0xc8, 0x68, ++ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x11, 0x17, 0x39, 0x35, ++ 0x37, 0x53, 0x55, 0x19, 0x11, 0x13, 0x00, 0x00, ++ 0x10, 0xd0, 0x90, 0x7c, 0x10, 0xd0, 0x78, 0xb8, ++ 0x38, 0x54, 0x54, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x7e, 0x13, 0x1a, 0x36, 0x37, ++ 0x32, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0xa4, 0xe4, 0xa4, 0xb8, 0xa0, 0xa0, 0x00, 0x00, ++ 0x11, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3f, 0x3c, ++ 0x36, 0x55, 0x56, 0x15, 0x14, 0x15, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x12, 0x38, 0x37, ++ 0x34, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0x48, 0x40, 0xfc, ++ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x13, 0x1b, 0x36, 0x36, ++ 0x33, 0x50, 0x51, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8, ++ 0xf8, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x17, 0x18, 0x35, 0x37, ++ 0x30, 0x53, 0x50, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0xa0, 0x10, 0xe8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7d, 0x11, 0x19, 0x35, 0x34, ++ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x37, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x08, 0xf8, 0x00, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21, ++ 0x5f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x20, 0xa4, 0xa8, 0x30, 0x48, 0x88, 0xfc, 0x08, ++ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x12, 0x1b, 0x36, 0x37, ++ 0x31, 0x51, 0x51, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, ++ 0x50, 0x50, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x12, 0x12, 0x7f, 0x10, 0x1f, 0x34, 0x35, ++ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7c, 0x11, 0x19, 0x35, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x09, 0x0e, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x1b, 0x36, 0x35, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x78, 0x48, 0xfc, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x10, 0x17, 0x7c, 0x13, 0x18, 0x37, 0x35, ++ 0x31, 0x52, 0x54, 0x18, 0x17, 0x10, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x04, 0x1f, 0x04, 0x7f, ++ 0x09, 0x1f, 0x63, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x40, 0xf0, 0x40, 0xfc, ++ 0x20, 0xf0, 0x8c, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x22, 0x14, 0x7f, 0x08, 0x2a, 0x2a, 0x3e, 0x09, ++ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x18, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x32, 0x53, 0x54, 0x14, 0x17, 0x14, 0x00, 0x00, ++ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xfc, 0x94, 0x94, 0xf4, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x34, 0x37, ++ 0x31, 0x56, 0x51, 0x16, 0x10, 0x11, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x98, 0xe8, 0x98, 0xe8, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x3e, 0x32, 0x2b, 0x2f, 0x7a, 0x2a, 0x47, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0xf0, 0x90, 0x94, 0x0c, 0xf8, 0x90, 0x60, 0x9c, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x13, 0x1a, 0x37, 0x36, ++ 0x33, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0x50, 0xdc, 0x50, 0xdc, 0x70, ++ 0xdc, 0x50, 0x90, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1a, 0x37, 0x34, ++ 0x32, 0x52, 0x54, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0x40, ++ 0x48, 0x48, 0xd0, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x32, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x19, 0x35, 0x35, ++ 0x30, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1b, 0x36, 0x37, ++ 0x30, 0x50, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0xf8, ++ 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x15, 0x19, 0x36, 0x34, ++ 0x31, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x10, 0x48, 0x48, 0xa0, ++ 0x10, 0xf8, 0x14, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x37, 0x34, ++ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xe4, 0x2c, 0x40, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7d, 0x10, 0x1f, 0x34, 0x37, ++ 0x32, 0x53, 0x52, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0xf8, ++ 0x48, 0xf8, 0x48, 0xfc, 0x44, 0x3c, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x7c, 0x13, 0x12, 0x3b, 0x34, ++ 0x37, 0x50, 0x51, 0x17, 0x11, 0x13, 0x00, 0x00, ++ 0x00, 0x38, 0xe8, 0x28, 0xb0, 0xb0, 0xa8, 0x28, ++ 0xa4, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x11, 0x11, 0x6b, 0x2a, 0x13, 0x1a, 0x2e, 0x77, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0xe8, 0xa8, 0x90, 0x98, 0xac, 0xf4, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x12, 0x19, 0x36, 0x35, ++ 0x36, 0x51, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0xb0, ++ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x11, 0x17, 0x11, 0x7d, 0x13, 0x1a, 0x37, 0x34, ++ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xe0, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35, ++ 0x33, 0x53, 0x55, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xb8, 0xa8, 0xb8, 0xfc, 0x20, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34, ++ 0x33, 0x50, 0x53, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, ++ 0x58, 0x40, 0x58, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x12, 0x13, 0x14, 0x7d, 0x17, 0x15, 0x3d, 0x3f, ++ 0x35, 0x55, 0x57, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x08, 0xe8, 0x98, 0x18, 0xc8, 0x68, 0x58, 0xd8, ++ 0x4c, 0x78, 0xc8, 0x48, 0x48, 0xc8, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, ++ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x7c, 0x11, 0x19, 0x36, 0x36, ++ 0x36, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0x48, 0xb4, 0xa4, 0x00, 0x20, ++ 0xa0, 0xb8, 0xa0, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x11, 0x17, 0x39, 0x35, ++ 0x34, 0x51, 0x57, 0x11, 0x11, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, ++ 0xc8, 0x48, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1a, 0x36, 0x37, ++ 0x33, 0x53, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x12, 0x1a, 0x36, 0x36, ++ 0x33, 0x52, 0x55, 0x15, 0x1a, 0x11, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xa8, 0xe8, 0xa8, ++ 0xe8, 0x90, 0xd0, 0xb4, 0xac, 0xc4, 0x00, 0x00, ++ 0x12, 0x14, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x30, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x48, 0x90, 0x48, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x17, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x34, ++ 0x37, 0x50, 0x57, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50, ++ 0xf8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x11, 0x3a, 0x34, 0x57, 0x51, ++ 0x13, 0x7f, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0xb8, 0x54, 0x94, ++ 0x10, 0xfc, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7e, 0x14, 0x12, 0x3a, 0x34, ++ 0x35, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4, ++ 0xf0, 0x40, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7c, 0x12, 0x1a, 0x34, 0x35, ++ 0x36, 0x53, 0x52, 0x13, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xfc, 0x98, 0x50, 0xa8, 0xa4, 0xd4, 0xf0, ++ 0x40, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x00, 0x00, ++ 0x11, 0x10, 0x13, 0x7c, 0x11, 0x18, 0x37, 0x34, ++ 0x31, 0x50, 0x57, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xc0, ++ 0xc8, 0x68, 0xf0, 0x50, 0x4c, 0xc0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x37, 0x36, ++ 0x33, 0x50, 0x57, 0x11, 0x10, 0x17, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48, ++ 0xf8, 0x80, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7f, 0x12, 0x1a, 0x37, 0x36, ++ 0x33, 0x52, 0x53, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x20, 0xe0, 0x20, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7f, 0x12, 0x1b, 0x35, 0x35, ++ 0x31, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xfc, 0x50, 0xf0, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x10, 0x19, 0x35, 0x35, ++ 0x30, 0x57, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xf0, 0x10, 0xf0, ++ 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x37, 0x36, ++ 0x33, 0x52, 0x53, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x80, ++ 0xf8, 0xa8, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x11, 0x19, 0x35, 0x34, ++ 0x33, 0x52, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35, ++ 0x36, 0x53, 0x56, 0x13, 0x16, 0x11, 0x00, 0x00, ++ 0x30, 0xc0, 0xf0, 0x80, 0xf8, 0x88, 0x78, 0x98, ++ 0x60, 0xb8, 0x60, 0xbc, 0x64, 0xdc, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7d, 0x16, 0x17, 0x3d, 0x3d, ++ 0x35, 0x55, 0x56, 0x14, 0x14, 0x14, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0x78, 0x90, 0xfc, 0x00, 0x78, ++ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00, ++ 0x11, 0x10, 0x12, 0x7d, 0x11, 0x1b, 0x34, 0x35, ++ 0x31, 0x51, 0x51, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0xd0, 0x50, 0xa8, 0xa8, 0x10, 0xf8, 0x04, 0xf0, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7f, 0x13, 0x1a, 0x37, 0x36, ++ 0x33, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x11, 0x1b, 0x35, 0x35, ++ 0x36, 0x57, 0x50, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc, ++ 0x00, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7f, 0x11, 0x18, 0x37, 0x34, ++ 0x31, 0x50, 0x57, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x32, 0x53, 0x52, 0x15, 0x15, 0x18, 0x00, 0x00, ++ 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7f, 0x12, 0x1b, 0x36, 0x37, ++ 0x32, 0x52, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x58, 0x40, 0xfc, ++ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7f, 0x10, 0x19, 0x35, 0x35, ++ 0x31, 0x51, 0x50, 0x12, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x1e, 0x23, 0x7a, 0x2a, 0x3b, ++ 0x0d, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x11, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x35, 0x37, ++ 0x31, 0x51, 0x52, 0x12, 0x14, 0x11, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xbc, 0xe8, 0xe8, 0x28, 0xe8, ++ 0x10, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x13, 0x14, 0x3b, 0x36, ++ 0x37, 0x51, 0x51, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8, ++ 0xb8, 0x10, 0x10, 0xa8, 0x64, 0x44, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x7d, 0x11, 0x1a, 0x37, 0x34, ++ 0x33, 0x52, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3f, 0x52, 0x1f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3f, 0x3e, 0x32, ++ 0x5f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8, ++ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7f, 0x14, 0x17, 0x3d, 0x3f, ++ 0x34, 0x53, 0x52, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x20, 0xe0, 0x20, 0xbc, 0xc0, 0x80, 0x38, 0xc0, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x12, 0x1b, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x13, 0x13, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xfc, 0xf8, 0xe8, ++ 0xb8, 0xf8, 0x50, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x10, 0x1b, 0x34, 0x35, ++ 0x33, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x90, 0xfc, ++ 0x20, 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x3b, 0x36, ++ 0x37, 0x50, 0x57, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8, ++ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7d, 0x11, 0x12, 0x39, 0x37, ++ 0x35, 0x51, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x88, 0x04, 0x00, 0x00, ++ 0x11, 0x17, 0x11, 0x7f, 0x12, 0x15, 0x3f, 0x34, ++ 0x37, 0x50, 0x53, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xfc, 0x08, 0xf0, 0xfc, 0xc8, ++ 0x68, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x11, 0x11, 0x16, 0x7e, 0x11, 0x19, 0x36, 0x37, ++ 0x31, 0x55, 0x55, 0x15, 0x19, 0x11, 0x00, 0x00, ++ 0x10, 0x3c, 0xa8, 0xf8, 0x08, 0xfc, 0xa0, 0xf4, ++ 0x34, 0xd8, 0xb8, 0xd4, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x34, ++ 0x37, 0x55, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, ++ 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x44, 0x00, 0x00, ++ 0x12, 0x12, 0x15, 0x7f, 0x12, 0x15, 0x3f, 0x34, ++ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x14, 0x13, 0x7d, 0x13, 0x13, 0x3d, 0x34, ++ 0x37, 0x50, 0x51, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x40, 0x84, 0xf4, 0x18, 0xf8, 0x14, 0xf4, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x12, 0x1b, 0x36, 0x36, ++ 0x32, 0x52, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8, ++ 0xe8, 0x48, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7c, 0x17, 0x15, 0x3e, 0x3c, ++ 0x34, 0x55, 0x55, 0x19, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf0, 0xd8, 0x94, ++ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x13, 0x12, 0x3b, 0x36, ++ 0x34, 0x57, 0x50, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8, ++ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00, ++ 0x11, 0x12, 0x13, 0x7e, 0x13, 0x1a, 0x37, 0x31, ++ 0x33, 0x55, 0x50, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x98, 0xe8, 0x98, 0xe8, 0xb8, 0xa8, 0xfc, 0x70, ++ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x14, 0x3e, 0x22, 0x3f, 0x3e, 0x22, ++ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xf8, 0x50, 0xfc, 0x20, 0xf8, ++ 0x20, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x12, 0x17, 0x3b, 0x34, ++ 0x37, 0x55, 0x55, 0x15, 0x17, 0x15, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40, ++ 0xfc, 0xb4, 0xb4, 0xb4, 0xfc, 0xb4, 0x00, 0x00, ++ 0x13, 0x1f, 0x68, 0x13, 0x2b, 0x7f, 0x3a, 0x57, ++ 0x11, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x90, 0xd8, 0x68, 0x90, 0xa8, 0xfc, 0xb8, 0xd4, ++ 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x7f, 0x17, 0x15, 0x3f, 0x37, ++ 0x36, 0x53, 0x53, 0x13, 0x11, 0x1e, 0x00, 0x00, ++ 0x20, 0xfc, 0x40, 0xb8, 0xfc, 0x74, 0xfc, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x12, 0x7f, 0x17, 0x3d, 0x57, 0x3f, 0x2a, 0x7b, ++ 0x36, 0x2b, 0x3f, 0x26, 0x38, 0x1f, 0x00, 0x00, ++ 0x10, 0xfc, 0xd0, 0x78, 0xd4, 0xfc, 0x88, 0x90, ++ 0xe8, 0x90, 0xe4, 0x08, 0xb0, 0xc0, 0x00, 0x00, ++ 0x14, 0x1f, 0x14, 0x7f, 0x1b, 0x1f, 0x35, 0x3f, ++ 0x3d, 0x57, 0x57, 0x15, 0x17, 0x14, 0x00, 0x00, ++ 0x80, 0xf8, 0xa8, 0xe8, 0x78, 0xe8, 0x38, 0xe8, ++ 0x28, 0xb8, 0xb0, 0x54, 0xd4, 0x8c, 0x00, 0x00, ++ 0x08, 0x08, 0x0c, 0x12, 0x7d, 0x20, 0x3f, 0x28, ++ 0x48, 0x7f, 0x08, 0x14, 0x23, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x34, 0x1c, 0x6a, 0x08, 0x7f, 0x11, 0x28, ++ 0x7e, 0x2a, 0x2a, 0x2e, 0x29, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x41, 0x21, 0x0a, 0x14, 0x20, 0x21, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x50, 0x60, 0x90, 0x0c, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x0c, 0x12, 0x22, 0x7f, 0x02, ++ 0x3a, 0x2a, 0x2a, 0x3a, 0x02, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x1e, 0x20, 0x7e, 0x23, 0x3e, ++ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x11, 0x1f, ++ 0x29, 0x6d, 0x2b, 0x33, 0x3d, 0x27, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x03, 0x3c, 0x08, 0x7f, 0x08, 0x18, 0x6b, 0x49, ++ 0x49, 0x6b, 0x49, 0x49, 0x7f, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x12, 0x34, 0x7f, 0x14, 0x3f, 0x15, 0x7f, 0x15, ++ 0x3f, 0x16, 0x35, 0x35, 0x54, 0x15, 0x00, 0x00, ++ 0x40, 0x40, 0xc0, 0x40, 0x7c, 0xa4, 0xa8, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f, ++ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x7c, 0xa4, 0xa8, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x3f, 0x5e, 0x12, 0x1f, 0x7f, ++ 0x1b, 0x2d, 0x5b, 0x2d, 0x49, 0x1b, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x07, 0x04, 0x3f, 0x2b, 0x3d, 0x27, 0x2a, ++ 0x3b, 0x3b, 0x3b, 0x2a, 0x4f, 0x39, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xc0, 0x7c, 0xa4, 0xa8, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x0a, 0x11, 0x3f, 0x40, 0x3f, 0x2d, ++ 0x3f, 0x12, 0x1a, 0x17, 0x24, 0x49, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x18, 0x29, 0x2e, 0x28, 0x3f, 0x22, 0x2a, 0x3b, ++ 0x2a, 0x2a, 0x7f, 0x0a, 0x11, 0x61, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0xe4, 0xa8, 0xb0, ++ 0xa0, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x3f, 0x24, ++ 0x7f, 0x24, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0xa4, 0x28, 0x30, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x22, 0x3f, ++ 0x09, 0x2e, 0x28, 0x28, 0x2e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc, ++ 0x28, 0xf8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x02, 0x02, 0x03, 0x04, 0x04, 0x0a, ++ 0x11, 0x21, 0x00, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x20, ++ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x10, 0x1e, 0x13, 0x32, 0x2b, ++ 0x4c, 0x04, 0x08, 0x10, 0x20, 0x47, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x88, 0x08, 0x30, 0xf8, ++ 0x88, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x10, 0x1e, 0x22, 0x33, 0x4a, ++ 0x0c, 0x04, 0x08, 0x11, 0x22, 0x44, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0x40, 0xfc, 0x40, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x1f, 0x22, 0x32, 0x4b, ++ 0x0c, 0x04, 0x09, 0x10, 0x20, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0x44, 0x80, ++ 0x10, 0x60, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x11, 0x1d, 0x25, 0x25, 0x57, ++ 0x18, 0x08, 0x10, 0x11, 0x22, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x11, 0x1d, 0x26, 0x27, 0x54, ++ 0x18, 0x0f, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x48, 0x24, 0x04, 0xf8, 0x10, ++ 0x60, 0xfc, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x13, 0x1c, 0x24, 0x25, 0x54, ++ 0x08, 0x0b, 0x10, 0x10, 0x20, 0x43, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54, ++ 0x7c, 0xc8, 0x50, 0x34, 0xdc, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x11, 0x1c, 0x24, 0x27, 0x54, ++ 0x19, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7d, 0x11, 0x11, 0x1c, 0x25, 0x25, 0x55, ++ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x01, 0x7f, 0x11, 0x13, 0x1d, 0x25, 0x25, 0x57, ++ 0x19, 0x09, 0x12, 0x14, 0x21, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x11, 0x1c, 0x27, 0x26, 0x57, ++ 0x19, 0x09, 0x11, 0x10, 0x27, 0x40, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x00, 0xfc, 0x08, 0xf8, ++ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x13, 0x1c, 0x27, 0x26, 0x57, ++ 0x1a, 0x0b, 0x10, 0x17, 0x20, 0x40, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x15, 0x1d, 0x26, 0x25, 0x57, ++ 0x19, 0x09, 0x11, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf8, 0x50, 0x60, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x02, 0x7e, 0x13, 0x15, 0x38, 0x2f, 0x2a, 0x6e, ++ 0x5a, 0x1e, 0x12, 0x16, 0x23, 0x4e, 0x00, 0x00, ++ 0xa0, 0xb0, 0xe8, 0x68, 0x20, 0xfc, 0xa0, 0xe8, ++ 0xa8, 0xd0, 0xd4, 0x9c, 0xec, 0x44, 0x00, 0x00, ++ 0x01, 0x7d, 0x17, 0x11, 0x3f, 0x2a, 0x2e, 0x6a, ++ 0x5e, 0x1a, 0x16, 0x13, 0x2e, 0x40, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8, ++ 0xe8, 0xd0, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x08, 0x08, 0x10, 0x60, 0x3f, ++ 0x08, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0xe0, ++ 0x20, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x06, 0x38, 0x20, 0x3e, 0x22, 0x3e, 0x23, 0x3f, ++ 0x20, 0x3e, 0x22, 0x22, 0x22, 0x4f, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x94, 0x94, 0x8c, 0x00, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3f, 0x22, 0x5d, ++ 0x00, 0x1c, 0x14, 0x16, 0x24, 0x4b, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x54, 0x8c, 0xf8, ++ 0x88, 0x50, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x41, 0x7f, ++ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x11, 0x11, 0x7f, 0x11, ++ 0x11, 0x11, 0x11, 0x3f, 0x20, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, ++ 0x10, 0x10, 0x10, 0xfc, 0x20, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x20, 0x7e, 0x33, 0x2a, 0x7f, ++ 0x32, 0x2a, 0x3f, 0x22, 0x05, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x30, 0x48, 0xfc, 0x04, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xac, 0x2c, 0x04, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x23, 0x41, 0x0e, 0x70, 0x1f, ++ 0x03, 0x3e, 0x03, 0x7e, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0x10, 0x18, 0x64, 0x84, 0x00, 0xe0, 0x00, ++ 0xf0, 0x00, 0xfc, 0x00, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x08, 0x73, 0x10, 0x1e, 0x71, 0x11, 0x1c, ++ 0x71, 0x16, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x50, 0x48, 0xf8, 0x40, 0x48, 0x68, 0x70, 0xd0, ++ 0x48, 0x44, 0x40, 0xc4, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x3f, 0x20, ++ 0x4f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0xfc, 0xc8, ++ 0x00, 0xf0, 0x00, 0xf8, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x0f, 0x03, 0x1e, 0x03, 0x3e, 0x01, 0x06, ++ 0x38, 0x0e, 0x38, 0x0f, 0x79, 0x0f, 0x00, 0x00, ++ 0xc0, 0x00, 0xe0, 0x00, 0xf0, 0x08, 0xf8, 0x18, ++ 0xe0, 0x38, 0xe0, 0x3c, 0xe4, 0x3c, 0x00, 0x00, ++ 0x04, 0x09, 0x71, 0x12, 0x1c, 0x71, 0x12, 0x1d, ++ 0x71, 0x12, 0x10, 0x11, 0x12, 0x0f, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0x60, 0x90, 0x50, 0x48, 0x48, ++ 0x50, 0x60, 0x90, 0x14, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x26, 0x36, 0x37, 0x24, ++ 0x27, 0x21, 0x2f, 0x21, 0x3f, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xfc, 0xb0, 0xb4, 0x2c, 0x60, ++ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x3f, 0x2e, 0x2a, 0x2e, 0x3f, 0x1f, ++ 0x11, 0x1f, 0x1f, 0x11, 0x1f, 0x70, 0x00, 0x00, ++ 0x08, 0xd0, 0xe0, 0xa0, 0xb8, 0xe0, 0xa0, 0x20, ++ 0x3c, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x12, 0x7f, 0x42, 0x42, 0x43, ++ 0x42, 0x46, 0x3e, 0x02, 0x03, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc, ++ 0x40, 0x20, 0x24, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x10, ++ 0x10, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x0f, ++ 0x10, 0x7f, 0x04, 0x08, 0x10, 0x63, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xf0, 0x10, ++ 0x90, 0xf0, 0x94, 0x8c, 0x8c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x1f, ++ 0x12, 0x1f, 0x15, 0x18, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0xd0, ++ 0x50, 0xd0, 0x54, 0xcc, 0xcc, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x10, 0x3f, 0x40, 0x3f, 0x12, ++ 0x0a, 0x3f, 0x07, 0x0a, 0x32, 0x02, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x00, 0xe0, 0x00, 0xf0, 0x50, ++ 0x90, 0xd0, 0x14, 0x8c, 0x4c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x7d, ++ 0x05, 0x09, 0x09, 0x11, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x88, 0x88, ++ 0x50, 0x60, 0x20, 0x10, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0xf8, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x20, 0x23, 0x00, 0x08, ++ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x20, 0x20, 0x03, 0x08, ++ 0x08, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x40, 0x21, 0x21, 0x01, 0x09, ++ 0x0b, 0x12, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x10, 0x10, ++ 0xf0, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x42, 0x22, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x2f, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x02, 0x0a, ++ 0x0a, 0x14, 0x14, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0x80, 0x80, 0x80, 0x88, 0x84, ++ 0x84, 0x80, 0x80, 0x88, 0x88, 0x78, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x41, 0x22, 0x22, 0x07, 0x08, ++ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0xe0, 0x20, 0x20, 0x10, 0x10, 0x08, 0xf4, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x24, 0x27, 0x2c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x41, 0x22, 0x24, 0x00, 0x0b, ++ 0x09, 0x10, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x70, 0x00, 0xf8, ++ 0x08, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x27, 0x20, 0x00, 0x08, ++ 0x09, 0x11, 0x12, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x42, 0x27, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0x50, 0xfc, 0x50, 0x50, 0x50, ++ 0x50, 0x70, 0x50, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a, ++ 0x0f, 0x10, 0x10, 0x20, 0x23, 0x2c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x48, ++ 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x24, 0x04, 0x0f, ++ 0x0d, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x30, 0x48, 0x48, 0x5c, 0xe4, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x00, 0x0b, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0f, 0x0d, 0x45, 0x25, 0x25, 0x05, 0x0d, ++ 0x0e, 0x16, 0x14, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x58, ++ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0f, 0x0c, 0x44, 0x24, 0x24, 0x04, 0x0c, ++ 0x0d, 0x15, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x88, 0x88, 0x88, 0x88, 0xc8, ++ 0x48, 0x28, 0x18, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x22, 0x23, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x28, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x00, 0x00, 0xfc, 0x20, 0xe0, ++ 0x30, 0x28, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x21, 0x21, 0x01, 0x09, ++ 0x09, 0x11, 0x11, 0x21, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x01, 0x09, ++ 0x09, 0x11, 0x11, 0x21, 0x21, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x00, 0x00, 0x08, 0x30, ++ 0xc0, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x20, 0x20, 0x00, 0x0b, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x22, 0x03, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x20, 0x27, 0x00, 0x08, ++ 0x08, 0x10, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10, ++ 0x10, 0x20, 0x40, 0x80, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0b, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x2e, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x48, 0x40, 0xfc, ++ 0x20, 0x20, 0x10, 0x14, 0xcc, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x41, 0x21, 0x22, 0x00, 0x0f, ++ 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x50, 0x48, 0x48, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x22, 0x23, 0x02, 0x0a, ++ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x23, 0x20, 0x03, 0x0a, ++ 0x0b, 0x12, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x40, ++ 0xfc, 0x44, 0x58, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x12, 0x11, 0x21, 0x48, 0x0c, 0x12, 0x12, 0x30, ++ 0x51, 0x11, 0x12, 0x12, 0x14, 0x14, 0x00, 0x00, ++ 0x00, 0x78, 0x00, 0x00, 0x00, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x43, 0x22, 0x24, 0x0e, 0x15, ++ 0x14, 0x25, 0x26, 0x47, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0x48, 0x68, 0xa8, ++ 0xa8, 0x68, 0x28, 0xe8, 0x28, 0x30, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x43, 0x22, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x21, 0x23, 0x04, 0x08, ++ 0x0b, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0a, 0x41, 0x21, 0x20, 0x07, 0x08, ++ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x50, 0x40, 0xfc, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x22, 0x24, 0x07, 0x08, ++ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x41, 0x22, 0x23, 0x06, 0x0b, ++ 0x0a, 0x13, 0x12, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xf8, 0x08, 0xc8, 0x48, 0xc8, ++ 0x48, 0xc8, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x41, 0x2f, 0x22, 0x02, 0x0a, ++ 0x0a, 0x17, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x78, 0x28, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x41, 0x27, 0x25, 0x05, 0x0d, ++ 0x0d, 0x16, 0x16, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x58, ++ 0x58, 0x38, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0f, 0x0a, 0x42, 0x23, 0x24, 0x04, 0x0e, ++ 0x09, 0x11, 0x11, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x08, 0xc8, 0x28, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0x28, 0x28, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x27, 0x20, 0x00, 0x0f, ++ 0x08, 0x10, 0x11, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf8, 0x00, 0x00, 0xfc, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x20, 0x03, 0x0a, ++ 0x0b, 0x12, 0x13, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x20, 0x07, 0x08, ++ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x80, 0x80, 0xfc, 0x80, ++ 0x20, 0x20, 0x50, 0x48, 0xfc, 0x84, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x02, 0x0c, ++ 0x09, 0x13, 0x14, 0x20, 0x21, 0x2e, 0x00, 0x00, ++ 0x40, 0x50, 0x98, 0xe4, 0x20, 0x24, 0x9c, 0xf0, ++ 0x10, 0x20, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x21, 0x21, 0x01, 0x0a, ++ 0x0c, 0x10, 0x10, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x58, 0xe4, ++ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x4f, 0x22, 0x22, 0x02, 0x0a, ++ 0x0b, 0x1e, 0x12, 0x22, 0x22, 0x27, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0x50, 0xd0, ++ 0x50, 0x50, 0x50, 0x90, 0x90, 0x10, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x41, 0x22, 0x22, 0x07, 0x09, ++ 0x0d, 0x15, 0x12, 0x23, 0x24, 0x28, 0x00, 0x00, ++ 0x04, 0x08, 0x70, 0x10, 0x10, 0x50, 0x5c, 0x50, ++ 0x50, 0x50, 0x50, 0x3c, 0x80, 0x7c, 0x00, 0x00, ++ 0x12, 0x09, 0x09, 0x47, 0x20, 0x23, 0x02, 0x0b, ++ 0x0a, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x48, 0xf8, 0x40, 0xfc, ++ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x20, 0x17, 0x10, 0x43, 0x2f, 0x23, 0x00, 0x13, ++ 0x1f, 0x20, 0x27, 0x45, 0x47, 0x40, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xf0, 0xfc, 0xe8, 0x80, 0xf0, ++ 0xfc, 0x10, 0xfc, 0x50, 0x30, 0x30, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08, ++ 0x0b, 0x10, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x22, 0x07, 0x0a, ++ 0x0b, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x50, 0x48, 0xfc, 0x48, ++ 0xf8, 0x48, 0xf8, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x0c, 0x0a, 0x43, 0x27, 0x21, 0x01, 0x0f, ++ 0x09, 0x11, 0x12, 0x24, 0x28, 0x20, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0x28, 0xe8, 0x28, 0x28, 0xe8, ++ 0x28, 0xa8, 0x68, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x12, 0x0a, 0x0b, 0x42, 0x22, 0x22, 0x03, 0x0a, ++ 0x0a, 0x12, 0x13, 0x26, 0x24, 0x28, 0x00, 0x00, ++ 0x08, 0x48, 0x58, 0xd8, 0xe8, 0x48, 0xf8, 0x48, ++ 0xe8, 0xd8, 0x58, 0x48, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x1f, 0x11, 0x41, 0x29, 0x2e, 0x0a, 0x1a, ++ 0x19, 0x2e, 0x28, 0x49, 0x4f, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xa8, 0xa8, 0xc8, 0xc8, ++ 0xa8, 0xa8, 0x98, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x47, 0x21, 0x21, 0x01, 0x09, ++ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x00, 0x0b, ++ 0x08, 0x12, 0x11, 0x21, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xf8, ++ 0x40, 0x48, 0x48, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x23, 0x22, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8, ++ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x09, 0x08, 0x43, 0x27, 0x20, 0x01, 0x09, ++ 0x0b, 0x15, 0x19, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x10, 0xe0, 0xd0, 0x48, 0xfc, 0x80, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x41, 0x21, 0x21, 0x02, 0x0c, ++ 0x08, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0x18, 0xa4, 0x44, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16, ++ 0x16, 0x2a, 0x2a, 0x42, 0x43, 0x42, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0xd0, 0x48, 0x48, 0xa4, 0xa0, ++ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x42, 0x24, 0x23, 0x02, 0x0a, ++ 0x0a, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xf8, 0x08, 0xe8, ++ 0xa8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x23, 0x00, 0x0f, ++ 0x08, 0x13, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x44, 0x04, 0xf8, 0x48, 0xfc, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x00, 0x0b, ++ 0x08, 0x17, 0x10, 0x21, 0x20, 0x27, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x4f, 0x22, 0x23, 0x06, 0x16, ++ 0x16, 0x2a, 0x2a, 0x52, 0x43, 0x42, 0x00, 0x00, ++ 0x08, 0x10, 0x60, 0xc0, 0x40, 0x7c, 0xd0, 0xd0, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x47, 0x20, 0x20, 0x03, 0x08, ++ 0x08, 0x17, 0x10, 0x20, 0x20, 0x27, 0x00, 0x00, ++ 0x90, 0x88, 0xfc, 0x90, 0x50, 0x64, 0x9c, 0xa4, ++ 0xfc, 0x90, 0x50, 0x24, 0xdc, 0x04, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x20, 0x00, 0x0f, ++ 0x08, 0x11, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b, ++ 0x0a, 0x12, 0x14, 0x24, 0x28, 0x33, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0xd0, 0x88, 0x24, 0x90, ++ 0x90, 0xc0, 0xa0, 0x90, 0x88, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x21, 0x01, 0x0a, ++ 0x0c, 0x13, 0x10, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x41, 0x23, 0x24, 0x03, 0x0a, ++ 0x0a, 0x13, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x09, 0x43, 0x22, 0x22, 0x07, 0x0a, ++ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x27, 0x04, 0x0b, ++ 0x0a, 0x13, 0x12, 0x23, 0x22, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x47, 0x25, 0x25, 0x06, 0x0f, ++ 0x08, 0x17, 0x10, 0x20, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0x58, 0x38, 0xf8, ++ 0x80, 0xf8, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x00, 0x0b, ++ 0x0a, 0x12, 0x13, 0x22, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0x10, 0xfc, 0x08, 0xc8, ++ 0x48, 0x48, 0xc8, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x20, 0x11, 0x12, 0x4f, 0x25, 0x25, 0x05, 0x16, ++ 0x14, 0x2f, 0x20, 0x41, 0x46, 0x58, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0xf8, 0x48, 0x58, 0x58, 0x38, ++ 0x88, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x25, 0x20, 0x07, 0x08, ++ 0x09, 0x11, 0x12, 0x24, 0x28, 0x23, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x44, 0xf4, 0x80, 0xfc, 0x80, ++ 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08, ++ 0x0f, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, ++ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x47, 0x20, 0x23, 0x02, 0x0b, ++ 0x0a, 0x13, 0x10, 0x27, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x40, 0x21, 0x26, 0x01, 0x09, ++ 0x09, 0x11, 0x11, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x20, 0x11, 0x1e, 0x42, 0x22, 0x2f, 0x02, 0x17, ++ 0x16, 0x2a, 0x2a, 0x52, 0x42, 0x43, 0x00, 0x00, ++ 0xa0, 0x20, 0x20, 0x24, 0x64, 0xe8, 0x70, 0xa0, ++ 0xb0, 0xb0, 0x50, 0x48, 0x88, 0x04, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x21, 0x21, 0x01, 0x08, ++ 0x0f, 0x10, 0x11, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x70, 0x00, 0xf8, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x08, ++ 0x0f, 0x10, 0x11, 0x22, 0x2c, 0x20, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x44, ++ 0xe4, 0xe8, 0x50, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x10, 0x0a, 0x0a, 0x42, 0x23, 0x20, 0x07, 0x08, ++ 0x0b, 0x12, 0x12, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x41, 0x21, 0x21, 0x00, 0x0b, ++ 0x0a, 0x17, 0x10, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x08, 0xf8, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x09, 0x0f, 0x41, 0x21, 0x27, 0x01, 0x09, ++ 0x09, 0x17, 0x11, 0x22, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0xfc, 0x10, 0x10, 0x7c, 0x90, 0x10, 0x7c, ++ 0x90, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f, ++ 0x19, 0x29, 0x2f, 0x49, 0x40, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x70, 0x68, 0x68, 0xa4, 0x2c, ++ 0x28, 0x70, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x41, 0x27, 0x25, 0x05, 0x0d, ++ 0x0d, 0x15, 0x15, 0x25, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x00, 0xf8, 0x28, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x28, 0x17, 0x11, ++ 0x12, 0x23, 0x2e, 0x42, 0x42, 0x47, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xf8, 0xa8, 0x28, 0x28, ++ 0x28, 0xa8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x22, 0x1f, 0x12, 0x43, 0x20, 0x2f, 0x08, 0x1e, ++ 0x1a, 0x2a, 0x2d, 0x48, 0x48, 0x48, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xe0, 0x80, 0xf8, 0x88, 0xe8, ++ 0xa8, 0xa8, 0xd8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x11, 0x08, 0x08, 0x41, 0x23, 0x2c, 0x07, 0x0c, ++ 0x0e, 0x15, 0x16, 0x25, 0x24, 0x25, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x12, 0x0a, 0x0a, 0x42, 0x2f, 0x22, 0x02, 0x0b, ++ 0x0a, 0x12, 0x12, 0x24, 0x24, 0x2b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0xf8, 0x08, 0x90, ++ 0x90, 0xfc, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f, ++ 0x12, 0x27, 0x26, 0x4a, 0x52, 0x42, 0x00, 0x00, ++ 0x08, 0x28, 0xe8, 0x28, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0x28, 0x28, 0xa8, 0x88, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x21, 0x00, 0x08, ++ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x18, 0xf0, 0x88, 0x44, 0x54, 0x90, 0xa0, 0x50, ++ 0xf8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x40, 0x27, 0x20, 0x01, 0x0f, ++ 0x08, 0x13, 0x12, 0x22, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0xf8, ++ 0x08, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x09, ++ 0x09, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x48, 0x48, ++ 0x50, 0xfc, 0xa0, 0xa0, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x0f, 0x0c, 0x47, 0x24, 0x25, 0x06, 0x0d, ++ 0x0e, 0x15, 0x16, 0x25, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x88, 0xd8, 0xd8, 0x68, ++ 0xe8, 0x58, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x24, 0x23, 0x01, 0x08, ++ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0x40, 0xf8, 0x10, 0xa0, ++ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x27, 0x05, 0x09, ++ 0x0f, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x28, 0xd0, ++ 0x1c, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x28, 0x14, 0x15, 0x4f, 0x22, 0x2a, 0x0a, 0x1a, ++ 0x1f, 0x2a, 0x22, 0x42, 0x44, 0x49, 0x00, 0x00, ++ 0x80, 0xb8, 0x28, 0xe8, 0x28, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0x48, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x41, 0x22, 0x25, 0x01, 0x09, ++ 0x09, 0x12, 0x13, 0x25, 0x29, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0, ++ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x0a, 0x0a, 0x43, 0x22, 0x23, 0x02, 0x08, ++ 0x0b, 0x11, 0x10, 0x20, 0x21, 0x2e, 0x00, 0x00, ++ 0x40, 0x58, 0x48, 0x58, 0x48, 0x58, 0x48, 0x40, ++ 0xf8, 0x10, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x42, 0x24, 0x20, 0x03, 0x0a, ++ 0x0a, 0x13, 0x12, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x80, 0x38, 0x08, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x27, 0x24, 0x3f, 0x25, 0x26, ++ 0x3d, 0x24, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xf8, 0xa0, 0xfc, 0x50, 0x48, ++ 0x54, 0xd0, 0xe0, 0x50, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x25, 0x24, 0x07, 0x14, ++ 0x15, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, ++ 0xf8, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x02, 0x0b, ++ 0x0a, 0x10, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00, ++ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x41, 0x20, 0x27, 0x04, 0x08, ++ 0x0f, 0x10, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40, ++ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x45, 0x21, 0x21, 0x01, 0x09, ++ 0x08, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x23, 0x3c, 0x20, 0x22, 0x1e, 0x08, 0x0a, ++ 0x7a, 0x1c, 0x2c, 0x2a, 0x49, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x49, 0x29, 0x2f, 0x09, 0x1f, ++ 0x18, 0x2f, 0x28, 0x4f, 0x48, 0x49, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x50, 0x50, 0x50, 0xfc, 0x20, ++ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x13, ++ 0x16, 0x1b, 0x23, 0x22, 0x43, 0x42, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x20, 0xfc, ++ 0x40, 0xf8, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x20, 0x1f, 0x10, 0x47, 0x24, 0x27, 0x05, 0x15, ++ 0x15, 0x27, 0x26, 0x4b, 0x4a, 0x51, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x10, ++ 0xf0, 0xf8, 0x48, 0xf8, 0x04, 0xfc, 0x00, 0x00, ++ 0x20, 0x17, 0x10, 0x4f, 0x20, 0x27, 0x00, 0x17, ++ 0x10, 0x27, 0x25, 0x45, 0x47, 0x45, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x50, 0x90, 0x10, 0x10, ++ 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x0f, 0x09, 0x42, 0x2f, 0x22, 0x02, 0x0b, ++ 0x08, 0x11, 0x1f, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0xfc, 0x10, 0x08, 0xf4, 0x10, 0x10, 0xf0, ++ 0xc8, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x24, 0x24, 0x3f, 0x04, 0x7f, 0x15, 0x24, 0x45, ++ 0x01, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0xf0, 0x90, 0xfc, 0x90, 0x30, ++ 0x08, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x41, 0x21, 0x22, 0x07, 0x08, ++ 0x0b, 0x1d, 0x10, 0x21, 0x20, 0x23, 0x00, 0x00, ++ 0x40, 0x90, 0xf8, 0x10, 0x98, 0x64, 0xfc, 0xa0, ++ 0x50, 0xac, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x2a, 0x0a, 0x1f, ++ 0x13, 0x26, 0x26, 0x4a, 0x52, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0x20, 0xfc, 0xe4, 0xa8, 0xb0, ++ 0x20, 0xa0, 0xd0, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x25, 0x15, 0x1f, 0x45, 0x25, 0x28, 0x0f, 0x18, ++ 0x17, 0x24, 0x24, 0x44, 0x44, 0x40, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0xd4, 0x0c, 0xfc, 0x88, ++ 0xf0, 0x90, 0x90, 0x90, 0xe0, 0x80, 0x00, 0x00, ++ 0x20, 0x1e, 0x12, 0x42, 0x2e, 0x28, 0x08, 0x1f, ++ 0x1a, 0x22, 0x22, 0x42, 0x42, 0x4d, 0x00, 0x00, ++ 0x00, 0xf8, 0x80, 0xf0, 0x80, 0xf0, 0x80, 0xfc, ++ 0xa8, 0xa8, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x45, 0x25, 0x2d, 0x15, 0x15, ++ 0x15, 0x25, 0x25, 0x45, 0x45, 0x44, 0x00, 0x00, ++ 0x20, 0x20, 0x7c, 0x48, 0xb0, 0x30, 0xec, 0x20, ++ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x11, 0x0f, 0x08, 0x43, 0x20, 0x27, 0x03, 0x09, ++ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xf0, 0xc0, ++ 0x68, 0xe8, 0xd0, 0x48, 0x44, 0xc0, 0x00, 0x00, ++ 0x20, 0x1f, 0x14, 0x47, 0x24, 0x25, 0x07, 0x10, ++ 0x1f, 0x28, 0x29, 0x4f, 0x48, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0x50, 0x50, 0xd0, 0x30, 0xf0, 0x80, ++ 0xf8, 0xc8, 0x28, 0xd8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x40, 0x27, 0x24, 0x06, 0x0d, ++ 0x0e, 0x15, 0x15, 0x26, 0x27, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0xa8, 0x68, 0x68, ++ 0xd8, 0xc8, 0xa8, 0x58, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x47, 0x21, 0x27, 0x01, 0x09, ++ 0x0e, 0x17, 0x10, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x47, 0x25, 0x24, 0x07, 0x14, ++ 0x17, 0x24, 0x29, 0x4f, 0x51, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0xf0, 0x60, 0xfc, 0x40, ++ 0xf8, 0x88, 0x90, 0x7c, 0x10, 0x30, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2a, 0x2a, 0x0a, 0x13, ++ 0x12, 0x23, 0x22, 0x43, 0x44, 0x48, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xd8, 0xdc, 0x94, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x20, 0x12, 0x12, 0x42, 0x22, 0x2f, 0x02, 0x1a, ++ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x10, 0x50, ++ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x20, 0x1f, 0x12, 0x4a, 0x26, 0x24, 0x0b, 0x12, ++ 0x1b, 0x2a, 0x2a, 0x4b, 0x4e, 0x58, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xe8, 0xa8, 0xc8, 0xb0, 0x10, ++ 0xdc, 0x50, 0x50, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x47, 0x20, 0x23, 0x07, 0x09, ++ 0x09, 0x16, 0x17, 0x21, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0xb8, 0x28, ++ 0xb8, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x22, 0x1f, 0x1a, 0x4a, 0x2f, 0x26, 0x07, 0x1a, ++ 0x13, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00, ++ 0x10, 0xfc, 0x50, 0x50, 0xfc, 0xb0, 0x34, 0x4c, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x26, 0x16, 0x1f, 0x4a, 0x3f, 0x25, 0x05, 0x15, ++ 0x1b, 0x22, 0x23, 0x42, 0x43, 0x42, 0x00, 0x00, ++ 0x30, 0x30, 0xfc, 0x50, 0xfc, 0x30, 0xb4, 0x4c, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x23, 0x01, 0x09, ++ 0x09, 0x11, 0x11, 0x27, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x22, 0x1a, 0x1a, 0x4a, 0x2f, 0x20, 0x0f, 0x10, ++ 0x1f, 0x22, 0x2f, 0x42, 0x43, 0x5c, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xbc, 0x48, 0xe8, 0xa8, ++ 0xb0, 0x10, 0x90, 0x28, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x0b, 0x09, 0x47, 0x23, 0x22, 0x03, 0x0a, ++ 0x0b, 0x10, 0x13, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x41, 0x2f, 0x20, 0x01, 0x0e, ++ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x4c, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x11, 0x09, 0x0f, 0x41, 0x27, 0x20, 0x07, 0x0c, ++ 0x0f, 0x14, 0x12, 0x22, 0x23, 0x2c, 0x00, 0x00, ++ 0x10, 0x10, 0xe0, 0x28, 0xc8, 0x10, 0xd0, 0x64, ++ 0xc4, 0x88, 0x88, 0xd0, 0x20, 0x40, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x43, 0x22, 0x22, 0x03, 0x08, ++ 0x0b, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x04, 0x17, ++ 0x14, 0x27, 0x25, 0x4a, 0x4c, 0x50, 0x00, 0x00, ++ 0x40, 0xfc, 0xd8, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, ++ 0xa8, 0xf8, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x44, 0x23, 0x23, 0x0d, 0x09, ++ 0x09, 0x11, 0x12, 0x22, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x23, 0x22, 0x03, 0x0a, ++ 0x0b, 0x10, 0x17, 0x20, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, ++ 0x58, 0x40, 0xfc, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x22, 0x12, 0x1f, 0x42, 0x2f, 0x29, 0x0f, 0x19, ++ 0x1f, 0x22, 0x3f, 0x42, 0x42, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0xb0, 0x50, 0x48, 0xfc, 0x20, 0x20, ++ 0xfc, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x41, 0x20, 0x27, 0x04, 0x0f, ++ 0x08, 0x17, 0x10, 0x21, 0x26, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xbc, 0xa4, 0xbc, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x20, 0x23, 0x00, 0x0f, ++ 0x09, 0x17, 0x10, 0x23, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x20, 0x13, 0x1c, 0x47, 0x24, 0x27, 0x04, 0x17, ++ 0x14, 0x24, 0x25, 0x49, 0x49, 0x51, 0x00, 0x00, ++ 0x80, 0xf0, 0x40, 0xfc, 0xa4, 0x1c, 0xf0, 0xfc, ++ 0xf0, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x0b, 0x09, 0x07, 0x41, 0x23, 0x22, 0x0b, ++ 0x0a, 0x13, 0x12, 0x23, 0x21, 0x2e, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0xfc, 0x10, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x43, 0x22, 0x27, 0x03, 0x08, ++ 0x0b, 0x1c, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xa0, ++ 0xf8, 0x04, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x20, 0x1f, 0x11, 0x4f, 0x25, 0x25, 0x07, 0x1a, ++ 0x13, 0x22, 0x23, 0x42, 0x44, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0x48, 0xb0, 0xa8, 0xa8, 0xb8, 0x14, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x43, 0x22, 0x23, 0x01, 0x0e, ++ 0x0b, 0x12, 0x17, 0x23, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x10, 0xe8, ++ 0x30, 0xa8, 0xfc, 0x48, 0xa4, 0xa4, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x42, 0x25, 0x21, 0x02, 0x09, ++ 0x0f, 0x11, 0x11, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0xe8, 0x10, 0x48, 0xa8, 0xf0, ++ 0x1c, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x20, 0x1f, 0x12, 0x4c, 0x2f, 0x29, 0x0e, 0x1b, ++ 0x1c, 0x29, 0x2e, 0x4b, 0x4c, 0x48, 0x00, 0x00, ++ 0x00, 0xfc, 0xb0, 0x88, 0xf8, 0x98, 0xe8, 0xa8, ++ 0xd8, 0x98, 0xe8, 0xa8, 0xd8, 0x98, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x03, 0x0a, ++ 0x0f, 0x10, 0x13, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x74, 0xf8, 0xa8, ++ 0xfc, 0x00, 0xf8, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x45, 0x22, 0x24, 0x01, 0x0f, ++ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0xf0, 0x58, 0xe4, 0xf8, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x22, 0x13, 0x12, 0x47, 0x24, 0x2c, 0x05, 0x14, ++ 0x14, 0x24, 0x25, 0x44, 0x44, 0x45, 0x00, 0x00, ++ 0x50, 0x54, 0xd8, 0xfc, 0x88, 0x50, 0xfc, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x11, 0x0f, 0x09, 0x43, 0x22, 0x24, 0x07, 0x08, ++ 0x0f, 0x10, 0x13, 0x20, 0x23, 0x20, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8, ++ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x47, 0x22, 0x23, 0x02, 0x0b, ++ 0x08, 0x13, 0x1e, 0x29, 0x25, 0x24, 0x00, 0x00, ++ 0x40, 0xfc, 0x88, 0x38, 0x08, 0xb8, 0x08, 0xf8, ++ 0x80, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x47, 0x21, 0x27, 0x00, 0x0b, ++ 0x0f, 0x12, 0x13, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x40, 0xfc, 0x28, 0xc8, 0x50, 0xfc, 0xe0, 0x58, ++ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x49, 0x2f, 0x29, 0x09, 0x1f, ++ 0x19, 0x29, 0x2f, 0x46, 0x49, 0x51, 0x00, 0x00, ++ 0x50, 0x48, 0x5c, 0xe8, 0x28, 0x34, 0xcc, 0x54, ++ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x47, 0x24, 0x27, 0x0f, 0x12, ++ 0x1f, 0x26, 0x39, 0x42, 0x4c, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xf8, 0x20, ++ 0xfc, 0xb0, 0xcc, 0xb0, 0x88, 0x80, 0x00, 0x00, ++ 0x11, 0x0f, 0x08, 0x41, 0x27, 0x21, 0x02, 0x0d, ++ 0x09, 0x11, 0x11, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x10, 0xfc, 0x40, 0xf0, 0xfc, 0x10, 0xe8, 0xf4, ++ 0x10, 0xf0, 0xf8, 0x50, 0xb0, 0x0c, 0x00, 0x00, ++ 0x22, 0x1f, 0x1d, 0x4b, 0x3e, 0x22, 0x05, 0x1f, ++ 0x12, 0x2f, 0x2a, 0x47, 0x43, 0x4e, 0x00, 0x00, ++ 0x08, 0xc8, 0x68, 0x68, 0xe8, 0x28, 0x28, 0xe8, ++ 0x28, 0xe8, 0xa8, 0x08, 0x88, 0x18, 0x00, 0x00, ++ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x05, 0x15, ++ 0x15, 0x25, 0x25, 0x4a, 0x4a, 0x54, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0xe8, 0x88, 0x78, 0xf0, 0x50, ++ 0xf0, 0x50, 0xf8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x20, 0x1f, 0x12, 0x41, 0x27, 0x24, 0x07, 0x1e, ++ 0x1b, 0x2f, 0x2b, 0x4e, 0x4a, 0x57, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8, ++ 0xe8, 0x68, 0x78, 0xbc, 0xec, 0x44, 0x00, 0x00, ++ 0x24, 0x14, 0x1f, 0x44, 0x2e, 0x2b, 0x0f, 0x1a, ++ 0x1e, 0x25, 0x3e, 0x45, 0x44, 0x44, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0xf8, 0x48, ++ 0xd8, 0x68, 0xd8, 0x68, 0x48, 0xd8, 0x00, 0x00, ++ 0x22, 0x12, 0x1b, 0x44, 0x24, 0x2b, 0x02, 0x16, ++ 0x17, 0x2a, 0x2a, 0x42, 0x42, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0x50, 0xfc, 0x50, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x20, 0x17, 0x15, 0x44, 0x27, 0x25, 0x06, 0x14, ++ 0x15, 0x25, 0x25, 0x49, 0x4f, 0x50, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x90, 0xfc, 0xf8, 0xd4, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x20, 0x10, 0x17, 0x44, 0x27, 0x25, 0x05, 0x15, ++ 0x15, 0x25, 0x27, 0x4a, 0x57, 0x40, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0, ++ 0x50, 0xf0, 0xf8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x22, 0x1f, 0x12, 0x47, 0x20, 0x3f, 0x07, 0x1a, ++ 0x1e, 0x2f, 0x28, 0x4e, 0x4a, 0x52, 0x00, 0x00, ++ 0x20, 0xfc, 0xa0, 0xf0, 0x90, 0xfc, 0xf0, 0xa8, ++ 0xb8, 0xf8, 0x88, 0xb8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x20, 0x1f, 0x12, 0x43, 0x2f, 0x29, 0x09, 0x1f, ++ 0x1b, 0x23, 0x23, 0x43, 0x43, 0x4d, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0x24, 0xfc, 0x6c, 0xfc, 0x6c, ++ 0xb4, 0x6c, 0xfc, 0x6c, 0xb4, 0x2c, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x0f, 0x1b, ++ 0x1b, 0x2a, 0x2b, 0x49, 0x4e, 0x48, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0x48, 0xf8, 0xf8, 0xe8, ++ 0xe8, 0xa8, 0xe8, 0xc8, 0xb8, 0x98, 0x00, 0x00, ++ 0x22, 0x12, 0x13, 0x44, 0x27, 0x28, 0x0f, 0x1b, ++ 0x1b, 0x2f, 0x24, 0x44, 0x4b, 0x52, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xa0, 0xfc, 0x48, 0xe8, 0x68, ++ 0x68, 0xd0, 0x90, 0xa8, 0x68, 0x44, 0x00, 0x00, ++ 0x20, 0x1f, 0x10, 0x4f, 0x2d, 0x2f, 0x09, 0x1f, ++ 0x19, 0x2f, 0x2b, 0x4a, 0x53, 0x6c, 0x00, 0x00, ++ 0x00, 0x7c, 0x00, 0x78, 0xe8, 0xfc, 0x40, 0xf8, ++ 0x48, 0xf8, 0xc8, 0x70, 0xc4, 0x3c, 0x00, 0x00, ++ 0x24, 0x17, 0x1a, 0x44, 0x2e, 0x25, 0x0f, 0x1d, ++ 0x17, 0x20, 0x27, 0x47, 0x48, 0x40, 0x00, 0x00, ++ 0xc8, 0xec, 0x14, 0xc8, 0xdc, 0xe8, 0x3c, 0xec, ++ 0xf0, 0x10, 0xf0, 0xf8, 0x08, 0xf0, 0x00, 0x00, ++ 0x01, 0x03, 0x0d, 0x34, 0x02, 0x07, 0x79, 0x09, ++ 0x09, 0x11, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xa0, 0xc0, 0x00, 0x08, 0x08, ++ 0x10, 0x20, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2c, 0x28, 0x49, ++ 0x08, 0x0c, 0x12, 0x12, 0x21, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0xa4, 0x2c, ++ 0x68, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3a, 0x32, 0x52, ++ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x16, 0x36, 0x3b, 0x32, 0x52, ++ 0x12, 0x1a, 0x16, 0x26, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xb8, 0x38, 0x18, 0xe8, ++ 0xa8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2a, 0x48, ++ 0x08, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x78, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x0a, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, ++ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x0a, 0x2d, 0x29, 0x2b, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, ++ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xf8, 0x48, 0x48, ++ 0x68, 0x98, 0x98, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x17, 0x30, 0x50, 0x11, 0x12, ++ 0x14, 0x10, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x48, ++ 0x44, 0x40, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x0f, 0x00, 0x01, 0x3f, 0x05, 0x09, 0x11, ++ 0x63, 0x1f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x88, 0x48, 0x50, 0x20, 0x10, ++ 0x0c, 0xf0, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x0a, 0x2a, 0x2d, 0x28, 0x48, ++ 0x0b, 0x0c, 0x12, 0x12, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x50, 0x20, 0xd8, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x09, 0x09, 0x7f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x1a, 0x15, 0x24, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xf0, ++ 0x00, 0xf8, 0x48, 0x28, 0x08, 0x70, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x0b, 0x2e, 0x28, 0x2f, 0x4b, ++ 0x08, 0x0d, 0x12, 0x13, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x4c, 0xf8, ++ 0x40, 0xf0, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x47, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xf8, 0x20, ++ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x0b, 0x2a, 0x2c, 0x2b, 0x48, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x16, 0x37, 0x3a, 0x32, 0x53, ++ 0x12, 0x1f, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0x40, 0xf8, 0xa8, 0xb8, 0x18, ++ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x2b, 0x29, 0x29, 0x2b, 0x22, ++ 0x3f, 0x20, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44, ++ 0x44, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x2f, 0x2a, 0x2f, 0x29, 0x29, 0x2f, 0x2a, ++ 0x2f, 0x48, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x78, 0x48, 0x40, 0x44, ++ 0xc4, 0x3c, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3d, 0x25, 0x25, ++ 0x3d, 0x24, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0xe8, ++ 0x28, 0x08, 0x30, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20, 0x5f, ++ 0x02, 0x02, 0x1f, 0x02, 0x02, 0x02, 0x00, 0x00, ++ 0x20, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08, 0xf0, ++ 0x10, 0x10, 0xd4, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x48, ++ 0x0b, 0x08, 0x15, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, ++ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x0b, 0x2a, 0x2d, 0x28, 0x4b, ++ 0x08, 0x0c, 0x12, 0x11, 0x22, 0x45, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x40, 0xfc, ++ 0x40, 0xf8, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x0b, 0x2b, 0x2d, 0x28, 0x4b, ++ 0x09, 0x0d, 0x16, 0x14, 0x21, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xfc, ++ 0x00, 0xf8, 0xa8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x15, 0x13, 0x1f, ++ 0x01, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00, ++ 0x30, 0xc0, 0x00, 0xfc, 0xf0, 0x50, 0x90, 0xf0, ++ 0x00, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x17, 0x37, 0x3b, 0x32, 0x53, ++ 0x10, 0x1b, 0x14, 0x27, 0x22, 0x44, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xf8, 0x58, 0xe8, 0xf8, ++ 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x54, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x0b, 0x2b, 0x2d, 0x29, 0x49, ++ 0x09, 0x0c, 0x12, 0x12, 0x24, 0x40, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x0b, 0x2a, 0x2d, 0x29, 0x49, ++ 0x09, 0x0d, 0x13, 0x13, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x2e, 0x3f, 0x36, 0x55, ++ 0x2d, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0xfc, 0x48, 0xa8, 0x28, 0x08, ++ 0x18, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x3e, 0x08, 0x7f, 0x08, 0x7f, 0x08, 0x0e, ++ 0x12, 0x23, 0x4c, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x90, 0x50, 0x50, 0x20, ++ 0x50, 0x88, 0x04, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x17, 0x36, 0x3b, 0x32, 0x52, ++ 0x12, 0x1a, 0x16, 0x26, 0x23, 0x42, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x0f, 0x08, 0x0f, 0x04, ++ 0x7f, 0x0f, 0x08, 0x0f, 0x24, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0xe0, 0x20, 0xe0, 0x40, ++ 0xfc, 0xe0, 0x20, 0xe0, 0x88, 0x44, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x14, 0x36, 0x3f, 0x30, 0x53, ++ 0x12, 0x1b, 0x16, 0x27, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0xa8, 0xa0, 0xfc, 0x20, 0xe8, ++ 0x58, 0xd0, 0x54, 0xec, 0x4c, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x17, 0x35, 0x3b, 0x31, 0x51, ++ 0x16, 0x1b, 0x14, 0x24, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x14, 0x37, 0x3a, 0x33, 0x50, ++ 0x13, 0x18, 0x15, 0x27, 0x21, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0x20, 0xfc, 0xc8, 0xa8, 0x28, ++ 0xb0, 0x90, 0xd0, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x15, 0x37, 0x38, 0x31, 0x52, ++ 0x17, 0x1a, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0x50, 0xfc, 0xe0, 0x50, 0x48, ++ 0xfc, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x16, 0x35, 0x3b, 0x35, 0x51, ++ 0x11, 0x19, 0x15, 0x25, 0x22, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0x10, 0xf8, 0x14, 0xf0, ++ 0x10, 0xf0, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x16, 0x37, 0x3a, 0x33, 0x52, ++ 0x12, 0x1b, 0x17, 0x24, 0x21, 0x46, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, ++ 0xd8, 0x48, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x11, 0x16, 0x15, 0x14, 0x3f, 0x3c, 0x34, 0x57, ++ 0x11, 0x1b, 0x15, 0x25, 0x21, 0x46, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xac, 0xc4, 0xf8, ++ 0x28, 0xa8, 0x10, 0x10, 0xa8, 0x44, 0x00, 0x00, ++ 0x12, 0x11, 0x11, 0x14, 0x36, 0x39, 0x31, 0x57, ++ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00, ++ 0x30, 0x50, 0x48, 0x84, 0xfc, 0x24, 0xf4, 0x38, ++ 0xd8, 0x34, 0xd4, 0x10, 0xe0, 0x7c, 0x00, 0x00, ++ 0x12, 0x11, 0x11, 0x15, 0x36, 0x39, 0x31, 0x57, ++ 0x11, 0x19, 0x15, 0x25, 0x22, 0x44, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x48, 0x50, 0xfc, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x17, 0x34, 0x3b, 0x30, 0x57, ++ 0x12, 0x1c, 0x17, 0x22, 0x22, 0x47, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0x40, 0xfc, ++ 0xa8, 0x54, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x7a, 0x1e, 0x6c, 0x1a, 0x6a, ++ 0x31, 0x09, 0x09, 0x12, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf4, 0x34, 0xd8, 0x34, 0xd4, ++ 0x60, 0x10, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x10, 0x17, 0x12, 0x15, 0x36, 0x34, 0x3a, 0x53, ++ 0x16, 0x1f, 0x17, 0x26, 0x23, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x20, 0xf8, ++ 0x40, 0xf0, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x12, 0x12, 0x15, 0x17, 0x36, 0x3d, 0x37, 0x50, ++ 0x17, 0x10, 0x19, 0x26, 0x24, 0x40, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xac, 0xe8, 0xb4, 0xfc, 0x40, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x14, 0x3f, 0x3d, 0x35, 0x55, ++ 0x15, 0x15, 0x1f, 0x26, 0x2a, 0x57, 0x00, 0x00, ++ 0x80, 0xf8, 0xfc, 0xc8, 0x78, 0xf0, 0x50, 0xf0, ++ 0x50, 0xf0, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, ++ 0x10, 0x17, 0x14, 0x1f, 0x3c, 0x37, 0x37, 0x55, ++ 0x15, 0x15, 0x1d, 0x2c, 0x27, 0x44, 0x00, 0x00, ++ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xfc, 0xfc, 0xf4, ++ 0x54, 0xf4, 0xf4, 0xe4, 0x54, 0x4c, 0x00, 0x00, ++ 0x0f, 0x15, 0x1f, 0x1e, 0x17, 0x3f, 0x24, 0x7f, ++ 0x0e, 0x35, 0x7f, 0x15, 0x6a, 0x1c, 0x00, 0x00, ++ 0xf0, 0xd0, 0xf0, 0xf0, 0xd0, 0xfc, 0x28, 0xfc, ++ 0x70, 0xac, 0xfc, 0x30, 0xcc, 0x70, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x11, 0x21, 0x5f, 0x01, 0x7f, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x30, 0xe0, 0x10, 0x08, 0x08, 0xf0, 0x10, 0xfc, ++ 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x06, 0x3a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x2a, 0x29, 0x29, 0x28, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x80, ++ 0x84, 0x84, 0x7c, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x10, 0x2f, 0x42, 0x7f, 0x04, ++ 0x07, 0x0a, 0x09, 0x10, 0x23, 0x5c, 0x00, 0x00, ++ 0x30, 0xe0, 0x10, 0x88, 0xf8, 0x00, 0xfc, 0x00, ++ 0xf0, 0x20, 0x40, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x11, 0x2f, 0x48, 0x0f, 0x08, ++ 0x08, 0x0f, 0x15, 0x1a, 0x2a, 0x50, 0x00, 0x00, ++ 0x30, 0xe0, 0x10, 0x08, 0xe8, 0x20, 0xf0, 0x10, ++ 0x10, 0xfc, 0x24, 0x94, 0x04, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x01, 0x06, 0x38, 0x04, 0x04, ++ 0x02, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x20, 0x40, 0x80, 0x60, 0x10, 0x40, 0x40, 0x40, ++ 0x80, 0x80, 0x00, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x05, 0x65, 0x19, 0x09, 0x15, 0x21, 0x45, ++ 0x25, 0x19, 0x09, 0x15, 0x27, 0x40, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x00, 0x3f, ++ 0x02, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xe0, 0x20, 0x20, 0xe0, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x04, 0x7c, ++ 0x15, 0x15, 0x16, 0x24, 0x24, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x40, 0xe0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x28, 0x2f, 0x29, 0x3b, 0x2c, 0x0f, 0x78, ++ 0x2b, 0x2a, 0x2a, 0x2a, 0x2b, 0x4a, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x58, 0xe4, 0xfc, 0x00, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x24, 0x24, 0x24, 0x25, 0x3e, 0x20, 0x21, 0x3c, ++ 0x24, 0x27, 0x24, 0x24, 0x25, 0x44, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54, ++ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00, ++ 0x28, 0x2f, 0x29, 0x2b, 0x3e, 0x23, 0x23, 0x39, ++ 0x29, 0x29, 0x29, 0x29, 0x29, 0x4e, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x29, 0x29, 0x3f, 0x29, 0x29, 0x49, ++ 0x0f, 0x79, 0x0b, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0xd0, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00, ++ 0x08, 0x0b, 0x28, 0x28, 0x3f, 0x28, 0x28, 0x4b, ++ 0x0c, 0x79, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x1d, 0x1a, 0x2a, 0x49, ++ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0xa8, 0x28, 0x48, 0x88, 0x30, ++ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x3c, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x49, ++ 0x11, 0x1f, 0x21, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x08, 0x48, 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, ++ 0x00, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x09, 0x0f, 0x11, 0x3f, 0x01, 0x09, 0x28, ++ 0x3e, 0x28, 0x4f, 0x79, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x20, 0xa0, ++ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x2b, 0x28, 0x3d, 0x29, 0x29, 0x48, ++ 0x0f, 0x7a, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x29, ++ 0x4f, 0x11, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x20, 0xa8, 0xb0, 0x20, 0x50, 0x88, 0xfc, 0x08, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x29, 0x2b, 0x3e, 0x2b, 0x2b, 0x49, ++ 0x0d, 0x79, 0x09, 0x09, 0x09, 0x0e, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x18, 0xf8, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x08, 0x0b, 0x28, 0x29, 0x3f, 0x29, 0x28, 0x4b, ++ 0x0d, 0x7a, 0x0b, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x90, 0xfc, 0x40, 0xf8, 0xfc, 0xe8, 0xa4, 0xfc, ++ 0xe8, 0xa8, 0xd8, 0xd4, 0x6c, 0xc4, 0x00, 0x00, ++ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18, ++ 0x28, 0x49, 0x09, 0x0a, 0x34, 0x18, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0xfc, 0xc0, 0xc0, 0xc0, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x04, 0x44, 0x28, 0x10, 0x37, 0x48, 0x08, 0x18, ++ 0x28, 0x49, 0x0a, 0x0c, 0x30, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x60, 0x60, 0xa0, ++ 0xa0, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x47, 0x28, 0x10, 0x30, 0x48, 0x0b, 0x18, ++ 0x28, 0x48, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x48, 0x30, 0x13, 0x32, 0x4a, 0x0a, 0x1b, ++ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x48, 0x30, 0x11, 0x31, 0x49, 0x0a, 0x1a, ++ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0x60, ++ 0x60, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b, ++ 0x2a, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x4b, 0x0a, 0x1a, ++ 0x2b, 0x4a, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00, ++ 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xa0, ++ 0xfc, 0xa4, 0xa4, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x48, 0x31, 0x11, 0x33, 0x4c, 0x08, 0x19, ++ 0x2f, 0x4a, 0x0a, 0x0a, 0x33, 0x12, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30, ++ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x45, 0x29, 0x11, 0x31, 0x49, 0x09, 0x19, ++ 0x29, 0x49, 0x09, 0x09, 0x31, 0x17, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf4, ++ 0x44, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4b, 0x0d, 0x18, ++ 0x28, 0x48, 0x08, 0x09, 0x32, 0x1c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0xa0, ++ 0xa0, 0x40, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x48, 0x30, 0x17, 0x31, 0x49, 0x09, 0x1a, ++ 0x2c, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8, ++ 0x44, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x48, 0x0b, 0x1a, ++ 0x2b, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14, ++ 0x14, 0x17, 0x14, 0x14, 0x11, 0x16, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x90, 0x60, 0xe0, 0x1c, 0x50, ++ 0x48, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x04, 0x44, 0x2b, 0x10, 0x30, 0x49, 0x0f, 0x18, ++ 0x29, 0x49, 0x09, 0x09, 0x30, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08, ++ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x12, 0x33, 0x4a, 0x0a, 0x1b, ++ 0x28, 0x48, 0x08, 0x09, 0x32, 0x14, 0x00, 0x00, ++ 0x80, 0x38, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8, ++ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x4f, 0x30, 0x13, 0x30, 0x4f, 0x08, 0x1b, ++ 0x2a, 0x4a, 0x0b, 0x0a, 0x32, 0x12, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x49, 0x31, 0x11, 0x31, 0x49, 0x09, 0x18, ++ 0x2b, 0x4a, 0x0b, 0x0a, 0x33, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x48, 0x37, 0x11, 0x31, 0x4a, 0x0c, 0x18, ++ 0x2f, 0x48, 0x08, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x10, 0xa8, 0x44, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x09, 0x49, 0x31, 0x12, 0x33, 0x4e, 0x0a, 0x1a, ++ 0x2b, 0x4b, 0x0a, 0x0a, 0x32, 0x13, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xfc, 0x80, 0xf8, 0xa0, ++ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x4a, 0x32, 0x13, 0x30, 0x4f, 0x08, 0x1b, ++ 0x2a, 0x4a, 0x0a, 0x0a, 0x32, 0x12, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x40, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x09, 0x19, ++ 0x2a, 0x4d, 0x08, 0x08, 0x3f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x40, 0xf8, ++ 0x40, 0xf0, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x13, 0x32, 0x4b, 0x08, 0x1f, ++ 0x29, 0x49, 0x09, 0x09, 0x31, 0x16, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, ++ 0x48, 0x28, 0x30, 0x10, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x12, 0x32, 0x4f, 0x0c, 0x1b, ++ 0x2a, 0x4b, 0x0a, 0x0b, 0x32, 0x12, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0xfc, 0x08, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x24, 0x24, 0x3f, 0x25, 0x04, 0x7f, 0x25, 0x24, ++ 0x45, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0xfc, 0x10, 0xb0, ++ 0x20, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x09, 0x4f, 0x31, 0x13, 0x32, 0x4b, 0x0a, 0x1b, ++ 0x28, 0x4f, 0x08, 0x08, 0x31, 0x16, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2e, 0x2c, 0x3f, 0x04, 0x3f, ++ 0x04, 0x07, 0x78, 0x15, 0x2a, 0x40, 0x00, 0x00, ++ 0x10, 0x98, 0x94, 0x94, 0x90, 0xfc, 0x10, 0x90, ++ 0x10, 0x90, 0x28, 0x28, 0xc4, 0x84, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x25, 0x35, 0x57, 0x15, 0x17, ++ 0x37, 0x37, 0x57, 0x19, 0x1a, 0x34, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0x50, 0x90, 0xfc, 0x34, 0x58, ++ 0x58, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x48, 0x31, 0x16, 0x33, 0x4b, 0x0a, 0x1b, ++ 0x29, 0x49, 0x09, 0x09, 0x31, 0x11, 0x00, 0x00, ++ 0x40, 0xa0, 0xf0, 0x0c, 0xf8, 0x58, 0xe8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x13, 0x31, 0x49, 0x0a, 0x1f, ++ 0x2a, 0x4b, 0x08, 0x08, 0x37, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x00, 0xf8, 0x88, 0xe8, ++ 0xa8, 0xe8, 0xa8, 0xf8, 0x18, 0x30, 0x00, 0x00, ++ 0x08, 0x4b, 0x32, 0x16, 0x32, 0x4c, 0x0b, 0x1a, ++ 0x2b, 0x48, 0x0f, 0x08, 0x30, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8, ++ 0xf8, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x77, 0x55, 0x77, 0x3f, 0x25, 0x3f, 0x25, 0x3f, ++ 0x7f, 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0x24, 0x20, 0xfc, 0x20, 0x20, ++ 0xa0, 0x30, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x0a, 0x4c, 0x32, 0x13, 0x32, 0x4b, 0x0b, 0x1b, ++ 0x2a, 0x4b, 0x0a, 0x0a, 0x33, 0x16, 0x00, 0x00, ++ 0x48, 0x90, 0x48, 0xf8, 0xe8, 0xa8, 0xf8, 0x68, ++ 0xd8, 0x68, 0xd8, 0x4c, 0x6c, 0x44, 0x00, 0x00, ++ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x2f, 0x29, ++ 0x2f, 0x3f, 0x36, 0x3f, 0x32, 0x52, 0x00, 0x00, ++ 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20, ++ 0x30, 0xb0, 0xd0, 0xc8, 0x88, 0x84, 0x00, 0x00, ++ 0x12, 0x52, 0x2f, 0x22, 0x3f, 0x5a, 0x1a, 0x3f, ++ 0x32, 0x57, 0x16, 0x1a, 0x12, 0x62, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0x48, 0xf8, 0xc8, 0xf8, 0xc8, ++ 0x78, 0x48, 0xf8, 0x30, 0x48, 0x88, 0x00, 0x00, ++ 0x02, 0x02, 0x7a, 0x12, 0x1f, 0x12, 0x7a, 0x12, ++ 0x12, 0x12, 0x1c, 0x64, 0x08, 0x13, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x7d, 0x12, 0x12, 0x17, 0x7a, 0x12, ++ 0x12, 0x12, 0x1a, 0x62, 0x02, 0x02, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0x24, 0x3c, 0xe0, 0x20, 0x20, ++ 0x20, 0x10, 0x14, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7d, 0x11, 0x12, 0x14, 0x7c, 0x11, ++ 0x11, 0x11, 0x1a, 0x64, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0xfc, 0x48, 0x50, 0x40, 0x60, ++ 0x50, 0x48, 0x44, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x12, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x1a, 0x64, 0x05, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x50, 0x40, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x11, 0x11, 0x11, 0x7d, 0x11, ++ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x07, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11, ++ 0x11, 0x11, 0x19, 0x67, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x07, 0x7c, 0x17, 0x14, 0x14, 0x7f, 0x16, ++ 0x16, 0x16, 0x1e, 0x66, 0x08, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x90, 0x90, 0xf0, 0xb0, ++ 0xb0, 0xb0, 0xb4, 0xec, 0x8c, 0x84, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7c, 0x11, ++ 0x17, 0x12, 0x1a, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x80, 0x80, 0xf0, 0x10, 0x20, 0xc0, 0xc0, 0x30, ++ 0xfc, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x07, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x10, ++ 0x13, 0x12, 0x1f, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xb8, 0xa8, 0xa8, 0xb8, 0xa0, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x7d, 0x11, 0x11, 0x11, 0x7d, 0x11, ++ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x08, 0xf8, ++ 0x24, 0x24, 0x18, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x14, 0x17, 0x14, 0x7c, 0x17, ++ 0x14, 0x15, 0x1c, 0x65, 0x06, 0x18, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xe8, ++ 0x64, 0xa4, 0xa4, 0x78, 0x60, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x13, 0x12, 0x12, 0x7f, 0x12, ++ 0x12, 0x12, 0x1c, 0x64, 0x09, 0x12, 0x00, 0x00, ++ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x78, 0xc8, 0x38, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x03, 0x7c, 0x10, 0x11, 0x10, 0x7c, 0x17, ++ 0x10, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0xf0, 0x90, 0x90, 0xfc, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x17, 0x10, 0x10, 0x7f, 0x10, ++ 0x10, 0x11, 0x1f, 0x61, 0x02, 0x04, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0, ++ 0xa0, 0xbc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x02, 0x01, 0x7d, 0x14, 0x12, 0x12, 0x7d, 0x11, ++ 0x11, 0x12, 0x1e, 0x64, 0x05, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x30, 0x48, 0x78, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x07, 0x7c, 0x14, 0x17, 0x14, 0x7c, 0x17, ++ 0x14, 0x14, 0x1f, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x88, 0x00, 0xf8, ++ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x17, 0x10, 0x13, 0x7e, 0x13, ++ 0x12, 0x13, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7e, 0x08, 0x3e, 0x08, 0x7e, 0x02, 0x01, ++ 0x05, 0x14, 0x14, 0x25, 0x46, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x20, 0x20, ++ 0x50, 0x48, 0x84, 0x14, 0x10, 0xf0, 0x00, 0x00, ++ 0x02, 0x02, 0x7c, 0x12, 0x12, 0x10, 0x7f, 0x12, ++ 0x13, 0x12, 0x1a, 0x63, 0x03, 0x02, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28, ++ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x12, 0x12, 0x12, 0x7d, 0x11, ++ 0x11, 0x11, 0x1d, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x00, 0x7c, 0x11, 0x13, 0x14, 0x7f, 0x14, ++ 0x16, 0x15, 0x1e, 0x65, 0x04, 0x05, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x08, 0x0a, 0x2a, 0x2c, 0x55, 0x22, 0x3f, 0x20, ++ 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x28, 0xa8, 0xb0, 0x50, 0x88, 0xfc, 0x08, ++ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x12, 0x13, 0x12, 0x7e, 0x13, ++ 0x10, 0x10, 0x1d, 0x61, 0x02, 0x0c, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x01, 0x7d, 0x12, 0x17, 0x12, 0x7f, 0x12, ++ 0x13, 0x12, 0x1b, 0x60, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0xfc, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0xb0, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x13, 0x12, 0x13, 0x7e, 0x13, ++ 0x12, 0x10, 0x1e, 0x65, 0x09, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x24, 0x94, 0x54, 0x44, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0x03, 0x7e, 0x11, 0x11, 0x10, 0x7f, 0x10, ++ 0x17, 0x12, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x38, 0xc8, 0x48, 0x50, 0x20, 0x40, 0xf8, 0x40, ++ 0xfc, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x07, 0x7d, 0x11, 0x13, 0x12, 0x7f, 0x10, ++ 0x13, 0x10, 0x1d, 0x60, 0x07, 0x00, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xf0, 0xf8, 0x48, 0xf8, 0x40, ++ 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x7d, 0x10, 0x17, 0x11, 0x7d, 0x11, ++ 0x11, 0x15, 0x18, 0x67, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x02, 0x7d, 0x17, 0x11, 0x10, 0x7f, 0x10, ++ 0x11, 0x10, 0x1f, 0x60, 0x01, 0x06, 0x00, 0x00, ++ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0x60, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20, ++ 0xf8, 0x00, 0xf0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x7e, 0x13, 0x12, 0x13, 0x7d, 0x11, ++ 0x11, 0x15, 0x19, 0x67, 0x00, 0x07, 0x00, 0x00, ++ 0x80, 0xf0, 0x20, 0xf8, 0xa8, 0xf8, 0x10, 0xf0, ++ 0xf0, 0x10, 0xf8, 0x10, 0xe0, 0x1c, 0x00, 0x00, ++ 0x01, 0x07, 0x7a, 0x12, 0x17, 0x10, 0x7f, 0x14, ++ 0x17, 0x14, 0x1f, 0x64, 0x04, 0x05, 0x00, 0x00, ++ 0x20, 0xfc, 0xa0, 0xb8, 0xc8, 0x38, 0xa0, 0xb8, ++ 0xa0, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00, ++ 0x00, 0x07, 0x7c, 0x17, 0x17, 0x14, 0x7f, 0x13, ++ 0x14, 0x17, 0x18, 0x61, 0x00, 0x07, 0x00, 0x00, ++ 0x00, 0xbc, 0xa4, 0xbc, 0xbc, 0xa4, 0xbc, 0x28, ++ 0xc4, 0xfc, 0x90, 0xd0, 0x78, 0x84, 0x00, 0x00, ++ 0x00, 0x04, 0x7a, 0x12, 0x10, 0x10, 0x7f, 0x11, ++ 0x11, 0x13, 0x1c, 0x60, 0x01, 0x0e, 0x00, 0x00, ++ 0x84, 0x44, 0x48, 0x10, 0x80, 0x80, 0xfc, 0x10, ++ 0x10, 0xa0, 0x60, 0x50, 0x88, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x19, 0x25, 0x5f, 0x01, 0x7f, ++ 0x11, 0x1d, 0x25, 0x06, 0x06, 0x1d, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x50, 0x70, 0x58, 0x78, 0xc4, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x2b, 0x2b, 0x2b, 0x7f, 0x13, ++ 0x1f, 0x73, 0x15, 0x15, 0x2f, 0x48, 0x00, 0x00, ++ 0x50, 0x90, 0xfc, 0xa8, 0xa8, 0xa8, 0xfc, 0x90, ++ 0x90, 0x7c, 0xd0, 0xd0, 0x30, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x12, 0x1a, ++ 0x16, 0x16, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1b, 0x16, ++ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x24, 0x04, 0xfc, 0x00, 0x00, ++ 0x07, 0x04, 0x19, 0x61, 0x02, 0x1f, 0x00, 0x7f, ++ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00, ++ 0xc0, 0x40, 0x30, 0x8c, 0x60, 0x90, 0x00, 0xfc, ++ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x12, 0x1a, 0x16, ++ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x20, 0x2c, 0xf0, 0x20, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0x20, 0x28, 0x1c, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x13, 0x1a, 0x16, ++ 0x16, 0x12, 0x13, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x48, 0x48, ++ 0x48, 0x88, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x10, 0x1e, 0x13, 0x1a, 0x16, ++ 0x17, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x78, 0xc0, 0x40, 0x7c, ++ 0xc0, 0x40, 0x44, 0x3c, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x10, 0x1e, 0x12, 0x1a, 0x16, ++ 0x16, 0x12, 0x12, 0x16, 0x1a, 0x61, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0x88, 0xf8, 0x88, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x01, 0x79, 0x02, 0x1c, 0x61, 0x06, 0x7f, ++ 0x08, 0x0f, 0x0a, 0x11, 0x1f, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0xd0, 0x20, 0x18, 0xfc, ++ 0x00, 0xe0, 0x20, 0x24, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x7f, 0x14, 0x7f, 0x55, 0x55, 0x7f, 0x49, ++ 0x08, 0x7f, 0x08, 0x08, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58, ++ 0x58, 0x48, 0x48, 0x5c, 0x6c, 0x84, 0x00, 0x00, ++ 0x02, 0x3c, 0x08, 0x7e, 0x1d, 0x2a, 0x48, 0x7f, ++ 0x04, 0x07, 0x05, 0x08, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x50, 0x48, 0x84, 0xfc, ++ 0x00, 0xe0, 0x20, 0xa4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x7f, 0x21, 0x21, 0x3d, 0x25, 0x35, 0x2d, ++ 0x2d, 0x26, 0x26, 0x2d, 0x34, 0x63, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x20, 0xf8, 0x20, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x40, 0x5e, 0x52, 0x5e, 0x40, 0x7f, ++ 0x6d, 0x6d, 0x7f, 0x40, 0x7f, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58, ++ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x0a, ++ 0x7f, 0x04, 0x7f, 0x24, 0x14, 0x0d, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x68, 0x58, ++ 0x58, 0x48, 0x4c, 0x5c, 0x64, 0x84, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20, ++ 0x5f, 0x04, 0x3f, 0x09, 0x0f, 0x70, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08, ++ 0xf0, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00, ++ 0x01, 0x7f, 0x08, 0x32, 0x0d, 0x0a, 0x7e, 0x04, ++ 0x08, 0x3f, 0x04, 0x3f, 0x09, 0x7e, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0xfc, 0x90, 0xf8, 0xf8, 0x90, ++ 0xfc, 0xf8, 0x00, 0xe4, 0x24, 0x9c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, 0x52, 0x1e, ++ 0x7f, 0x04, 0x07, 0x09, 0x0f, 0x78, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, ++ 0xfc, 0x00, 0xe0, 0x24, 0xa4, 0x1c, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x08, ++ 0x7f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x20, ++ 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b, 0x3e, ++ 0x6a, 0x28, 0x11, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xf8, ++ 0x20, 0x20, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x03, 0x01, 0x3f, 0x21, 0x3f, ++ 0x21, 0x21, 0x3f, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x60, 0x80, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0x08, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x11, 0x1f, 0x00, ++ 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x00, ++ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x21, 0x11, 0x10, 0x00, 0x3f, 0x21, 0x21, ++ 0x3f, 0x21, 0x21, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x20, 0x40, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x54, 0x54, 0x55, 0x7e, 0x54, ++ 0x54, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xa8, 0xa4, ++ 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x54, ++ 0x57, 0x54, 0x7d, 0x45, 0x02, 0x04, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90, 0x90, ++ 0xfc, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7c, 0x57, ++ 0x54, 0x54, 0x7c, 0x45, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x54, 0x55, 0x56, 0x7c, 0x57, ++ 0x54, 0x54, 0x7f, 0x44, 0x00, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0x28, 0xc4, 0x10, ++ 0x20, 0xc8, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x00, 0x3e, 0x2a, 0x2a, ++ 0x3e, 0x2a, 0x2a, 0x2a, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x30, 0x48, 0x48, 0x7c, 0x84, 0x04, 0x00, 0x00, ++ 0x02, 0x02, 0x04, 0x3f, 0x01, 0x7f, 0x04, 0x18, ++ 0x7f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xc0, 0x70, 0x88, 0x00, 0xfc, 0x40, 0x30, ++ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x57, 0x54, 0x54, 0x7d, 0x55, ++ 0x57, 0x55, 0x7d, 0x45, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xc0, 0xc8, 0x48, 0x50, ++ 0x20, 0x20, 0x10, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x57, 0x7c, 0x54, ++ 0x57, 0x55, 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x10, 0x10, ++ 0xfc, 0x10, 0x90, 0x90, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x02, 0x07, ++ 0x3c, 0x03, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf0, ++ 0x40, 0x80, 0xfc, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x1f, 0x7f, 0x01, 0x1f, 0x0f, 0x7f, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0x10, 0xf0, 0xe0, 0xfc, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x55, 0x57, 0x54, 0x7c, 0x57, ++ 0x54, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x44, 0x40, 0xfc, ++ 0x40, 0x50, 0x48, 0x44, 0x44, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x54, 0x54, 0x55, 0x7f, 0x54, ++ 0x55, 0x55, 0x7d, 0x45, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xa0, 0x10, 0xfc, 0x08, ++ 0xe8, 0x28, 0xe8, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x11, 0x09, 0x3f, 0x20, 0x4f, 0x08, 0x0f, 0x00, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x10, 0x20, 0xfc, 0x08, 0xe0, 0x20, 0xe0, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x05, 0x05, 0x3d, 0x21, 0x3d, 0x27, ++ 0x15, 0x3d, 0x15, 0x1d, 0x65, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xfc, 0x00, 0x00, ++ 0x00, 0x03, 0x7c, 0x55, 0x57, 0x55, 0x7c, 0x55, ++ 0x57, 0x54, 0x7f, 0x46, 0x03, 0x02, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0, ++ 0xfc, 0x08, 0xfc, 0xa8, 0x98, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x54, 0x55, 0x54, 0x7f, 0x54, ++ 0x57, 0x55, 0x7d, 0x46, 0x04, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3e, ++ 0x3f, 0x3f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00, ++ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8, ++ 0xfc, 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, ++ 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x2a, 0x3e, 0x3f, ++ 0x3f, 0x22, 0x47, 0x06, 0x09, 0x7f, 0x00, 0x00, ++ 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xa8, 0xf8, 0xf8, ++ 0xfc, 0x08, 0xe0, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x0f, 0x09, 0x0f, 0x0f, 0x38, 0x0e, 0x30, 0x3f, ++ 0x2f, 0x4f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0xe0, 0x20, 0xe0, 0xe0, 0x38, 0xe0, 0x18, 0xfc, ++ 0xe8, 0xe0, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18, ++ 0x28, 0x48, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x09, 0x1a, ++ 0x2c, 0x48, 0x10, 0x11, 0x26, 0x58, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0x80, 0xf0, 0x10, 0x20, ++ 0x20, 0x40, 0xc0, 0x20, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2a, 0x0a, 0x1a, ++ 0x2a, 0x4a, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0x40, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x28, 0x09, 0x1b, ++ 0x2d, 0x49, 0x11, 0x11, 0x22, 0x44, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xa0, 0x10, 0x28, ++ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18, ++ 0x28, 0x49, 0x11, 0x12, 0x24, 0x58, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x90, 0x88, 0xfc, 0x80, 0xc0, ++ 0xc0, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x4a, 0x2a, 0x2f, 0x0a, 0x1a, ++ 0x2a, 0x4a, 0x12, 0x12, 0x24, 0x49, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xb8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0x80, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x19, ++ 0x29, 0x49, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0x10, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x18, ++ 0x2b, 0x48, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0x90, ++ 0x90, 0x60, 0x50, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x51, 0x31, 0x35, 0x15, 0x15, ++ 0x35, 0x55, 0x15, 0x25, 0x27, 0x5c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x20, 0x20, 0x20, 0x24, 0xe8, ++ 0x30, 0x20, 0x20, 0xe4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, ++ 0x2a, 0x4b, 0x12, 0x12, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, ++ 0x2a, 0x4a, 0x13, 0x10, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0e, 0x18, ++ 0x2b, 0x4c, 0x10, 0x13, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xa0, 0xc0, ++ 0x30, 0xcc, 0x20, 0x80, 0x60, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2b, 0x0c, 0x1b, ++ 0x2a, 0x4b, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0x00, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0b, 0x18, 0x2b, ++ 0x4a, 0x0f, 0x14, 0x10, 0x23, 0x4c, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x40, 0xfc, 0x44, 0xb8, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x29, 0x0f, 0x18, ++ 0x28, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xc0, 0xa0, 0x10, 0xfc, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x28, 0x2f, 0x08, 0x1b, ++ 0x28, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x40, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x2a, 0x0a, 0x1c, ++ 0x2a, 0x4b, 0x10, 0x10, 0x2f, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x48, 0x48, 0x90, ++ 0x48, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x28, 0x2f, 0x08, 0x1b, ++ 0x28, 0x49, 0x15, 0x15, 0x29, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0x40, 0xfc, 0x40, 0xf8, ++ 0x40, 0x20, 0x28, 0x04, 0x14, 0xf0, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x09, 0x1e, ++ 0x28, 0x4b, 0x12, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x60, 0xd8, 0x44, ++ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x35, 0x16, 0x16, ++ 0x35, 0x55, 0x15, 0x26, 0x24, 0x44, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xfc, 0x08, 0xe8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x09, 0x1e, ++ 0x28, 0x4f, 0x11, 0x13, 0x20, 0x47, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf0, 0x40, 0xfc, 0xf0, 0x4c, ++ 0xc0, 0xfc, 0x20, 0xe0, 0xd0, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14, ++ 0x35, 0x55, 0x15, 0x24, 0x27, 0x44, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x88, ++ 0xe8, 0x28, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2f, 0x29, 0x09, 0x1b, ++ 0x2c, 0x48, 0x1f, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x40, 0xfc, 0x10, 0x10, 0x28, ++ 0xc4, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2a, 0x2a, 0x0c, 0x19, ++ 0x2e, 0x4a, 0x12, 0x14, 0x23, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x48, 0x48, 0x50, 0xb0, 0x4c, ++ 0x48, 0x48, 0x50, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0b, 0x1a, ++ 0x2b, 0x48, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x80, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b, ++ 0x2b, 0x4b, 0x13, 0x15, 0x29, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8, ++ 0xb8, 0xb8, 0xdc, 0x5c, 0x90, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x49, 0x29, 0x2f, 0x09, 0x1b, ++ 0x2b, 0x4b, 0x15, 0x15, 0x29, 0x41, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x10, 0x10, 0xfc, 0x10, 0xb8, ++ 0xb8, 0x78, 0x54, 0x94, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x17, 0x36, ++ 0x56, 0x17, 0x14, 0x28, 0x2f, 0x50, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf0, 0x70, 0x90, 0xf0, 0xb0, ++ 0xb0, 0xf0, 0xac, 0xfc, 0x14, 0x04, 0x00, 0x00, ++ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x2f, ++ 0x4a, 0x0b, 0x15, 0x19, 0x22, 0x45, 0x00, 0x00, ++ 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x4b, 0x29, 0x2b, 0x0c, 0x1f, ++ 0x2e, 0x4d, 0x16, 0x15, 0x24, 0x45, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xc0, 0x20, 0xf0, 0x0c, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x2b, 0x2a, 0x0a, 0x1b, 0x2b, ++ 0x48, 0x0b, 0x12, 0x12, 0x3f, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xd0, 0x30, 0xf0, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x28, 0x2b, 0x0a, 0x1b, 0x2a, ++ 0x4a, 0x0a, 0x17, 0x14, 0x28, 0x50, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0x78, 0xfc, 0x78, 0xc8, 0x38, ++ 0xf8, 0x80, 0xfc, 0x80, 0xf8, 0x80, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x2f, 0x28, 0x0f, 0x19, 0x2f, ++ 0x49, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0x5c, 0x40, 0xbc, 0x10, 0xfc, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x28, 0x29, 0x0f, 0x19, 0x29, ++ 0x49, 0x09, 0x13, 0x13, 0x25, 0x49, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xa0, 0xf0, 0xfc, 0x10, 0xf0, ++ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x51, 0x32, 0x37, 0x14, 0x16, 0x35, ++ 0x5f, 0x16, 0x16, 0x26, 0x2a, 0x51, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0x38, 0xa8, 0xa8, 0xac, 0xc4, ++ 0xf8, 0xa8, 0xa8, 0x90, 0xa8, 0xc4, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x4b, 0x2b, 0x2a, 0x0f, 0x18, ++ 0x2b, 0x4a, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0x78, 0x28, 0xa8, 0xd8, 0x80, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x2b, 0x28, 0x0f, 0x19, 0x29, ++ 0x49, 0x09, 0x11, 0x17, 0x20, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x4b, 0x2a, 0x2b, 0x0a, 0x1b, 0x28, ++ 0x4b, 0x08, 0x1f, 0x11, 0x26, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, ++ 0x30, 0xc8, 0xfc, 0x58, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x0f, 0x48, 0x2b, 0x2f, 0x0b, 0x18, 0x2b, ++ 0x4b, 0x08, 0x17, 0x11, 0x20, 0x47, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0xfc, 0xf8, 0x40, 0xf8, ++ 0xf8, 0x40, 0xfc, 0x90, 0x70, 0x88, 0x00, 0x00, ++ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x14, 0x37, ++ 0x55, 0x15, 0x15, 0x25, 0x25, 0x45, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xf8, 0xc8, 0xf8, ++ 0xe8, 0x28, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00, ++ 0x00, 0x0f, 0x49, 0x2c, 0x2b, 0x0e, 0x1f, 0x29, ++ 0x4f, 0x0c, 0x17, 0x11, 0x21, 0x46, 0x00, 0x00, ++ 0x80, 0xfc, 0xd0, 0xd4, 0x24, 0x18, 0x74, 0x54, ++ 0x9c, 0xf8, 0x48, 0x30, 0x30, 0xcc, 0x00, 0x00, ++ 0x00, 0x0f, 0x49, 0x2d, 0x2d, 0x0a, 0x1c, 0x2f, ++ 0x4c, 0x0f, 0x10, 0x11, 0x22, 0x4c, 0x00, 0x00, ++ 0x80, 0xfc, 0x54, 0xb4, 0x58, 0xa8, 0xc4, 0xfc, ++ 0x88, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x50, 0x37, 0x34, 0x17, 0x16, 0x37, ++ 0x56, 0x16, 0x1f, 0x2a, 0x32, 0x44, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xec, 0xac, 0xc4, ++ 0xb8, 0xa8, 0xf0, 0x90, 0x68, 0x44, 0x00, 0x00, ++ 0x00, 0x0f, 0x49, 0x2f, 0x2b, 0x0a, 0x1b, 0x2a, ++ 0x4b, 0x0f, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0xfc, 0x54, 0x7c, 0x8c, 0x0c, 0x00, 0x00, ++ 0x00, 0x0f, 0x4a, 0x2a, 0x2b, 0x0a, 0x19, 0x2a, ++ 0x4b, 0x0d, 0x1f, 0x13, 0x24, 0x48, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xfc, 0x28, 0x90, 0xfc, 0x14, ++ 0xd8, 0x5c, 0xd0, 0x70, 0xd0, 0x8c, 0x00, 0x00, ++ 0x00, 0x0f, 0x49, 0x2f, 0x28, 0x0b, 0x1f, 0x29, ++ 0x4b, 0x0d, 0x11, 0x11, 0x21, 0x47, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0x40, 0xf8, 0xfc, 0x50, ++ 0xf8, 0x14, 0xf0, 0xf8, 0x70, 0x88, 0x00, 0x00, ++ 0x00, 0x0f, 0x4b, 0x28, 0x2f, 0x0f, 0x1b, 0x2b, ++ 0x4e, 0x0b, 0x13, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0xf8, ++ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x52, 0x3f, 0x32, 0x1f, 0x1a, 0x3a, ++ 0x5f, 0x17, 0x16, 0x2a, 0x32, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0x28, 0xd8, 0xf8, 0xc8, ++ 0xf8, 0x78, 0xc8, 0xf8, 0x28, 0xc4, 0x00, 0x00, ++ 0x00, 0x1f, 0x51, 0x3e, 0x32, 0x12, 0x1f, 0x32, ++ 0x57, 0x16, 0x1a, 0x32, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xf8, 0x70, 0xfc, 0xf8, 0x48, ++ 0x78, 0xf8, 0xc8, 0x78, 0x28, 0xc4, 0x00, 0x00, ++ 0x00, 0x1f, 0x50, 0x37, 0x37, 0x15, 0x17, 0x35, ++ 0x57, 0x14, 0x15, 0x29, 0x2f, 0x50, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xfc, 0xb8, 0x10, 0xfc, 0x98, ++ 0x74, 0x40, 0x78, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x52, 0x37, 0x39, 0x1f, 0x1a, 0x3f, ++ 0x5a, 0x1f, 0x15, 0x2a, 0x2a, 0x50, 0x00, 0x00, ++ 0x80, 0xfc, 0x48, 0xa8, 0x30, 0xfc, 0x90, 0xb8, ++ 0x90, 0xfc, 0x90, 0xd0, 0xd0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x55, 0x3a, 0x35, 0x17, 0x14, 0x37, ++ 0x5f, 0x1a, 0x1f, 0x28, 0x28, 0x47, 0x00, 0x00, ++ 0x80, 0xfc, 0x68, 0xa8, 0x7c, 0xa8, 0xe8, 0xbc, ++ 0xa8, 0xbc, 0xa8, 0x28, 0xbc, 0xa0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x54, 0x37, 0x34, 0x13, 0x1b, 0x3b, ++ 0x5b, 0x1a, 0x1b, 0x2f, 0x22, 0x4c, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0x7c, 0x90, 0xb8, 0xa8, 0xb8, ++ 0xa8, 0xb8, 0xa8, 0xf8, 0x98, 0x64, 0x00, 0x00, ++ 0x00, 0x00, 0x0f, 0x01, 0x22, 0x12, 0x0c, 0x08, ++ 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x20, 0x20, 0xc8, 0x88, 0x50, 0x20, ++ 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x1e, 0x02, 0x24, 0x14, 0x08, 0x1f, 0x21, 0x41, ++ 0x3f, 0x01, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x90, 0x90, 0x64, 0x44, 0x28, 0xf0, 0x08, 0x04, ++ 0xf8, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x1e, 0x02, 0x24, 0x18, 0x1c, 0x64, 0x04, 0x3d, ++ 0x23, 0x3c, 0x24, 0x04, 0x08, 0x33, 0x00, 0x00, ++ 0x90, 0x94, 0x64, 0x28, 0xf8, 0xa4, 0xa8, 0x18, ++ 0xf0, 0x90, 0xa0, 0x40, 0xb0, 0x0c, 0x00, 0x00, ++ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, ++ 0x10, 0x11, 0x1e, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, ++ 0x30, 0xc0, 0x00, 0x08, 0x08, 0xf8, 0x00, 0x00, ++ 0x01, 0x02, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x24, ++ 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x11, 0x21, 0x79, 0x49, 0x49, 0x79, 0x49, ++ 0x49, 0x4a, 0x7a, 0x44, 0x09, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x88, 0x88, 0x50, ++ 0x50, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x01, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x01, 0x7f, ++ 0x02, 0x05, 0x19, 0x6f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x27, 0x79, 0x49, 0x4a, 0x7d, 0x49, ++ 0x48, 0x48, 0x78, 0x48, 0x03, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0x08, 0x14, 0x14, 0x10, ++ 0xa0, 0xa0, 0x40, 0xa0, 0x18, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x23, 0x7a, 0x4d, 0x48, 0x78, 0x4f, ++ 0x48, 0x78, 0x48, 0x01, 0x06, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x00, 0x00, 0xfc, ++ 0xa0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x11, 0x21, 0x79, 0x4a, 0x4c, 0x7f, 0x48, ++ 0x49, 0x49, 0x79, 0x49, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x1c, 0x1a, 0x28, 0x4a, 0x0d, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x90, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x12, 0x22, 0x7b, 0x48, 0x4f, 0x78, 0x4b, ++ 0x4a, 0x4b, 0x79, 0x48, 0x07, 0x00, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf8, ++ 0x08, 0xf8, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x2a, 0x2c, 0x29, 0x3e, 0x32, ++ 0x2a, 0x24, 0x24, 0x2a, 0x32, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x84, 0xf4, 0x94, 0x94, ++ 0xf4, 0x98, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x7d, 0x14, 0x15, 0x2b, 0x48, ++ 0x1e, 0x32, 0x4c, 0x0d, 0x13, 0x62, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x2b, 0x2c, 0x28, 0x3e, 0x32, ++ 0x2a, 0x24, 0x24, 0x2b, 0x32, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x1e, 0x2a, 0x6e, 0x3e, 0x2a, 0x14, 0x1e, ++ 0x2a, 0x6e, 0x3e, 0x2a, 0x12, 0x25, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x03, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x02, 0x04, 0x3f, 0x00, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x40, 0x70, 0x88, 0x00, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x0f, 0x08, 0x0f, ++ 0x00, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xe0, 0x20, 0xe0, ++ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x7f, 0x01, 0x01, 0x1e, 0x02, 0x7f, 0x01, ++ 0x1e, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0x60, 0xc4, 0xb4, 0xec, 0x20, 0xc4, ++ 0x34, 0xfc, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x1f, 0x01, 0x7f, 0x14, ++ 0x22, 0x5f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0x00, 0xfc, 0x90, ++ 0x48, 0xf4, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x31, 0x27, 0x3b, 0x23, 0x3d, 0x29, 0x23, ++ 0x1f, 0x12, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xb8, 0x88, 0x78, 0x28, 0x08, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x17, 0x14, ++ 0x17, 0x14, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0xe8, 0x10, 0xf0, 0xf0, 0x90, ++ 0xf0, 0x90, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00, ++ 0x11, 0x09, 0x41, 0x21, 0x0f, 0x11, 0x13, 0x24, ++ 0x21, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0xf0, 0x10, 0xf0, 0xf0, 0xfc, 0x00, 0xfc, 0xa4, ++ 0x58, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x23, 0x13, 0x43, 0x2f, 0x13, ++ 0x2d, 0x42, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0xd0, 0xf0, 0xfc, 0xf8, ++ 0x48, 0xb0, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x01, 0x79, 0x4a, 0x4c, 0x7b, 0x48, 0x48, ++ 0x79, 0x49, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0x10, 0x08, 0xf4, 0x80, 0xf0, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4b, 0x4a, 0x7a, 0x48, 0x48, ++ 0x78, 0x48, 0x49, 0x7a, 0x4c, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x48, 0x40, 0x60, 0x60, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x49, 0x79, 0x4a, 0x4a, ++ 0x7c, 0x48, 0x48, 0x78, 0x49, 0x0e, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x50, 0x48, 0x44, 0x4c, 0x48, ++ 0x50, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a, ++ 0x7b, 0x4a, 0x4a, 0x78, 0x48, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x78, 0x48, 0x48, 0x48, ++ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4f, 0x48, 0x7a, 0x49, 0x48, ++ 0x78, 0x48, 0x48, 0x79, 0x4f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x50, 0x90, 0xa0, ++ 0x60, 0x60, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4b, 0x7a, 0x4a, 0x4a, ++ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x88, 0x80, 0x88, ++ 0xb0, 0xc0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x11, 0x1e, 0x0f, 0x27, 0x24, 0x27, 0x24, ++ 0x27, 0x24, 0x27, 0x3f, 0x0c, 0x70, 0x00, 0x00, ++ 0x30, 0xc0, 0x08, 0xf8, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x17, 0x78, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x48, 0x70, 0x44, 0x44, 0x3c, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4a, 0x4a, 0x7a, 0x4a, 0x4a, ++ 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x0c, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0x90, 0x94, 0xf8, 0x90, 0x90, ++ 0x90, 0x90, 0xb0, 0xd4, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4b, 0x48, 0x78, 0x4f, 0x48, ++ 0x78, 0x49, 0x4a, 0x7c, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x09, 0x0f, 0x12, 0x7f, 0x08, 0x1f, 0x68, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x20, 0xf0, 0x90, 0xfc, 0x20, 0xf0, 0x2c, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x4f, 0x49, 0x79, 0x4b, 0x4c, ++ 0x78, 0x4f, 0x48, 0x78, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0x60, 0x90, 0xe8, 0x48, 0x40, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x00, 0x78, 0x4b, 0x48, 0x7b, 0x4a, 0x4b, ++ 0x7a, 0x48, 0x49, 0x7a, 0x4c, 0x00, 0x00, 0x00, ++ 0x10, 0x90, 0xa0, 0xf8, 0x48, 0xf8, 0x40, 0xfc, ++ 0xc4, 0xc4, 0x44, 0x58, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4a, 0x4a, 0x7a, 0x4b, 0x4a, ++ 0x7a, 0x4a, 0x4a, 0x7c, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4a, 0x7a, 0x4b, 0x4a, ++ 0x78, 0x48, 0x49, 0x79, 0x4a, 0x0c, 0x00, 0x00, ++ 0x80, 0x38, 0x08, 0xb8, 0x08, 0x08, 0xf8, 0xa8, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x07, 0x78, 0x4b, 0x48, 0x7f, 0x48, 0x4b, ++ 0x78, 0x4a, 0x4a, 0x7b, 0x4c, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x48, 0x40, 0x7c, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x7b, 0x48, 0x49, 0x78, 0x4f, 0x48, 0x7b, ++ 0x4a, 0x4a, 0x7b, 0x4a, 0x02, 0x02, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xf8, ++ 0x48, 0x48, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x4a, 0x4b, 0x7a, 0x4b, 0x4a, ++ 0x78, 0x49, 0x4f, 0x78, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x88, ++ 0xa0, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x2f, 0x49, 0x12, 0x04, 0x1f, ++ 0x68, 0x0f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0xfc, 0xe8, 0x20, 0x90, 0x40, 0xf0, ++ 0x2c, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x04, 0x3f, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x7b, 0x48, 0x48, 0x7f, 0x48, 0x48, ++ 0x79, 0x4f, 0x49, 0x79, 0x49, 0x01, 0x00, 0x00, ++ 0x80, 0x88, 0xf8, 0x90, 0xa0, 0xfc, 0x50, 0x88, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4d, 0x48, 0x7b, 0x48, 0x4f, ++ 0x78, 0x4b, 0x4a, 0x7a, 0x4b, 0x02, 0x00, 0x00, ++ 0x40, 0xfc, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc, ++ 0x40, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x79, 0x49, 0x4a, 0x7a, 0x4a, 0x4a, 0x7a, ++ 0x4a, 0x4a, 0x7a, 0x4b, 0x01, 0x06, 0x00, 0x00, ++ 0x08, 0x34, 0xc4, 0xfc, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0xfc, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4d, 0x49, 0x79, 0x49, 0x49, ++ 0x78, 0x4f, 0x48, 0x78, 0x49, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x40, 0xfc, 0x00, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x49, 0x79, ++ 0x49, 0x48, 0x7b, 0x48, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0x10, ++ 0xf0, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x77, 0x51, 0x51, 0x70, 0x57, 0x54, ++ 0x77, 0x55, 0x55, 0x76, 0x54, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xf0, 0x40, 0xfc, 0x44, ++ 0x74, 0x54, 0x54, 0xec, 0x44, 0x4c, 0x00, 0x00, ++ 0x00, 0x07, 0x72, 0x5f, 0x54, 0x74, 0x57, 0x54, ++ 0x77, 0x54, 0x57, 0x7c, 0x50, 0x00, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0xe0, 0xbc, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x4b, 0x4f, 0x7b, 0x4a, 0x4b, ++ 0x7a, 0x4b, 0x4a, 0x7b, 0x49, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xf8, 0xfc, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x7a, 0x49, 0x4b, 0x7a, 0x4d, 0x4a, ++ 0x78, 0x49, 0x4e, 0x78, 0x49, 0x0e, 0x00, 0x00, ++ 0x18, 0xe4, 0x48, 0x30, 0xfc, 0x48, 0xa8, 0x94, ++ 0xf0, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x08, 0x0f, ++ 0x18, 0x2f, 0x4f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0x40, 0xf8, ++ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x49, 0x4b, 0x7c, 0x4b, 0x4a, ++ 0x7a, 0x4b, 0x49, 0x79, 0x4a, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8, ++ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x3e, 0x22, 0x3e, 0x17, 0x7f, ++ 0x10, 0x1f, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x48, 0x30, 0xd8, 0xf4, ++ 0x10, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x4b, 0x4a, 0x7a, 0x4b, 0x4b, ++ 0x7a, 0x4a, 0x4a, 0x7c, 0x4c, 0x08, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0xa8, 0x98, 0x70, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x07, 0x79, 0x4b, 0x4a, 0x7c, 0x4f, 0x48, ++ 0x7f, 0x49, 0x4e, 0x79, 0x4e, 0x00, 0x00, 0x00, ++ 0x10, 0xfc, 0x10, 0xfc, 0xe8, 0x00, 0xfc, 0xc8, ++ 0x68, 0xf0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x3e, 0x0f, 0x1b, ++ 0x6b, 0x0f, 0x3f, 0x04, 0x03, 0x7c, 0x00, 0x00, ++ 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xf8, 0xf8, 0xe0, ++ 0xe0, 0xf8, 0xe0, 0x40, 0xc0, 0x3c, 0x00, 0x00, ++ 0x01, 0x3f, 0x07, 0x17, 0x17, 0x17, 0x1f, 0x7f, ++ 0x1c, 0x5d, 0x5d, 0x5d, 0x7f, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfc, ++ 0x70, 0x70, 0x70, 0x70, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x07, 0x74, 0x57, 0x57, 0x77, 0x57, 0x56, ++ 0x77, 0x55, 0x57, 0x79, 0x48, 0x17, 0x00, 0x00, ++ 0x00, 0xfc, 0x04, 0xfc, 0x58, 0x58, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0xf4, 0xf4, 0x7c, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x12, 0x0c, 0x04, 0x7f, 0x0d, 0x0e, ++ 0x14, 0x14, 0x24, 0x44, 0x04, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xf4, 0x00, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x02, 0x04, 0x3f, 0x08, 0x0f, 0x11, ++ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x40, 0x30, 0xc8, 0x00, 0xf8, 0x00, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x1f, 0x28, 0x28, 0x49, 0x7e, ++ 0x09, 0x0c, 0x12, 0x12, 0x20, 0x43, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, ++ 0xfc, 0x48, 0xc8, 0x30, 0x68, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x08, 0x08, 0x10, 0x1e, 0x32, ++ 0x52, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x7e, 0x12, 0x12, 0x13, 0x3e, 0x2a, 0x6a, ++ 0x2a, 0x2a, 0x39, 0x28, 0x20, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xa8, 0x28, 0x28, 0x28, 0x28, ++ 0xa8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2b, 0x6a, ++ 0x2a, 0x2a, 0x3a, 0x2c, 0x24, 0x0b, 0x00, 0x00, ++ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x10, 0x10, 0x3c, 0x24, 0x64, ++ 0x24, 0x24, 0x3c, 0x24, 0x23, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3a, 0x2a, 0x6a, ++ 0x2a, 0x2b, 0x3d, 0x25, 0x29, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3f, 0x24, 0x64, ++ 0x27, 0x24, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x10, 0x10, 0x3c, 0x25, 0x66, ++ 0x24, 0x27, 0x3c, 0x24, 0x20, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x90, 0x90, 0x98, 0x64, 0x64, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x65, ++ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0x90, 0xa0, 0xa4, 0x28, ++ 0x30, 0x20, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x0b, 0x42, 0x23, 0x0a, 0x12, 0x24, 0x2b, ++ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xf8, 0x90, 0x60, 0xf0, 0x0c, ++ 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x12, 0x12, 0x3b, 0x2a, 0x6a, ++ 0x2b, 0x2a, 0x3a, 0x2c, 0x24, 0x09, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xa8, 0xa8, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xa8, 0xc8, 0xc8, 0x98, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3c, 0x27, 0x64, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0x90, 0xa0, 0xfc, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x11, 0x10, 0x3f, 0x26, 0x65, ++ 0x25, 0x24, 0x3d, 0x26, 0x20, 0x00, 0x00, 0x00, ++ 0x80, 0xf0, 0x10, 0xe0, 0x20, 0xfc, 0x68, 0x68, ++ 0x50, 0xd0, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x24, 0x64, ++ 0x25, 0x27, 0x3d, 0x25, 0x21, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8, ++ 0x48, 0x68, 0x98, 0xe8, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7e, 0x10, 0x10, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x24, 0x21, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x08, 0xf8, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x10, 0x10, 0x3c, 0x24, 0x64, ++ 0x27, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90, ++ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x7a, 0x14, 0x12, 0x12, 0x38, 0x2b, 0x6a, ++ 0x2b, 0x2a, 0x3a, 0x2b, 0x23, 0x02, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0x48, 0x48, 0x80, 0xf8, 0x28, ++ 0xa8, 0x48, 0xa8, 0x18, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x10, 0x17, 0x3c, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x24, 0x27, 0x00, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x00, 0xfc, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3f, 0x26, 0x65, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x70, 0x50, 0xfc, 0x08, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x7c, 0x13, 0x10, 0x11, 0x3c, 0x27, 0x64, ++ 0x24, 0x25, 0x3d, 0x26, 0x27, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x80, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7d, 0x11, 0x12, 0x16, 0x39, 0x29, 0x6a, ++ 0x2f, 0x28, 0x39, 0x2a, 0x24, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0xbc, 0xa8, 0xa8, 0xfc, 0x48, 0x48, ++ 0xfc, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x25, 0x3e, 0x22, 0x04, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x50, 0x50, 0xf8, 0x50, ++ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x00, 0x7f, 0x11, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x25, 0x24, 0x3f, 0x22, 0x22, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x20, 0xf8, 0x20, 0x20, ++ 0xfc, 0x54, 0x2c, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x13, 0x11, 0x10, 0x3f, 0x26, 0x64, ++ 0x27, 0x24, 0x3c, 0x24, 0x21, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x10, 0xa0, 0xfc, 0x48, 0x40, ++ 0xfc, 0x40, 0x78, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x07, 0x1c, 0x67, 0x04, 0x7e, ++ 0x10, 0x1e, 0x32, 0x53, 0x1e, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xfc, ++ 0x40, 0x78, 0xc8, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x2a, 0x3e, 0x21, ++ 0x7f, 0x04, 0x1f, 0x68, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x70, 0x8c, ++ 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x11, 0x10, 0x3f, 0x25, 0x65, ++ 0x25, 0x25, 0x3d, 0x25, 0x21, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x11, 0x11, 0x3d, 0x25, 0x65, ++ 0x24, 0x27, 0x3c, 0x27, 0x20, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0xfc, 0x10, 0xfc, 0x90, 0x70, 0x00, 0x00, ++ 0x00, 0x7f, 0x10, 0x17, 0x11, 0x3f, 0x29, 0x69, ++ 0x2e, 0x2f, 0x38, 0x28, 0x21, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xbc, 0x10, 0xbc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x01, 0x7e, 0x12, 0x11, 0x11, 0x3f, 0x24, 0x65, ++ 0x25, 0x25, 0x3c, 0x24, 0x27, 0x00, 0x00, 0x00, ++ 0xd0, 0x54, 0xa4, 0xa8, 0x10, 0xf8, 0x04, 0xf8, ++ 0x08, 0xf8, 0x90, 0x60, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x13, 0x12, 0x3b, 0x2a, 0x6b, ++ 0x2a, 0x28, 0x3f, 0x28, 0x21, 0x06, 0x00, 0x00, ++ 0x40, 0xf8, 0xe8, 0x58, 0xe8, 0xf8, 0xe8, 0x58, ++ 0x48, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x01, 0x7f, 0x10, 0x13, 0x10, 0x3f, 0x28, 0x6f, ++ 0x2f, 0x29, 0x39, 0x2f, 0x21, 0x03, 0x00, 0x00, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0xa8, 0x24, ++ 0xfc, 0x28, 0x98, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x02, 0x7d, 0x13, 0x12, 0x15, 0x39, 0x29, 0x68, ++ 0x2b, 0x2a, 0x3b, 0x2a, 0x23, 0x02, 0x00, 0x00, ++ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x7c, 0x17, 0x14, 0x13, 0x3a, 0x2b, 0x6d, ++ 0x29, 0x2f, 0x3b, 0x2a, 0x24, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x28, 0x90, 0x90, 0x7c, 0x94, 0x58, ++ 0x50, 0xdc, 0x50, 0xf0, 0x50, 0x8c, 0x00, 0x00, ++ 0x10, 0x12, 0x7d, 0x1a, 0x36, 0x51, 0x12, 0x7f, ++ 0x04, 0x1f, 0x62, 0x0f, 0x34, 0x07, 0x00, 0x00, ++ 0x90, 0x90, 0x7c, 0x90, 0xb8, 0x54, 0x90, 0xfc, ++ 0x20, 0xf0, 0x0c, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x02, 0x7e, 0x13, 0x15, 0x12, 0x3a, 0x2d, 0x6f, ++ 0x28, 0x2f, 0x38, 0x29, 0x26, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0xec, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x01, 0x7e, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2b, 0x49, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0x90, ++ 0x90, 0xb4, 0xcc, 0x0c, 0xf4, 0x04, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x21, 0x3f, 0x20, 0x0f, ++ 0x00, 0x7f, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x08, 0xf8, 0x08, 0xe0, ++ 0x00, 0xfc, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2b, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20, ++ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, ++ 0x2b, 0x2b, 0x2a, 0x28, 0x48, 0x09, 0x00, 0x00, ++ 0x20, 0x10, 0x50, 0x48, 0x48, 0xc8, 0xd8, 0xd4, ++ 0x54, 0x64, 0x60, 0x48, 0xc8, 0x38, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x29, 0x4a, 0x0c, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0xfc, 0x40, 0x48, 0x68, ++ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x03, 0x7e, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2b, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, ++ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7e, 0x09, 0x2b, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x78, 0x88, 0xf0, 0x10, 0xfc, 0x20, 0xb4, ++ 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x01, 0x3d, 0x03, 0x01, 0x7f, 0x11, 0x37, 0x35, ++ 0x34, 0x37, 0x34, 0x34, 0x51, 0x16, 0x00, 0x00, ++ 0x00, 0x78, 0xa8, 0x28, 0xa8, 0xa8, 0x48, 0x98, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, ++ 0x2b, 0x2a, 0x2a, 0x2b, 0x48, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0x94, ++ 0x4c, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x00, 0x7e, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2b, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8, ++ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x50, ++ 0x1f, 0x10, 0x1f, 0x15, 0x25, 0x49, 0x00, 0x00, ++ 0x00, 0xfc, 0x98, 0x70, 0x50, 0x50, 0xe8, 0x14, ++ 0xf0, 0x10, 0xf0, 0x50, 0x30, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x01, 0x7e, 0x08, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x03, 0x7e, 0x13, 0x34, 0x37, ++ 0x35, 0x35, 0x35, 0x30, 0x57, 0x10, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, ++ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x03, 0x02, 0x7f, 0x10, 0x37, 0x35, ++ 0x34, 0x37, 0x34, 0x37, 0x51, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0, ++ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x1f, 0x11, 0x11, 0x1f, 0x01, ++ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x38, 0xc0, 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, ++ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x11, 0x1f, 0x11, 0x1f, 0x01, ++ 0x3f, 0x21, 0x21, 0x3f, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x48, 0x68, 0x98, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x7f, 0x01, 0x1f, 0x01, 0x7f, 0x01, ++ 0x1f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x70, 0x80, 0xfc, 0x00, 0xf0, 0x10, 0xfc, 0x10, ++ 0xf0, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x03, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x0b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x68, ++ 0x68, 0xb0, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x09, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0xb0, 0xa8, 0x24, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x0b, 0x08, 0x7e, 0x0c, 0x1a, ++ 0x1a, 0x28, 0x4b, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, ++ 0x90, 0x90, 0xfc, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x02, 0x04, 0x39, 0x08, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x0a, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x08, ++ 0xe8, 0xa8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00, ++ 0x1f, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x60, ++ 0x80, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x00, ++ 0x1f, 0x00, 0x7f, 0x0d, 0x31, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x00, ++ 0xf0, 0x00, 0xfc, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x09, 0x7e, 0x0c, 0x1a, ++ 0x1a, 0x28, 0x49, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xf8, 0xa8, ++ 0xf8, 0xa8, 0xfc, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x08, 0x30, 0xc8, 0x24, 0x24, 0x40, 0xb8, 0x08, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x08, 0x0f, 0x3f, 0x27, 0x24, ++ 0x27, 0x1f, 0x7f, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0xc8, 0x48, ++ 0xf8, 0xc0, 0xfc, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x4b, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa0, 0x24, ++ 0x5c, 0xf0, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x02, 0x04, 0x39, 0x09, 0x0a, 0x7e, 0x09, 0x1c, ++ 0x1a, 0x2b, 0x4a, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x90, 0xa8, 0x24, 0x50, ++ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x05, 0x38, 0x08, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1b, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x28, ++ 0xf4, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x02, 0x05, 0x39, 0x09, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x49, 0x0b, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0x20, ++ 0x60, 0x78, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x08, 0x77, 0x11, 0x11, 0x7e, 0x17, 0x38, ++ 0x37, 0x56, 0x52, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x09, 0x71, 0x11, 0x17, 0x7c, 0x13, 0x3a, ++ 0x37, 0x56, 0x53, 0x16, 0x14, 0x1b, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0xfc, 0x28, 0xfc, 0x20, ++ 0xe8, 0xd8, 0xb4, 0xdc, 0xac, 0x44, 0x00, 0x00, ++ 0x04, 0x09, 0x71, 0x13, 0x10, 0x7d, 0x11, 0x3b, ++ 0x34, 0x55, 0x50, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x08, 0xf0, 0x48, 0xf4, 0x40, 0xf0, 0xf8, 0xfc, ++ 0x08, 0xf8, 0x40, 0xa8, 0x94, 0x70, 0x00, 0x00, ++ 0x04, 0x09, 0x76, 0x13, 0x12, 0x7f, 0x13, 0x3f, ++ 0x37, 0x54, 0x53, 0x17, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xf8, 0xa8, 0xb8, 0xa0, 0xbc, ++ 0xbc, 0xac, 0xb4, 0xbc, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x0f, 0x73, 0x12, 0x13, 0x7c, 0x13, 0x39, ++ 0x34, 0x57, 0x50, 0x17, 0x11, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xf8, 0xf0, ++ 0xa0, 0xfc, 0xc8, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x00, ++ 0x1f, 0x10, 0x3f, 0x20, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10, ++ 0xf0, 0x00, 0xf8, 0x08, 0x08, 0xf0, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x34, 0x04, 0x3f, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0xf8, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x08, 0x0a, ++ 0x73, 0x14, 0x0c, 0x0a, 0x1f, 0x62, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x40, ++ 0xf8, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x49, 0x32, 0x1f, 0x11, ++ 0x17, 0x1e, 0x11, 0x16, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x48, 0x48, 0x38, 0xf0, 0x10, ++ 0xd0, 0x50, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x24, 0x48, 0x32, 0x02, 0x32, ++ 0x0a, 0x0e, 0x74, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0xb0, ++ 0xc0, 0xb0, 0x88, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x1f, 0x02, 0x7f, ++ 0x02, 0x1f, 0x07, 0x1c, 0x67, 0x04, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x10, 0xfc, ++ 0x10, 0xf0, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x35, 0x05, 0x0f, ++ 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x0f, 0x09, ++ 0x09, 0x3f, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x88, 0x88, 0x78, 0xe0, 0xe0, ++ 0x20, 0xf8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x01, 0x3f, 0x29, 0x77, 0x3f, 0x1f, 0x12, 0x1e, ++ 0x3e, 0x22, 0x3e, 0x3e, 0x22, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x28, 0xd8, 0xf8, 0xf0, 0x90, 0xf0, ++ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x4c, 0x32, 0x07, 0x3a, 0x0b, ++ 0x7f, 0x09, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0x78, 0xf0, 0x60, 0x80, ++ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x3f, 0x25, 0x7f, 0x09, 0x7f, 0x0f, 0x0f, ++ 0x09, 0x0f, 0x7f, 0x06, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0x20, 0xfc, 0xe0, 0xe0, ++ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x4c, 0x38, 0x3e, 0x22, 0x3e, ++ 0x3f, 0x08, 0x7f, 0x0e, 0x12, 0x67, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x40, 0x7c, 0x88, ++ 0x48, 0x50, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x59, 0x1e, 0x10, 0x1e, 0x1f, ++ 0x11, 0x1d, 0x1d, 0x11, 0x1d, 0x73, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x78, 0xf0, 0x10, 0xf0, 0xf0, ++ 0x10, 0xd0, 0xd4, 0x0c, 0xcc, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x4c, 0x30, 0x3c, 0x27, 0x38, ++ 0x2b, 0x25, 0x26, 0x39, 0x20, 0x27, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x78, 0x40, 0xf8, 0x90, 0xe0, ++ 0x5c, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x00, 0x00, ++ 0x20, 0x17, 0x14, 0x4b, 0x20, 0x27, 0x00, 0x77, ++ 0x10, 0x13, 0x10, 0x13, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0xfc, 0xac, 0x3c, 0xa0, 0xfc, 0xc8, 0xe8, ++ 0xf0, 0x70, 0xa8, 0x28, 0xc0, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x26, 0x59, 0x7f, 0x0f, 0x3f, 0x2c, ++ 0x3f, 0x1f, 0x1f, 0x17, 0x1f, 0x78, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x78, 0xfc, 0xe0, 0xf8, 0xe8, ++ 0xf8, 0xf0, 0xd0, 0xf0, 0xf0, 0x1c, 0x00, 0x00, ++ 0x01, 0x3f, 0x26, 0x58, 0x06, 0x7a, 0x2a, 0x1c, ++ 0x7e, 0x19, 0x1d, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x78, 0x20, 0x3c, 0xf8, 0xa8, ++ 0xd8, 0xfc, 0x54, 0xfc, 0x04, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12, ++ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x13, 0x12, ++ 0x14, 0x14, 0x06, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x24, 0x15, 0x16, ++ 0x14, 0x18, 0x0e, 0x18, 0x61, 0x02, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0xfc, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x15, 0x14, ++ 0x14, 0x19, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x40, 0x40, 0x78, 0xc0, 0x40, ++ 0x7c, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x04, 0x24, 0x14, 0x15, ++ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7f, 0x06, 0x24, 0x15, 0x14, ++ 0x14, 0x18, 0x0e, 0x18, 0x60, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0x00, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x02, 0x22, 0x12, 0x12, ++ 0x14, 0x14, 0x06, 0x18, 0x63, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x08, 0x88, 0x48, 0x48, ++ 0x50, 0x50, 0x10, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x08, 0x7e, 0x05, 0x25, 0x15, 0x15, ++ 0x15, 0x09, 0x0f, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x08, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x05, 0x24, 0x14, 0x14, ++ 0x15, 0x09, 0x0e, 0x18, 0x60, 0x03, 0x00, 0x00, ++ 0x20, 0x20, 0x30, 0x48, 0xf4, 0x84, 0xf8, 0xa0, ++ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x7e, 0x04, 0x24, 0x14, 0x14, ++ 0x14, 0x08, 0x0e, 0x19, 0x62, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x7f, 0x05, 0x25, 0x14, 0x14, ++ 0x15, 0x0b, 0x0f, 0x19, 0x61, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x80, 0xf8, ++ 0x48, 0x68, 0x98, 0xf8, 0x08, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x4a, 0x2a, 0x2a, ++ 0x2a, 0x32, 0x16, 0x1c, 0x67, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1e, 0x29, 0x45, 0x01, 0x3f, 0x01, ++ 0x0d, 0x03, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x20, 0x10, 0x00, 0xe0, 0x20, ++ 0x20, 0x20, 0xa0, 0x64, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x12, ++ 0x22, 0x44, 0x08, 0x11, 0x02, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x48, ++ 0x48, 0x88, 0x88, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x0f, 0x09, ++ 0x09, 0x09, 0x11, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x18, 0xe0, 0x20, ++ 0x20, 0x20, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x11, ++ 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7e, ++ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x01, ++ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x1f, ++ 0x11, 0x2f, 0x41, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xf8, ++ 0x00, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x02, 0x04, ++ 0x7f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x60, 0x38, ++ 0xc4, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x10, 0x09, 0x49, ++ 0x21, 0x25, 0x09, 0x11, 0x21, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08, ++ 0x08, 0x08, 0x30, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x01, 0x7f, ++ 0x03, 0x05, 0x19, 0x67, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0xcc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x0f, 0x11, ++ 0x21, 0x7f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x00, ++ 0x00, 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20, ++ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80, ++ 0xf0, 0x80, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x20, ++ 0x27, 0x20, 0x2f, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x00, 0xf8, 0x80, ++ 0xf0, 0x90, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x3f, 0x04, ++ 0x04, 0x7f, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x40, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x0f, 0x10, ++ 0x6f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf8, 0x08, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0xb0, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x01, 0x7f, ++ 0x01, 0x1f, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc, ++ 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x02, 0x04, 0x18, ++ 0x6f, 0x01, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x40, 0x30, ++ 0xec, 0x00, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x0f, 0x11, ++ 0x7f, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xf0, 0x00, ++ 0xfc, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x7b, 0x08, 0x11, ++ 0x3d, 0x49, 0x29, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x1c, 0xf0, 0x20, 0x3c, ++ 0x20, 0x20, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x10, 0x1f, ++ 0x02, 0x3f, 0x20, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0x10, 0xf0, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x01, 0x7f, 0x09, ++ 0x09, 0x16, 0x22, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20, ++ 0x30, 0xc8, 0x88, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x29, 0x4f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x20, 0xe0, 0x20, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x12, ++ 0x34, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x40, ++ 0x7c, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x14, ++ 0x35, 0x56, 0x14, 0x14, 0x14, 0x13, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x80, 0xfc, ++ 0x90, 0x90, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10, ++ 0x1e, 0x12, 0x12, 0x12, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x90, 0xfc, 0x88, ++ 0x48, 0x50, 0x34, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x09, 0x09, ++ 0x0d, 0x13, 0x23, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x20, 0x20, ++ 0x30, 0x48, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x09, 0x7f, ++ 0x09, 0x0d, 0x19, 0x69, 0x09, 0x19, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x10, 0x10, 0xfc, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x21, ++ 0x3f, 0x27, 0x39, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x28, 0xc8, 0x08, ++ 0xf8, 0xc8, 0x38, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1f, 0x10, 0x1e, 0x60, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x13, 0x7e, 0x12, ++ 0x12, 0x1a, 0x72, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xa8, 0xb8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x01, 0x3f, 0x22, 0x4c, ++ 0x30, 0x0f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x00, 0xfc, 0x88, 0x88, ++ 0x78, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x04, 0x06, 0x09, ++ 0x1f, 0x60, 0x1f, 0x11, 0x1f, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x08, 0x48, 0x48, ++ 0xc8, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x01, 0x00, 0x1f, ++ 0x02, 0x7f, 0x01, 0x00, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x18, 0xfc, 0x10, 0xe0, 0xb4, ++ 0x4c, 0xf8, 0x20, 0xc4, 0xb4, 0x0c, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x5f, 0x00, 0x7f, 0x1f, 0x3f, ++ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0xfc, ++ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x11, 0x3f, 0x41, ++ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x18, 0xf0, 0x08, 0xf4, 0x10, ++ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x03, 0x0c, 0x3f, 0x01, ++ 0x7f, 0x01, 0x1f, 0x01, 0x01, 0x03, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x80, 0xf0, 0x10, ++ 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3d, 0x25, 0x25, 0x3d, ++ 0x25, 0x3d, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x08, 0x30, 0xf8, ++ 0x48, 0x48, 0x30, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x20, 0x2f, 0x24, ++ 0x26, 0x29, 0x22, 0x2c, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x80, 0xf8, 0x90, ++ 0xb0, 0x48, 0x20, 0x18, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x47, 0x0f, 0x08, 0x0f, 0x0f, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xe0, 0x20, 0xe0, 0xe0, ++ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x09, 0x08, 0x17, 0x11, ++ 0x31, 0x52, 0x17, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x10, 0xfc, 0x00, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x12, 0x12, 0x7f, ++ 0x12, 0x1f, 0x12, 0x12, 0x1e, 0x13, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0x40, 0x40, 0xfc, ++ 0xa4, 0x28, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x00, 0x1f, 0x10, 0x1f, ++ 0x10, 0x17, 0x14, 0x17, 0x24, 0x41, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x50, 0xfc, 0x48, 0xc8, ++ 0x48, 0xb0, 0xb4, 0xb4, 0x4c, 0x84, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x47, 0x04, 0x0f, 0x7f, 0x03, ++ 0x7d, 0x07, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xe0, 0x40, 0xc0, 0xfc, 0x88, ++ 0xd0, 0xe0, 0xa0, 0x90, 0x8c, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x1f, 0x04, 0x7f, ++ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x48, 0xf8, 0xf0, 0x40, 0xfc, ++ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x1f, 0x28, 0x45, 0x09, 0x3e, 0x22, ++ 0x3e, 0x20, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x20, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x0f, 0x08, 0x7f, ++ 0x08, 0x0f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xe0, 0x20, 0xfc, ++ 0x20, 0xe8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x45, 0x7f, 0x3f, 0x08, 0x7f, ++ 0x08, 0x3f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0xf8, 0x20, 0xfc, ++ 0x20, 0xf8, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x47, 0x3f, 0x26, 0x21, 0x2e, ++ 0x3f, 0x10, 0x1f, 0x10, 0x1e, 0x70, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0x48, 0xc8, 0x28, ++ 0xf8, 0x88, 0x90, 0xe4, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x7f, 0x04, 0x3f, 0x24, ++ 0x3f, 0x01, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xfc, 0x40, 0xf8, 0x48, ++ 0xf8, 0x00, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x49, 0x7e, 0x14, 0x7f, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x78, 0x08, 0x78, ++ 0x40, 0x78, 0x78, 0x78, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x45, 0x3f, 0x1f, 0x7f, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf8, 0xf0, 0xfc, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x08, 0x08, 0x7f, 0x08, ++ 0x0f, 0x13, 0x12, 0x22, 0x44, 0x1f, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0xfc, 0x80, 0xf8, ++ 0x20, 0xfc, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3f, 0x24, 0x3f, 0x24, ++ 0x3f, 0x24, 0x2e, 0x2a, 0x2e, 0x41, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x90, 0x90, 0xa8, 0xc8, ++ 0x90, 0xa4, 0x84, 0x88, 0x90, 0xa0, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x5f, 0x11, 0x1f, 0x11, 0x1f, ++ 0x7f, 0x09, 0x3f, 0x01, 0x3f, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x10, 0x0b, 0x40, 0x27, ++ 0x03, 0x71, 0x13, 0x10, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x90, 0xf0, 0xa0, 0xe0, 0x5c, ++ 0xf8, 0xf0, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x13, 0x48, 0x22, 0x15, ++ 0x23, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0xf0, 0x98, 0x94, 0x14, ++ 0x60, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x4f, 0x09, 0x7f, 0x0f, 0x0f, ++ 0x09, 0x0f, 0x7f, 0x0e, 0x01, 0x3e, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xfc, 0xe0, 0xe0, ++ 0x20, 0xe0, 0xfc, 0x40, 0xe0, 0x10, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7f, 0x01, 0x09, 0x09, 0x7f, ++ 0x07, 0x04, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0xf0, 0x00, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x4f, 0x09, 0x0f, 0x7f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xe0, 0x20, 0xe0, 0xfc, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7f, 0x04, 0x07, 0x7f, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0xd0, 0xf8, 0x40, 0xc0, 0xfc, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x60, 0x18, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7e, 0x14, 0x7f, 0x0e, 0x14, ++ 0x7f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf8, 0x50, 0xfc, 0x30, 0xd4, ++ 0xfc, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7f, 0x1f, 0x12, 0x1f, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0x90, 0xf0, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x43, 0x0c, 0x7f, 0x12, 0x1d, ++ 0x17, 0x11, 0x11, 0x13, 0x22, 0x43, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xe0, 0x80, 0xfc, 0x24, 0xfc, ++ 0xf8, 0xe0, 0xe0, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x5f, 0x01, 0x7f, 0x1f, 0x15, ++ 0x1d, 0x11, 0x1f, 0x1d, 0x25, 0x45, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf0, 0x10, 0xfc, 0xf0, 0x50, ++ 0x70, 0x10, 0xf0, 0x70, 0x50, 0x50, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x02, 0x0c, 0x77, 0x00, ++ 0x1e, 0x12, 0x1e, 0x0c, 0x12, 0x61, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x10, 0x80, 0x60, 0xdc, 0x00, ++ 0xf0, 0x90, 0xf0, 0x60, 0x90, 0x08, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x7f, 0x1f, 0x7f, 0x1f, 0x01, ++ 0x1f, 0x7f, 0x1e, 0x13, 0x1e, 0x10, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xfc, 0xf0, 0xfc, 0xe8, 0x00, ++ 0xe0, 0xfc, 0x10, 0xfc, 0x90, 0x30, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x7f, 0x24, 0x3e, 0x3f, 0x24, ++ 0x3f, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x40, 0x7c, 0x80, 0x00, 0x78, ++ 0x00, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x5f, 0x15, 0x7f, 0x1f, 0x1f, ++ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x20, 0x20, 0xfc, 0x48, 0xc8, ++ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x4d, 0x09, 0x7e, 0x13, 0x1c, ++ 0x14, 0x14, 0x14, 0x27, 0x24, 0x5b, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x90, 0xfc, 0x90, 0xfc, 0x90, ++ 0xf0, 0xf0, 0x90, 0xfc, 0x90, 0x08, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x51, 0x13, 0x7e, 0x12, 0x17, ++ 0x13, 0x1e, 0x73, 0x12, 0x13, 0x32, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x40, 0xbc, 0x94, 0xe4, 0x58, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x1f, 0x28, 0x45, 0x3e, 0x27, 0x24, 0x3f, ++ 0x25, 0x3f, 0x24, 0x27, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x50, 0x48, 0xfc, 0xa0, 0xfc, ++ 0x50, 0x58, 0xe4, 0x50, 0x4c, 0xc0, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x41, 0x3f, 0x24, 0x27, 0x3d, ++ 0x27, 0x3c, 0x27, 0x25, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x50, 0xf8, 0xa4, 0xfc, 0x50, ++ 0xac, 0xd0, 0xf8, 0x54, 0x48, 0x48, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x08, 0x3e, 0x2a, ++ 0x2a, 0x3e, 0x1c, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0xf8, 0x48, 0x98, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x52, 0x12, 0x2d, 0x7f, 0x0a, ++ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x78, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x40, 0x50, 0x48, 0xfc, 0x28, ++ 0xa8, 0xb0, 0x10, 0xb4, 0xcc, 0x84, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x44, 0x3f, 0x04, 0x7f, 0x0a, ++ 0x3b, 0x3b, 0x0a, 0x3b, 0x0f, 0x70, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x40, 0xd0, 0x48, 0xfc, 0x28, ++ 0xa8, 0xb0, 0x14, 0xb4, 0xcc, 0x84, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x46, 0x0c, 0x77, 0x3b, 0x2a, ++ 0x3b, 0x3f, 0x24, 0x3f, 0x24, 0x24, 0x00, 0x00, ++ 0x40, 0x7c, 0xa0, 0x90, 0x60, 0xdc, 0xb8, 0xa8, ++ 0xb8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x10, 0x1f, 0x24, 0x49, 0x7f, 0x26, 0x3a, 0x37, ++ 0x3e, 0x7f, 0x4d, 0x7f, 0x41, 0x43, 0x00, 0x00, ++ 0x40, 0x7c, 0x90, 0x48, 0x50, 0x7c, 0xd0, 0x78, ++ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x11, 0x55, 0x35, 0x39, 0x11, 0x7d, 0x11, 0x39, ++ 0x35, 0x55, 0x51, 0x11, 0x11, 0x16, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x02, 0x1f, 0x15, 0x13, 0x1f, 0x13, 0x1d, 0x1f, ++ 0x00, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0x90, 0xf0, 0x90, 0x50, 0xf0, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7f, 0x08, 0x1c, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x7c, 0x01, 0x02, 0x0c, 0x71, 0x13, 0x09, ++ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x48, 0xc0, 0x30, 0x2c, 0x20, ++ 0x40, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x57, 0x34, 0x38, 0x10, 0x7f, 0x12, 0x3a, ++ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x3a, 0x13, 0x7e, 0x12, 0x3a, ++ 0x36, 0x56, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0xe8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x4b, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x4b, 0x2a, 0x2d, 0x09, 0x7f, 0x09, 0x1d, ++ 0x1b, 0x2b, 0x48, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x80, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x0e, 0x08, 0x1f, 0x72, 0x0c, 0x73, 0x11, ++ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x50, 0x20, 0xd0, 0x0c, 0x10, ++ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x40, 0x2a, 0x12, 0x25, 0x22, 0x11, ++ 0x09, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x98, 0x94, 0x14, 0x60, 0x10, ++ 0x20, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x08, 0x7f, 0x08, 0x1c, ++ 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, ++ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x04, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x09, 0x1e, ++ 0x1a, 0x2b, 0x48, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x90, 0x90, 0xd8, 0x24, 0x24, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x4a, 0x2a, 0x2c, 0x09, 0x7e, 0x08, 0x1d, ++ 0x1a, 0x2a, 0x48, 0x09, 0x0a, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0xf8, 0x00, 0x00, 0xfc, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x10, 0x54, 0x37, 0x38, 0x10, 0x7c, 0x11, 0x39, ++ 0x37, 0x55, 0x51, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xa0, 0xa0, 0x24, 0x28, ++ 0x30, 0x60, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x10, 0x55, 0x34, 0x38, 0x13, 0x7c, 0x13, 0x38, ++ 0x34, 0x57, 0x50, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0xe8, 0x30, 0x60, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2c, 0x08, 0x7e, 0x08, 0x1c, ++ 0x1b, 0x2b, 0x49, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90, ++ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x4a, 0x2b, 0x2d, 0x0b, 0x7e, 0x09, 0x1c, ++ 0x1b, 0x2a, 0x48, 0x0b, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x40, 0xe4, 0x68, ++ 0xb0, 0x70, 0xa8, 0x24, 0x20, 0xc0, 0x00, 0x00, ++ 0x10, 0x57, 0x34, 0x38, 0x13, 0x7e, 0x12, 0x3a, ++ 0x36, 0x56, 0x52, 0x14, 0x14, 0x18, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0x00, 0xfc, 0x00, 0xf8, 0xa8, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x14, ++ 0x12, 0x1f, 0x11, 0x26, 0x38, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0x54, 0x90, ++ 0xa0, 0xfc, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00, ++ 0x10, 0x54, 0x37, 0x38, 0x11, 0x7f, 0x11, 0x39, ++ 0x35, 0x54, 0x53, 0x10, 0x11, 0x16, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x3d, 0x0b, 0x3f, 0x3b, 0x0d, 0x31, 0x7f, 0x0f, ++ 0x08, 0x0f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00, ++ 0x78, 0x48, 0xf8, 0xb8, 0x48, 0x30, 0xfc, 0xe0, ++ 0x20, 0xe0, 0xf8, 0x58, 0xf8, 0x18, 0x00, 0x00, ++ 0x10, 0x57, 0x34, 0x3b, 0x13, 0x7d, 0x10, 0x3b, ++ 0x34, 0x57, 0x52, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xfc, ++ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x57, 0x36, 0x3b, 0x12, 0x7e, 0x12, 0x3a, ++ 0x36, 0x57, 0x53, 0x15, 0x15, 0x19, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0x39, 0x08, 0x09, 0x14, 0x23, 0x48, 0x2a, ++ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc, ++ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x2b, 0x2a, 0x3f, 0x4a, 0x7f, 0x4a, 0x2a, ++ 0x1d, 0x7e, 0x1c, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x50, 0xfc, ++ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7d, ++ 0x08, 0x2a, 0x29, 0x29, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7d, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x10, 0x90, 0x50, ++ 0x50, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0d, 0x12, 0x7d, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x15, 0x65, 0x19, 0x19, 0x25, 0x7d, ++ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x20, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x03, 0x0d, 0x71, 0x02, ++ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x40, 0x80, 0x60, 0x1c, 0x40, ++ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x1a, 0x1a, 0x26, 0x7e, ++ 0x12, 0x1a, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x15, 0x0d, 0x13, 0x7f, ++ 0x0d, 0x2b, 0x2b, 0x29, 0x4b, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x00, 0x20, 0x20, 0x20, ++ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x1c, 0x1a, 0x29, 0x49, 0x02, ++ 0x1e, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x40, ++ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0x80, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x90, 0x88, 0xf4, 0x04, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x13, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x00, 0x00, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20, ++ 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x0d, 0x0c, 0x12, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2b, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x50, 0x30, 0xdc, 0x10, ++ 0xf8, 0x90, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0x24, 0xa4, 0xa8, 0x20, 0xfc, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x15, 0x65, 0x1a, 0x18, 0x24, 0x7d, ++ 0x13, 0x19, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x80, 0xf8, 0x00, 0x00, 0x80, 0xfc, 0x90, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x28, 0xc8, 0x50, 0x30, 0x48, 0xfc, ++ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x64, 0x1b, 0x18, 0x24, 0x7c, ++ 0x13, 0x38, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0x24, 0xfc, 0xa0, 0xa8, 0xe8, ++ 0xa8, 0x90, 0x14, 0x2c, 0x4c, 0x84, 0x00, 0x00, ++ 0x08, 0x7e, 0x12, 0x12, 0x3c, 0x04, 0x1b, 0x62, ++ 0x1c, 0x03, 0x7f, 0x05, 0x09, 0x31, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x40, ++ 0xa0, 0x18, 0xe4, 0x40, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x73, 0x15, 0x0d, 0x13, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0x48, 0x30, 0x24, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x15, 0x0c, 0x12, 0x7e, ++ 0x0d, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x08, 0xf0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0, ++ 0x50, 0x50, 0x9c, 0x84, 0x04, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x16, 0x14, 0x37, 0x54, 0x15, ++ 0x14, 0x17, 0x15, 0x15, 0x12, 0x10, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x4c, 0x50, 0xb0, ++ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0d, 0x12, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x20, 0x20, 0xfc, ++ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x09, 0x2d, 0x2b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x20, 0x40, ++ 0xfc, 0x04, 0x04, 0x04, 0xfc, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x64, 0x29, 0x18, 0x25, 0x7e, ++ 0x18, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0xa8, 0x30, 0x40, ++ 0xa0, 0xa8, 0x84, 0x84, 0x90, 0x70, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x60, 0x50, 0x88, 0xfc, 0x08, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x00, 0x3f, 0x22, 0x3e, 0x23, 0x22, ++ 0x4e, 0x01, 0x7f, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x60, 0x90, 0x4c, ++ 0xc0, 0x30, 0xc8, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0d, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0xa8, 0xa4, 0xfc, 0x20, 0xfc, 0x50, 0x88, ++ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x0c, 0x0d, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0xe8, 0xa4, 0x94, 0x10, 0x20, 0x20, ++ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x12, 0x12, 0x14, 0x66, 0x1a, 0x18, 0x27, 0x7e, ++ 0x12, 0x3b, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0x48, 0x48, 0x00, 0xf8, 0x48, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2b, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x3c, 0x20, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xe8, 0x28, 0x34, 0xcc, 0x50, ++ 0x5c, 0xe8, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f, ++ 0x18, 0x34, 0x36, 0x32, 0x54, 0x10, 0x00, 0x00, ++ 0x80, 0xf8, 0x48, 0xf8, 0xa8, 0x68, 0x98, 0xf8, ++ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x1b, 0x1a, 0x27, 0x7e, ++ 0x1a, 0x36, 0x36, 0x32, 0x54, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x65, 0x1b, 0x19, 0x26, 0x7f, ++ 0x10, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x88, 0xf8, ++ 0x88, 0xa8, 0xa8, 0xe8, 0x28, 0x30, 0x00, 0x00, ++ 0x08, 0x11, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x09, ++ 0x7e, 0x4a, 0x4a, 0x4a, 0x4f, 0x08, 0x00, 0x00, ++ 0x0c, 0xf0, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc, ++ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x64, 0x19, 0x1b, 0x24, 0x7f, ++ 0x12, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x65, 0x19, 0x19, 0x25, 0x7d, ++ 0x19, 0x35, 0x35, 0x32, 0x53, 0x16, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x20, 0x20, ++ 0xfc, 0x20, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x73, 0x16, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xf0, 0x90, 0x90, 0xf0, ++ 0x80, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f, ++ 0x13, 0x3b, 0x37, 0x33, 0x54, 0x18, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8, ++ 0x50, 0x54, 0xdc, 0x6c, 0x44, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0f, 0x12, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x4b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x12, 0x7e, ++ 0x09, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20, ++ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f, ++ 0x12, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x80, 0x70, 0x50, 0x54, 0xd4, 0x4c, 0x80, 0xf8, ++ 0x48, 0x28, 0xb0, 0x10, 0x28, 0xc4, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x69, 0x2a, 0x1a, 0x27, 0x7d, ++ 0x17, 0x39, 0x35, 0x31, 0x56, 0x10, 0x00, 0x00, ++ 0x20, 0xe0, 0x20, 0x20, 0xbc, 0xc8, 0x68, 0x28, ++ 0xe8, 0x10, 0x50, 0xa8, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2b, 0x1a, 0x26, 0x7f, ++ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00, ++ 0x10, 0x90, 0x90, 0xb8, 0xb8, 0xb4, 0xd4, 0xd4, ++ 0xb8, 0x88, 0x90, 0xa0, 0x40, 0x80, 0x00, 0x00, ++ 0x10, 0x11, 0x15, 0x65, 0x29, 0x19, 0x25, 0x7d, ++ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xfc, 0x10, 0xcc, ++ 0xfc, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x67, 0x2a, 0x1b, 0x26, 0x7f, ++ 0x13, 0x3b, 0x37, 0x34, 0x55, 0x1a, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0x20, 0xe8, 0xa8, 0xe8, ++ 0x58, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x18, 0x24, 0x7d, ++ 0x13, 0x39, 0x35, 0x35, 0x53, 0x10, 0x00, 0x00, ++ 0xf0, 0x10, 0x90, 0xf8, 0x04, 0xb0, 0x90, 0x08, ++ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1e, 0x52, 0x5e, 0x52, 0x5e, 0x52, 0x5f, ++ 0x40, 0x7e, 0x2c, 0x2a, 0x4b, 0x08, 0x00, 0x00, ++ 0x04, 0xf8, 0x20, 0xc8, 0x50, 0x30, 0x48, 0xfc, ++ 0x24, 0xb0, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x66, 0x2c, 0x1b, 0x25, 0x7c, ++ 0x13, 0x38, 0x37, 0x34, 0x50, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x48, 0x40, 0xf8, 0x10, 0xa0, ++ 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7f, ++ 0x0c, 0x2a, 0x2b, 0x2a, 0x4f, 0x08, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xfc, ++ 0x80, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x6a, 0x2d, 0x19, 0x25, 0x7e, ++ 0x16, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0x50, 0xb8, 0xa4, 0x24, 0xa0, ++ 0xa0, 0xb8, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e, ++ 0x13, 0x3a, 0x37, 0x34, 0x58, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0xa8, 0xf0, ++ 0x9c, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x64, 0x29, 0x1b, 0x24, 0x7f, ++ 0x11, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0x90, 0x68, 0xfc, 0x00, 0xfc, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c, ++ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x48, 0x78, 0x40, 0x78, ++ 0x48, 0x48, 0x78, 0x48, 0xc0, 0x3c, 0x00, 0x00, ++ 0x00, 0x39, 0x29, 0x2a, 0x2f, 0x39, 0x2a, 0x2d, ++ 0x38, 0x2f, 0x29, 0x29, 0x2a, 0x58, 0x00, 0x00, ++ 0x40, 0x50, 0xf8, 0xa4, 0xfc, 0x50, 0x58, 0xb4, ++ 0x48, 0xfc, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x67, 0x28, 0x1b, 0x24, 0x7c, ++ 0x13, 0x39, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00, ++ 0x00, 0xfc, 0xcc, 0x74, 0xcc, 0x74, 0x44, 0xa0, ++ 0x70, 0x9c, 0x68, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x69, 0x2f, 0x14, 0x2c, 0x7f, ++ 0x15, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x20, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0x30, 0x28, 0xfc, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x16, 0x16, 0x1a, 0x11, ++ 0x17, 0x10, 0x1f, 0x22, 0x2c, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0xb8, 0xbc, 0xd4, 0x20, ++ 0x60, 0x98, 0xe4, 0xb0, 0x88, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x72, 0x14, 0x0c, 0x13, 0x7f, ++ 0x09, 0x2d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x6b, 0x2a, 0x1b, 0x24, 0x7d, ++ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x00, 0xf0, ++ 0x00, 0xfc, 0x50, 0x48, 0x48, 0xc0, 0x00, 0x00, ++ 0x10, 0x12, 0x16, 0x67, 0x28, 0x1b, 0x26, 0x7e, ++ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x19, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0xf8, 0x00, 0xb8, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xb8, 0xa8, 0xc8, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x0a, 0x73, 0x14, 0x0c, 0x12, 0x7e, ++ 0x08, 0x2d, 0x2a, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x48, 0xf0, 0x28, 0xc4, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x24, 0x7d, ++ 0x10, 0x3b, 0x35, 0x35, 0x52, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x90, 0xb0, ++ 0x48, 0xf4, 0x50, 0x48, 0x48, 0x40, 0x00, 0x00, ++ 0x12, 0x11, 0x15, 0x64, 0x2a, 0x19, 0x25, 0x7c, ++ 0x13, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00, ++ 0x10, 0x13, 0x14, 0x67, 0x2b, 0x1b, 0x24, 0x7d, ++ 0x10, 0x3b, 0x34, 0x34, 0x53, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xfc, 0x58, 0xf8, 0x40, 0xf8, ++ 0x00, 0xfc, 0x50, 0x88, 0xf4, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7e, ++ 0x12, 0x3a, 0x36, 0x36, 0x53, 0x12, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xe8, 0xa8, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x68, 0x08, 0x00, 0x00, ++ 0x12, 0x12, 0x17, 0x6a, 0x2f, 0x18, 0x2b, 0x7e, ++ 0x13, 0x3a, 0x37, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0xa0, 0xa0, 0xe0, 0xa0, 0xfc, 0x48, 0xa8, 0xa8, ++ 0xa8, 0x90, 0x90, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x14, 0x67, 0x29, 0x1b, 0x25, 0x7d, ++ 0x13, 0x3b, 0x34, 0x34, 0x51, 0x12, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xfc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x09, 0x0a, 0x72, 0x17, 0x0c, 0x12, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7e, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8, ++ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x28, 0x1b, 0x24, 0x7f, ++ 0x11, 0x3f, 0x34, 0x37, 0x50, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x14, 0x65, 0x2a, 0x1b, 0x27, 0x7e, ++ 0x13, 0x39, 0x35, 0x35, 0x51, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8, ++ 0xf8, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x29, 0x1a, 0x26, 0x7f, ++ 0x12, 0x3a, 0x37, 0x36, 0x50, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8, ++ 0xa8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x12, 0x17, 0x66, 0x2a, 0x1b, 0x27, 0x7e, ++ 0x13, 0x3a, 0x37, 0x37, 0x53, 0x12, 0x00, 0x00, ++ 0x90, 0xd8, 0x68, 0xd0, 0xa8, 0xf8, 0xfc, 0xd8, ++ 0x68, 0x90, 0x68, 0xf8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x14, 0x67, 0x2b, 0x1f, 0x24, 0x7f, ++ 0x10, 0x3b, 0x36, 0x36, 0x52, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x58, 0x58, 0x40, 0xfc, ++ 0x40, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x17, 0x68, 0x2f, 0x12, 0x2a, 0x7d, ++ 0x11, 0x39, 0x35, 0x35, 0x52, 0x14, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0xe4, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x0b, 0x72, 0x14, 0x0c, 0x13, 0x7e, ++ 0x0c, 0x2a, 0x2a, 0x28, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0x70, 0x8c, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x0b, 0x73, 0x14, 0x0d, 0x12, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x20, 0xfc, 0x08, 0xfc, 0xa8, 0x70, 0x78, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x7d, 0x2e, 0x2a, 0x29, 0x7e, 0x13, ++ 0x1d, 0x75, 0x15, 0x25, 0x29, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x7c, 0xa8, 0xa8, 0x28, 0xfc, 0xd0, ++ 0x10, 0xfc, 0x50, 0x50, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2a, 0x1b, 0x26, 0x7f, ++ 0x18, 0x37, 0x36, 0x32, 0x57, 0x10, 0x00, 0x00, ++ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x15, 0x67, 0x29, 0x19, 0x27, 0x7c, ++ 0x13, 0x3a, 0x36, 0x37, 0x52, 0x10, 0x00, 0x00, ++ 0x00, 0x7c, 0x10, 0xd0, 0x38, 0x28, 0xb8, 0x28, ++ 0xb8, 0xa8, 0xb8, 0xa8, 0xa4, 0x44, 0x00, 0x00, ++ 0x11, 0x13, 0x15, 0x67, 0x29, 0x1a, 0x25, 0x7d, ++ 0x11, 0x39, 0x35, 0x35, 0x50, 0x13, 0x00, 0x00, ++ 0x10, 0xb8, 0x10, 0xfc, 0x10, 0xa8, 0xf4, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x10, 0x17, 0x11, 0x67, 0x2a, 0x1b, 0x27, 0x7f, ++ 0x11, 0x39, 0x35, 0x35, 0x51, 0x16, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0xf8, 0xb8, 0x38, 0xf8, 0xf0, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x66, 0x2a, 0x1a, 0x26, 0x7e, ++ 0x13, 0x3a, 0x37, 0x34, 0x54, 0x1b, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8, ++ 0xfc, 0xa8, 0x74, 0xf8, 0x20, 0xfc, 0x00, 0x00, ++ 0x11, 0x11, 0x15, 0x67, 0x2a, 0x1a, 0x24, 0x7e, ++ 0x19, 0x35, 0x35, 0x32, 0x54, 0x10, 0x00, 0x00, ++ 0x00, 0x7c, 0x10, 0xd0, 0xb8, 0x68, 0xf8, 0xa8, ++ 0xb8, 0xa8, 0x78, 0x68, 0x24, 0x44, 0x00, 0x00, ++ 0x10, 0x13, 0x16, 0x67, 0x2b, 0x1a, 0x27, 0x7d, ++ 0x12, 0x3b, 0x34, 0x35, 0x50, 0x13, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xb8, 0xa8, 0xb8, 0xa8, ++ 0x44, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00, ++ 0x10, 0x11, 0x17, 0x65, 0x29, 0x19, 0x25, 0x7f, ++ 0x10, 0x3b, 0x35, 0x35, 0x50, 0x17, 0x00, 0x00, ++ 0xf0, 0x20, 0xf8, 0xf8, 0xe4, 0x38, 0xe4, 0x5c, ++ 0xf0, 0xf0, 0x50, 0xf8, 0xa4, 0x1c, 0x00, 0x00, ++ 0x12, 0x12, 0x13, 0x6d, 0x2f, 0x1a, 0x2e, 0x7a, ++ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00, ++ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8, ++ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00, ++ 0x11, 0x11, 0x17, 0x69, 0x2f, 0x1a, 0x2e, 0x7a, ++ 0x16, 0x3a, 0x3e, 0x33, 0x56, 0x10, 0x00, 0x00, ++ 0x20, 0x30, 0xe8, 0x28, 0xfc, 0xa0, 0xe8, 0xa8, ++ 0xe8, 0xd0, 0x90, 0xf4, 0x4c, 0x84, 0x00, 0x00, ++ 0x01, 0x3f, 0x0f, 0x7f, 0x0f, 0x7f, 0x1f, 0x2e, ++ 0x2f, 0x2e, 0x2e, 0x3f, 0x2a, 0x49, 0x00, 0x00, ++ 0x00, 0xf8, 0xe0, 0xfc, 0xe0, 0xfc, 0xe0, 0xdc, ++ 0xf8, 0xd0, 0x28, 0xfc, 0x58, 0x94, 0x00, 0x00, ++ 0x10, 0x17, 0x15, 0x6f, 0x2f, 0x15, 0x2f, 0x7d, ++ 0x19, 0x35, 0x35, 0x31, 0x50, 0x17, 0x00, 0x00, ++ 0x20, 0xbc, 0x40, 0xf8, 0xfc, 0x74, 0xfc, 0xf0, ++ 0xf0, 0xf0, 0x10, 0xf4, 0xa4, 0x1c, 0x00, 0x00, ++ 0x10, 0x11, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2a, ++ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x1e, 0x28, 0x48, 0x7f, 0x08, 0x2b, ++ 0x2a, 0x2a, 0x2a, 0x3e, 0x23, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x3f, 0x29, 0x49, 0x7f, 0x09, ++ 0x2d, 0x2d, 0x2d, 0x3e, 0x26, 0x24, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x58, 0xe8, 0x38, 0x18, 0xe8, ++ 0xa8, 0x70, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x66, ++ 0x0f, 0x11, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0x50, 0x8c, ++ 0xf0, 0x00, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x0f, 0x09, 0x0f, 0x0f, 0x3e, 0x3e, 0x2a, ++ 0x3e, 0x0f, 0x7f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xf8, 0xf8, 0xa8, ++ 0xf8, 0xe0, 0xfc, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x3f, 0x2b, 0x48, 0x7f, 0x0b, ++ 0x2d, 0x2c, 0x2f, 0x3c, 0x24, 0x23, 0x00, 0x00, ++ 0xf0, 0x10, 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x78, ++ 0xd8, 0xf0, 0xfc, 0x90, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x3f, 0x29, 0x49, 0x7e, 0x09, ++ 0x2f, 0x2d, 0x2d, 0x3d, 0x25, 0x21, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0xf8, 0x68, 0xf8, 0x90, 0xfc, ++ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x44, 0x44, 0x44, 0x66, 0x55, 0x48, ++ 0x4c, 0x4c, 0x53, 0x51, 0x62, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x88, ++ 0xc8, 0xc8, 0x28, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x44, 0x08, 0x10, 0x1f, 0x01, ++ 0x01, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x88, 0x78, 0x00, 0xf0, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x22, 0x22, 0x3f, 0x21, 0x27, ++ 0x24, 0x24, 0x24, 0x23, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0xf8, 0x08, 0xe8, ++ 0x08, 0x08, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x00, 0x7f, 0x00, ++ 0x01, 0x07, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x00, 0xfc, 0x80, ++ 0x80, 0x60, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x21, 0x01, 0x7f, ++ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1f, 0x10, 0x1f, ++ 0x11, 0x1f, 0x10, 0x10, 0x1f, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf0, 0x10, 0xf0, ++ 0x00, 0xf8, 0x80, 0x44, 0x34, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x02, 0x7f, 0x09, 0x1f, ++ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xfc, 0x20, 0xf0, ++ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x01, 0x01, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3f, 0x08, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x20, 0x20, 0xfc, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x00, 0x1c, 0x7f, 0x00, ++ 0x1c, 0x1c, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x10, 0x10, 0xfc, 0x10, ++ 0x90, 0x50, 0x50, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x10, 0x14, 0x64, 0x19, ++ 0x15, 0x7f, 0x2d, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0xf0, 0x90, 0xf0, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7e, 0x3e, 0x22, ++ 0x3e, 0x3e, 0x22, 0x26, 0x24, 0x42, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x90, 0xe0, 0x88, 0x78, ++ 0x90, 0xe0, 0x88, 0x78, 0x88, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x7f, 0x0f, 0x08, 0x0f, ++ 0x0f, 0x7f, 0x1f, 0x69, 0x09, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xe0, 0x20, 0xe0, ++ 0xe0, 0xfc, 0xf0, 0x2c, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c, ++ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0xfc, 0xa0, 0xf8, 0xa0, ++ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x14, 0x7f, 0x14, 0x1c, ++ 0x3f, 0x2a, 0x3e, 0x7f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x20, 0xf8, 0x60, 0x90, ++ 0xfc, 0xe8, 0xa8, 0xe8, 0x88, 0x18, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x04, 0x04, 0x3f, 0x01, 0x01, 0x1f, 0x01, ++ 0x01, 0x7f, 0x00, 0x24, 0x22, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x00, 0x00, 0xf0, 0x00, ++ 0x00, 0xfc, 0x00, 0x88, 0x44, 0x44, 0x00, 0x00, ++ 0x08, 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x08, ++ 0x0f, 0x11, 0x2f, 0x42, 0x3f, 0x00, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, ++ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08, ++ 0x0e, 0x78, 0x10, 0x11, 0x27, 0x40, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0x90, ++ 0x90, 0x94, 0xcc, 0x8c, 0xf4, 0x04, 0x00, 0x00, ++ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x09, 0x3e, 0x09, ++ 0x0e, 0x78, 0x10, 0x10, 0x20, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x7f, 0x1f, 0x07, 0x1c, 0x67, ++ 0x04, 0x3f, 0x1f, 0x01, 0x7f, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0xf0, 0xf8, 0x08, 0xf8, ++ 0x40, 0xf8, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x22, 0x12, 0x14, 0x7f, 0x08, 0x08, 0x3e, 0x08, ++ 0x0f, 0x79, 0x11, 0x11, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc, ++ 0x24, 0x64, 0x94, 0xf4, 0x04, 0x18, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x06, 0x38, ++ 0x7f, 0x1a, 0x7f, 0x1e, 0x02, 0x0d, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x50, 0x48, ++ 0xfc, 0x28, 0x28, 0x14, 0x6c, 0x84, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x7f, 0x24, 0x4a, 0x3f, ++ 0x0f, 0x7f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0x88, 0x64, 0xf8, ++ 0xe0, 0xfc, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x24, 0x42, ++ 0x3f, 0x0f, 0x01, 0x7f, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x88, 0x44, ++ 0xf8, 0xe0, 0x00, 0xfc, 0x60, 0x1c, 0x00, 0x00, ++ 0x44, 0x2b, 0x7f, 0x12, 0x12, 0x3a, 0x13, 0x1d, ++ 0x71, 0x11, 0x21, 0x21, 0x47, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x1f, 0x1f, 0x10, 0x1f, 0x3a, ++ 0x2f, 0x3b, 0x29, 0x3f, 0x29, 0x59, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0xf0, 0x10, 0xf0, 0xb8, ++ 0xe8, 0xa8, 0x38, 0xec, 0x2c, 0x44, 0x00, 0x00, ++ 0x08, 0x3f, 0x01, 0x1f, 0x7f, 0x01, 0x19, 0x7f, ++ 0x19, 0x19, 0x3d, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x20, 0xf8, 0x00, 0xf0, 0xfc, 0x00, 0x30, 0xfc, ++ 0x30, 0x30, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x11, 0x12, 0x7c, 0x24, ++ 0x15, 0x1a, 0x08, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8, ++ 0x68, 0x48, 0x48, 0xd8, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x02, 0x3f, ++ 0x04, 0x09, 0x31, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x00, 0xc0, ++ 0x44, 0x3c, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7d, 0x09, 0x4a, 0x2c, 0x28, ++ 0x29, 0x11, 0x1a, 0x64, 0x00, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x98, 0x98, 0xa8, 0xc8, 0x98, ++ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x08, 0x0f, 0x00, ++ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00, ++ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x20, 0xe0, 0x00, ++ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x44, 0x27, 0x28, 0x7c, 0x12, 0x11, 0x3d, 0x10, ++ 0x19, 0x72, 0x14, 0x10, 0x20, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xc8, 0xa8, 0xa8, 0x88, ++ 0x98, 0xa8, 0xc8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x04, 0x7c, 0x04, 0x3c, 0x04, 0x7c, 0x08, 0x7f, ++ 0x06, 0x1a, 0x67, 0x1a, 0x63, 0x06, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0xf8, ++ 0x18, 0x68, 0x98, 0x68, 0x88, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x3e, 0x3a, 0x26, 0x3a, 0x26, 0x26, ++ 0x7f, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x08, 0x48, 0x48, 0x48, 0x48, 0x18, ++ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x3e, 0x22, 0x3f, 0x20, 0x3e, ++ 0x2e, 0x7f, 0x6e, 0x2e, 0x2e, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xd8, 0xd8, 0x68, 0x48, 0xd8, ++ 0xd8, 0x68, 0x48, 0x48, 0x48, 0xd8, 0x00, 0x00, ++ 0x00, 0x3f, 0x2e, 0x34, 0x3f, 0x2c, 0x32, 0x3f, ++ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, ++ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x08, 0x3d, 0x08, 0x7e, 0x25, 0x7e, 0x24, 0x3e, ++ 0x41, 0x7e, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0xd8, 0xd8, ++ 0x68, 0x48, 0x48, 0xdc, 0x04, 0xfc, 0x00, 0x00, ++ 0x06, 0x7b, 0x2a, 0x1c, 0x7f, 0x1c, 0x1a, 0x29, ++ 0x7e, 0x2a, 0x3e, 0x2a, 0x3f, 0x22, 0x00, 0x00, ++ 0x00, 0xf4, 0x78, 0xb8, 0xb4, 0xac, 0xa4, 0xf4, ++ 0xb8, 0xb8, 0xb4, 0xac, 0x2c, 0x24, 0x00, 0x00, ++ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01, ++ 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8, ++ 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x72, 0x01, ++ 0x1f, 0x03, 0x3e, 0x03, 0x7e, 0x01, 0x00, 0x00, ++ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc8, 0x08, 0xf8, ++ 0x80, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x02, 0x1f, 0x02, 0x7f, 0x03, 0x0f, 0x71, 0x3f, ++ 0x02, 0x3f, 0x0f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x10, 0xe0, 0x40, 0xfc, 0x30, 0xc4, 0xfc, 0xf8, ++ 0x20, 0xf8, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x01, 0x1f, 0x01, 0x01, 0x7f, ++ 0x03, 0x05, 0x19, 0x61, 0x01, 0x01, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, ++ 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x09, 0x7e, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7f, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x0e, 0x78, 0x08, 0x3e, 0x08, 0x7e, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x80, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x1f, 0x72, 0x12, 0x3b, 0x12, 0x7e, 0x1b, ++ 0x36, 0x36, 0x53, 0x16, 0x10, 0x11, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xc8, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x0f, 0x79, 0x09, 0x3f, 0x09, 0x7f, 0x0d, ++ 0x1b, 0x1b, 0x29, 0x4a, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfc, 0x54, 0x78, ++ 0xcc, 0xfc, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x12, 0x1e, 0x12, 0x12, 0x1f, ++ 0x12, 0x12, 0x1e, 0x72, 0x03, 0x02, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x24, 0xa4, 0xa8, 0xb0, 0x20, ++ 0x30, 0x50, 0x50, 0x88, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x3c, 0x64, 0x07, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xb8, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x2a, 0x2a, 0x3a, 0x2a, 0x2a, 0x3a, ++ 0x2a, 0x2b, 0x3e, 0x68, 0x09, 0x0a, 0x00, 0x00, ++ 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xb8, 0xa0, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x24, 0x3d, 0x27, 0x24, 0x3f, ++ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xa0, 0x10, 0xf8, 0x04, 0xf8, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x25, 0x24, 0x3c, ++ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x24, 0x3f, ++ 0x24, 0x24, 0x3c, 0x64, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x12, 0x1e, 0x1e, 0x12, 0x1f, 0x72, ++ 0x03, 0x09, 0x35, 0x09, 0x31, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x48, 0x30, 0x70, 0x88, 0x44, ++ 0x90, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x10, 0x1e, 0x28, 0x7f, 0x0c, 0x12, 0x20, 0x7f, ++ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0xfc, ++ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7e, 0x25, 0x25, 0x3e, 0x25, 0x24, 0x3c, ++ 0x24, 0x24, 0x3c, 0x64, 0x05, 0x06, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0xe0, 0x20, 0x1c, 0x00, 0x00, ++ 0x01, 0x7d, 0x2e, 0x2a, 0x39, 0x2a, 0x2f, 0x38, ++ 0x28, 0x2f, 0x38, 0x68, 0x09, 0x0a, 0x00, 0x00, ++ 0x10, 0x10, 0xe8, 0xa8, 0x10, 0xa8, 0xfc, 0x44, ++ 0x90, 0xfc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x09, 0x31, 0x0a, 0x15, 0x71, 0x12, 0x14, 0x7f, ++ 0x08, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x10, 0x90, 0x68, 0x44, 0x78, 0xc0, 0x7c, 0xfc, ++ 0x20, 0xe0, 0xe0, 0x3c, 0xe0, 0x20, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x3e, 0x2a, 0x3e, 0x21, ++ 0x5f, 0x0f, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x70, 0x50, 0x54, 0x8c, 0xf8, 0x50, 0x30, 0xcc, ++ 0xf8, 0xe0, 0xe0, 0x38, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x25, 0x25, 0x3d, 0x25, 0x25, 0x3d, ++ 0x24, 0x25, 0x3d, 0x66, 0x04, 0x04, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0x78, 0xa8, 0x68, 0x98, 0xf8, ++ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00, ++ 0x00, 0x3f, 0x04, 0x07, 0x07, 0x3f, 0x00, 0x7f, ++ 0x12, 0x1e, 0x1e, 0x12, 0x7f, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xc0, 0xc0, 0xc0, 0x40, 0xfc, ++ 0x90, 0xf0, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x2a, 0x2d, 0x3a, 0x2c, 0x2b, 0x3a, ++ 0x2f, 0x28, 0x3f, 0x68, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x48, 0xa8, 0x94, 0x70, 0xf8, 0xa8, ++ 0xfc, 0x00, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7c, 0x2f, 0x38, 0x3b, 0x2a, 0x3b, 0x68, ++ 0x7f, 0x28, 0x7a, 0x3a, 0x6c, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0x00, ++ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x01, ++ 0x1f, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x00, ++ 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x20, 0x26, 0x38, 0x22, 0x1f, 0x10, 0x1e, 0x28, ++ 0x7e, 0x08, 0x15, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x20, 0x3c, 0x21, 0x3c, 0x20, 0x7e, ++ 0x10, 0x18, 0x25, 0x2a, 0x72, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x15, 0x1d, ++ 0x11, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x50, 0x70, ++ 0x10, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x20, 0x20, 0x1f, 0x00, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0xf8, 0x00, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x24, 0x3f, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0xf8, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x3c, 0x24, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68, ++ 0x98, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x20, 0x3f, 0x20, 0x3f, 0x20, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0x08, 0xe8, 0x08, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x60, 0x60, ++ 0x60, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x09, 0x17, 0x61, 0x00, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0xf8, 0x00, 0xfc, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x25, 0x3e, 0x24, 0x24, ++ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x40, 0x40, 0x7c, 0x40, ++ 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x27, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0xd4, 0x14, 0x0c, 0xfc, 0x04, 0x00, 0x00, ++ 0x01, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x00, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x24, 0x3c, 0x24, 0x25, ++ 0x3e, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x40, 0x60, 0xd0, 0x48, ++ 0x44, 0x44, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x26, 0x3f, 0x24, 0x24, ++ 0x3f, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0x50, 0x48, 0x44, 0xf8, 0x40, 0x40, ++ 0xfc, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x24, 0x3f, 0x24, 0x24, ++ 0x3d, 0x25, 0x26, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x20, 0x20, 0xc0, 0x48, 0xe8, 0xf0, 0xe0, ++ 0x50, 0x50, 0x48, 0x44, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3e, 0x24, 0x27, ++ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0x10, 0xe8, 0x04, 0xf8, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x26, 0x25, 0x25, 0x3c, 0x27, 0x24, ++ 0x3c, 0x24, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x48, 0x48, 0x50, 0x60, 0x40, 0xfc, 0xa0, ++ 0xa0, 0xa0, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x25, 0x3d, 0x24, 0x24, ++ 0x3d, 0x24, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x00, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x15, 0x16, 0x34, 0x57, 0x14, ++ 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x90, 0x60, 0xf0, 0x0c, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x10, 0x1f, 0x14, 0x37, 0x2c, ++ 0x5f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c, ++ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3d, 0x25, 0x27, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0xa0, 0x38, 0x48, 0x68, ++ 0xd0, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x28, 0x29, 0x32, 0x28, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x80, 0xfc, 0x80, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0x2b, 0x2a, 0x3a, 0x2b, 0x2a, ++ 0x3a, 0x2f, 0x28, 0x28, 0x29, 0x5a, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xfc, 0xa0, 0x90, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3c, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x27, 0x24, ++ 0x3c, 0x27, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xbc, 0xa0, 0xa0, 0xbc, 0xa0, ++ 0xe0, 0xbc, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x38, 0x2b, 0x2a, 0x2a, 0x3a, 0x2a, 0x2b, ++ 0x3a, 0x2a, 0x2a, 0x2c, 0x2c, 0x58, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x88, 0xfc, 0xc8, ++ 0xa8, 0xa8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x01, 0x3c, 0x24, 0x27, 0x24, 0x3c, 0x24, 0x27, ++ 0x3c, 0x24, 0x24, 0x25, 0x25, 0x4e, 0x00, 0x00, ++ 0x08, 0x88, 0x90, 0xfc, 0x90, 0x90, 0x90, 0xfc, ++ 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x38, 0x2f, 0x29, 0x2a, 0x3a, 0x2f, 0x29, ++ 0x3d, 0x2d, 0x2b, 0x2b, 0x2c, 0x58, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0xe0, 0x3c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3c, 0x25, 0x25, 0x26, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xa8, 0xa4, 0x84, 0x90, 0x70, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x24, 0x24, ++ 0x3d, 0x26, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0xa0, 0xa0, ++ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x24, 0x3c, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0x40, 0xf8, 0x28, ++ 0xe8, 0x28, 0x58, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x26, 0x26, 0x27, 0x3e, 0x26, 0x27, ++ 0x3e, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0x58, ++ 0x48, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x24, ++ 0x3d, 0x25, 0x25, 0x25, 0x27, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0x28, 0x58, 0x88, 0xf8, 0x00, ++ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3b, 0x28, 0x29, 0x29, 0x39, 0x28, 0x2b, ++ 0x3a, 0x2b, 0x2a, 0x2a, 0x2a, 0x5a, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0xa8, 0x38, 0xe8, 0x48, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x24, 0x27, 0x25, 0x24, 0x4c, 0x00, 0x00, ++ 0x50, 0xfc, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0x58, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x25, 0x24, 0x3f, 0x26, 0x27, ++ 0x3c, 0x24, 0x24, 0x24, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xfc, 0x48, 0xfc, ++ 0x40, 0x78, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x7e, 0x11, 0x1e, 0x14, 0x24, 0x39, 0x4f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0xfc, 0x20, 0xe8, 0x90, 0xe8, 0x84, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x26, 0x25, 0x3e, 0x24, 0x25, ++ 0x3e, 0x25, 0x24, 0x25, 0x24, 0x4f, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xd8, 0xa8, 0xc8, 0x40, 0xb0, ++ 0x4c, 0xa0, 0x48, 0x90, 0x60, 0x80, 0x00, 0x00, ++ 0x00, 0x3b, 0x2a, 0x2a, 0x2b, 0x3a, 0x2b, 0x2b, ++ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5a, 0x00, 0x00, ++ 0x00, 0xf8, 0x38, 0x28, 0xf8, 0x28, 0xe8, 0x78, ++ 0xf8, 0x68, 0xb8, 0x58, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x26, 0x3f, 0x27, 0x24, ++ 0x3d, 0x24, 0x27, 0x24, 0x25, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x00, ++ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x26, 0x24, 0x3d, 0x27, 0x24, ++ 0x3d, 0x24, 0x25, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa8, 0xa4, 0x1c, 0xf8, 0x90, ++ 0xf8, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x26, 0x27, 0x3c, 0x24, 0x27, ++ 0x3c, 0x25, 0x24, 0x24, 0x27, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x08, 0xfc, 0x50, 0x88, 0xf4, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25, ++ 0x3f, 0x25, 0x25, 0x26, 0x25, 0x4c, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xfc, 0x00, 0xf8, 0xa8, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x38, 0x2f, 0x2b, 0x28, 0x3f, 0x2b, 0x2a, ++ 0x3b, 0x2b, 0x2a, 0x2b, 0x29, 0x5a, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x50, ++ 0xd0, 0xd4, 0x4c, 0xcc, 0x84, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x24, 0x27, 0x3c, 0x25, 0x26, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x18, 0xe8, 0x48, 0xd0, 0xfc, 0xe0, 0x50, 0x4c, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x24, 0x3f, 0x25, 0x25, ++ 0x3e, 0x24, 0x27, 0x24, 0x24, 0x4c, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0xd0, 0x40, 0xfc, 0x50, 0x50, ++ 0xe8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x26, 0x27, 0x3f, 0x26, 0x27, ++ 0x3d, 0x25, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0x40, 0xa0, 0xf0, 0x08, 0xfc, 0x58, 0xe8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x3d, 0x25, 0x24, 0x26, 0x3d, 0x25, 0x24, ++ 0x3f, 0x25, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x27, 0x25, 0x3d, 0x25, 0x25, ++ 0x3d, 0x25, 0x25, 0x26, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x3f, 0x2a, 0x3f, 0x52, ++ 0x3f, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x50, 0x30, 0xcc, ++ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f, ++ 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x15, 0x1e, 0x14, 0x14, ++ 0x13, 0x12, 0x13, 0x23, 0x22, 0x42, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0xfc, 0xf8, 0xf8, 0x90, 0xfc, ++ 0xf0, 0x10, 0xf0, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x27, 0x3c, 0x27, 0x26, ++ 0x3e, 0x27, 0x25, 0x25, 0x26, 0x4c, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8, ++ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00, ++ 0x00, 0x38, 0x2f, 0x28, 0x2f, 0x3a, 0x2b, 0x2c, ++ 0x39, 0x29, 0x29, 0x29, 0x2a, 0x5c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa4, 0xf8, 0xe8, 0xf8, 0x44, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3b, 0x28, 0x2b, 0x2a, 0x3f, 0x2b, 0x28, ++ 0x3b, 0x28, 0x2b, 0x2a, 0x2a, 0x5a, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0x40, ++ 0xf8, 0x80, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x28, 0x29, 0x3f, 0x29, 0x29, ++ 0x3b, 0x2d, 0x28, 0x2a, 0x2a, 0x5c, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xe0, 0x10, 0xf4, 0xb8, 0xb0, ++ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x02, 0x3a, 0x2c, 0x2a, 0x2b, 0x3a, 0x2a, 0x2b, ++ 0x3b, 0x2a, 0x2b, 0x2a, 0x2b, 0x5e, 0x00, 0x00, ++ 0x48, 0x48, 0x90, 0x48, 0xf8, 0x68, 0xe8, 0xf8, ++ 0x68, 0xd8, 0x68, 0xd8, 0x6c, 0xc4, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x25, 0x25, 0x3d, 0x25, 0x25, ++ 0x3c, 0x27, 0x25, 0x25, 0x25, 0x4d, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0xf8, 0x48, 0x68, 0x98, 0xf8, 0x30, 0x00, 0x00, ++ 0x00, 0x38, 0x2b, 0x2a, 0x2b, 0x3a, 0x2a, 0x2a, ++ 0x3a, 0x2a, 0x2b, 0x2b, 0x2d, 0x5b, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, ++ 0x01, 0x3f, 0x29, 0x28, 0x2d, 0x3d, 0x2f, 0x29, ++ 0x3f, 0x2b, 0x2b, 0x2d, 0x2a, 0x5c, 0x00, 0x00, ++ 0x10, 0xfc, 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4, ++ 0xf8, 0xb8, 0xf4, 0xdc, 0xec, 0x44, 0x00, 0x00, ++ 0x13, 0x6f, 0x13, 0x2b, 0x7f, 0x3a, 0x57, 0x01, ++ 0x3f, 0x22, 0x2d, 0x22, 0x2c, 0x20, 0x00, 0x00, ++ 0x90, 0xe8, 0x90, 0xa8, 0xfc, 0xb8, 0xd4, 0x00, ++ 0xf8, 0xc8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x2f, 0x28, 0x2f, 0x3d, 0x2f, 0x0c, ++ 0x7c, 0x2f, 0x2d, 0x57, 0x14, 0x20, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, 0xc8, 0xa8, ++ 0xb0, 0xb0, 0x14, 0xf4, 0x4c, 0x84, 0x00, 0x00, ++ 0x01, 0x1f, 0x0f, 0x0f, 0x08, 0x0f, 0x3f, 0x2f, ++ 0x42, 0x1f, 0x0f, 0x01, 0x3f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0xe0, 0xe0, 0x20, 0xe0, 0xfc, 0xe8, ++ 0x40, 0xf0, 0xe0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x7c, 0x13, 0x18, 0x25, 0x7c, 0x13, 0x11, ++ 0x7e, 0x13, 0x10, 0x1d, 0x62, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0xa0, 0xfc, 0x30, ++ 0xc8, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x01, 0x05, 0x39, 0x21, 0x21, 0x3d, 0x21, 0x21, ++ 0x3d, 0x21, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x00, 0x78, 0x08, 0x08, 0x78, 0x08, 0x08, ++ 0x78, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x02, 0x1c, 0x10, 0x1e, 0x10, 0x10, 0x1f, 0x12, ++ 0x02, 0x7f, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x50, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x3f, 0x01, 0x1f, 0x02, 0x7f, 0x04, 0x1a, ++ 0x6c, 0x08, 0x0e, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x80, 0xfc, 0x40, 0x30, ++ 0xec, 0x20, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x02, 0x3c, 0x3e, 0x20, 0x3f, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0xf8, 0x08, 0x08, 0x70, 0x00, 0x00, ++ 0x0a, 0x32, 0x23, 0x22, 0x3b, 0x20, 0x3a, 0x22, ++ 0x22, 0x7f, 0x00, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0x38, 0x88, 0x08, 0xb8, 0x88, 0xb8, 0x88, ++ 0x88, 0xfc, 0x00, 0x60, 0x18, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x1f, 0x71, 0x1f, 0x1f, 0x1f, ++ 0x02, 0x1c, 0x1e, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xf8, 0x00, 0xe0, 0xe0, 0xf8, ++ 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x18, 0x6f, 0x01, 0x01, 0x3f, ++ 0x01, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0x30, 0xec, 0x00, 0x00, 0xf8, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x02, 0x04, 0x38, 0x08, 0x08, 0x7f, 0x08, 0x08, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xa0, 0xfc, 0xa0, ++ 0xa0, 0x90, 0x94, 0xac, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x3f, 0x49, 0x09, 0x7f, ++ 0x09, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x17, 0x1f, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20, ++ 0x20, 0x50, 0x48, 0x98, 0xe4, 0x04, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1f, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x40, 0x40, 0x78, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x09, 0x1e, 0x12, 0x1b, 0x16, 0x17, 0x1e, ++ 0x72, 0x1b, 0x1a, 0x2a, 0x22, 0x46, 0x00, 0x00, ++ 0x0c, 0xf0, 0xa8, 0xa4, 0x24, 0x10, 0xf8, 0x10, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x12, 0x1b, 0x16, 0x16, 0x1e, ++ 0x72, 0x1a, 0x1b, 0x2b, 0x22, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0xf8, 0x04, 0xf8, 0xf8, 0x88, ++ 0xf8, 0x80, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3f, ++ 0x64, 0x37, 0x34, 0x34, 0x25, 0x4e, 0x00, 0x00, ++ 0x40, 0xc0, 0x58, 0x48, 0xd8, 0x48, 0xd8, 0x48, ++ 0x40, 0xf8, 0x90, 0x60, 0xb0, 0x0c, 0x00, 0x00, ++ 0x08, 0x11, 0x3c, 0x27, 0x36, 0x2d, 0x2d, 0x3e, ++ 0x65, 0x34, 0x37, 0x34, 0x25, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0xd8, 0xd8, 0x40, ++ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2f, 0x2e, 0x3f, ++ 0x65, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x08, 0x1e, 0x13, 0x1a, 0x16, 0x16, 0x1e, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x46, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x10, 0x3f, 0x24, 0x35, 0x2c, 0x2f, 0x3c, ++ 0x65, 0x37, 0x34, 0x37, 0x24, 0x4d, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x68, ++ 0xa4, 0xfc, 0xe8, 0x94, 0xec, 0x84, 0x00, 0x00, ++ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2e, 0x2f, 0x3c, ++ 0x67, 0x36, 0x36, 0x36, 0x27, 0x4e, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x50, 0x50, 0xe8, 0xfc, 0x00, ++ 0xf8, 0xe8, 0xa8, 0xe8, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x13, 0x3c, 0x27, 0x36, 0x2c, 0x2f, 0x3c, ++ 0x67, 0x34, 0x37, 0x34, 0x27, 0x4c, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0xfc, 0xe8, 0x00, 0xfc, 0x48, ++ 0xe8, 0xb0, 0x70, 0xa8, 0x24, 0xc0, 0x00, 0x00, ++ 0x08, 0x10, 0x3f, 0x25, 0x35, 0x2d, 0x2d, 0x3d, ++ 0x66, 0x35, 0x35, 0x35, 0x25, 0x4d, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xf8, 0x48, 0xf8, 0xf8, 0xa8, ++ 0x54, 0xf8, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x10, 0x3d, 0x25, 0x35, 0x2d, 0x2d, 0x3d, ++ 0x65, 0x35, 0x35, 0x36, 0x26, 0x4d, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, ++ 0x04, 0x09, 0x1e, 0x12, 0x1a, 0x16, 0x16, 0x1f, ++ 0x72, 0x1a, 0x1a, 0x2a, 0x23, 0x47, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x1c, 0x3e, 0x2a, 0x3e, 0x08, ++ 0x3e, 0x08, 0x7e, 0x14, 0x22, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4, ++ 0xa4, 0xa8, 0x90, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x5b, 0x7f, 0x5b, 0x7f, 0x7f, 0x5b, 0x7f, 0x00, ++ 0x7f, 0x3e, 0x22, 0x3e, 0x16, 0x78, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0x88, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x3e, 0x2a, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x08, 0x08, 0x04, ++ 0x04, 0x02, 0x01, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0x20, 0x40, ++ 0x40, 0x80, 0x00, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x1f, 0x10, ++ 0x22, 0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x1f, 0x00, 0x7f, ++ 0x04, 0x04, 0x04, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xfc, ++ 0x80, 0x80, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x04, 0x08, ++ 0x3f, 0x04, 0x02, 0x03, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x48, 0x48, 0x38, ++ 0xe0, 0x40, 0x80, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x0f, 0x12, 0x72, 0x1f, 0x12, 0x0c, 0x38, ++ 0x0f, 0x12, 0x72, 0x1f, 0x04, 0x38, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, ++ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x07, 0x04, 0x08, 0x10, ++ 0x7f, 0x02, 0x02, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xc0, 0x40, 0x20, 0x10, ++ 0xec, 0x20, 0x20, 0x20, 0x20, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x04, 0x10, 0x12, 0x11, ++ 0x11, 0x10, 0x10, 0x16, 0x18, 0x63, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x30, 0x28, 0xc4, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10, ++ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f, ++ 0x48, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x11, 0x1f, ++ 0x11, 0x11, 0x7f, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0x10, 0xfc, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x06, 0x03, 0x0c, 0x32, 0x03, ++ 0x0e, 0x71, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x40, 0x80, 0x80, ++ 0x60, 0x1c, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x0f, 0x0a, 0x09, 0x7f, ++ 0x12, 0x11, 0x11, 0x3f, 0x20, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0xf8, 0x40, 0x80, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x1f, 0x20, 0x4f, 0x09, ++ 0x08, 0x7f, 0x12, 0x11, 0x3f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xe0, 0x20, ++ 0xa0, 0xfc, 0x20, 0x20, 0xf8, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x21, ++ 0x21, 0x09, 0x11, 0x11, 0x21, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x08, ++ 0x08, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10, ++ 0x31, 0x50, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x10, 0x10, 0xfc, 0x10, ++ 0x10, 0x90, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x09, 0x09, 0x11, ++ 0x21, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x10, 0x08, ++ 0x08, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f, ++ 0x48, 0x0f, 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88, ++ 0x88, 0x88, 0xb0, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x24, 0x24, ++ 0x24, 0x24, 0x3c, 0x64, 0x08, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x10, 0x1f, ++ 0x10, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x7f, 0x01, ++ 0x3f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xfc, 0x00, ++ 0xf8, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x01, 0x3f, 0x00, ++ 0x08, 0x04, 0x04, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x00, 0xf8, 0x20, ++ 0x20, 0x40, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x21, 0x2f, ++ 0x21, 0x22, 0x24, 0x28, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xe8, ++ 0x08, 0x88, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x00, 0x3f, 0x20, 0x27, ++ 0x24, 0x24, 0x27, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8, ++ 0x48, 0x48, 0xc8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x3c, 0x03, ++ 0x06, 0x7f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xe0, 0x40, 0x80, ++ 0x60, 0xfc, 0x20, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x32, 0x12, ++ 0x0c, 0x04, 0x0c, 0x12, 0x7f, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xc8, 0x48, ++ 0x30, 0x10, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x1f, 0x21, ++ 0x7f, 0x03, 0x05, 0x19, 0x61, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x00, 0xf0, 0x00, ++ 0xfc, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0f, 0x10, 0x2f, ++ 0x48, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0x88, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x12, ++ 0x12, 0x3a, 0x24, 0x06, 0x1a, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x88, 0x88, ++ 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x0f, ++ 0x08, 0x18, 0x6f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x00, 0xf0, ++ 0x20, 0x40, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x18, 0x6f, ++ 0x00, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0x30, 0xec, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x10, 0x17, ++ 0x30, 0x50, 0x10, 0x10, 0x13, 0x1c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc, ++ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x08, 0x4b, 0x22, ++ 0x22, 0x0a, 0x12, 0x12, 0x21, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xfc, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x03, 0x0e, 0x31, ++ 0x01, 0x0f, 0x74, 0x04, 0x07, 0x04, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x20, 0x40, ++ 0x80, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x06, 0x18, ++ 0x00, 0x7f, 0x12, 0x12, 0x22, 0x4d, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x60, ++ 0x00, 0xf8, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x17, 0x10, ++ 0x32, 0x51, 0x11, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x10, ++ 0x10, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x78, 0x0b, 0x10, 0x3a, ++ 0x0a, 0x4a, 0x32, 0x11, 0x2c, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x18, 0xe0, 0x40, 0x40, ++ 0x78, 0x40, 0x40, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f, ++ 0x08, 0x0e, 0x78, 0x08, 0x0b, 0x18, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x50, 0x48, 0x40, 0xfc, ++ 0x48, 0x30, 0x20, 0xd4, 0x0c, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x60, ++ 0x1f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c, ++ 0xe0, 0x40, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x09, 0x09, ++ 0x15, 0x23, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x20, 0x30, ++ 0x48, 0x88, 0x80, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x7f, 0x08, 0x11, 0x33, ++ 0x08, 0x3f, 0x01, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x10, 0x30, ++ 0x88, 0xf8, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x12, 0x13, 0x10, ++ 0x1f, 0x01, 0x7f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf0, 0x10, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x09, 0x49, 0x22, ++ 0x22, 0x0c, 0x10, 0x10, 0x21, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x50, 0x48, 0x44, ++ 0x4c, 0xd0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x24, 0x25, 0x3c, ++ 0x24, 0x3c, 0x24, 0x26, 0x39, 0x62, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0xf8, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x24, 0x24, 0x3c, 0x27, ++ 0x04, 0x7c, 0x14, 0x14, 0x27, 0x44, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0xfc, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x04, 0x1f, 0x61, ++ 0x1f, 0x01, 0x05, 0x19, 0x61, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x40, 0xf0, 0x0c, ++ 0xf0, 0x00, 0x40, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x02, 0x1f, 0x11, 0x11, ++ 0x1f, 0x11, 0x03, 0x05, 0x19, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0x10, ++ 0xf0, 0x10, 0x40, 0x24, 0x24, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x00, 0x0f, 0x08, ++ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xe0, 0x20, ++ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x02, 0x0e, 0x05, ++ 0x18, 0x61, 0x24, 0x24, 0x44, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0x10, 0x90, ++ 0x60, 0x00, 0x88, 0x84, 0x24, 0xe0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x01, 0x7f, 0x05, ++ 0x19, 0x6f, 0x02, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x70, 0xc0, 0x00, 0xfc, 0x40, ++ 0x30, 0xcc, 0x40, 0x70, 0x10, 0xe0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0x48, 0x08, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x10, 0x1f, ++ 0x10, 0x1f, 0x11, 0x10, 0x1e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf8, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x7f, 0x05, 0x1f, ++ 0x69, 0x0f, 0x09, 0x0f, 0x09, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x40, 0xf0, ++ 0x2c, 0xe0, 0x20, 0xe8, 0x08, 0xf8, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x3f, 0x20, 0x4f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x11, 0x1f, 0x01, ++ 0x3f, 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1f, 0x10, 0x1f, 0x10, ++ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x0e, 0x08, 0x7f, ++ 0x08, 0x2c, 0x2a, 0x2a, 0x48, 0x19, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x0a, ++ 0x31, 0x01, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x50, ++ 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7e, 0x08, ++ 0x1d, 0x1a, 0x2a, 0x48, 0x0b, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x70, 0x10, 0x90, 0x88, ++ 0x44, 0x40, 0x50, 0x88, 0xfc, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x01, 0x7f, 0x01, ++ 0x1f, 0x7f, 0x04, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xe0, 0x20, 0xfc, 0x20, ++ 0xe0, 0xfc, 0x40, 0xc0, 0x60, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x01, 0x7f, ++ 0x1f, 0x11, 0x1f, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0x00, 0xfc, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x00, 0x7f, 0x00, 0x0f, ++ 0x3f, 0x21, 0x5f, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xfc, 0x20, 0xe0, ++ 0xfc, 0x08, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x0f, 0x08, 0x0f, ++ 0x08, 0x7f, 0x09, 0x08, 0x0e, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xe0, 0x00, 0xe0, ++ 0x00, 0xfc, 0x10, 0xa0, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x4a, 0x22, ++ 0x23, 0x0a, 0x12, 0x12, 0x24, 0x2b, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xfc, 0x48, 0x50, ++ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x02, 0x02, 0x3e, 0x02, ++ 0x3e, 0x03, 0x7e, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x80, ++ 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x80, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x13, 0x09, 0x49, 0x22, ++ 0x20, 0x0f, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x50, 0x48, 0x48, ++ 0x40, 0xfc, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x11, 0x09, 0x4a, 0x27, ++ 0x20, 0x0b, 0x12, 0x12, 0x22, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x70, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1a, 0x16, ++ 0x12, 0x1a, 0x16, 0x12, 0x22, 0x47, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x78, 0x48, 0x68, 0x58, ++ 0x48, 0x68, 0x58, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x02, 0x04, ++ 0x1c, 0x64, 0x3f, 0x04, 0x08, 0x30, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x80, 0x40, ++ 0x70, 0x4c, 0xf8, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x05, 0x19, 0x11, 0x1d, ++ 0x11, 0x1d, 0x12, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x70, 0x10, 0x70, ++ 0x10, 0x70, 0x90, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x10, 0x0b, 0x48, 0x27, 0x21, ++ 0x16, 0x11, 0x23, 0x24, 0x41, 0x4e, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x24, ++ 0x9c, 0xf0, 0x20, 0xc0, 0xb0, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x20, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x20, ++ 0x3e, 0x20, 0x3e, 0x20, 0x20, 0x23, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x00, ++ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x06, 0x38, 0x08, 0x7e, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x48, 0x28, 0x28, 0x88, ++ 0x48, 0x4c, 0x38, 0xc8, 0x08, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1e, 0x12, 0x1e, 0x00, 0x1f, ++ 0x00, 0x7f, 0x04, 0x07, 0x08, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0x00, 0xf0, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00, ++ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x3e, 0x22, 0x3e, ++ 0x0f, 0x7f, 0x08, 0x0f, 0x10, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xf8, 0x88, 0xf8, ++ 0xe0, 0xfc, 0x00, 0xf0, 0x10, 0xe0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3f, 0x20, 0x5e, 0x01, ++ 0x7e, 0x14, 0x14, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xfc, 0x18, 0x10, 0xfc, ++ 0x90, 0x50, 0x50, 0x14, 0x34, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x21, 0x7f, 0x0f, 0x09, ++ 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x08, 0xf8, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08, ++ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0x78, 0x48, 0x48, ++ 0x78, 0x48, 0x78, 0x88, 0x88, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x06, 0x1f, 0x72, 0x1f, 0x0c, 0x34, ++ 0x0f, 0x12, 0x72, 0x1f, 0x0c, 0x70, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0x48, 0x30, ++ 0xf8, 0x48, 0x48, 0xc8, 0x48, 0x38, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x06, 0x1c, 0x10, 0x1e, 0x11, ++ 0x1f, 0x10, 0x1e, 0x70, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x94, 0x94, 0x0c, ++ 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f, ++ 0x21, 0x4f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc, ++ 0x08, 0xe0, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x11, 0x3d, 0x25, ++ 0x25, 0x3d, 0x25, 0x25, 0x3d, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x48, 0x48, ++ 0xf8, 0x08, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x09, 0x09, 0x11, 0x10, ++ 0x37, 0x50, 0x11, 0x16, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf0, 0x40, ++ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x09, 0x0f, 0x09, 0x0f, ++ 0x01, 0x3f, 0x21, 0x21, 0x2e, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xe0, ++ 0x00, 0xf8, 0x48, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x10, 0x14, 0x64, 0x19, ++ 0x16, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0x80, 0xf8, 0x08, ++ 0x88, 0x48, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x08, ++ 0x0e, 0x13, 0x12, 0x22, 0x42, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x80, 0xfc, 0x20, 0xb8, ++ 0xe8, 0xa8, 0xb8, 0xa4, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x08, 0x09, 0x09, 0x3f, ++ 0x20, 0x27, 0x24, 0x27, 0x24, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, 0x20, 0xf8, ++ 0x08, 0xc8, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x05, 0x19, 0x62, 0x1f, 0x00, ++ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xc0, 0x30, 0x4c, 0xe0, 0x00, ++ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x19, ++ 0x60, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x30, ++ 0x8c, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x06, 0x0c, 0x7f, 0x1f, 0x02, 0x7f, ++ 0x02, 0x1f, 0x06, 0x1a, 0x62, 0x02, 0x00, 0x00, ++ 0x40, 0xfc, 0x60, 0xc0, 0xfc, 0xf0, 0x90, 0xfc, ++ 0x90, 0xf0, 0xc0, 0xb0, 0x8c, 0x80, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x01, 0x7f, 0x0f, 0x08, 0x0f, ++ 0x3f, 0x20, 0x27, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0xe0, 0x20, 0xe0, ++ 0xf8, 0x08, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x08, 0x7f, 0x06, ++ 0x24, 0x14, 0x18, 0x1e, 0x70, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xf8, 0x08, 0xe8, ++ 0xa8, 0xa8, 0xe8, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x25, 0x25, ++ 0x2b, 0x31, 0x2f, 0x21, 0x5f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x20, 0x20, ++ 0x50, 0x88, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x07, 0x1e, ++ 0x63, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0xe0, 0x40, 0xfc, 0xe0, 0x08, ++ 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3e, 0x02, 0x3e, 0x20, ++ 0x3e, 0x0a, 0x36, 0x0a, 0x32, 0x06, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xf8, 0x80, ++ 0xf8, 0x28, 0xd8, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0c, 0x08, 0x15, 0x16, 0x34, ++ 0x57, 0x14, 0x14, 0x14, 0x14, 0x11, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xc0, 0xfc, 0x90, 0x60, 0xd0, ++ 0x2c, 0xc0, 0x30, 0xc8, 0x30, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x17, 0x10, 0x1f, 0x12, ++ 0x13, 0x1e, 0x3f, 0x22, 0x41, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x00, 0xfc, 0x48, ++ 0xb0, 0x2c, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x01, 0x1f, 0x7f, 0x04, ++ 0x1f, 0x6f, 0x03, 0x0d, 0x31, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xf0, 0xfc, 0xc0, ++ 0x30, 0xec, 0xc0, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x22, 0x3f, 0x22, 0x23, ++ 0x20, 0x2f, 0x28, 0x28, 0x48, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xfc, 0x20, 0xfc, 0x20, 0xe0, ++ 0x80, 0xf8, 0x88, 0x88, 0xb0, 0x80, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x12, 0x11, 0x16, ++ 0x1f, 0x10, 0x1e, 0x10, 0x1e, 0x70, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x50, 0x90, 0x50, ++ 0xf0, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x04, 0x3f, 0x21, ++ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0xfc, 0x08, ++ 0xf8, 0x00, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0f, 0x19, 0x66, 0x14, 0x1f, ++ 0x60, 0x1f, 0x01, 0x09, 0x31, 0x03, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x78, 0x90, 0x60, 0x30, 0xcc, ++ 0x00, 0xf0, 0x00, 0x30, 0x08, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x3f, 0x28, 0x4f, 0x10, ++ 0x13, 0x32, 0x53, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xfc, 0x08, 0xf8, 0x80, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x7f, 0x1f, 0x11, 0x1f, 0x1f, ++ 0x01, 0x3f, 0x00, 0x7f, 0x04, 0x02, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x10, 0xf0, 0xf0, ++ 0x10, 0xf8, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x01, 0x1f, 0x12, 0x12, 0x1f, ++ 0x12, 0x12, 0x1f, 0x20, 0x2a, 0x51, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf8, 0x40, 0x40, 0xf0, ++ 0x40, 0x40, 0xf8, 0x00, 0x48, 0x24, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x02, 0x17, 0x29, 0x7e, 0x04, ++ 0x19, 0x6e, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x80, 0xd0, 0x28, 0xfc, 0x40, ++ 0xb0, 0x4c, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x00, 0x7f, 0x0a, 0x0c, 0x29, ++ 0x2e, 0x29, 0x29, 0x2d, 0x3a, 0x64, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0x48, 0xfc, ++ 0x00, 0x50, 0x50, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x08, 0x09, 0x7e, 0x08, ++ 0x0f, 0x13, 0x12, 0x22, 0x42, 0x0d, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xc0, 0x80, 0xfc, 0x80, 0xf8, ++ 0x20, 0xfc, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0a, 0x7f, 0x0a, 0x33, 0x3f, ++ 0x21, 0x5f, 0x11, 0x11, 0x11, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xa0, 0xfc, 0xa4, 0x9c, 0xfc, ++ 0x08, 0xf0, 0x10, 0x10, 0x60, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x14, 0x1f, 0x10, 0x3f, 0x4f, 0x08, ++ 0x0f, 0x1f, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x08, 0xe8, 0x88, 0x88, ++ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x30, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3e, 0x0a, 0x36, 0x0b, 0x32, ++ 0x0d, 0x76, 0x01, 0x0e, 0x01, 0x1e, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x28, 0xd8, 0x28, 0xc8, ++ 0x60, 0x5c, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x7f, 0x08, 0x3e, 0x2a, ++ 0x2a, 0x2e, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0xfc, 0x20, 0xf8, 0xa8, ++ 0xa8, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x12, 0x09, 0x3f, 0x28, ++ 0x4e, 0x12, 0x2a, 0x05, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x70, 0x90, 0x20, 0x40, 0xfc, 0x28, ++ 0xf8, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x08, 0x3e, ++ 0x0e, 0x71, 0x3f, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x00, 0xfc, 0x20, 0xf8, ++ 0x20, 0xfc, 0xf8, 0x80, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x12, 0x1f, 0x0f, ++ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0xe0, ++ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x00, 0x7f, 0x1f, 0x3e, ++ 0x08, 0x3e, 0x7f, 0x08, 0x04, 0x00, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0xf8, ++ 0x88, 0xf8, 0xfc, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x14, 0x14, 0x23, 0x1a, 0x35, ++ 0x55, 0x0d, 0x7f, 0x05, 0x19, 0x61, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xb0, 0x48, 0xc0, 0x68, 0xd4, ++ 0x54, 0x30, 0xfc, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x09, 0x09, 0x09, 0x3f, 0x08, ++ 0x08, 0x2e, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x00, 0xf0, 0x00, 0xf8, 0x20, ++ 0xa0, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x08, 0x69, 0x13, 0x14, 0x2b, ++ 0x4a, 0x1b, 0x2b, 0x4a, 0x0b, 0x32, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xf8, 0xa4, 0xf8, ++ 0xa8, 0x38, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x13, 0x0a, 0x4a, 0x23, 0x23, ++ 0x10, 0x17, 0x25, 0x25, 0x4f, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xd0, 0x30, 0xf0, ++ 0x00, 0xf8, 0x28, 0x28, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x7e, 0x10, 0x1f, 0x14, ++ 0x27, 0x58, 0x0b, 0x10, 0x27, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa0, 0xb8, 0xa0, ++ 0xb8, 0xa0, 0xb8, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x09, 0x06, 0x1f, 0x7f, 0x19, 0x15, ++ 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xc0, 0xf0, 0xfc, 0x30, 0x50, ++ 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x7f, 0x1f, 0x1f, 0x11, 0x1f, ++ 0x7f, 0x1f, 0x1f, 0x11, 0x1f, 0x7f, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0xf0, 0xf0, 0x10, 0xf0, ++ 0xfc, 0xf0, 0xf0, 0x10, 0xf0, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f, ++ 0x15, 0x1f, 0x15, 0x2a, 0x2a, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x08, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x48, 0xc8, 0x88, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x12, 0x1f, 0x3f, 0x20, ++ 0x7f, 0x1e, 0x72, 0x0c, 0x18, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x90, 0xf0, 0xfc, 0x08, ++ 0xf8, 0x98, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x1f, 0x01, 0x7f, 0x1f, 0x15, ++ 0x1d, 0x1f, 0x11, 0x1d, 0x25, 0x45, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x10, 0xfc, 0xf0, 0x50, ++ 0x70, 0xf0, 0x10, 0x70, 0x50, 0x50, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x09, 0x0d, 0x13, 0x7f, ++ 0x1f, 0x17, 0x14, 0x17, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x20, 0x30, 0x48, 0xfc, ++ 0xf0, 0xd0, 0x50, 0xd0, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x0c, 0x10, 0x3d, 0x24, 0x3c, ++ 0x21, 0x3c, 0x25, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50, ++ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x1f, 0x15, 0x7f, 0x1f, 0x1f, ++ 0x15, 0x1f, 0x7f, 0x1a, 0x06, 0x39, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0x20, 0xfc, 0x48, 0xc8, ++ 0x28, 0x30, 0x90, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x22, 0x2a, 0x4a, 0x1f, 0x10, ++ 0x2f, 0x60, 0x27, 0x25, 0x29, 0x30, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x20, 0xa0, 0xa0, 0xfc, 0x48, ++ 0xa8, 0x30, 0x10, 0xb0, 0x48, 0x84, 0x00, 0x00, ++ 0x04, 0x04, 0x7f, 0x04, 0x3c, 0x25, 0x24, 0x3c, ++ 0x21, 0x3c, 0x65, 0x24, 0x3c, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x60, 0x20, 0xfc, 0x88, 0x50, ++ 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x14, 0x08, 0x7f, 0x0a, ++ 0x0c, 0x08, 0x08, 0x08, 0x08, 0x19, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x01, 0x3f, 0x2d, 0x4d, ++ 0x1f, 0x11, 0x1f, 0x11, 0x1f, 0x10, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x00, 0xfc, 0x68, 0x60, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x06, 0x39, 0x08, 0x7f, 0x08, ++ 0x1d, 0x1a, 0x29, 0x48, 0x08, 0x0b, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, 0xfc, 0xa4, ++ 0x5c, 0x70, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0e, 0x78, 0x08, 0x3f, 0x08, ++ 0x7e, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0x50, 0xf8, 0x50, 0xfc, 0x00, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x7f, 0x02, 0x7d, 0x15, 0x2d, ++ 0x49, 0x0f, 0x08, 0x0f, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x88, 0x70, 0x50, 0xf8, ++ 0x24, 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x00, 0x2f, 0x28, 0x3f, 0x0d, ++ 0x7f, 0x2c, 0x2f, 0x55, 0x17, 0x24, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0x48, 0xfc, 0x40, 0xc8, 0x48, ++ 0xa8, 0xb0, 0x90, 0x34, 0xcc, 0x84, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x3f, 0x1f, 0x08, 0x0f, 0x3f, ++ 0x2f, 0x42, 0x0f, 0x1f, 0x01, 0x3f, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xf0, 0x20, 0xe0, 0xfc, ++ 0xe8, 0x40, 0xf0, 0xf0, 0x00, 0xf8, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x0e, 0x73, 0x55, 0x29, 0x19, ++ 0x6d, 0x14, 0x6c, 0x14, 0x65, 0x1a, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0b, 0x7c, 0x08, 0x3e, 0x08, ++ 0x7e, 0x1d, 0x1b, 0x2b, 0x49, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x20, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x3e, 0x7f, 0x2d, 0x5f, 0x0e, ++ 0x39, 0x1f, 0x7f, 0x02, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94, ++ 0x0c, 0xf0, 0xfc, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x04, 0x7f, 0x15, 0x6b, 0x2a, 0x13, 0x2a, 0x7f, ++ 0x01, 0x7f, 0x03, 0x0d, 0x71, 0x01, 0x00, 0x00, ++ 0x40, 0xfc, 0x50, 0xe8, 0xa8, 0x90, 0xa8, 0xfc, ++ 0x00, 0xfc, 0x80, 0x60, 0x1c, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x06, 0x38, 0x09, 0x7e, 0x1d, 0x6a, ++ 0x0e, 0x19, 0x65, 0x07, 0x39, 0x03, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xf8, 0x28, 0x48, 0x88, 0xb0, ++ 0x40, 0x30, 0x4c, 0xc0, 0x38, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3c, 0x00, 0x7e, 0x00, 0x3c, ++ 0x3c, 0x01, 0x3f, 0x25, 0x3d, 0x21, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0xfc, 0x44, 0x64, 0x94, 0xf4, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x11, 0x15, 0x65, 0x19, 0x15, ++ 0x7e, 0x09, 0x2d, 0x2b, 0x4b, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x68, 0x98, 0xf8, ++ 0x00, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x06, 0x38, 0x09, 0x7e, 0x08, ++ 0x1c, 0x1a, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0x70, 0xa0, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x09, 0x28, 0x2e, 0x28, 0x7f, ++ 0x28, 0x2a, 0x5a, 0x04, 0x18, 0x63, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xfc, 0x20, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x09, 0x7e, 0x08, 0x3f, 0x2a, ++ 0x3e, 0x1c, 0x1a, 0x2a, 0x48, 0x09, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x98, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0x58, 0x84, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3e, 0x22, 0x3e, 0x3e, 0x24, ++ 0x27, 0x2f, 0x37, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0xf8, 0x88, ++ 0xe8, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00, ++ 0x04, 0x7f, 0x05, 0x01, 0x1f, 0x11, 0x1e, 0x17, ++ 0x14, 0x17, 0x17, 0x2f, 0x29, 0x5f, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0xfc, 0xc8, 0xf8, 0xf0, ++ 0x90, 0xf0, 0xf0, 0xf8, 0x48, 0xfc, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x3e, 0x14, 0x7e, 0x00, 0x3c, ++ 0x24, 0x3c, 0x24, 0x3c, 0x24, 0x2c, 0x00, 0x00, ++ 0x40, 0xfc, 0xc0, 0xfc, 0xf8, 0x08, 0xf8, 0x80, ++ 0xf8, 0xf8, 0x80, 0xfc, 0x84, 0x7c, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0f, 0x12, 0x3f, 0x55, 0x1f, ++ 0x15, 0x1f, 0x16, 0x2b, 0x2b, 0x40, 0x00, 0x00, ++ 0x40, 0xfc, 0xc8, 0x48, 0x50, 0xfc, 0x20, 0xf8, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x7f, 0x0c, 0x0a, 0x72, 0x14, 0x0d, 0x13, ++ 0x7f, 0x0d, 0x2a, 0x2a, 0x48, 0x0b, 0x00, 0x00, ++ 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x04, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x14, 0x74, ++ 0x1b, 0x7e, 0x2c, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x90, 0xfc, ++ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x11, 0x11, 0x11, ++ 0x1f, 0x11, 0x11, 0x21, 0x21, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x08, 0x10, 0x1c, 0xe0, ++ 0x00, 0x00, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x17, ++ 0x14, 0x14, 0x24, 0x24, 0x40, 0x00, 0x00, 0x00, ++ 0x78, 0x80, 0x80, 0xfc, 0x80, 0xfc, 0x80, 0xf8, ++ 0x88, 0x88, 0x88, 0xb0, 0x80, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x1f, 0x11, 0x1f, 0x10, 0x10, ++ 0x1f, 0x12, 0x11, 0x20, 0x23, 0x5c, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0xe8, 0x08, 0xf8, 0x80, ++ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x3d, 0x01, 0x7f, 0x11, ++ 0x1d, 0x25, 0x05, 0x0a, 0x0a, 0x35, 0x00, 0x00, ++ 0x40, 0x78, 0x40, 0xfc, 0x48, 0x70, 0xc4, 0x3c, ++ 0x50, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x08, 0x0f, 0x3f, 0x2f, 0x39, 0x27, 0x2a, 0x2f, ++ 0x3a, 0x2f, 0x2f, 0x2a, 0x4f, 0x08, 0x00, 0x00, ++ 0x00, 0x78, 0xa0, 0x20, 0x20, 0xfc, 0x40, 0xc0, ++ 0x78, 0x48, 0x08, 0x08, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x03, 0x3c, 0x04, 0x3f, 0x24, ++ 0x24, 0x3f, 0x25, 0x04, 0x07, 0x78, 0x00, 0x00, ++ 0x00, 0xe0, 0xa0, 0x20, 0x20, 0x20, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0x14, 0x94, 0x4c, 0x44, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7c, 0x55, 0x55, 0x55, 0x7d, ++ 0x55, 0x18, 0x14, 0x1e, 0x62, 0x01, 0x00, 0x00, ++ 0x08, 0xe8, 0x28, 0x28, 0xe8, 0x08, 0x08, 0xe8, ++ 0x28, 0x28, 0x28, 0x28, 0x28, 0xc8, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x50, 0x88, 0x88, 0x24, 0x20, ++ 0x20, 0x30, 0x48, 0x58, 0xe4, 0x04, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x02, 0x7f, 0x01, 0x1f, ++ 0x11, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xf0, ++ 0x10, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x08, 0x48, 0x28, 0x28, 0x88, 0x48, 0x48, 0x0c, ++ 0x38, 0xc8, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x60, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8, ++ 0xd8, 0x88, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x88, 0x88, 0x88, 0xfc, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xfc, ++ 0x24, 0x24, 0x24, 0x38, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x73, 0x05, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x34, 0xfc, 0x04, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x7d, 0x11, 0x11, 0x11, 0x1e, 0x64, 0x01, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0x00, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x04, 0x7f, 0x05, 0x19, 0x6f, ++ 0x09, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x30, 0xec, ++ 0x20, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2b, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2b, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70, ++ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x24, 0x28, 0xfc, 0x10, 0x60, ++ 0x4c, 0xf0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7c, 0x55, 0x55, 0x57, 0x7c, ++ 0x52, 0x1a, 0x15, 0x1d, 0x62, 0x04, 0x00, 0x00, ++ 0x04, 0x88, 0xf0, 0x90, 0x10, 0x5c, 0xd0, 0xd0, ++ 0xd0, 0xd0, 0x3c, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0xe8, 0x60, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xa8, 0xb8, 0x80, 0xf8, ++ 0xa8, 0x28, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x08, 0x0f, 0x12, 0x3f, ++ 0x52, 0x1f, 0x12, 0x03, 0x7c, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x00, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x48, 0xe8, 0x28, 0x70, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x10, 0x1f, 0x14, 0x27, 0x79, ++ 0x0f, 0x09, 0x0f, 0x09, 0x01, 0x3e, 0x00, 0x00, ++ 0x00, 0xf8, 0xf0, 0x00, 0xfc, 0x90, 0x60, 0x1c, ++ 0xe0, 0x20, 0xe0, 0x20, 0xf0, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0e, 0x71, 0x02, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x48, 0x88, 0xfc, 0x88, 0x88, ++ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x7d, 0x08, 0x3d, 0x15, 0x08, 0x1e, 0x61, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x0c, 0xf0, 0x20, 0x3c, 0x20, 0xfc, 0x00, 0xfc, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0xa8, 0xa4, 0x04, 0xf8, 0x10, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3f, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x72, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d, ++ 0x51, 0x1a, 0x14, 0x1c, 0x60, 0x00, 0x00, 0x00, ++ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xe8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x29, 0x0e, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc, ++ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x56, 0x54, 0x54, 0x7d, ++ 0x57, 0x18, 0x14, 0x1e, 0x61, 0x02, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x80, 0xf8, 0xe8, 0x68, ++ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2b, 0x3e, ++ 0x29, 0x0e, 0x0a, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x50, 0xfc, 0x88, ++ 0xf4, 0x90, 0x90, 0xb4, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7f, 0x54, 0x55, 0x55, 0x7d, ++ 0x52, 0x1a, 0x14, 0x1c, 0x64, 0x00, 0x00, 0x00, ++ 0x84, 0x88, 0xb0, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8, ++ 0xa8, 0xa8, 0xc8, 0xc8, 0x88, 0x88, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x55, 0x55, 0x55, 0x7d, ++ 0x55, 0x19, 0x15, 0x1e, 0x62, 0x04, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0xe8, 0xa8, 0xe8, 0xa8, 0x08, 0x18, 0x00, 0x00, ++ 0x02, 0x3e, 0x02, 0x1e, 0x03, 0x7e, 0x04, 0x09, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x48, 0xf8, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x3f, 0x2b, 0x2b, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2b, 0x3f, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xf0, 0xd0, 0xd0, 0xf8, 0x08, ++ 0xe8, 0xa8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x54, 0x57, 0x54, 0x7d, ++ 0x51, 0x1a, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00, ++ 0x48, 0xa8, 0x98, 0x98, 0x88, 0xe8, 0x98, 0x98, ++ 0xcc, 0xb8, 0xa8, 0x88, 0x88, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x29, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc, ++ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7f, ++ 0x52, 0x1a, 0x17, 0x1e, 0x60, 0x01, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0x28, 0xe8, 0x38, 0x28, 0xa8, ++ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x29, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x02, 0x3f, 0x02, 0x04, 0x08, 0x3e, ++ 0x2a, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe4, 0x14, 0x0c, 0x24, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x0c, 0x0b, 0x0e, 0x70, 0x07, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x55, 0x55, 0x55, 0x7d, ++ 0x51, 0x19, 0x17, 0x1f, 0x65, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x68, 0x68, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x55, 0x56, 0x57, 0x7e, ++ 0x53, 0x1a, 0x17, 0x1e, 0x62, 0x02, 0x00, 0x00, ++ 0xe0, 0x20, 0x50, 0x90, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7d, 0x57, 0x55, 0x55, 0x7d, ++ 0x51, 0x19, 0x15, 0x1e, 0x62, 0x05, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0xc0, 0x7c, 0x08, 0xd0, ++ 0x50, 0x7c, 0x50, 0x50, 0x50, 0xb0, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3e, 0x2a, 0x2a, 0x2a, 0x3f, ++ 0x28, 0x0d, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xfc, ++ 0x80, 0xfc, 0x54, 0x94, 0x24, 0x58, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x54, 0x55, 0x56, 0x7f, ++ 0x52, 0x1b, 0x16, 0x1c, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xb8, 0xa0, 0xb8, 0xa8, 0xb8, ++ 0xa8, 0xb8, 0xa8, 0xa0, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x2a, 0x2c, 0x49, 0x14, 0x22, 0x3f, 0x21, ++ 0x5f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x20, 0xa8, 0xb0, 0x30, 0x48, 0x88, 0xfc, 0x08, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0f, 0x70, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x20, 0xfc, 0x00, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x13, 0x7e, 0x56, 0x57, 0x56, 0x7f, ++ 0x52, 0x1b, 0x16, 0x1e, 0x63, 0x0c, 0x00, 0x00, ++ 0x00, 0x38, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, 0xa8, ++ 0x64, 0xa4, 0xb8, 0xe0, 0x60, 0x20, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x0e, 0x12, 0x67, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0x90, 0x50, 0x20, 0x50, 0x8c, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f, ++ 0x28, 0x0c, 0x0a, 0x0e, 0x71, 0x00, 0x00, 0x00, ++ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, ++ 0x40, 0x28, 0xc4, 0xd4, 0x50, 0x30, 0x00, 0x00, ++ 0x01, 0x03, 0x1e, 0x01, 0x07, 0x78, 0x03, 0x08, ++ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0x60, 0x9c, 0x80, 0x60, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x2b, 0x0c, 0x0b, 0x0e, 0x70, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0x54, 0x20, 0xd8, ++ 0x74, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x20, ++ 0xfc, 0x24, 0x24, 0x24, 0x38, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x08, 0x3f, 0x2a, 0x2a, ++ 0x3e, 0x28, 0x0a, 0x0f, 0x71, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x04, 0x3f, 0x04, 0x7f, 0x2b, 0x2a, 0x56, 0x21, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x7e, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x90, 0x68, 0x84, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x04, 0x00, 0x00, ++ 0x08, 0x3e, 0x09, 0x7f, 0x14, 0x7f, 0x3e, 0x09, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd0, 0x74, 0x94, 0x0c, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0a, 0x0e, 0x73, 0x00, 0x00, 0x00, ++ 0x20, 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x02, 0x7f, ++ 0x09, 0x1f, 0x69, 0x0f, 0x01, 0x3e, 0x00, 0x00, ++ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0x00, 0xfc, ++ 0x20, 0xf0, 0x2c, 0xe0, 0xf0, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0c, 0x0b, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x20, 0xfc, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x50, 0xf0, 0x78, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x29, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xfc, ++ 0x00, 0xfc, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x01, 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x08, ++ 0x3e, 0x2a, 0x3e, 0x2a, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x20, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0x3c, 0xc4, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f, ++ 0x28, 0x0c, 0x0a, 0x0f, 0x70, 0x00, 0x00, 0x00, ++ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x12, 0x7c, 0x57, 0x56, 0x56, 0x7f, ++ 0x52, 0x1a, 0x17, 0x1c, 0x64, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x54, 0x94, 0xec, 0xc8, 0xd8, 0xdc, ++ 0xe8, 0xc8, 0xfc, 0x48, 0x48, 0xc8, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x56, 0x57, 0x55, 0x7f, ++ 0x53, 0x1f, 0x16, 0x1f, 0x62, 0x00, 0x00, 0x00, ++ 0x10, 0xd0, 0x50, 0xd0, 0x7c, 0xf4, 0x18, 0xd0, ++ 0x50, 0x50, 0xe8, 0xe8, 0x44, 0xc4, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7f, 0x55, 0x55, 0x55, 0x7d, ++ 0x51, 0x19, 0x16, 0x1e, 0x64, 0x00, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x9c, 0x78, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x13, 0x11, 0x7d, 0x55, 0x55, 0x57, 0x7c, ++ 0x51, 0x18, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x5c, 0xd4, 0xd4, 0x54, 0xdc, 0x58, ++ 0xe0, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x09, 0x08, 0x09, 0x3f, 0x2a, 0x2a, 0x2a, 0x3e, ++ 0x29, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00, ++ 0x24, 0xa8, 0xfc, 0x08, 0xf0, 0x90, 0xf0, 0x00, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3f, ++ 0x28, 0x0c, 0x0b, 0x0e, 0x71, 0x02, 0x00, 0x00, ++ 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0xa8, 0xfc, ++ 0x20, 0xa8, 0xfc, 0x88, 0x08, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x3e, 0x2a, 0x2b, 0x2a, 0x3e, ++ 0x29, 0x0c, 0x0b, 0x0e, 0x70, 0x01, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x20, 0xfc, 0x50, 0x88, ++ 0x54, 0x50, 0xfc, 0x50, 0x90, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x12, 0x7c, 0x55, 0x56, 0x55, 0x7d, ++ 0x52, 0x1b, 0x14, 0x1c, 0x63, 0x00, 0x00, 0x00, ++ 0x90, 0xf4, 0xf8, 0x90, 0x68, 0x44, 0xfc, 0x28, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3e, 0x2b, 0x2a, 0x2a, 0x3e, ++ 0x28, 0x0d, 0x0a, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x50, 0xfc, 0x50, 0xfc, 0xa0, 0xf8, 0xf8, 0xa0, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x3f, 0x2b, 0x2b, 0x2b, 0x3f, ++ 0x28, 0x0d, 0x0b, 0x0f, 0x71, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0xfc, ++ 0x20, 0xfc, 0x54, 0x54, 0x54, 0x0c, 0x00, 0x00, ++ 0x01, 0x3f, 0x0f, 0x7f, 0x07, 0x1c, 0x67, 0x07, ++ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0xe0, 0xfc, 0xc0, 0x70, 0xcc, 0xc0, ++ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00, ++ 0x04, 0x07, 0x0f, 0x7f, 0x07, 0x3b, 0x1d, 0x3e, ++ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xfc, 0x90, 0xe0, 0xb0, 0x8c, ++ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00, ++ 0x01, 0x0f, 0x09, 0x0f, 0x3f, 0x08, 0x3e, 0x3e, ++ 0x0e, 0x71, 0x1f, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xf0, 0xf8, 0x20, 0xf8, 0xf8, ++ 0x38, 0xc4, 0xf0, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x14, 0x7f, 0x1e, 0x6f, 0x0f, 0x08, ++ 0x0f, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0xfc, 0x74, 0xec, 0xe0, 0x20, ++ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x0f, 0x3f, 0x2f, 0x47, 0x3a, ++ 0x0b, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0xe0, 0xfc, 0xf8, 0xe0, 0x20, ++ 0xe0, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x3f, 0x2f, 0x47, 0x1c, 0x67, ++ 0x08, 0x3e, 0x2a, 0x3e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0xfc, 0xf8, 0xe0, 0x20, 0xe0, ++ 0x20, 0xf8, 0xa8, 0xf8, 0x38, 0xc4, 0x00, 0x00, ++ 0x13, 0x17, 0x6b, 0x17, 0x7c, 0x3b, 0x36, 0x53, ++ 0x1f, 0x11, 0x1f, 0x11, 0x01, 0x3e, 0x00, 0x00, ++ 0x90, 0xd4, 0xa8, 0x98, 0x7c, 0xb8, 0xd4, 0x94, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0xfc, 0x48, ++ 0x48, 0x48, 0xc8, 0x48, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x10, 0x3f, 0x2d, 0x2d, 0x2d, 0x2d, ++ 0x2d, 0x2d, 0x2f, 0x3c, 0x61, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68, ++ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x12, 0x12, 0x22, 0x4f, 0x0a, 0x12, 0x1c, 0x35, ++ 0x53, 0x13, 0x14, 0x1f, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0xc0, 0x00, 0xfc, 0x90, 0x10, ++ 0x10, 0x10, 0x90, 0x50, 0x50, 0x30, 0x00, 0x00, ++ 0x10, 0x1f, 0x22, 0x4f, 0x0a, 0x12, 0x1f, 0x30, ++ 0x57, 0x14, 0x14, 0x17, 0x14, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x80, 0x80, 0xbc, 0xd0, 0x10, ++ 0x90, 0x90, 0x90, 0x90, 0x90, 0x30, 0x00, 0x00, ++ 0x11, 0x17, 0x22, 0x4f, 0x0f, 0x14, 0x17, 0x3f, ++ 0x51, 0x17, 0x15, 0x15, 0x15, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xe0, 0xc0, 0x7c, 0xc8, 0xe8, ++ 0x08, 0xc8, 0x48, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x10, 0x1e, 0x2a, 0x4e, 0x1e, 0x1a, 0x2e, 0x27, ++ 0x6c, 0x37, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xe0, 0xe0, 0xbc, 0xe8, 0xe8, ++ 0x88, 0xc8, 0xc8, 0x88, 0xe8, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7e, 0x04, 0x05, 0x09, 0x1e, ++ 0x2a, 0x49, 0x08, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24, ++ 0x44, 0x88, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x7f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x02, 0x0c, 0x74, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x88, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x02, 0x0c, 0x77, 0x00, 0x1f, 0x00, 0x01, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0x80, 0x60, 0xdc, 0x00, 0xf0, 0x20, 0x40, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x04, 0x18, 0x6f, 0x08, 0x08, ++ 0x0f, 0x06, 0x7c, 0x04, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x60, 0x18, 0xe4, 0x20, 0x20, ++ 0xe0, 0x88, 0x50, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0a, 0x13, 0x3c, ++ 0x54, 0x12, 0x10, 0x10, 0x11, 0x10, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x8c, 0xf0, 0x10, 0x10, 0x10, 0x10, 0xfc, ++ 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xa8, ++ 0xa8, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d, ++ 0x54, 0x12, 0x10, 0x10, 0x11, 0x12, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xfc, ++ 0x40, 0x60, 0xa0, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d, ++ 0x54, 0x12, 0x11, 0x10, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0x40, 0x60, 0xa0, 0x90, 0x28, 0x44, 0x90, ++ 0x20, 0x48, 0x90, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x10, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, ++ 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3c, ++ 0x54, 0x12, 0x11, 0x12, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0x80, 0xfc, 0x20, 0x20, 0xb0, ++ 0xa8, 0xa8, 0x24, 0x24, 0x20, 0x60, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, 0x08, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x08, 0x0a, 0x12, 0x3d, ++ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x20, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x13, 0x3d, ++ 0x55, 0x13, 0x11, 0x11, 0x11, 0x10, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0x28, ++ 0xe8, 0x30, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x02, 0x7f, 0x03, 0x0d, 0x73, ++ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x80, 0xfc, 0x30, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x07, 0x04, 0x7f, 0x09, 0x08, 0x1f, 0x01, ++ 0x01, 0x7f, 0x03, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xfc, 0x10, 0x90, 0xfc, 0x60, ++ 0x00, 0xfc, 0x88, 0x50, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7c, 0x08, 0x0b, 0x12, 0x3c, ++ 0x55, 0x12, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x40, 0x40, ++ 0xf8, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39, ++ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0xa0, 0xa8, 0xa4, 0x24, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x50, 0x50, 0x88, 0x88, 0x04, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7c, 0x08, 0x0b, 0x12, 0x3d, ++ 0x54, 0x12, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc, ++ 0x40, 0x70, 0x48, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7e, 0x08, 0x08, 0x15, 0x39, ++ 0x57, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0xb8, 0x00, 0x00, 0x80, 0xfc, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x0c, 0x74, 0x07, 0x38, 0x3f, ++ 0x24, 0x28, 0x37, 0x24, 0x27, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x50, 0x60, 0x30, 0x0c, 0xf8, ++ 0x98, 0x78, 0xc8, 0x48, 0xc8, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x39, 0x07, 0x19, 0x63, 0x01, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x10, 0xfc, 0x08, 0xb0, 0x60, 0x18, 0x04, 0x00, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x10, 0x7c, 0x0b, 0x08, 0x13, 0x3c, ++ 0x54, 0x13, 0x12, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xfc, 0x48, 0xf8, 0x80, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x24, 0x24, 0x3f, 0x04, 0x7c, 0x25, 0x45, 0x01, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x00, 0x00, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x7f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f, ++ 0x11, 0x63, 0x0c, 0x74, 0x07, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, ++ 0x30, 0x28, 0xc4, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x13, 0x7c, 0x08, 0x0b, 0x14, 0x18, ++ 0x37, 0x54, 0x10, 0x10, 0x13, 0x10, 0x00, 0x00, ++ 0x90, 0x90, 0xf0, 0x90, 0x90, 0xf8, 0x94, 0x94, ++ 0xf0, 0x90, 0x90, 0xf0, 0x90, 0x10, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x12, 0x3c, ++ 0x55, 0x12, 0x14, 0x11, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x80, 0xfc, ++ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x02, 0x7e, 0x02, 0x3e, 0x03, 0x7e, 0x04, 0x09, ++ 0x7f, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x40, 0x7c, 0x40, 0x78, 0x40, 0x7c, 0x40, 0x40, ++ 0xfc, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7d, 0x09, 0x0b, 0x13, 0x1d, ++ 0x34, 0x52, 0x13, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, ++ 0x50, 0x90, 0xfc, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x16, 0x3a, ++ 0x56, 0x17, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8, ++ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x08, 0x0b, 0x14, 0x19, ++ 0x34, 0x57, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, ++ 0x40, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19, ++ 0x35, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x1b, ++ 0x36, 0x56, 0x17, 0x1a, 0x12, 0x12, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0xa8, 0xa8, 0xf8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x7d, 0x09, 0x0b, 0x15, 0x39, ++ 0x55, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0xf8, 0xc8, 0x48, 0x48, 0x78, 0x20, 0xfc, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x7f, 0x04, 0x38, 0x20, 0x3d, 0x20, 0x3d, ++ 0x21, 0x03, 0x0c, 0x74, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xfc, 0x70, 0xac, ++ 0x20, 0x10, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x38, ++ 0x57, 0x12, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0x50, 0xb0, 0x10, 0xf0, 0x00, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x0b, 0x0a, 0x16, 0x3b, ++ 0x56, 0x17, 0x12, 0x14, 0x18, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x00, 0xfc, 0xa8, 0xf0, 0x8c, ++ 0x10, 0xfc, 0x90, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x12, 0x11, 0x11, 0x7c, 0x0a, 0x09, 0x15, 0x38, ++ 0x57, 0x15, 0x11, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x7c, 0x44, ++ 0x58, 0x48, 0x74, 0xc4, 0xc0, 0x3c, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7e, 0x0a, 0x0a, 0x16, 0x1a, ++ 0x36, 0x52, 0x15, 0x15, 0x1a, 0x11, 0x00, 0x00, ++ 0x18, 0xe0, 0x38, 0x20, 0xfc, 0xb8, 0xe4, 0x9c, ++ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x20, 0x27, 0x21, 0x79, 0x17, 0x14, 0x2c, 0x37, ++ 0x6d, 0x29, 0x21, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x20, 0x30, 0x48, 0xfc, 0x24, 0xf8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0x30, 0x28, 0xf4, 0x04, 0x00, 0x00, ++ 0x01, 0x7f, 0x1e, 0x12, 0x1e, 0x04, 0x3f, 0x1f, ++ 0x04, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0x90, 0xf0, 0x40, 0xf8, 0xf0, ++ 0x40, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x7f, 0x08, 0x3e, 0x7f, 0x2d, 0x4b, 0x3e, ++ 0x0e, 0x31, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf0, 0x50, 0xd0, 0x70, 0x54, ++ 0x94, 0x8c, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7d, 0x0a, 0x09, 0x16, 0x18, ++ 0x35, 0x55, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xfc, 0xcc, 0x54, 0xec, 0x54, 0x64, 0x80, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x15, 0x39, ++ 0x55, 0x17, 0x10, 0x11, 0x10, 0x13, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x48, 0xf8, 0xf8, 0x48, ++ 0xf8, 0xfc, 0x90, 0xe0, 0x70, 0x88, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x08, 0x0b, 0x15, 0x19, ++ 0x35, 0x55, 0x10, 0x17, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0x00, 0xf0, 0x50, 0xf0, ++ 0x50, 0xf0, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x12, 0x11, 0x7d, 0x09, 0x0b, 0x15, 0x19, ++ 0x35, 0x54, 0x17, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0x20, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x12, 0x11, 0x13, 0x7e, 0x09, 0x0b, 0x15, 0x18, ++ 0x37, 0x56, 0x13, 0x12, 0x13, 0x12, 0x00, 0x00, ++ 0x48, 0x50, 0xfc, 0x08, 0xf0, 0x10, 0xf0, 0x00, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3e, 0x21, 0x3e, 0x53, 0x1e, ++ 0x11, 0x7f, 0x06, 0x7c, 0x07, 0x38, 0x00, 0x00, ++ 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x20, 0xfc, 0x20, ++ 0x20, 0xfc, 0x90, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0b, 0x17, 0x1b, ++ 0x34, 0x57, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xf8, ++ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x7f, 0x0a, 0x0b, 0x16, 0x3b, ++ 0x54, 0x17, 0x12, 0x12, 0x17, 0x10, 0x00, 0x00, ++ 0x10, 0xd0, 0x90, 0xdc, 0x60, 0xc0, 0xb8, 0xc0, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x11, 0x11, 0x11, 0x7f, 0x09, 0x09, 0x17, 0x18, ++ 0x37, 0x56, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0x00, 0x7c, 0x10, 0xe0, 0x38, 0x28, 0xf8, 0x28, ++ 0xb8, 0xa8, 0xb8, 0x98, 0xa4, 0x44, 0x00, 0x00, ++ 0x10, 0x17, 0x10, 0x7f, 0x0a, 0x0b, 0x14, 0x1b, ++ 0x36, 0x57, 0x12, 0x12, 0x14, 0x18, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x28, 0xfc, ++ 0x28, 0xa8, 0x10, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x10, 0x7f, 0x0a, 0x0e, 0x17, 0x19, ++ 0x37, 0x57, 0x13, 0x15, 0x11, 0x11, 0x00, 0x00, ++ 0x00, 0xb8, 0x28, 0xe8, 0xb8, 0xa8, 0xf8, 0x28, ++ 0xf8, 0xb0, 0x70, 0x34, 0x54, 0x8c, 0x00, 0x00, ++ 0x20, 0x27, 0x24, 0x7f, 0x14, 0x17, 0x2c, 0x37, ++ 0x6d, 0x2d, 0x25, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xbc, 0xa4, 0xbc, 0xa4, 0xbc, 0x44, 0xfc, ++ 0xf4, 0xf4, 0xf4, 0xe4, 0x5c, 0x4c, 0x00, 0x00, ++ 0x10, 0x11, 0x12, 0x7f, 0x0b, 0x0a, 0x17, 0x19, ++ 0x36, 0x55, 0x10, 0x13, 0x10, 0x10, 0x00, 0x00, ++ 0x80, 0xf8, 0xe8, 0x38, 0xb8, 0xa8, 0xfc, 0x30, ++ 0xc8, 0xf4, 0x40, 0xf8, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x04, 0x3f, 0x24, 0x24, 0x24, ++ 0x27, 0x24, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0xc8, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x27, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x7f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xc8, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x08, 0x3e, 0x22, ++ 0x3e, 0x3f, 0x7f, 0x1e, 0x22, 0x4d, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0x40, 0x40, 0xfc, ++ 0x90, 0x90, 0x60, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x3f, 0x27, 0x14, 0x7f, 0x1c, ++ 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0xc8, 0xfc, 0xa0, 0xf8, ++ 0xf8, 0xa0, 0xfc, 0xd4, 0x6c, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x11, 0x21, 0x4f, 0x08, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x38, 0xd0, 0x08, 0x04, 0xe4, 0x20, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x10, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x7d, 0x45, ++ 0x45, 0x44, 0x7c, 0x45, 0x02, 0x0c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10, ++ 0xf0, 0xa0, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, ++ 0x3f, 0x5d, 0x48, 0x0e, 0x71, 0x06, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x3f, 0x0a, 0x0a, 0x7f, 0x0c, 0x12, ++ 0x3e, 0x52, 0x1e, 0x12, 0x1f, 0x12, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x0e, 0x06, 0x09, 0x10, 0x3f, 0x40, 0x3a, 0x2a, ++ 0x3a, 0x2d, 0x3d, 0x2a, 0x2a, 0x2a, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xc8, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xf8, 0x30, 0x30, 0xb4, 0xd4, 0x8c, 0x00, 0x00, ++ 0x08, 0x2a, 0x2a, 0x3e, 0x00, 0x7f, 0x00, 0x3e, ++ 0x22, 0x3e, 0x22, 0x14, 0x1e, 0x61, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x3e, 0x14, 0x7f, 0x08, 0x3e, ++ 0x2a, 0x3e, 0x2a, 0x7f, 0x22, 0x27, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, 0x3e, ++ 0x08, 0x3e, 0x08, 0x3e, 0x0c, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x50, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x04, 0x1b, 0x12, 0x1a, 0x19, 0x12, 0x3f, 0x2f, ++ 0x48, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00, ++ 0x80, 0x70, 0x90, 0xb0, 0x30, 0x90, 0xfc, 0xe8, ++ 0x20, 0xe0, 0xe0, 0xe4, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x7e, 0x49, 0x7e, 0x7d, 0x49, 0x7f, 0x4f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x78, 0x00, 0x00, ++ 0x80, 0xfc, 0x00, 0xf8, 0xfc, 0x54, 0xfc, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xe4, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x7f, 0x57, 0x7f, 0x3e, 0x22, ++ 0x3e, 0x3e, 0x22, 0x3e, 0x14, 0x63, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f, ++ 0x64, 0x3f, 0x3f, 0x24, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x30, 0x30, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x10, 0x1e, 0x25, 0x49, 0x3f, 0x2b, 0x2b, 0x3f, ++ 0x2b, 0x3f, 0x23, 0x23, 0x23, 0x46, 0x00, 0x00, ++ 0x08, 0x30, 0xd0, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0x50, 0x70, 0x58, 0x78, 0x94, 0x04, 0x00, 0x00, ++ 0x08, 0x2f, 0x28, 0x2f, 0x72, 0x07, 0x18, 0x6f, ++ 0x09, 0x0f, 0x09, 0x0f, 0x10, 0x20, 0x00, 0x00, ++ 0x80, 0x98, 0xe4, 0x84, 0x7c, 0xc0, 0x80, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x30, 0x00, 0x00, ++ 0x10, 0x1e, 0x24, 0x48, 0x3e, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0xa0, 0xa0, 0xfc, 0xa0, 0xa0, ++ 0x90, 0xf4, 0x8c, 0x0c, 0xf4, 0x04, 0x00, 0x00, ++ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x3f, 0x22, 0x22, 0x22, 0x46, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x1e, 0x24, 0x49, 0x3e, 0x2a, 0x2a, 0x3e, ++ 0x2b, 0x3e, 0x23, 0x22, 0x23, 0x46, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0, ++ 0xfc, 0xf8, 0x68, 0xa8, 0x48, 0x30, 0x00, 0x00, ++ 0x10, 0x1f, 0x25, 0x49, 0x3e, 0x2a, 0x2b, 0x3f, ++ 0x2b, 0x3f, 0x22, 0x22, 0x23, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8, ++ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3e, 0x00, 0x7f, 0x00, 0x3e, 0x00, 0x3e, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x28, 0x24, ++ 0x24, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x10, 0x20, ++ 0x40, 0x80, 0x00, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3d, 0x03, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x28, 0x28, 0x30, ++ 0x60, 0x20, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x10, 0x90, 0x90, 0x90, 0xfc, 0x30, ++ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0x68, ++ 0xa8, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0x28, 0x28, 0x28, ++ 0xe8, 0x28, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x90, ++ 0xf0, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x10, 0xd0, 0x14, 0x0c, 0xec, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3f, 0x0f, 0x00, 0x7f, 0x0f, ++ 0x0f, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0xe0, 0x00, 0xfc, 0xe0, ++ 0xe0, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3e, ++ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xa0, 0xa4, 0x24, 0xa8, ++ 0xb0, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48, ++ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x26, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3f, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0xe8, 0x28, 0xe8, ++ 0x28, 0xe8, 0x28, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c, ++ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0x20, 0x20, 0xfc, 0x70, ++ 0x70, 0xa8, 0x28, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0x7e, 0x01, 0x39, 0x00, 0x39, ++ 0x06, 0x38, 0x29, 0x29, 0x3a, 0x2c, 0x00, 0x00, ++ 0xa0, 0xa0, 0xa0, 0xa8, 0xa8, 0xb0, 0xb0, 0xa8, ++ 0xa4, 0xa4, 0x20, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x01, 0x3c, 0x03, 0x3c, ++ 0x00, 0x3d, 0x26, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x40, 0x58, 0xe0, 0x40, 0xf8, 0x40, 0xfc, 0xe0, ++ 0xe0, 0x50, 0x48, 0x44, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3c, 0x00, 0x3f, ++ 0x01, 0x3d, 0x25, 0x27, 0x3c, 0x24, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0xc8, 0xa8, 0xfc, ++ 0x48, 0x28, 0x28, 0xfc, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0x7f, 0x00, 0x3a, 0x02, 0x3f, ++ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00, ++ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xa8, 0xa8, 0xe8, ++ 0xb8, 0x90, 0x94, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x38, 0x02, 0x7d, 0x01, 0x3f, 0x00, 0x39, ++ 0x01, 0x3a, 0x2c, 0x28, 0x38, 0x2b, 0x00, 0x00, ++ 0x80, 0xfc, 0x90, 0x10, 0x10, 0x10, 0xfc, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x01, 0x3e, 0x03, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xfc, 0x20, 0x20, 0xfc, 0x20, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x02, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3b, 0x00, 0x7d, 0x01, 0x39, 0x01, 0x39, ++ 0x02, 0x3a, 0x2c, 0x28, 0x3f, 0x28, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x50, 0x50, 0x50, 0x50, 0x50, ++ 0xe8, 0xe4, 0x44, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x25, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00, ++ 0xf8, 0x10, 0xfc, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3f, ++ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x04, 0xf8, 0x48, 0xfc, ++ 0x48, 0xf8, 0x48, 0x40, 0x40, 0xc0, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3d, 0x00, 0x3d, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x88, 0x30, 0x40, 0xb8, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x02, 0x3d, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0xe0, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7c, 0x03, 0x3f, 0x02, 0x3e, ++ 0x03, 0x3c, 0x25, 0x26, 0x3c, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x58, 0xd8, 0xe8, ++ 0xf8, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3c, 0x01, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x00, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x03, 0x3c, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x3c, 0x40, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xdc, 0x54, 0xdc, 0x00, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7f, 0x00, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x10, 0xf8, 0x90, 0xfc, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7f, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x25, 0x26, 0x3e, 0x24, 0x00, 0x00, ++ 0x20, 0x3c, 0x20, 0xfc, 0x38, 0xe4, 0x1c, 0x00, ++ 0x7c, 0x40, 0xfc, 0x40, 0x7c, 0x40, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x03, 0x3c, 0x00, 0x3c, ++ 0x00, 0x3c, 0x24, 0x24, 0x3f, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0xfc, 0x00, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x00, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3d, 0x24, 0x27, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, ++ 0x48, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3b, 0x02, 0x7f, 0x02, 0x3b, 0x03, 0x3b, ++ 0x03, 0x3a, 0x2a, 0x2c, 0x3f, 0x28, 0x00, 0x00, ++ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0, ++ 0xf0, 0x90, 0xb4, 0xfc, 0x1c, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x02, 0x3b, ++ 0x02, 0x3f, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x3a, 0x02, 0x3b, ++ 0x02, 0x38, 0x28, 0x29, 0x3a, 0x2c, 0x00, 0x00, ++ 0xc0, 0x58, 0x48, 0x48, 0x58, 0x48, 0x48, 0xf8, ++ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x3c, 0x00, 0x3d, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x24, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0xe8, 0xa8, 0xe8, 0x18, 0xfc, ++ 0x08, 0xe8, 0xa8, 0xe8, 0x08, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x5f, 0x0f, 0x7f, 0x04, 0x1f, ++ 0x6f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0xfc, 0x40, 0xf0, ++ 0xec, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7f, 0x00, 0x3c, 0x00, 0x3d, ++ 0x03, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00, ++ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08, ++ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7d, 0x02, 0x3c, 0x00, 0x3c, ++ 0x01, 0x3d, 0x25, 0x25, 0x3f, 0x24, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xf8, 0x44, 0xf0, 0x10, 0x60, ++ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x01, 0x7f, 0x01, 0x3d, 0x00, 0x3d, ++ 0x02, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xa4, 0x5c, ++ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x00, 0x38, 0x00, 0x7e, 0x02, 0x3a, 0x04, 0x38, ++ 0x03, 0x3a, 0x2a, 0x2a, 0x3f, 0x28, 0x00, 0x00, ++ 0x40, 0x28, 0xa8, 0x90, 0x98, 0xa4, 0xd4, 0xf0, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x01, 0x7e, 0x00, 0x3d, 0x01, 0x3e, ++ 0x01, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x50, 0xfc, 0x28, 0x20, ++ 0xfc, 0x20, 0x38, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7e, 0x00, 0x3f, 0x00, 0x3d, ++ 0x03, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xb0, 0xe0, 0x80, 0xf8, 0x20, ++ 0xfc, 0x20, 0x28, 0x28, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3b, 0x02, 0x7e, 0x02, 0x3a, 0x02, 0x3b, ++ 0x03, 0x3b, 0x2b, 0x2a, 0x3b, 0x2a, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, 0xf8, ++ 0x68, 0x68, 0xf8, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x1d, 0x0b, 0x3f, 0x2a, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x80, 0x80, 0xf8, 0x08, 0xe8, 0xf8, 0x08, 0xe8, ++ 0xe8, 0x08, 0xe8, 0xa8, 0xe8, 0x30, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x3f, 0x2a, 0x3e, 0x23, 0x47, ++ 0x3f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x70, 0x50, 0x94, 0xfc, 0x90, 0x60, 0x9c, 0xc0, ++ 0xf8, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x00, 0x38, 0x07, 0x7d, 0x00, 0x3b, 0x02, 0x3b, ++ 0x02, 0x3a, 0x2a, 0x2a, 0x3a, 0x2a, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x10, 0xa0, 0xf8, 0x48, 0xf8, ++ 0x48, 0xe8, 0xa8, 0xe8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x3c, 0x01, 0x3d, ++ 0x01, 0x3d, 0x24, 0x24, 0x3c, 0x27, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x03, 0x7e, 0x01, 0x3d, 0x01, 0x3d, ++ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x26, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x38, 0x07, 0x7c, 0x03, 0x39, 0x07, 0x39, ++ 0x03, 0x38, 0x2f, 0x28, 0x38, 0x28, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xa0, 0xf8, 0x50, 0xfc, 0x50, ++ 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3b, 0x01, 0x7d, 0x03, 0x39, 0x01, 0x39, ++ 0x01, 0x3a, 0x2a, 0x2d, 0x39, 0x2a, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0xe4, 0x20, 0xf0, 0x10, ++ 0xfc, 0x04, 0xd4, 0x6c, 0x44, 0x18, 0x00, 0x00, ++ 0x01, 0x39, 0x06, 0x7e, 0x01, 0x3a, 0x07, 0x38, ++ 0x03, 0x39, 0x29, 0x2a, 0x3a, 0x2c, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x50, ++ 0xfc, 0x28, 0xa8, 0x94, 0x2c, 0xc4, 0x00, 0x00, ++ 0x00, 0x3b, 0x00, 0x7c, 0x07, 0x38, 0x03, 0x38, ++ 0x03, 0x3a, 0x2b, 0x2a, 0x3a, 0x2a, 0x00, 0x00, ++ 0x00, 0xf0, 0xa0, 0x40, 0xfc, 0xc8, 0x50, 0xc0, ++ 0xf8, 0xb8, 0xf8, 0xa8, 0xe8, 0x18, 0x00, 0x00, ++ 0x01, 0x38, 0x02, 0x7d, 0x01, 0x3a, 0x05, 0x39, ++ 0x01, 0x39, 0x29, 0x28, 0x3f, 0x28, 0x00, 0x00, ++ 0xc8, 0x68, 0xb4, 0x94, 0xf8, 0x08, 0xf4, 0x10, ++ 0x10, 0xf0, 0x10, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3b, 0x02, 0x7e, 0x03, 0x39, 0x01, 0x3a, ++ 0x05, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00, ++ 0x88, 0xfc, 0xa8, 0xa8, 0xfc, 0xd8, 0xac, 0x4c, ++ 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x01, 0x39, 0x07, 0x79, 0x07, 0x39, 0x02, 0x3c, ++ 0x01, 0x39, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x10, 0xfc, 0x10, 0xa8, 0x44, ++ 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x01, 0x39, ++ 0x01, 0x39, 0x29, 0x2f, 0x38, 0x28, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x38, 0x03, 0x7f, 0x02, 0x3b, 0x02, 0x3b, ++ 0x02, 0x3a, 0x2a, 0x2a, 0x3c, 0x28, 0x00, 0x00, ++ 0x40, 0xf8, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x39, 0x01, 0x7d, 0x00, 0x3b, 0x02, 0x3b, ++ 0x00, 0x3f, 0x28, 0x29, 0x3e, 0x28, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xb8, 0xa8, 0xb8, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x33, 0x5e, 0x0f, ++ 0x7f, 0x07, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xfc, 0x20, 0xe0, ++ 0xfc, 0xc0, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x00, 0x3b, 0x02, 0x7f, 0x00, 0x3b, 0x00, 0x3f, ++ 0x01, 0x3f, 0x28, 0x2b, 0x38, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x10, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3a, 0x01, 0x79, 0x04, 0x3b, 0x02, 0x38, ++ 0x06, 0x3a, 0x2a, 0x2a, 0x3d, 0x28, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xf8, 0x20, 0xfc, 0xf0, 0x90, ++ 0xf0, 0xf8, 0x88, 0xf8, 0x80, 0xfc, 0x00, 0x00, ++ 0x06, 0x1b, 0x13, 0x1c, 0x1e, 0x12, 0x7f, 0x17, ++ 0x3f, 0x47, 0x07, 0x0f, 0x08, 0x0f, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0xf0, 0xf0, 0x90, 0xfc, 0xd0, ++ 0xf8, 0xc4, 0xc0, 0xe0, 0x20, 0xe0, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x7f, 0x02, 0x3b, 0x03, 0x39, ++ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00, ++ 0x40, 0xfc, 0xf0, 0xf8, 0xa8, 0x38, 0xf8, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x00, 0x38, 0x07, 0x7c, 0x01, 0x3f, 0x01, 0x3b, ++ 0x05, 0x39, 0x28, 0x2a, 0x3a, 0x2c, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xa0, 0xf0, 0x14, 0xf8, 0xb0, ++ 0xf4, 0xac, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x14, 0x17, 0x28, 0x3f, 0x68, 0x2b, 0x3c, 0x2b, ++ 0x28, 0x3f, 0x2a, 0x2b, 0x3e, 0x20, 0x00, 0x00, ++ 0x14, 0x94, 0x28, 0xfc, 0x68, 0xa8, 0x3c, 0xa8, ++ 0x28, 0xbc, 0xa8, 0xa8, 0xbc, 0x20, 0x00, 0x00, ++ 0x00, 0x38, 0x07, 0x7d, 0x01, 0x39, 0x01, 0x3b, ++ 0x00, 0x3b, 0x29, 0x29, 0x38, 0x2f, 0x00, 0x00, ++ 0x40, 0xf8, 0xf0, 0x10, 0xf4, 0xb8, 0xe4, 0x7c, ++ 0xa0, 0xf0, 0x50, 0xf4, 0xac, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x03, 0x7e, 0x03, 0x38, 0x07, 0x3b, ++ 0x00, 0x3f, 0x29, 0x2f, 0x39, 0x2e, 0x00, 0x00, ++ 0x40, 0xfc, 0xb8, 0xa8, 0xb8, 0xa0, 0xfc, 0xf8, ++ 0xa0, 0xfc, 0xa8, 0x30, 0xd0, 0x0c, 0x00, 0x00, ++ 0x02, 0x3a, 0x02, 0x7d, 0x07, 0x3a, 0x06, 0x3a, ++ 0x06, 0x3a, 0x2e, 0x2b, 0x3e, 0x28, 0x00, 0x00, ++ 0xa0, 0xb0, 0xa8, 0x68, 0xfc, 0xa0, 0xe8, 0xa8, ++ 0xe8, 0xd0, 0x94, 0xfc, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x7f, 0x02, 0x3b, 0x00, 0x39, ++ 0x03, 0x3d, 0x29, 0x29, 0x39, 0x29, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc, ++ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x03, 0x3b, 0x05, 0x7f, 0x03, 0x3b, 0x05, 0x39, ++ 0x01, 0x39, 0x29, 0x29, 0x39, 0x2e, 0x00, 0x00, ++ 0x30, 0xb8, 0x50, 0xfc, 0x30, 0xb4, 0x4c, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x13, 0x22, ++ 0x7e, 0x22, 0x22, 0x3f, 0x22, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x30, ++ 0x30, 0x50, 0x90, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x08, 0x3f, 0x2a, 0x7e, 0x09, 0x3e, 0x08, 0x7f, ++ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x50, 0x48, 0x88, 0xa0, 0x20, 0x50, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x3e, 0x29, 0x49, 0x0a, 0x32, 0x0c, 0x0a, ++ 0x3f, 0x08, 0x7f, 0x0c, 0x12, 0x60, 0x00, 0x00, ++ 0x50, 0x48, 0x88, 0x20, 0x20, 0x50, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x11, 0x11, 0x1f, 0x00, 0x7f, 0x00, 0x0f, ++ 0x08, 0x0f, 0x04, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0x10, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0xe0, ++ 0x20, 0xe0, 0x40, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x01, 0x3d, 0x26, 0x24, 0x24, 0x3d, ++ 0x27, 0x14, 0x18, 0x1c, 0x61, 0x02, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xb8, 0xe8, 0x68, ++ 0x68, 0xf8, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x3e, 0x24, 0x3f, 0x3f, ++ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x50, 0x20, 0xd0, 0x0c, 0xf8, ++ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x25, 0x2f, 0x25, 0x2f, 0x2f, 0x25, 0x3f, 0x7f, ++ 0x0f, 0x08, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x48, 0xe8, 0x48, 0xe8, 0xe8, 0x48, 0xf8, 0xfc, ++ 0xe0, 0x20, 0xe0, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x02, 0x0e, 0x73, 0x05, 0x19, ++ 0x62, 0x04, 0x18, 0x60, 0x01, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x48, 0x48, 0x50, 0xa0, ++ 0xa0, 0x90, 0x88, 0x84, 0x00, 0x00, 0x00, 0x00, ++ 0x09, 0x09, 0x1f, 0x02, 0x7f, 0x04, 0x1f, 0x63, ++ 0x3d, 0x06, 0x39, 0x06, 0x38, 0x03, 0x00, 0x00, ++ 0x20, 0x10, 0xf8, 0x80, 0xfc, 0x40, 0xf0, 0x1c, ++ 0x90, 0xa0, 0xe0, 0x98, 0x84, 0x00, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x10, 0x32, 0x4b, 0x1c, 0x2c, ++ 0x4a, 0x1b, 0x2a, 0x48, 0x08, 0x30, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x30, 0x48, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x00, 0x03, 0x3c, 0x02, 0x03, 0x7c, 0x01, ++ 0x06, 0x38, 0x01, 0x06, 0x38, 0x01, 0x00, 0x00, ++ 0x40, 0x80, 0x88, 0x50, 0x60, 0x80, 0x80, 0x40, ++ 0x60, 0xa0, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, ++ 0x04, 0x18, 0x6a, 0x24, 0x1b, 0x70, 0x08, 0x1c, ++ 0x64, 0x0c, 0x15, 0x66, 0x04, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x10, 0xfc, 0x30, 0x30, 0x50, ++ 0x50, 0x90, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0d, 0x14, ++ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x18, 0x6a, 0x24, 0x19, 0x6a, 0x0c, 0x15, ++ 0x66, 0x0d, 0x15, 0x65, 0x05, 0x19, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x88, 0x90, 0x60, 0x60, 0x90, ++ 0x0c, 0xf8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x09, 0x11, 0x6d, 0x29, 0x13, 0x72, 0x1e, 0x2a, ++ 0x4a, 0x1a, 0x2b, 0x4a, 0x0a, 0x32, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x70, 0x70, ++ 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x19, 0x6a, 0x24, 0x18, 0x68, 0x0c, 0x14, ++ 0x64, 0x0c, 0x14, 0x64, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x40, 0xf8, 0x88, 0x88, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x64, 0x0d, 0x14, 0x64, 0x07, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xf8, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x64, 0x0c, 0x14, 0x64, 0x05, 0x1a, 0x00, 0x00, ++ 0x40, 0xb8, 0x08, 0x08, 0xb8, 0x08, 0x08, 0xf8, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x04, 0x18, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x28, 0xe8, 0x58, 0x88, 0xf8, ++ 0x24, 0xf8, 0x20, 0x24, 0xe4, 0x1c, 0x00, 0x00, ++ 0x05, 0x19, 0x6b, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x65, 0x0d, 0x15, 0x65, 0x05, 0x1e, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x24, 0xe8, 0x30, 0x20, ++ 0x20, 0x20, 0x24, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x04, 0x1b, 0x68, 0x25, 0x19, 0x69, 0x0d, 0x15, ++ 0x64, 0x0f, 0x14, 0x64, 0x05, 0x1e, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0xf8, 0x08, 0xf8, 0x08, 0xf8, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x3e, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x23, 0x42, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0x40, 0x7c, 0xc8, 0x48, 0x50, ++ 0x30, 0x20, 0x54, 0x94, 0x0c, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x17, 0x14, 0x17, ++ 0x14, 0x17, 0x24, 0x27, 0x43, 0x1c, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x80, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x10, 0xf0, 0x30, 0x0c, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x70, 0x0f, 0x00, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x80, 0xe0, 0x1c, 0xe0, 0x40, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3f, 0x22, ++ 0x22, 0x3e, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x48, 0x88, 0xf4, 0x04, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x2f, 0x28, 0x2e, 0x78, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x84, 0x7c, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x7f, 0x1f, 0x00, 0x7f, 0x1f, 0x11, ++ 0x1f, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0x40, 0xc0, 0x40, 0x40, ++ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00, ++ 0x00, 0x1f, 0x00, 0x7f, 0x00, 0x1f, 0x11, 0x1f, ++ 0x11, 0x1f, 0x11, 0x1f, 0x19, 0x60, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x40, 0x40, 0x40, ++ 0x20, 0x20, 0x14, 0x14, 0x0c, 0x84, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x27, 0x3c, 0x24, ++ 0x24, 0x3c, 0x19, 0x15, 0x22, 0x44, 0x00, 0x00, ++ 0x08, 0x30, 0xc0, 0x40, 0x40, 0xf8, 0x08, 0x10, ++ 0x10, 0x20, 0x40, 0x80, 0x40, 0x3c, 0x00, 0x00, ++ 0x00, 0x7f, 0x04, 0x3f, 0x24, 0x3f, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x1f, 0x05, 0x7f, 0x04, 0x0f, 0x08, 0x0f, ++ 0x08, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x40, 0xfc, 0x40, 0xe0, 0x20, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3c, 0x24, 0x3d, 0x24, ++ 0x24, 0x3f, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54, ++ 0x7c, 0xc8, 0x30, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x01, 0x7f, 0x1f, 0x3f, 0x24, 0x3f, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0xf0, 0xf8, 0x48, 0xf8, 0xe0, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x09, 0x17, 0x25, 0x19, 0x6f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0xa8, 0x48, 0x30, 0xec, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f, ++ 0x18, 0x6f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xfc, 0xf0, 0x40, 0xfc, 0xe0, ++ 0x30, 0xec, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x27, 0x24, 0x3f, 0x24, 0x3f, 0x24, ++ 0x27, 0x3d, 0x19, 0x16, 0x24, 0x40, 0x00, 0x00, ++ 0x48, 0xb0, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8, ++ 0xf8, 0xb0, 0xb0, 0xa8, 0xa4, 0xa0, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x25, ++ 0x25, 0x3c, 0x1b, 0x15, 0x24, 0x40, 0x00, 0x00, ++ 0x50, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, 0xf8, ++ 0x48, 0x10, 0xfc, 0x10, 0x90, 0x30, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x3e, 0x7e, 0x09, 0x7f, 0x1e, 0x27, 0x4f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x50, 0x70, 0x8c, 0xe0, ++ 0x20, 0xe0, 0xe0, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x14, 0x1f, 0x25, 0x7f, 0x16, 0x25, 0x4f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0xa0, 0xf8, 0x20, 0xfc, 0x50, 0x94, 0xec, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x08, 0x7f, 0x12, 0x0d, 0x1d, 0x63, 0x0f, 0x08, ++ 0x0f, 0x0f, 0x08, 0x0f, 0x06, 0x38, 0x00, 0x00, ++ 0xd4, 0xfc, 0x70, 0x50, 0x74, 0x8c, 0xe4, 0x20, ++ 0xe0, 0xe0, 0x20, 0xe0, 0x60, 0x18, 0x00, 0x00, ++ 0x01, 0x7f, 0x08, 0x07, 0x1f, 0x10, 0x1f, 0x3b, ++ 0x2a, 0x3b, 0x2b, 0x3b, 0x2b, 0x5c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xb8, ++ 0xa8, 0xb8, 0xb8, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x25, 0x3d, 0x25, 0x3d, 0x25, ++ 0x25, 0x3d, 0x1a, 0x16, 0x24, 0x40, 0x00, 0x00, ++ 0x40, 0xf0, 0x20, 0xfc, 0x54, 0x8c, 0x70, 0xfc, ++ 0x70, 0x70, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x27, 0x3d, 0x24, 0x3f, 0x25, ++ 0x26, 0x3d, 0x19, 0x15, 0x27, 0x40, 0x00, 0x00, ++ 0x40, 0xf8, 0x48, 0xfc, 0xf8, 0x40, 0xfc, 0xa8, ++ 0x54, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x3e, 0x15, 0x1d, 0x3f, 0x5f, 0x17, ++ 0x14, 0x17, 0x17, 0x17, 0x22, 0x4c, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x50, 0x78, 0xf4, 0xf0, 0xd0, ++ 0x50, 0xd0, 0xd0, 0xd0, 0x90, 0x50, 0x00, 0x00, ++ 0x00, 0x38, 0x2d, 0x2d, 0x3d, 0x2f, 0x39, 0x2f, ++ 0x2d, 0x3d, 0x15, 0x1a, 0x2a, 0x44, 0x00, 0x00, ++ 0x18, 0x14, 0xfc, 0x10, 0xf4, 0xd4, 0xf4, 0xb8, ++ 0xf8, 0xdc, 0xfc, 0x9c, 0x24, 0x44, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x25, 0x3d, 0x25, ++ 0x25, 0x3d, 0x1a, 0x16, 0x27, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0xf8, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x18, 0x3e, ++ 0x22, 0x3e, 0x3e, 0x3e, 0x14, 0x63, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xe0, 0x30, 0xf8, ++ 0x88, 0xf8, 0xf8, 0xf8, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x25, 0x3d, 0x25, 0x3d, 0x24, ++ 0x24, 0x3c, 0x18, 0x14, 0x24, 0x43, 0x00, 0x00, ++ 0x20, 0xfc, 0xf8, 0xfc, 0x54, 0x9c, 0xfc, 0xf8, ++ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x14, 0x36, ++ 0x36, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x80, 0xf8, 0xc8, ++ 0xa8, 0xb0, 0x90, 0xb0, 0xc8, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x08, 0x08, 0x7f, 0x14, 0x36, ++ 0x37, 0x35, 0x55, 0x14, 0x24, 0x4c, 0x00, 0x00, ++ 0x40, 0x48, 0xf8, 0x50, 0x50, 0xfc, 0x50, 0x88, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x01, 0x7f, 0x08, 0x04, ++ 0x04, 0x10, 0x1b, 0x14, 0x23, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0x00, 0xfc, 0x20, 0x20, ++ 0x40, 0x80, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28, ++ 0x2e, 0x29, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00, ++ 0x10, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x9c, ++ 0xf0, 0x90, 0x10, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x7f, 0x08, 0x28, ++ 0x2e, 0x28, 0x38, 0x28, 0x47, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0x40, 0x90, ++ 0x24, 0xc8, 0x10, 0x60, 0x80, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x3e, 0x09, 0x08, 0x7f, 0x08, 0x28, ++ 0x2e, 0x28, 0x38, 0x28, 0x46, 0x41, 0x00, 0x00, ++ 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xa0, 0xbc, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x29, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x27, 0x3d, 0x09, 0x29, 0x2d, ++ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x09, 0x00, 0x00, ++ 0x00, 0x00, 0x1c, 0xd4, 0x54, 0x54, 0x54, 0x54, ++ 0x54, 0x54, 0x54, 0x5c, 0x54, 0x80, 0x00, 0x00, ++ 0x00, 0x7b, 0x4a, 0x4a, 0x7a, 0x12, 0x57, 0x5e, ++ 0x52, 0x52, 0x5e, 0x72, 0x42, 0x02, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xfc, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2f, ++ 0x29, 0x2a, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x2b, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2e, 0x3a, 0x65, 0x0e, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x28, 0x20, 0x20, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x2f, 0x3a, 0x64, 0x0b, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0xc8, ++ 0xb0, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x27, 0x3d, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xfc, 0x00, 0x78, 0x48, ++ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x09, 0x0f, 0x71, 0x02, 0x1f, ++ 0x10, 0x1f, 0x09, 0x09, 0x15, 0x63, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x90, 0x54, 0x54, 0x0c, 0xf0, ++ 0x10, 0xf0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0xa4, ++ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x61, 0x02, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x50, ++ 0x50, 0x50, 0x90, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0xfc, 0x04, ++ 0xf4, 0x94, 0xf4, 0x94, 0x04, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e, ++ 0x28, 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, ++ 0xa4, 0xa8, 0x90, 0xb0, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x28, 0x2e, ++ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0xa0, ++ 0xb8, 0xa0, 0xa0, 0x60, 0x30, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x29, 0x28, 0x2e, 0x39, 0x62, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20, ++ 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2e, 0x3a, 0x64, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x28, 0x20, 0xfc, ++ 0x20, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x23, 0x3e, 0x08, 0x29, 0x2e, ++ 0x28, 0x29, 0x2e, 0x38, 0x60, 0x03, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54, ++ 0x7c, 0xc8, 0x30, 0x24, 0xdc, 0x04, 0x00, 0x00, ++ 0x01, 0x3d, 0x25, 0x25, 0x3d, 0x0a, 0x28, 0x2f, ++ 0x28, 0x28, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00, ++ 0x00, 0x00, 0x38, 0xe8, 0xa8, 0xa8, 0xa8, 0xe8, ++ 0xa8, 0xa8, 0x68, 0x78, 0x28, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3f, 0x28, 0x09, 0x2e, ++ 0x28, 0x29, 0x28, 0x2e, 0x39, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xa0, 0x60, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x22, 0x3e, 0x08, 0x28, 0x2e, ++ 0x28, 0x28, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x28, 0x0b, 0x2e, ++ 0x2b, 0x2a, 0x2b, 0x2e, 0x3a, 0x62, 0x00, 0x00, ++ 0xe0, 0x60, 0x90, 0x08, 0xf4, 0x00, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x22, 0x3e, 0x28, 0x08, 0x2e, ++ 0x28, 0x28, 0x2b, 0x2c, 0x38, 0x63, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x44, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x09, 0x28, 0x2e, ++ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x54, 0x90, 0x60, 0x50, ++ 0xf8, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x3f, 0x24, 0x7f, 0x1f, 0x04, 0x7f, 0x0f, ++ 0x14, 0x67, 0x09, 0x09, 0x17, 0x61, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xf8, 0xf0, 0x40, 0xfc, 0xe0, ++ 0x50, 0xcc, 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, ++ 0x01, 0x3c, 0x27, 0x24, 0x3d, 0x08, 0x2b, 0x2c, ++ 0x28, 0x28, 0x2f, 0x3a, 0x67, 0x00, 0x00, 0x00, ++ 0x10, 0xa0, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x80, ++ 0xf8, 0xa0, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x25, 0x3e, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2f, 0x3b, 0x65, 0x01, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0xf0, 0x08, 0xf4, 0x10, 0xf0, ++ 0xf0, 0x00, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3c, 0x29, 0x0b, 0x2f, ++ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00, ++ 0x40, 0x58, 0x40, 0x58, 0xa0, 0x10, 0xf8, 0x14, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3e, 0x28, 0x09, 0x2f, ++ 0x29, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00, ++ 0x18, 0xf0, 0x48, 0x24, 0x24, 0x40, 0xb8, 0x08, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x13, 0x1f, 0x17, 0x1a, 0x22, ++ 0x4f, 0x08, 0x0f, 0x09, 0x17, 0x21, 0x00, 0x00, ++ 0x50, 0xfc, 0x48, 0xa8, 0xf0, 0x30, 0xd4, 0x0c, ++ 0xe4, 0x20, 0xe0, 0xf0, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x26, 0x3c, 0x08, 0x29, 0x2f, ++ 0x2b, 0x29, 0x29, 0x2f, 0x39, 0x61, 0x00, 0x00, ++ 0xa8, 0xa8, 0x28, 0x54, 0xd4, 0x90, 0x10, 0x50, ++ 0x5c, 0x50, 0x50, 0xb0, 0x90, 0x0c, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x25, 0x3d, 0x09, 0x29, 0x2d, ++ 0x29, 0x29, 0x2e, 0x3b, 0x65, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x50, 0xfc, 0x50, 0x50, ++ 0x70, 0x50, 0x00, 0xa8, 0x54, 0x54, 0x00, 0x00, ++ 0x00, 0x3e, 0x23, 0x23, 0x3e, 0x28, 0x08, 0x2f, ++ 0x28, 0x28, 0x28, 0x2d, 0x3a, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x00, 0xfc, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x24, 0x3c, 0x28, 0x0b, 0x2e, ++ 0x2b, 0x2a, 0x2a, 0x2f, 0x3a, 0x62, 0x00, 0x00, ++ 0xa0, 0xa0, 0xfc, 0xa0, 0xe0, 0x40, 0xf8, 0x48, ++ 0xf8, 0xd8, 0xd8, 0x68, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x09, 0x2f, ++ 0x29, 0x2b, 0x28, 0x2f, 0x38, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x50, 0xfc, ++ 0x50, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x27, 0x26, 0x3e, 0x0b, 0x2a, 0x2f, ++ 0x2b, 0x2b, 0x2f, 0x3c, 0x65, 0x0a, 0x00, 0x00, ++ 0x00, 0xfc, 0x30, 0xb0, 0xd0, 0xfc, 0xb4, 0xf8, ++ 0xd0, 0xd0, 0x98, 0xa8, 0x24, 0x44, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x26, 0x3d, 0x29, 0x09, 0x2f, ++ 0x29, 0x28, 0x2b, 0x2c, 0x38, 0x60, 0x00, 0x00, ++ 0xf0, 0x90, 0xf8, 0x64, 0xf8, 0x78, 0x98, 0xf8, ++ 0xf8, 0x10, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00, ++ 0x00, 0x3e, 0x25, 0x27, 0x3d, 0x08, 0x2b, 0x2c, ++ 0x29, 0x28, 0x2f, 0x38, 0x61, 0x06, 0x00, 0x00, ++ 0xa0, 0xa8, 0xb0, 0xfc, 0x10, 0xa0, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x09, 0x29, 0x2f, ++ 0x28, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x3d, 0x28, 0x0b, 0x2e, ++ 0x28, 0x2b, 0x28, 0x2e, 0x38, 0x60, 0x00, 0x00, ++ 0x90, 0xfc, 0x90, 0x48, 0xf8, 0x50, 0xfc, 0x50, ++ 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3c, 0x09, 0x29, 0x2f, ++ 0x29, 0x29, 0x2e, 0x38, 0x63, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xfc, 0x44, 0xf4, ++ 0x54, 0xf4, 0x54, 0x7c, 0x8c, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3f, 0x3e, 0x32, 0x5e, 0x1f, ++ 0x08, 0x0f, 0x09, 0x09, 0x17, 0x21, 0x00, 0x00, ++ 0x20, 0xf8, 0x50, 0xfc, 0x20, 0xf8, 0x20, 0xe0, ++ 0x20, 0xe0, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x0b, 0x2c, 0x2f, ++ 0x29, 0x29, 0x2f, 0x39, 0x62, 0x04, 0x00, 0x00, ++ 0x40, 0xfc, 0xa8, 0xf0, 0xe8, 0xf8, 0x64, 0x10, ++ 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x25, 0x3f, 0x29, 0x08, 0x2f, ++ 0x2b, 0x28, 0x2b, 0x2e, 0x3b, 0x62, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0, ++ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x25, 0x3d, 0x2a, 0x09, 0x2f, ++ 0x29, 0x29, 0x2f, 0x39, 0x61, 0x06, 0x00, 0x00, ++ 0x48, 0xb0, 0x20, 0xfc, 0x68, 0x48, 0xf0, 0x10, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x90, 0x08, 0x00, 0x00, ++ 0x02, 0x7a, 0x4f, 0x49, 0x7f, 0x15, 0x56, 0x5f, ++ 0x57, 0x51, 0x5f, 0x72, 0x44, 0x08, 0x00, 0x00, ++ 0x80, 0x78, 0xe8, 0xa8, 0xf0, 0xf0, 0xe8, 0xe8, ++ 0xe4, 0x24, 0xe4, 0xb8, 0x60, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x26, 0x26, 0x3e, 0x0a, 0x2a, 0x2e, ++ 0x2b, 0x2a, 0x2f, 0x3c, 0x6b, 0x00, 0x00, 0x00, ++ 0x20, 0xfc, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xf8, ++ 0xfc, 0xac, 0xfc, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x26, 0x27, 0x3e, 0x2b, 0x0a, 0x2e, ++ 0x2b, 0x2a, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x68, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x27, 0x3e, 0x2b, 0x0b, 0x2e, ++ 0x2a, 0x2b, 0x2a, 0x2e, 0x3a, 0x62, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0xb8, 0x68, ++ 0xf8, 0xf8, 0xf8, 0xa8, 0xf8, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x24, 0x3c, 0x09, 0x28, 0x2f, ++ 0x2a, 0x2b, 0x2f, 0x3b, 0x66, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc, ++ 0xa8, 0xb8, 0xb8, 0xb8, 0xe8, 0x88, 0x00, 0x00, ++ 0x08, 0x11, 0x3c, 0x24, 0x3d, 0x25, 0x3d, 0x27, ++ 0x7d, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x10, 0x00, 0xf8, ++ 0x08, 0x08, 0x08, 0x08, 0x10, 0x60, 0x00, 0x00, ++ 0x08, 0x10, 0x3c, 0x27, 0x3c, 0x24, 0x3d, 0x27, ++ 0x7e, 0x0d, 0x14, 0x64, 0x04, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xe0, 0xe0, 0x50, 0x50, ++ 0x48, 0xf4, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x13, 0x3e, 0x27, 0x3e, 0x27, 0x3c, 0x27, ++ 0x7d, 0x0d, 0x15, 0x64, 0x07, 0x0c, 0x00, 0x00, ++ 0xa0, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, ++ 0xf0, 0x10, 0xf0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x11, 0x3c, 0x24, 0x3c, 0x25, 0x3e, 0x26, ++ 0x7f, 0x0c, 0x15, 0x66, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0xe0, 0xa0, 0xb8, 0xa8, 0x08, 0x70, 0x40, ++ 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x40, 0x00, 0x00, ++ 0x09, 0x10, 0x3f, 0x24, 0x3d, 0x24, 0x3f, 0x26, ++ 0x7c, 0x0f, 0x14, 0x64, 0x05, 0x0e, 0x00, 0x00, ++ 0x10, 0xa0, 0xf8, 0x40, 0xf0, 0x40, 0xfc, 0x40, ++ 0x40, 0xfc, 0x40, 0xa0, 0x10, 0x0c, 0x00, 0x00, ++ 0x08, 0x13, 0x3a, 0x2a, 0x3a, 0x2b, 0x3b, 0x2f, ++ 0x7b, 0x1b, 0x2d, 0x4d, 0x09, 0x19, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa8, 0xb0, 0x7c, 0xd0, 0x78, ++ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00, ++ 0x08, 0x13, 0x3a, 0x2a, 0x3b, 0x2b, 0x3b, 0x2f, ++ 0x7b, 0x1a, 0x2d, 0x4d, 0x0a, 0x18, 0x00, 0x00, ++ 0x40, 0xfc, 0xa8, 0xfc, 0xd0, 0x78, 0x78, 0x50, ++ 0x7c, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xc8, ++ 0xd8, 0xc0, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x01, 0x3f, 0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x7f, ++ 0x01, 0x31, 0x0c, 0x06, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0xe0, 0x20, 0xe0, 0x20, 0xe0, 0xfc, ++ 0x00, 0x18, 0x60, 0xc0, 0x30, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2b, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x24, 0xc0, 0x10, ++ 0x20, 0xc4, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7e, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x28, 0x24, 0x24, 0xfc, 0x20, 0x20, 0xe0, 0xa0, ++ 0x90, 0x90, 0xb4, 0xcc, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x30, 0x48, 0xf4, 0x24, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2b, 0x3e, 0x2a, ++ 0x3f, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x08, 0x3f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0xa8, 0xa8, 0x50, 0xa8, 0xa8, 0x00, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x0b, 0x7f, 0x09, 0x3d, 0x2d, 0x3d, 0x2d, ++ 0x3d, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0x50, 0xd0, 0x50, 0x50, 0xd0, ++ 0x50, 0x50, 0xd4, 0x54, 0x54, 0x4c, 0x00, 0x00, ++ 0x08, 0x0b, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x09, 0x7f, 0x0b, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x68, 0x68, 0xe8, ++ 0x50, 0x50, 0xd8, 0x68, 0x44, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x78, 0x90, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0x50, 0x50, 0x94, 0x14, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2b, ++ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd8, 0x24, 0xf8, ++ 0x68, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00, ++ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x56, ++ 0x7e, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0xf8, 0xd8, ++ 0xd8, 0x68, 0x48, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x10, 0x13, 0x7c, 0x10, 0x7f, 0x56, 0x7f, 0x57, ++ 0x7f, 0x13, 0x7f, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x58, 0x58, ++ 0x58, 0xf8, 0x18, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x3e, 0x08, 0x7f, 0x14, 0x23, 0x5f, 0x0f, ++ 0x09, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x50, 0x88, 0xf4, 0xe0, ++ 0x20, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x09, 0x7e, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50, ++ 0xf8, 0x24, 0xf8, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xf0, 0x90, 0x90, 0xf0, 0x00, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x09, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x0b, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf0, 0x90, 0xf0, 0x90, 0xf0, ++ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, ++ 0x24, 0x64, 0xd8, 0x50, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x3f, 0x5e, 0x7f, 0x3e, ++ 0x2a, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x48, 0x50, 0x30, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x09, 0x3f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x09, 0x7f, 0x0a, 0x0c, 0x09, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xf8, 0x50, 0xf8, 0x50, ++ 0x50, 0xfc, 0xa8, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x09, 0x3f, 0x2b, 0x3f, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xfc, 0x28, 0xac, 0xac, 0x00, ++ 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x09, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x28, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0x38, 0xe8, 0xfc, 0x90, 0x50, 0x30, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7e, 0x57, ++ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1a, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0x24, 0xe8, 0x30, 0x64, 0xa4, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x09, 0x3e, 0x2a, 0x3f, 0x2a, ++ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70, ++ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x56, 0x7f, 0x57, ++ 0x7d, 0x10, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x28, 0xe8, 0x10, 0xd4, 0x6c, ++ 0xc4, 0x40, 0xa8, 0x84, 0x94, 0x70, 0x00, 0x00, ++ 0x10, 0x13, 0x7c, 0x13, 0x7e, 0x57, 0x7f, 0x57, ++ 0x7c, 0x13, 0x7e, 0x12, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xfc, 0x48, 0x58, 0x58, 0xfc, ++ 0x80, 0xf8, 0xa8, 0xa8, 0xa8, 0x18, 0x00, 0x00, ++ 0x12, 0x12, 0x7d, 0x15, 0x7a, 0x5a, 0x7d, 0x5f, ++ 0x78, 0x17, 0x78, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x13, 0x7e, 0x13, 0x7f, 0x56, 0x7f, 0x56, ++ 0x7e, 0x12, 0x7e, 0x14, 0x17, 0x18, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0xb0, 0xfc, 0xd0, 0xb8, 0x94, ++ 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x7f, 0x12, 0x7f, 0x57, 0x7f, 0x57, ++ 0x7f, 0x13, 0x7f, 0x15, 0x15, 0x1b, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf0, 0x50, 0xf0, ++ 0x50, 0xf0, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, ++ 0x01, 0x7f, 0x01, 0x1f, 0x10, 0x1f, 0x01, 0x3f, ++ 0x08, 0x7f, 0x01, 0x3f, 0x01, 0x01, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x20, 0xfc, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1e, 0x13, 0x12, 0x12, 0x1e, 0x13, 0x10, ++ 0x3e, 0x33, 0x52, 0x1e, 0x12, 0x10, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x48, 0x50, 0xfc, 0x20, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x24, 0x15, 0x19, 0x7f, 0x09, ++ 0x0e, 0x78, 0x09, 0x12, 0x10, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0xe0, 0xe0, 0x50, 0x48, 0x44, 0x40, 0x00, 0x00, ++ 0x03, 0x3e, 0x29, 0x3f, 0x4a, 0x04, 0x3f, 0x2b, ++ 0x3f, 0x3f, 0x2b, 0x25, 0x3b, 0x23, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x48, 0x28, 0x30, 0xfc, 0x10, ++ 0x10, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x10, 0x13, 0x7c, 0x2f, 0x28, 0x2b, 0x7c, 0x13, ++ 0x1c, 0x73, 0x12, 0x23, 0x22, 0x40, 0x00, 0x00, ++ 0x10, 0x90, 0x7c, 0xe8, 0x28, 0xa8, 0x7c, 0x90, ++ 0x10, 0xfc, 0x90, 0x90, 0x90, 0x10, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x20, 0x10, 0x17, 0x00, 0x70, ++ 0x10, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73, ++ 0x12, 0x10, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, 0xf8, ++ 0x48, 0x40, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72, ++ 0x12, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0x08, 0xe8, 0xa8, 0xa8, 0xe8, ++ 0xa8, 0x08, 0x08, 0x18, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x20, 0x10, 0x11, 0x02, 0x71, ++ 0x11, 0x11, 0x11, 0x11, 0x2c, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x30, 0x00, 0xf8, ++ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x20, 0x10, 0x13, 0x02, 0x02, 0x73, 0x12, ++ 0x12, 0x13, 0x12, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0xf8, 0x48, ++ 0x48, 0xf8, 0x08, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x22, 0x12, 0x12, 0x43, 0x24, 0x24, 0x0a, 0x71, ++ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xa0, 0xb0, 0xa8, 0xa4, 0x24, ++ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x20, 0x17, 0x11, 0x42, 0x27, 0x22, 0x03, 0x73, ++ 0x12, 0x13, 0x13, 0x12, 0x2a, 0x47, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x44, 0xfc, 0xd8, 0x68, 0xf8, ++ 0xd8, 0x68, 0xf8, 0x48, 0x58, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x02, 0x73, ++ 0x15, 0x15, 0x19, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xf8, ++ 0x08, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x02, 0x74, ++ 0x18, 0x11, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0xa0, 0xb0, 0xa8, 0xa4, ++ 0xa4, 0x20, 0x20, 0x60, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x20, 0x13, 0x12, 0x02, 0x72, ++ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xf8, 0xa8, 0xb8, 0xb8, ++ 0x18, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x27, 0x10, 0x12, 0x01, 0x71, ++ 0x11, 0x16, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x50, 0x48, 0x48, 0xfc, 0x40, 0x48, 0x48, 0x70, ++ 0xd0, 0x48, 0x48, 0xc0, 0x00, 0xfc, 0x00, 0x00, ++ 0x20, 0x17, 0x12, 0x42, 0x24, 0x22, 0x00, 0x73, ++ 0x10, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x48, 0x48, 0x90, 0x48, 0x00, 0xf8, ++ 0x40, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x27, 0x11, 0x11, 0x02, 0x74, ++ 0x11, 0x12, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xa0, 0x18, 0xe4, 0x20, 0x24, 0x9c, 0xf0, ++ 0x90, 0x60, 0xd0, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x22, 0x15, 0x11, 0x01, 0x71, ++ 0x11, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0x44, 0xf4, 0x10, 0xf0, 0x10, ++ 0xf0, 0x10, 0x10, 0x30, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x21, 0x11, 0x10, 0x03, 0x70, ++ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0x10, 0xf0, 0x00, 0xf8, 0x40, ++ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x21, 0x11, 0x16, 0x42, 0x26, 0x2b, 0x03, 0x75, ++ 0x19, 0x11, 0x11, 0x1e, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x28, 0x68, 0x70, 0xa0, 0x20, ++ 0x50, 0x50, 0x88, 0x04, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x12, 0x03, 0x72, ++ 0x13, 0x12, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x48, ++ 0xf8, 0x48, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x09, 0x22, 0x10, 0x10, 0x01, 0x73, ++ 0x15, 0x11, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0xa0, 0x90, 0x08, 0x48, 0x40, 0xa0, 0x10, 0xf8, ++ 0x14, 0x10, 0xf0, 0x10, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x27, 0x10, 0x11, 0x02, 0x77, ++ 0x10, 0x11, 0x10, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xfc, 0xe0, 0x50, 0x48, 0xfc, ++ 0x90, 0xd0, 0x70, 0x88, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x08, 0x27, 0x11, 0x11, 0x02, 0x74, ++ 0x11, 0x10, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x20, 0x24, 0x5c, 0x40, ++ 0xf0, 0x40, 0xfc, 0x00, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x0b, 0x20, 0x17, 0x11, 0x00, 0x77, ++ 0x10, 0x13, 0x10, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xa0, 0xfc, ++ 0x40, 0xf8, 0x40, 0x40, 0x00, 0xfc, 0x00, 0x00, ++ 0x22, 0x11, 0x11, 0x47, 0x21, 0x21, 0x0f, 0x71, ++ 0x11, 0x12, 0x14, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x01, 0x73, ++ 0x16, 0x12, 0x13, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x48, 0xa8, 0x28, 0xf8, 0x10, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x22, 0x13, 0x12, 0x03, 0x72, ++ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xb8, 0x88, 0x88, 0xb8, 0x00, 0xf8, 0x28, ++ 0x10, 0x90, 0x28, 0x48, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x00, 0x73, ++ 0x10, 0x11, 0x10, 0x1f, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0xf8, ++ 0x40, 0xf0, 0x40, 0xfc, 0x00, 0xfc, 0x00, 0x00, ++ 0x11, 0x09, 0x0a, 0x27, 0x10, 0x13, 0x02, 0x73, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0xf0, 0x10, 0x08, 0xfc, 0xa0, 0xf8, 0xa8, 0x38, ++ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x23, 0x12, 0x12, 0x02, 0x73, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xa8, 0xb8, 0x18, ++ 0xe8, 0x08, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x08, 0x23, 0x12, 0x13, 0x02, 0x73, ++ 0x12, 0x13, 0x13, 0x1c, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xf8, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, ++ 0x10, 0xf0, 0x30, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x11, 0x08, 0x09, 0x23, 0x14, 0x13, 0x02, 0x73, ++ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0xc0, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, 0xd0, ++ 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x08, 0x0f, 0x20, 0x13, 0x13, 0x02, 0x73, ++ 0x12, 0x13, 0x12, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x18, 0xa8, 0xf8, ++ 0x48, 0xf8, 0x48, 0x58, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x23, 0x10, 0x17, 0x01, 0x71, ++ 0x11, 0x11, 0x17, 0x19, 0x27, 0x41, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa0, 0xfc, 0xf0, 0x50, ++ 0xf0, 0x50, 0xfc, 0x10, 0x30, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x22, 0x12, 0x12, 0x02, 0x72, ++ 0x15, 0x15, 0x1a, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x18, 0xe0, 0x38, 0xfc, 0xa8, 0xb8, 0xe4, 0x9c, ++ 0x50, 0x54, 0x54, 0x8c, 0x00, 0xfc, 0x00, 0x00, ++ 0x11, 0x0b, 0x09, 0x27, 0x11, 0x17, 0x01, 0x71, ++ 0x12, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0xfc, 0x48, 0xe8, 0x18, 0x90, ++ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00, ++ 0x20, 0x17, 0x15, 0x45, 0x27, 0x25, 0x05, 0x77, ++ 0x15, 0x15, 0x19, 0x1b, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x64, 0xb4, 0x38, 0xd8, 0x38, ++ 0xd4, 0x14, 0x10, 0x60, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x08, 0x27, 0x11, 0x17, 0x01, 0x76, ++ 0x13, 0x10, 0x11, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x40, 0xfc, 0x10, 0xb8, 0x90, 0x3c, ++ 0xf8, 0xa0, 0x24, 0x1c, 0x00, 0xfc, 0x00, 0x00, ++ 0x02, 0x39, 0x29, 0x2c, 0x32, 0x33, 0x28, 0x2f, ++ 0x25, 0x25, 0x25, 0x39, 0x22, 0x24, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x78, 0x90, 0xfc, 0x78, 0x48, ++ 0x78, 0x78, 0x48, 0x58, 0x80, 0x7c, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x13, 0x03, 0x72, ++ 0x12, 0x15, 0x17, 0x18, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x20, 0xac, 0xac, 0xa0, ++ 0xf8, 0x20, 0xfc, 0x20, 0x20, 0xfc, 0x00, 0x00, ++ 0x22, 0x13, 0x14, 0x49, 0x27, 0x25, 0x07, 0x75, ++ 0x17, 0x14, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0x28, 0xd8, 0xb0, 0xb8, 0xd0, ++ 0xfc, 0x90, 0x90, 0x90, 0x00, 0xfc, 0x00, 0x00, ++ 0x20, 0x10, 0x17, 0x44, 0x27, 0x24, 0x07, 0x74, ++ 0x17, 0x14, 0x1b, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x80, 0xf0, 0xfc, 0xe8, 0x90, 0x70, 0xf8, 0xc8, ++ 0x68, 0xb0, 0x68, 0xa4, 0xc0, 0xfc, 0x00, 0x00, ++ 0x10, 0x0f, 0x08, 0x21, 0x11, 0x11, 0x01, 0x71, ++ 0x13, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf0, 0x50, 0xf0, 0x50, 0xf0, ++ 0xf8, 0x68, 0xf8, 0x08, 0x18, 0xfc, 0x00, 0x00, ++ 0x11, 0x0f, 0x0c, 0x27, 0x14, 0x17, 0x02, 0x7f, ++ 0x13, 0x12, 0x14, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xbc, 0xc8, 0xc8, 0x28, 0xd0, ++ 0x98, 0xa8, 0xc4, 0x84, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72, ++ 0x15, 0x17, 0x10, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0xfc, 0xa8, ++ 0x78, 0xfc, 0xf0, 0x10, 0x60, 0xfc, 0x00, 0x00, ++ 0x10, 0x09, 0x09, 0x21, 0x11, 0x11, 0x03, 0x72, ++ 0x15, 0x17, 0x11, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf0, 0x10, 0xd0, 0xd0, 0xf0, 0xfc, 0xe8, ++ 0x10, 0xfc, 0x10, 0xf0, 0x00, 0xfc, 0x00, 0x00, ++ 0x10, 0x0b, 0x0a, 0x23, 0x12, 0x1d, 0x03, 0x72, ++ 0x17, 0x13, 0x15, 0x19, 0x26, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x7c, 0x50, 0xfc, ++ 0xd0, 0x7c, 0xd0, 0x7c, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x0f, 0x78, 0x0a, 0x2a, 0x2a, 0x2a, ++ 0x3e, 0x2a, 0x08, 0x0a, 0x0c, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x12, 0x12, 0x12, 0x12, 0x7f, 0x12, 0x12, 0x12, ++ 0x1e, 0x12, 0x12, 0x12, 0x1e, 0x12, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x50, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x01, 0x06, 0x38, 0x20, 0x20, 0x3f, 0x24, 0x24, ++ 0x24, 0x24, 0x27, 0x38, 0x60, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x7e, 0x12, 0x12, 0x12, 0x22, 0x4c, 0x00, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x00, 0x7e, 0x08, ++ 0x08, 0x3e, 0x08, 0x08, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00, ++ 0x14, 0x12, 0x22, 0x48, 0x08, 0x14, 0x12, 0x22, ++ 0x7e, 0x22, 0x22, 0x3e, 0x22, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x00, 0x1f, 0x10, 0x1f, 0x13, 0x12, ++ 0x13, 0x17, 0x14, 0x27, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x08, 0xf8, 0xe0, 0x20, ++ 0xe0, 0xf0, 0x90, 0xf4, 0x04, 0xfc, 0x00, 0x00, ++ 0x03, 0x3c, 0x32, 0x29, 0x29, 0x40, 0x3e, 0x04, ++ 0x08, 0x0e, 0x78, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x90, 0x90, 0xa0, 0x90, 0x88, ++ 0x88, 0x88, 0xc8, 0xb0, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x77, 0x55, 0x55, 0x77, 0x00, 0x3e, 0x00, ++ 0x7f, 0x10, 0x1e, 0x22, 0x02, 0x0c, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x10, 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x0e, 0x10, ++ 0x1f, 0x29, 0x6b, 0x3f, 0x29, 0x16, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x7f, 0x08, 0x3f, 0x21, ++ 0x2f, 0x2b, 0x2f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0xd0, 0x60, 0x50, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3e, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x50, 0x50, 0x60, 0x50, 0x48, ++ 0x48, 0x48, 0x48, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x04, 0x25, 0x16, 0x7f, 0x0e, 0x15, 0x75, 0x1f, ++ 0x2d, 0x6d, 0x1f, 0x11, 0x21, 0x41, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0xd0, 0x50, 0x60, 0xd0, 0xc8, ++ 0x48, 0x48, 0xc8, 0x70, 0x40, 0x40, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x80, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x10, ++ 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f, ++ 0x33, 0x31, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0xa0, 0x20, 0x20, 0xfc, 0xa8, 0x20, 0x20, ++ 0x30, 0x30, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf0, 0x50, 0x50, 0x54, 0x94, 0x0c, 0xf8, ++ 0x48, 0x50, 0x30, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x48, 0xc8, 0x48, 0x48, 0xfc, 0x48, 0x48, 0x48, ++ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x08, 0xb0, 0xe0, 0x20, 0x20, 0xfc, 0x70, 0x70, ++ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0xa0, 0x38, 0x48, 0xd0, 0x30, 0x20, 0x40, ++ 0xf8, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x28, 0xc8, 0x30, 0x28, 0xfc, 0x04, 0x78, ++ 0x48, 0x78, 0x48, 0x78, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x2f, ++ 0x37, 0x33, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x78, 0x08, 0xf0, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x37, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x50, 0xd0, 0x50, 0xf8, 0x50, 0x50, 0xfc, 0x00, ++ 0x78, 0x48, 0x78, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2d, 0x2d, 0x37, ++ 0x33, 0x23, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x48, 0x48, 0x68, 0xb4, 0x24, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3f, 0x2e, 0x2e, 0x37, ++ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0xd8, 0xf8, ++ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x00, 0x7e, 0x18, 0x19, 0x7e, 0x5a, 0x5a, 0x7e, ++ 0x67, 0x47, 0x7f, 0x43, 0x7f, 0x42, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf0, 0x90, 0xf0, 0x00, ++ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x2e, 0x35, 0x3f, 0x2a, 0x3f, 0x7f, ++ 0x02, 0x1f, 0x14, 0x1f, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0x70, 0x54, 0x9c, 0xf8, 0x70, 0xd8, 0xfc, ++ 0x80, 0xf0, 0xd0, 0xf0, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2e, 0x2e, 0x36, ++ 0x37, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0xfc, 0x50, 0xf8, 0x00, 0xa8, 0xa8, 0xac, ++ 0x04, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0d, 0x3e, 0x2f, 0x2e, 0x36, ++ 0x37, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x20, 0xd0, ++ 0x2c, 0xd0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00, ++ 0x00, 0x7f, 0x0c, 0x0c, 0x3e, 0x2e, 0x2e, 0x36, ++ 0x36, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x38, 0xfc, 0xb8, 0xe8, 0x98, 0xfc, 0xa0, ++ 0xf4, 0xb8, 0xd8, 0x34, 0x54, 0x30, 0x00, 0x00, ++ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2f, 0x2e, 0x37, ++ 0x36, 0x22, 0x3e, 0x22, 0x3f, 0x22, 0x00, 0x00, ++ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc, ++ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x0d, 0x0c, 0x3e, 0x2e, 0x2e, 0x36, ++ 0x36, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x18, 0xe0, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8, ++ 0x20, 0xf8, 0xfc, 0x00, 0xe8, 0x54, 0x00, 0x00, ++ 0x00, 0x7f, 0x0d, 0x0d, 0x3f, 0x2e, 0x2f, 0x36, ++ 0x36, 0x23, 0x3e, 0x23, 0x3e, 0x23, 0x00, 0x00, ++ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8, ++ 0x50, 0xfc, 0x68, 0xd0, 0x68, 0x84, 0x00, 0x00, ++ 0x1b, 0x12, 0x1b, 0x1b, 0x3f, 0x2f, 0x5f, 0x14, ++ 0x1f, 0x1f, 0x07, 0x0f, 0x72, 0x0c, 0x00, 0x00, ++ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0xe8, 0xf0, 0xd0, ++ 0xf0, 0xf0, 0xc0, 0xf0, 0x4c, 0xc0, 0x00, 0x00, ++ 0x03, 0x7d, 0x49, 0x2a, 0x2c, 0x7f, 0x18, 0x1c, ++ 0x1a, 0x29, 0x29, 0x48, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x7d, 0x4b, 0x2b, 0x2c, 0x7f, 0x18, 0x1d, ++ 0x1a, 0x2b, 0x28, 0x49, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0xf8, 0x40, 0xf8, 0x40, 0xfc, ++ 0x90, 0xfc, 0x40, 0xf8, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x1c, 0x2a, 0x5f, 0x17, 0x14, ++ 0x17, 0x17, 0x1f, 0x20, 0x5f, 0x00, 0x00, 0x00, ++ 0x40, 0x7c, 0xd0, 0x30, 0xcc, 0xf8, 0xf0, 0x90, ++ 0xf0, 0xf0, 0xf8, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0x70, 0x10, 0x10, 0x50, 0x50, 0x50, 0x50, ++ 0x90, 0x88, 0x88, 0x08, 0x04, 0x04, 0x00, 0x00, ++ 0x04, 0x04, 0x09, 0x11, 0x02, 0x04, 0x1f, 0x61, ++ 0x1f, 0x09, 0x05, 0x05, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x20, 0x10, 0x10, 0x80, 0x40, 0xf0, 0x0c, ++ 0xf0, 0x20, 0x20, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68, ++ 0x58, 0x4c, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xc8, 0xa8, 0x90, 0x50, 0x50, ++ 0x60, 0x20, 0x60, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xa8, 0xb8, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0xb8, 0xa0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0x08, 0xe8, 0x08, ++ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1d, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x80, 0x80, 0xfc, 0x90, 0x90, ++ 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xb0, 0xa8, 0xa8, 0x24, 0x2c, ++ 0x68, 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xa8, 0xa0, ++ 0xa0, 0xa0, 0x90, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xc8, 0xc8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x28, 0x24, 0xfc, 0xa0, 0xa8, 0xa8, 0xa8, ++ 0x98, 0x90, 0x94, 0xec, 0xac, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0x90, 0xfc, 0x90, 0x90, 0x90, ++ 0xf0, 0x90, 0x90, 0x90, 0xf0, 0x90, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0x88, 0x88, 0x88, ++ 0xf8, 0x88, 0x80, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x28, 0xc8, 0x50, ++ 0x30, 0x20, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x48, ++ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x23, 0x5c, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x28, 0xf8, 0x20, ++ 0xfc, 0x24, 0x58, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xf8, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x40, 0x80, 0xf8, 0x88, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x22, 0x4a, 0x0f, 0x11, 0x17, 0x31, ++ 0x55, 0x13, 0x13, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x00, 0x3c, 0x80, 0x40, 0xfc, 0x08, 0xc8, 0x08, ++ 0x48, 0x88, 0x08, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xf8, 0xa0, 0x20, 0xfc, 0x70, ++ 0x70, 0xa8, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0xe0, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x2a, 0x26, 0x7a, 0x12, 0x7e, ++ 0x12, 0x57, 0x38, 0x31, 0x1d, 0x62, 0x00, 0x00, ++ 0x40, 0x80, 0x38, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xa8, 0xb8, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7f, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, 0x74, ++ 0x24, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x70, 0xa8, 0x24, 0xf0, ++ 0x50, 0x5c, 0x94, 0x84, 0x04, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0x20, 0x20, 0xfc, 0x80, ++ 0x80, 0x80, 0x80, 0x80, 0x80, 0x78, 0x00, 0x00, ++ 0x10, 0x13, 0x18, 0x24, 0x27, 0x7e, 0x12, 0x7f, ++ 0x12, 0x54, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xa0, 0xb8, 0x08, 0x08, 0xb8, ++ 0xa8, 0xa0, 0xa0, 0xa0, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x19, 0x25, 0x27, 0x7d, 0x11, 0x7d, ++ 0x12, 0x54, 0x38, 0x31, 0x1e, 0x64, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x00, 0xf8, 0x68, 0x68, ++ 0xe8, 0xb8, 0xa0, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0xf8, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0x48, 0xe8, ++ 0xa8, 0xa8, 0xe8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x50, ++ 0x7c, 0xc8, 0x30, 0x64, 0x9c, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x0c, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc, ++ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5c, 0x09, 0x7f, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x68, 0x90, 0xd0, 0x28, 0xf8, ++ 0x48, 0x68, 0x90, 0x90, 0x68, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x09, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20, ++ 0x38, 0x28, 0x48, 0x48, 0x88, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x60, 0x60, 0xa4, 0xa8, ++ 0xb0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5c, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00, ++ 0x10, 0xf8, 0x14, 0x14, 0xfc, 0x50, 0x50, 0x70, ++ 0x50, 0x50, 0x74, 0xcc, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8, ++ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x18, 0x14, 0x27, 0x22, 0x7b, 0x12, 0x7f, ++ 0x13, 0x57, 0x3b, 0x32, 0x1c, 0x64, 0x00, 0x00, ++ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8, ++ 0x50, 0x50, 0xf4, 0x2c, 0x4c, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x18, 0x25, 0x27, 0x78, 0x13, 0x7e, ++ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00, ++ 0xc0, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xa8, 0xa8, ++ 0xa8, 0xd0, 0xd0, 0xa8, 0xa8, 0xa8, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x24, 0x24, 0x78, 0x10, 0x7c, ++ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xf0, 0x90, 0xf0, 0x90, ++ 0xfc, 0x50, 0x54, 0x8c, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x7c, 0x08, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x70, 0x00, 0x00, ++ 0xf0, 0x90, 0x08, 0xfc, 0x00, 0xf0, 0x90, 0x08, ++ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x04, 0x74, 0x54, 0x74, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x23, 0x5d, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0e, 0x73, 0x00, 0x00, ++ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0xfc, 0xc8, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7c, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x58, 0x48, 0xa8, 0x20, 0x50, ++ 0x88, 0xfc, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x12, 0x11, 0x19, 0x26, 0x25, 0x7d, 0x10, 0x7c, ++ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00, ++ 0x70, 0x10, 0x50, 0x48, 0x84, 0x78, 0x20, 0xfc, ++ 0x20, 0x30, 0x48, 0x88, 0x80, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x17, 0x27, 0x59, ++ 0x0e, 0x77, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x58, 0xe4, 0x3c, ++ 0xe0, 0xdc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7b, 0x12, 0x7f, ++ 0x12, 0x55, 0x38, 0x30, 0x1f, 0x60, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xe8, 0x50, 0xd0, 0xa8, 0xc4, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x3e, 0x2a, 0x3e, 0x7f, 0x09, ++ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00, ++ 0x18, 0xe0, 0x80, 0xfc, 0x90, 0x90, 0x10, 0x10, ++ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x09, 0x7f, ++ 0x0b, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x08, 0x80, 0xfc, 0x20, 0x78, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x10, 0x12, 0x1a, 0x26, 0x27, 0x7a, 0x10, 0x7c, ++ 0x13, 0x56, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00, ++ 0xa0, 0xb8, 0xa8, 0xe8, 0xd0, 0xb0, 0xa8, 0xc8, ++ 0xfc, 0xc8, 0xa8, 0xa8, 0x88, 0x98, 0x00, 0x00, ++ 0x11, 0x11, 0x19, 0x25, 0x27, 0x79, 0x11, 0x7d, ++ 0x11, 0x55, 0x3a, 0x32, 0x1c, 0x61, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x7c, 0xe0, 0x20, 0xbc, 0xd0, ++ 0xfc, 0x90, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x5c, 0x09, 0x7f, ++ 0x09, 0x2b, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x88, 0x50, 0x70, 0x8c, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0x68, 0xd8, 0x68, 0x40, 0xa0, ++ 0x30, 0xcc, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00, ++ 0x12, 0x11, 0x19, 0x24, 0x26, 0x79, 0x11, 0x7c, ++ 0x13, 0x55, 0x39, 0x31, 0x1e, 0x64, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xa8, 0xf8, 0xa8, ++ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2b, 0x1c, 0x18, 0x0e, 0x71, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00, ++ 0x10, 0x13, 0x18, 0x27, 0x26, 0x7f, 0x12, 0x7c, ++ 0x13, 0x54, 0x3a, 0x32, 0x1c, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xb8, 0x08, 0xb8, 0xa8, 0xa0, ++ 0xfc, 0x40, 0xa8, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x11, 0x7d, ++ 0x11, 0x55, 0x39, 0x33, 0x1c, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0xf0, 0x10, ++ 0xf0, 0x10, 0xf0, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x11, 0x11, 0x1f, 0x27, 0x26, 0x7a, 0x13, 0x7f, ++ 0x10, 0x55, 0x3b, 0x31, 0x1d, 0x63, 0x00, 0x00, ++ 0x20, 0x20, 0xe0, 0xa0, 0xbc, 0xe8, 0xe8, 0xa8, ++ 0x90, 0xd0, 0x30, 0x28, 0x48, 0x84, 0x00, 0x00, ++ 0x10, 0x11, 0x18, 0x27, 0x25, 0x7b, 0x11, 0x7d, ++ 0x13, 0x57, 0x38, 0x30, 0x1d, 0x62, 0x00, 0x00, ++ 0x40, 0xf8, 0x40, 0xfc, 0x10, 0xb8, 0x10, 0xbc, ++ 0x00, 0xfc, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x23, 0x5c, 0x08, 0x7f, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x70, 0x00, 0x00, ++ 0x18, 0xe8, 0xa8, 0x70, 0xfc, 0x70, 0xa8, 0x24, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0f, 0x70, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x54, 0x88, 0xfc, 0x88, 0xf8, ++ 0x88, 0xf8, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xfc, 0x54, 0xfc, 0x00, 0xfc, 0x00, 0xf8, ++ 0x88, 0xf8, 0x64, 0xd8, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7f, ++ 0x08, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc, ++ 0x00, 0xdc, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00, ++ 0x11, 0x13, 0x19, 0x27, 0x24, 0x7b, 0x12, 0x7f, ++ 0x13, 0x55, 0x3b, 0x31, 0x1f, 0x60, 0x00, 0x00, ++ 0x30, 0xe8, 0x28, 0xfc, 0x20, 0xa8, 0xa8, 0xa8, ++ 0xd8, 0x10, 0x94, 0xec, 0x4c, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x24, 0x27, 0x78, 0x13, 0x7e, ++ 0x13, 0x56, 0x39, 0x31, 0x1e, 0x60, 0x00, 0x00, ++ 0xa0, 0xb0, 0xe8, 0xa8, 0xfc, 0x20, 0xe8, 0x68, ++ 0xd8, 0x50, 0x94, 0xec, 0x2c, 0x44, 0x00, 0x00, ++ 0x09, 0x08, 0x15, 0x13, 0x22, 0x5c, 0x08, 0x7e, ++ 0x09, 0x2b, 0x1d, 0x19, 0x0f, 0x71, 0x00, 0x00, ++ 0x24, 0xa8, 0xfc, 0x08, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x13, 0x23, 0x5d, 0x09, 0x7e, ++ 0x09, 0x2a, 0x1c, 0x19, 0x0c, 0x71, 0x00, 0x00, ++ 0x50, 0x3c, 0xd4, 0xb4, 0x6c, 0x94, 0xfc, 0x54, ++ 0xcc, 0x70, 0xd0, 0x20, 0x50, 0x8c, 0x00, 0x00, ++ 0x00, 0x3e, 0x29, 0x3e, 0x25, 0x3d, 0x29, 0x3f, ++ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0x00, 0xf8, 0x68, 0xf8, 0x00, ++ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x18, 0x25, 0x27, 0x79, 0x10, 0x7d, ++ 0x13, 0x54, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00, ++ 0x40, 0xfc, 0x40, 0xf0, 0xfc, 0xe8, 0x40, 0xf0, ++ 0xfc, 0x08, 0xfc, 0xc8, 0xa8, 0x18, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x27, 0x26, 0x7a, 0x13, 0x7e, ++ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x67, 0x00, 0x00, ++ 0x20, 0xfc, 0x50, 0xfc, 0x50, 0x70, 0xfc, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x12, 0x12, 0x15, 0x2d, 0x26, 0x7a, 0x15, 0x7f, ++ 0x10, 0x57, 0x38, 0x31, 0x1e, 0x60, 0x00, 0x00, ++ 0x48, 0x88, 0xf4, 0xb4, 0xe8, 0xa8, 0xf4, 0x5c, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e, ++ 0x12, 0x56, 0x3a, 0x32, 0x1c, 0x65, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0x28, 0xd4, 0xcc, 0x38, 0x00, 0x00, ++ 0x11, 0x11, 0x1a, 0x25, 0x27, 0x7a, 0x13, 0x7f, ++ 0x13, 0x56, 0x3b, 0x32, 0x1f, 0x64, 0x00, 0x00, ++ 0x50, 0x50, 0xa0, 0x50, 0xf8, 0xe8, 0x98, 0xf8, ++ 0x68, 0xd8, 0x68, 0xdc, 0x64, 0x84, 0x00, 0x00, ++ 0x10, 0x10, 0x1b, 0x26, 0x27, 0x7a, 0x12, 0x7e, ++ 0x12, 0x56, 0x3b, 0x35, 0x1d, 0x67, 0x00, 0x00, ++ 0x40, 0x78, 0xfc, 0x68, 0xb8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0x68, 0x68, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x22, 0x5c, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x19, 0x0f, 0x72, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, ++ 0x88, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x19, 0x27, 0x24, 0x7f, 0x15, 0x7f, ++ 0x13, 0x56, 0x3b, 0x32, 0x1e, 0x62, 0x00, 0x00, ++ 0x40, 0xa0, 0x10, 0xfc, 0x00, 0xfc, 0xb4, 0xfc, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x10, 0x17, 0x18, 0x27, 0x26, 0x7b, 0x10, 0x7d, ++ 0x13, 0x55, 0x39, 0x31, 0x1d, 0x61, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xb8, 0xa8, 0xb8, 0x90, 0xfc, ++ 0x20, 0xf8, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x13, 0x18, 0x24, 0x24, 0x7b, 0x10, 0x7f, ++ 0x12, 0x57, 0x3b, 0x32, 0x1f, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0xf0, 0xf0, 0xf0, 0x10, 0xfc, ++ 0xa8, 0xb8, 0xb8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x11, 0x11, 0x1a, 0x27, 0x25, 0x7a, 0x11, 0x7d, ++ 0x11, 0x55, 0x39, 0x31, 0x1d, 0x66, 0x00, 0x00, ++ 0x98, 0xfc, 0xa8, 0xfc, 0xd8, 0xac, 0xfc, 0x08, ++ 0xf8, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x13, 0x22, 0x5d, 0x08, 0x7e, ++ 0x08, 0x2a, 0x1c, 0x18, 0x0e, 0x73, 0x00, 0x00, ++ 0x90, 0xf8, 0x90, 0xfc, 0xd0, 0x28, 0xfc, 0x88, ++ 0xf8, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x1a, 0x27, 0x25, 0x79, 0x16, 0x7d, ++ 0x12, 0x57, 0x39, 0x33, 0x1d, 0x61, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0x28, 0x50, 0xfc, 0x50, ++ 0xf8, 0xd0, 0x78, 0xd0, 0x7c, 0x40, 0x00, 0x00, ++ 0x13, 0x17, 0x6b, 0x17, 0x7f, 0x3a, 0x57, 0x11, ++ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00, ++ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0x10, ++ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00, ++ 0x13, 0x12, 0x1b, 0x27, 0x27, 0x79, 0x13, 0x7d, ++ 0x11, 0x55, 0x3b, 0x30, 0x1c, 0x63, 0x00, 0x00, ++ 0xb8, 0xa8, 0xb8, 0xb8, 0xb8, 0xfc, 0xf8, 0xf8, ++ 0x20, 0xfc, 0xf8, 0x90, 0x60, 0x9c, 0x00, 0x00, ++ 0x2d, 0x7f, 0x12, 0x3f, 0x7f, 0x2b, 0x3b, 0x3f, ++ 0x06, 0x7b, 0x1f, 0x09, 0x3f, 0x00, 0x00, 0x00, ++ 0x70, 0xd0, 0x54, 0x8c, 0xf8, 0x50, 0xf0, 0x0c, ++ 0xc0, 0xbc, 0xf0, 0x20, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x20, ++ 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08, ++ 0xe8, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f, ++ 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8, ++ 0x08, 0x88, 0x48, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x29, ++ 0x29, 0x29, 0x29, 0x2f, 0x28, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28, ++ 0x28, 0x28, 0x28, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21, ++ 0x2f, 0x22, 0x21, 0x22, 0x2c, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x08, ++ 0xe8, 0x88, 0x08, 0x88, 0x68, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x21, ++ 0x2f, 0x23, 0x25, 0x29, 0x23, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x28, ++ 0xc8, 0x88, 0x48, 0x28, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x27, ++ 0x25, 0x27, 0x25, 0x27, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8, ++ 0x48, 0xc8, 0x48, 0xc8, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f, ++ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8, ++ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x2f, ++ 0x21, 0x27, 0x21, 0x21, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xe8, ++ 0x08, 0xc8, 0x88, 0x48, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x27, ++ 0x21, 0x2f, 0x27, 0x21, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xc8, ++ 0x08, 0xe8, 0xc8, 0x08, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x22, ++ 0x2f, 0x22, 0x2f, 0x22, 0x2c, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0x88, ++ 0xe8, 0x88, 0xe8, 0x88, 0x48, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x27, 0x24, ++ 0x27, 0x22, 0x27, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48, ++ 0xc8, 0x08, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3f, ++ 0x24, 0x27, 0x25, 0x29, 0x36, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0x48, ++ 0xa8, 0xd8, 0x28, 0xc8, 0x28, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x23, 0x24, ++ 0x29, 0x26, 0x26, 0x24, 0x27, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x48, ++ 0x88, 0xc8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x21, 0x3f, ++ 0x27, 0x2d, 0x37, 0x27, 0x25, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x08, 0xf8, ++ 0xc8, 0x68, 0xd8, 0xc8, 0x28, 0xf8, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x20, 0x3f, ++ 0x2e, 0x2a, 0x2e, 0x26, 0x39, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xc8, 0x68, 0xe8, 0x28, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x28, 0x25, ++ 0x33, 0x28, 0x25, 0x25, 0x29, 0x29, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x68, 0x88, ++ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00, ++ 0x20, 0x1f, 0x19, 0x4f, 0x29, 0x2f, 0x08, 0x1b, ++ 0x1f, 0x28, 0x2b, 0x4a, 0x4b, 0x4a, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0x48, 0x78, 0x68, 0x88, ++ 0xf8, 0x88, 0xe8, 0x28, 0xe8, 0x38, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x24, 0x27, ++ 0x27, 0x27, 0x21, 0x2f, 0x22, 0x2c, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xc8, 0x48, 0xc8, ++ 0xc8, 0xc8, 0x48, 0xe8, 0x88, 0x78, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f, ++ 0x21, 0x27, 0x3b, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x28, 0xc8, 0xe8, ++ 0x48, 0xe8, 0xc8, 0x48, 0xc8, 0x58, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x2f, 0x27, ++ 0x25, 0x27, 0x27, 0x23, 0x2d, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xe8, 0xc8, ++ 0x48, 0xc8, 0xc8, 0x88, 0x68, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x29, 0x26, ++ 0x3f, 0x25, 0x2d, 0x2f, 0x24, 0x29, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x88, ++ 0xf8, 0x68, 0x48, 0x48, 0xa8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x21, 0x27, 0x2f, ++ 0x22, 0x2f, 0x27, 0x27, 0x2f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x08, 0xc8, 0xe8, ++ 0x48, 0xe8, 0xc8, 0x48, 0xe8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x27, 0x25, 0x27, ++ 0x27, 0x25, 0x27, 0x2e, 0x2d, 0x30, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0x08, 0xc8, ++ 0xc8, 0x08, 0xe8, 0xa8, 0x68, 0xd8, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x24, 0x3b, ++ 0x26, 0x3f, 0x2a, 0x2e, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xa8, ++ 0x68, 0xf8, 0xa8, 0xe8, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x2e, 0x2a, 0x2e, ++ 0x27, 0x25, 0x27, 0x27, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0xe8, 0xa8, 0xe8, ++ 0xc8, 0x48, 0xc8, 0xc8, 0xf8, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x3e, 0x28, 0x25, 0x2b, ++ 0x25, 0x23, 0x2d, 0x27, 0x24, 0x2b, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0xf8, 0x88, 0xc8, 0xe8, ++ 0x48, 0xe8, 0xc8, 0xe8, 0x88, 0xf8, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x2e, 0x2b, ++ 0x2e, 0x29, 0x2e, 0x3b, 0x2e, 0x28, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x48, 0xf8, ++ 0xa8, 0xf8, 0x48, 0xf8, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x28, 0x30, 0x28, 0x27, 0x24, ++ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x30, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x00, 0x78, 0x48, 0x48, 0x48, ++ 0x48, 0x70, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24, ++ 0x24, 0x24, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xa0, 0xa0, ++ 0xa0, 0xa0, 0x24, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, ++ 0x40, 0x40, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x3a, 0x22, 0x24, 0x2b, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x28, 0x20, 0xf8, 0x88, ++ 0x50, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x28, 0x30, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0x80, 0xf8, 0x08, 0x08, ++ 0xf8, 0x08, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x28, 0x25, 0x26, ++ 0x24, 0x24, 0x38, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x80, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x00, 0x39, 0x28, 0x2a, 0x32, 0x32, 0x2a, 0x2a, ++ 0x2a, 0x2a, 0x3a, 0x22, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xd8, ++ 0x98, 0x88, 0x98, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x29, 0x31, 0x2a, 0x24, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x80, 0xf8, 0x88, 0x08, 0x08, 0x30, 0x40, 0xb8, ++ 0x08, 0xb8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x2b, 0x31, 0x29, 0x25, 0x26, ++ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x50, 0x50, 0x50, 0xe8, ++ 0x48, 0xa0, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x28, 0x33, 0x28, 0x25, 0x26, ++ 0x24, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x30, 0xd0, 0x90, 0x90, 0xfc, 0x90, 0x10, 0x50, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x2b, 0x30, 0x2b, 0x25, 0x25, ++ 0x26, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0xfc, 0x40, 0x58, 0x48, 0x48, ++ 0xd4, 0xa4, 0xa0, 0x10, 0x08, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x28, 0x30, 0x2b, 0x24, 0x24, ++ 0x24, 0x25, 0x3a, 0x20, 0x20, 0x23, 0x00, 0x00, ++ 0x20, 0x20, 0xb8, 0xa0, 0xa0, 0xfc, 0x20, 0xa4, ++ 0xa4, 0x28, 0x70, 0x20, 0xc0, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x27, 0x28, 0x31, 0x28, 0x27, 0x24, ++ 0x27, 0x39, 0x22, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x90, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x00, 0x3d, 0x24, 0x2b, 0x31, 0x29, 0x27, 0x25, ++ 0x25, 0x27, 0x38, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x18, 0xe0, 0x40, 0xf8, 0x50, 0x50, 0xfc, 0x50, ++ 0x50, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x2a, 0x33, 0x32, 0x2a, 0x2b, ++ 0x2a, 0x2a, 0x3b, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0x80, 0xf8, 0xa8, 0xa8, 0xa8, ++ 0xb0, 0x90, 0xb0, 0xa8, 0xc8, 0x84, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x24, ++ 0x27, 0x24, 0x39, 0x20, 0x27, 0x20, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x00, ++ 0xfc, 0x40, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x2a, 0x30, 0x28, 0x24, 0x25, ++ 0x27, 0x25, 0x39, 0x21, 0x23, 0x20, 0x00, 0x00, ++ 0xf0, 0x90, 0x08, 0xf4, 0x00, 0xf0, 0x90, 0x08, ++ 0xfc, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x30, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x21, 0x21, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x00, 0xf8, 0x08, 0xf8, ++ 0x08, 0xf8, 0x08, 0xf8, 0x98, 0x04, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x29, 0x31, 0x29, 0x25, 0x25, ++ 0x24, 0x24, 0x38, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0x48, 0xf8, 0x48, 0xf8, ++ 0xd0, 0xd0, 0xe8, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0x29, 0x33, 0x34, 0x2b, 0x2a, ++ 0x2a, 0x2b, 0x39, 0x21, 0x22, 0x24, 0x00, 0x00, ++ 0x40, 0x40, 0xa0, 0x10, 0xf8, 0x04, 0xb8, 0xa8, ++ 0xa8, 0xb8, 0x10, 0x98, 0x64, 0x44, 0x00, 0x00, ++ 0x04, 0x3a, 0x2a, 0x29, 0x34, 0x32, 0x2b, 0x28, ++ 0x2f, 0x2a, 0x3b, 0x22, 0x25, 0x28, 0x00, 0x00, ++ 0x70, 0x50, 0x88, 0xfc, 0x20, 0x64, 0xb4, 0x58, ++ 0xb8, 0x54, 0x94, 0x10, 0x60, 0xfc, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x2b, 0x30, 0x29, 0x25, 0x24, ++ 0x27, 0x25, 0x38, 0x22, 0x22, 0x24, 0x00, 0x00, ++ 0x18, 0xe8, 0x24, 0xf4, 0x40, 0xf0, 0xf8, 0x08, ++ 0xfc, 0xf8, 0x48, 0xa4, 0x94, 0x70, 0x00, 0x00, ++ 0x00, 0x3c, 0x25, 0x2a, 0x31, 0x29, 0x25, 0x25, ++ 0x25, 0x25, 0x39, 0x23, 0x22, 0x24, 0x00, 0x00, ++ 0x20, 0xa8, 0x6c, 0x34, 0xc0, 0xfc, 0x20, 0xf8, ++ 0xf8, 0x20, 0xfc, 0x54, 0xac, 0x18, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x29, 0x31, 0x29, 0x24, 0x27, ++ 0x24, 0x25, 0x3b, 0x20, 0x22, 0x24, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xf8, 0x08, 0xf8, 0x88, 0x74, ++ 0x88, 0x54, 0xfc, 0x00, 0xa8, 0x54, 0x00, 0x00, ++ 0x01, 0x39, 0x2f, 0x2a, 0x37, 0x30, 0x2b, 0x2a, ++ 0x2b, 0x3a, 0x23, 0x22, 0x22, 0x22, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0x08, 0xb8, 0xa0, ++ 0xb8, 0xb8, 0xa0, 0xb8, 0xa4, 0x9c, 0x00, 0x00, ++ 0x01, 0x01, 0x1f, 0x01, 0x7f, 0x01, 0x1f, 0x11, ++ 0x09, 0x0b, 0x0d, 0x71, 0x01, 0x03, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x10, 0xfc, 0x10, 0xf0, 0x10, ++ 0x90, 0xa0, 0x40, 0x30, 0x0c, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x1c, 0x1b, 0x2a, 0x48, 0x3e, ++ 0x00, 0x7e, 0x2c, 0x2b, 0x4a, 0x18, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x28, 0xfc, 0x28, 0xf8, 0x28, ++ 0xa4, 0x78, 0x70, 0xa8, 0x24, 0x60, 0x00, 0x00, ++ 0x04, 0x04, 0x04, 0x0f, 0x08, 0x18, 0x2f, 0x48, ++ 0x08, 0x0f, 0x08, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xfc, 0x40, 0x40, 0xf8, 0x40, ++ 0x40, 0xf8, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3c, 0x24, 0x24, 0x3c, 0x25, 0x26, 0x3c, ++ 0x24, 0x24, 0x26, 0x38, 0x60, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x04, 0x04, 0x0f, 0x08, 0x1f, 0x28, 0x4f, 0x08, ++ 0x0f, 0x1e, 0x12, 0x13, 0x12, 0x10, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0x40, 0xf0, 0x40, 0xf0, 0x40, ++ 0xfc, 0x78, 0x48, 0xc8, 0x48, 0x18, 0x00, 0x00, ++ 0x10, 0x10, 0x10, 0x1e, 0x28, 0x49, 0x7f, 0x08, ++ 0x08, 0x14, 0x12, 0x22, 0x40, 0x00, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x10, 0x14, 0x65, 0x29, 0x1b, ++ 0x15, 0x1d, 0x65, 0x09, 0x11, 0x21, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x90, 0x90, 0xfc, 0x20, 0xf8, ++ 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x10, 0x10, 0x11, 0x7f, 0x09, 0x0b, 0x15, 0x39, ++ 0x54, 0x17, 0x10, 0x11, 0x16, 0x10, 0x00, 0x00, ++ 0x90, 0xa0, 0xfc, 0x20, 0xf8, 0xf8, 0x20, 0xfc, ++ 0x40, 0xfc, 0xe0, 0x50, 0x4c, 0x40, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x12, 0x12, 0x2d, 0x49, 0x08, ++ 0x7f, 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x0f, ++ 0x18, 0x6f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xf8, ++ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3f, 0x25, 0x25, 0x3f, 0x25, 0x3f, 0x25, ++ 0x2f, 0x2b, 0x2f, 0x2b, 0x21, 0x43, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0x7c, 0xd0, 0xd0, 0x78, 0x50, ++ 0x50, 0x78, 0x50, 0x50, 0x7c, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x02, 0x07, ++ 0x18, 0x6f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0, ++ 0x10, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x05, 0x19, ++ 0x6f, 0x08, 0x0f, 0x0f, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x60, 0x18, ++ 0xe4, 0x20, 0xe0, 0xe0, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x00, 0x3d, ++ 0x08, 0x3f, 0x12, 0x0c, 0x1e, 0x61, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xe0, ++ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10, ++ 0x4f, 0x20, 0x0b, 0x12, 0x22, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40, ++ 0xfc, 0x40, 0xf8, 0x48, 0x70, 0x40, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x03, 0x1c, ++ 0x1e, 0x10, 0x1f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf0, ++ 0xf0, 0x10, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x3f, ++ 0x04, 0x7f, 0x3f, 0x0e, 0x03, 0x3c, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xf8, ++ 0x40, 0xfc, 0xf8, 0x40, 0xc0, 0x30, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x10, ++ 0x48, 0x20, 0x0b, 0x12, 0x23, 0x22, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x40, ++ 0x7c, 0x40, 0xf8, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x02, ++ 0x3e, 0x02, 0x3e, 0x02, 0x7c, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x80, ++ 0xf8, 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x21, 0x5d, 0x1d, 0x08, ++ 0x7f, 0x1c, 0x1a, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x08, 0x70, 0x70, 0x20, ++ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x04, 0x7f, ++ 0x05, 0x0f, 0x09, 0x7f, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0xfc, ++ 0x40, 0xe0, 0x20, 0xfc, 0xc0, 0x38, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12, ++ 0x3d, 0x0f, 0x0f, 0x09, 0x0f, 0x08, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x48, ++ 0x98, 0xe0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x10, 0x0b, ++ 0x46, 0x21, 0x0f, 0x10, 0x23, 0x20, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x18, 0xf0, ++ 0x4c, 0xf0, 0xfc, 0x40, 0xf8, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x14, ++ 0x7f, 0x1f, 0x1e, 0x1e, 0x12, 0x17, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x40, 0x7c, ++ 0x90, 0x50, 0x20, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1e, 0x12, ++ 0x1e, 0x11, 0x3e, 0x53, 0x1e, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x20, 0xf8, ++ 0x50, 0xfc, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x01, 0x7f, ++ 0x3e, 0x15, 0x6d, 0x07, 0x0f, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0x00, 0xfc, ++ 0xf8, 0x50, 0x7c, 0xe0, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x0d, 0x79, ++ 0x2f, 0x79, 0x35, 0x1c, 0x67, 0x18, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf0, 0x50, ++ 0xf0, 0xf0, 0xf8, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x1c, 0x7f, ++ 0x1c, 0x1c, 0x3e, 0x23, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xf8, 0x88, ++ 0xf8, 0xf8, 0x7c, 0xd4, 0xfc, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x08, 0x3e, 0x2a, 0x7f, 0x3e, 0x08, ++ 0x3c, 0x01, 0x7e, 0x14, 0x3e, 0x43, 0x00, 0x00, ++ 0x10, 0x10, 0xf8, 0x98, 0x7c, 0x18, 0xf8, 0xd4, ++ 0x38, 0xb8, 0xd4, 0x94, 0xf0, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3b, 0x2a, ++ 0x3b, 0x3f, 0x09, 0x35, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xb8, 0xa8, ++ 0xb8, 0xf8, 0x30, 0x48, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x01, 0x3f, 0x3d, 0x5d, 0x3f, 0x2e, ++ 0x3f, 0x2e, 0x35, 0x24, 0x24, 0x5f, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0x78, 0x70, 0xfc, 0x70, ++ 0xfc, 0x70, 0xa8, 0xf0, 0x80, 0xfc, 0x00, 0x00, ++ 0x00, 0x3e, 0x08, 0x3e, 0x2b, 0x7f, 0x3e, 0x08, ++ 0x3d, 0x00, 0x7e, 0x15, 0x1e, 0x63, 0x00, 0x00, ++ 0x0c, 0xf4, 0xa8, 0x50, 0xfc, 0x28, 0xd8, 0xf4, ++ 0x44, 0x78, 0xc8, 0x30, 0x70, 0x8c, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3f, 0x08, 0x7f, 0x3f, ++ 0x2a, 0x2a, 0x3e, 0x22, 0x22, 0x26, 0x00, 0x00, ++ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0xf8, 0x28, 0xfc, ++ 0x28, 0xf8, 0x28, 0x20, 0x20, 0x60, 0x00, 0x00, ++ 0x09, 0x0f, 0x11, 0x7f, 0x0f, 0x08, 0x0f, 0x7e, ++ 0x02, 0x3e, 0x03, 0x7c, 0x0c, 0x30, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xfc, 0xe0, 0x20, 0xe0, 0xfc, ++ 0x80, 0xf8, 0x80, 0xfc, 0x80, 0x80, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x10, 0x3f, 0x2b, 0x2b, 0x2f, ++ 0x2b, 0x2f, 0x2b, 0x2b, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0xc0, 0x40, 0x78, 0x88, 0xf8, 0x58, 0x58, ++ 0x78, 0x50, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x08, 0x3f, 0x2a, 0x2a, 0x2e, ++ 0x2a, 0x2e, 0x2a, 0x2a, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xf8, 0xc8, 0xf8, 0xc8, ++ 0xf8, 0xb0, 0xb0, 0xd4, 0xd4, 0x8c, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x09, ++ 0x7f, 0x1f, 0x13, 0x13, 0x1f, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4, ++ 0xfc, 0xf0, 0x90, 0x90, 0xf0, 0x10, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1d, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x48, ++ 0x48, 0x48, 0x88, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x14, 0x15, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0xc8, 0xa8, 0xa8, 0x48, 0x50, 0x50, ++ 0x20, 0x20, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0xc8, 0x48, 0x68, ++ 0x58, 0x4c, 0xc8, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x15, 0x1d, 0x09, 0x3f, 0x2b, ++ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0xc0, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, 0x98, ++ 0x98, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xfc, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x0b, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, ++ 0x88, 0xf8, 0x88, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x09, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa8, 0xb0, 0xa0, 0xf8, 0xc8, ++ 0xc8, 0xb0, 0x30, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x15, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x70, ++ 0x70, 0xa8, 0x24, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x09, 0x3f, 0x2b, ++ 0x3f, 0x09, 0x7f, 0x09, 0x09, 0x09, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0x40, 0xf8, 0x48, 0x48, 0x68, ++ 0x98, 0x98, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x7f, 0x09, 0x09, 0x0f, 0x72, 0x04, 0x7f, ++ 0x07, 0x0f, 0x09, 0x0f, 0x7f, 0x01, 0x00, 0x00, ++ 0x00, 0xf0, 0x90, 0x54, 0x54, 0x0c, 0x40, 0xfc, ++ 0xc0, 0xe0, 0x20, 0xe0, 0xfc, 0x00, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2b, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0xfc, ++ 0x60, 0x50, 0x50, 0x40, 0x40, 0x40, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x09, 0x3e, 0x2a, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x20, 0x24, 0xf8, 0x70, 0xa8, 0x24, 0x60, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x14, 0x14, 0x7e, 0x14, 0x1c, 0x08, 0x3e, 0x2a, ++ 0x3f, 0x08, 0x7e, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc, ++ 0xa4, 0xb4, 0xcc, 0xfc, 0x84, 0x18, 0x00, 0x00, ++ 0x28, 0x28, 0x7f, 0x28, 0x38, 0x13, 0x7c, 0x55, ++ 0x7d, 0x12, 0x7e, 0x14, 0x10, 0x10, 0x00, 0x00, ++ 0x50, 0x90, 0x90, 0x94, 0xb4, 0xf4, 0xb8, 0xd0, ++ 0xd0, 0xe8, 0xa8, 0xa8, 0xc4, 0x84, 0x00, 0x00, ++ 0x14, 0x15, 0x7e, 0x14, 0x1d, 0x08, 0x3e, 0x2b, ++ 0x3e, 0x09, 0x7f, 0x08, 0x09, 0x08, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xfc, 0x68, 0xb0, 0x60, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x14, 0x14, 0x7f, 0x14, 0x1c, 0x08, 0x3e, 0x2b, ++ 0x3e, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x50, 0x88, 0xfc, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x28, 0x28, 0x7f, 0x28, 0x39, 0x11, 0x7d, 0x55, ++ 0x7d, 0x11, 0x7e, 0x12, 0x14, 0x10, 0x00, 0x00, ++ 0x90, 0x90, 0xfc, 0x90, 0xfc, 0x00, 0xf8, 0xa8, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54, ++ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x50, 0xfc, 0x20, ++ 0xf8, 0x20, 0xfc, 0x20, 0xa0, 0x7c, 0x00, 0x00, ++ 0x2a, 0x29, 0x7d, 0x28, 0x3a, 0x11, 0x7d, 0x54, ++ 0x7f, 0x11, 0x7d, 0x11, 0x12, 0x14, 0x00, 0x00, ++ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x20, 0xfc, ++ 0x78, 0xd4, 0x70, 0x48, 0xb8, 0x7c, 0x00, 0x00, ++ 0x28, 0x2f, 0x7c, 0x2b, 0x3a, 0x13, 0x7c, 0x57, ++ 0x7e, 0x13, 0x7e, 0x12, 0x14, 0x14, 0x00, 0x00, ++ 0xa0, 0xfc, 0xa0, 0xf8, 0xa8, 0xf8, 0x48, 0xfc, ++ 0x48, 0x28, 0xb0, 0x94, 0x2c, 0x44, 0x00, 0x00, ++ 0x01, 0x1f, 0x02, 0x7f, 0x00, 0x0f, 0x08, 0x0f, ++ 0x00, 0x0f, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xfc, 0x00, 0xe0, 0x20, 0xe0, ++ 0x40, 0xf8, 0x40, 0xfc, 0x40, 0x40, 0x00, 0x00, ++ 0x08, 0x3e, 0x12, 0x7f, 0x01, 0x3e, 0x22, 0x3e, ++ 0x04, 0x3e, 0x24, 0x7f, 0x04, 0x04, 0x00, 0x00, ++ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0xd8, 0x88, ++ 0x88, 0xd8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x02, 0x02, 0x02, 0x3e, 0x02, 0x02, 0x3e, 0x02, ++ 0x02, 0x3e, 0x02, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x40, 0x40, 0x78, 0x40, ++ 0x40, 0x78, 0x40, 0x40, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x7f, 0x3e, 0x15, 0x2d, 0x51, 0x1f, 0x1f, ++ 0x12, 0x16, 0x16, 0x16, 0x2f, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x50, 0x68, 0x14, 0xf0, 0xf0, ++ 0x90, 0xd0, 0xd0, 0xd0, 0xf0, 0x10, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x3d, 0x15, 0x2d, 0x42, 0x3e, ++ 0x02, 0x1e, 0x1e, 0x02, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x70, 0x50, 0xe8, 0x84, 0xf8, ++ 0x80, 0xf0, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x01, 0x3f, 0x04, 0x7f, 0x00, 0x0f, 0x08, ++ 0x0f, 0x08, 0x0f, 0x02, 0x0c, 0x70, 0x00, 0x00, ++ 0x00, 0x00, 0xf8, 0x40, 0xfc, 0x00, 0xe0, 0x20, ++ 0xe0, 0x20, 0xe0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x7e, 0x24, 0x14, 0x18, 0x7f, 0x00, ++ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0x48, 0x88, 0x30, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x24, 0x15, 0x19, 0x7e, 0x00, ++ 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x00, 0x00, ++ 0x80, 0x80, 0x80, 0xf8, 0x08, 0x08, 0xe8, 0x08, ++ 0x28, 0xc8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x00, 0x1c, 0x14, 0x14, ++ 0x14, 0x15, 0x15, 0x23, 0x20, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x1d, 0x04, 0x14, 0x12, 0x22, 0x49, 0x08, ++ 0x08, 0x14, 0x16, 0x7a, 0x00, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x7f, 0x2a, 0x2a, 0x54, 0x2a, 0x2a, 0x00, ++ 0x7e, 0x08, 0x08, 0x0e, 0x70, 0x03, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x24, 0x2e, 0x2a, 0x2a, 0x2a, ++ 0x2e, 0x24, 0x24, 0x24, 0x3e, 0x23, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x08, 0x7f, 0x08, 0x08, 0x3e, 0x00, ++ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x12, 0x3e, 0x40, 0x3e, 0x04, ++ 0x08, 0x3e, 0x22, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x02, 0x3d, 0x08, 0x7f, 0x1c, 0x2a, 0x4a, 0x1c, ++ 0x14, 0x14, 0x15, 0x16, 0x24, 0x43, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x3e, 0x2a, 0x3e, 0x08, 0x7f, ++ 0x1c, 0x1a, 0x2a, 0x48, 0x08, 0x0b, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x14, 0x0c, 0x12, 0x3f, 0x24, ++ 0x3a, 0x24, 0x39, 0x22, 0x4c, 0x33, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e, 0x08, ++ 0x06, 0x35, 0x31, 0x54, 0x54, 0x0f, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x04, 0x7f, 0x3f, 0x2f, 0x2b, 0x2f, 0x3f, 0x1e, ++ 0x12, 0x1e, 0x12, 0x1e, 0x0e, 0x71, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x21, 0x3f, 0x21, 0x3f, 0x12, 0x6d, ++ 0x2d, 0x1b, 0x7f, 0x35, 0x2a, 0x4a, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0xf8, 0x30, 0xc8, 0x84, 0x00, 0x00, ++ 0x08, 0x2f, 0x28, 0x7f, 0x2a, 0x5c, 0x1a, 0x6f, ++ 0x09, 0x0f, 0x0f, 0x04, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0xf8, 0x88, 0xf8, 0xf8, 0xf8, 0xec, ++ 0x20, 0xe0, 0xe0, 0x40, 0xfc, 0x40, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x04, 0x07, 0x3f, 0x2d, 0x37, 0x3f, 0x35, 0x3f, ++ 0x3f, 0x20, 0x3f, 0x57, 0x17, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x90, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x30, 0xc8, 0x84, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f, ++ 0x64, 0x3e, 0x3e, 0x24, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x30, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x0f, 0x0f, 0x3f, 0x01, 0x7f, ++ 0x2a, 0x3b, 0x3b, 0x2a, 0x7f, 0x08, 0x00, 0x00, ++ 0x00, 0xfc, 0x10, 0x20, 0x78, 0x48, 0x78, 0xc8, ++ 0xf8, 0xc8, 0xf8, 0xb0, 0xa8, 0xc4, 0x00, 0x00, ++ 0x00, 0x7f, 0x01, 0x01, 0x01, 0x1f, 0x10, 0x1f, ++ 0x17, 0x15, 0x17, 0x11, 0x2f, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0xc0, 0x20, 0x00, 0xf0, 0xd0, 0x10, ++ 0xd0, 0x50, 0xd4, 0x6c, 0x9c, 0x04, 0x00, 0x00, ++ 0x10, 0x13, 0x12, 0x13, 0x7e, 0x0b, 0x4b, 0x2b, ++ 0x2b, 0x32, 0x1c, 0x64, 0x0b, 0x10, 0x00, 0x00, ++ 0x00, 0xf0, 0x30, 0xd0, 0x90, 0xf0, 0xb0, 0xb0, ++ 0xf0, 0xd0, 0xb4, 0xec, 0x1c, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x11, 0x1e, 0x14, 0x1f, 0x1d, 0x1d, ++ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00, ++ 0x20, 0xa0, 0xb0, 0xa8, 0xcc, 0xf4, 0x80, 0xf8, ++ 0xc8, 0xc8, 0x78, 0xc4, 0xb4, 0x0c, 0x00, 0x00, ++ 0x00, 0x1f, 0x13, 0x1c, 0x14, 0x1f, 0x1d, 0x1d, ++ 0x1f, 0x16, 0x15, 0x27, 0x38, 0x40, 0x00, 0x00, ++ 0x00, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, ++ 0xfc, 0x98, 0x64, 0xc4, 0xb4, 0x0c, 0x00, 0x00, ++ 0x00, 0x7f, 0x19, 0x7f, 0x5b, 0x7f, 0x01, 0x3d, ++ 0x01, 0x7f, 0x2d, 0x2a, 0x4b, 0x1c, 0x00, 0x00, ++ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8, ++ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x23, 0x3d, 0x29, 0x3f, 0x3b, 0x3b, ++ 0x3f, 0x2d, 0x2a, 0x2f, 0x31, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x30, 0xfc, 0xb4, 0xfc, 0x78, 0x00, ++ 0xfc, 0x58, 0x94, 0xb4, 0x64, 0x1c, 0x00, 0x00, ++ 0x0c, 0x0b, 0x3f, 0x09, 0x15, 0x13, 0x35, 0x2f, ++ 0x7f, 0x25, 0x37, 0x2a, 0x4b, 0x54, 0x00, 0x00, ++ 0x00, 0xf8, 0x18, 0xe8, 0x48, 0xf8, 0xd8, 0xd8, ++ 0xf8, 0x6c, 0x5c, 0x74, 0x94, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x24, 0x3c, ++ 0x24, 0x3c, 0x3c, 0x20, 0x3e, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x3c, 0xe0, 0x20, 0xa8, 0xa8, 0xa8, ++ 0xa8, 0xf8, 0xa8, 0x24, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3c, ++ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00, ++ 0x08, 0x10, 0xe0, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x60, 0x50, 0x90, 0x08, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c, ++ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1f, 0x21, 0x7d, 0x25, 0x3d, ++ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x20, 0x40, 0xf8, 0x08, 0xe8, 0xa8, 0xa8, ++ 0xa8, 0xe8, 0xa8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x22, 0x3f, ++ 0x22, 0x3e, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00, ++ 0x18, 0xf0, 0xa8, 0xa4, 0x04, 0x20, 0x20, 0xfc, ++ 0x48, 0x48, 0xf0, 0x10, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x17, 0x1e, 0x23, 0x7d, 0x25, 0x3d, ++ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x40, 0xf8, 0x48, 0x48, 0xf8, ++ 0x48, 0x48, 0xf8, 0x48, 0x48, 0x58, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7d, 0x24, 0x3d, ++ 0x24, 0x3c, 0x3e, 0x21, 0x3e, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x20, 0xfc, ++ 0x20, 0xb0, 0xa8, 0x24, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7e, 0x24, 0x3d, ++ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x80, 0xf8, 0x88, 0x88, 0x08, 0x30, 0x40, 0x98, ++ 0x08, 0xd8, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x1e, 0x22, 0x7c, 0x25, 0x3c, ++ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x22, 0x00, 0x00, ++ 0x50, 0x50, 0xfc, 0x50, 0x20, 0x20, 0xfc, 0x20, ++ 0x38, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1f, 0x22, 0x7c, 0x25, 0x3c, ++ 0x24, 0x3d, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x50, 0x48, 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x54, ++ 0x7c, 0xc8, 0x30, 0x74, 0x8c, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3d, ++ 0x24, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00, ++ 0x20, 0x24, 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x24, ++ 0xa4, 0xa8, 0x70, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x1f, 0x22, 0x7c, 0x24, 0x3c, ++ 0x27, 0x3c, 0x3e, 0x21, 0x3f, 0x22, 0x00, 0x00, ++ 0x90, 0x90, 0x20, 0xfc, 0x90, 0x90, 0x90, 0xd0, ++ 0xbc, 0x90, 0x90, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x11, 0x11, 0x19, 0x27, 0x3d, 0x79, 0x2b, 0x3a, ++ 0x2a, 0x3a, 0x3f, 0x22, 0x3c, 0x21, 0x00, 0x00, ++ 0x00, 0x38, 0x28, 0xe8, 0x28, 0x38, 0xa8, 0xa8, ++ 0xb8, 0xa8, 0xc8, 0x48, 0x88, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x09, 0x1e, 0x74, 0x19, 0x62, 0x0f, ++ 0x77, 0x04, 0x07, 0x07, 0x07, 0x3c, 0x00, 0x00, ++ 0x20, 0x50, 0xac, 0xd0, 0x68, 0x70, 0x80, 0xe0, ++ 0xfc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00, ++ 0x08, 0x08, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3d, ++ 0x24, 0x3c, 0x3f, 0x21, 0x3e, 0x24, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0xc8, ++ 0xd0, 0xd0, 0x68, 0x7c, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x27, 0x3c, ++ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0xbc, 0x14, 0x94, 0x54, 0xd4, 0x2c, 0x40, ++ 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x08, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x25, 0x3c, ++ 0x25, 0x3d, 0x3f, 0x21, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x68, 0x98, 0x18, 0xf8, 0x00, ++ 0xf8, 0x68, 0x68, 0x68, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x1e, 0x22, 0x7c, 0x24, 0x3c, ++ 0x25, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x50, 0xfc, 0x50, 0x70, 0xf8, 0xa8, 0xf8, 0x20, ++ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x22, 0x7c, 0x25, 0x3d, ++ 0x25, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, 0x54, ++ 0xfc, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x14, 0x1e, 0x23, 0x7d, 0x27, 0x3c, ++ 0x24, 0x3c, 0x3e, 0x20, 0x3f, 0x20, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x08, 0xfc, 0xf8, ++ 0x88, 0xf8, 0x88, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x24, 0x3c, ++ 0x24, 0x3c, 0x3e, 0x20, 0x3e, 0x23, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xf8, 0xfc, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x11, 0x11, 0x1a, 0x25, 0x3d, 0x7a, 0x2b, 0x38, ++ 0x2b, 0x3b, 0x3e, 0x22, 0x3e, 0x24, 0x00, 0x00, ++ 0x48, 0x48, 0xf4, 0xd4, 0x48, 0xd4, 0xfc, 0x48, ++ 0xfc, 0x48, 0xa8, 0x34, 0xcc, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x1e, 0x23, 0x7c, 0x27, 0x3c, ++ 0x24, 0x3f, 0x3f, 0x20, 0x3c, 0x23, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x20, 0xfc, 0x90, 0xfc, 0x90, ++ 0xfc, 0x00, 0xfc, 0x50, 0x94, 0x0c, 0x00, 0x00, ++ 0x08, 0x09, 0x15, 0x1f, 0x23, 0x7d, 0x24, 0x3c, ++ 0x25, 0x3c, 0x3f, 0x20, 0x3e, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0xf8, 0x20, 0x64, 0xdc, 0x50, ++ 0xf8, 0x50, 0xfc, 0x50, 0x88, 0x08, 0x00, 0x00, ++ 0x1e, 0x12, 0x1e, 0x7f, 0x1e, 0x23, 0x0e, 0x0f, ++ 0x77, 0x04, 0x07, 0x07, 0x06, 0x38, 0x00, 0x00, ++ 0x38, 0xfc, 0xa8, 0xd8, 0xb0, 0x34, 0xcc, 0xe0, ++ 0xdc, 0x40, 0xc0, 0xd0, 0xe0, 0x38, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x08, 0x7e, 0x0a, 0x0a, 0x0a, ++ 0x0a, 0x0a, 0x12, 0x12, 0x22, 0x41, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0x40, 0xf8, 0x88, 0xf8, 0x88, ++ 0xf8, 0x88, 0xf8, 0x8c, 0x04, 0xfc, 0x00, 0x00, ++ 0x24, 0x14, 0x18, 0x7f, 0x08, 0x11, 0x3d, 0x25, ++ 0x3d, 0x25, 0x3c, 0x27, 0x3c, 0x24, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x68, 0x68, ++ 0xd0, 0x10, 0x74, 0xac, 0x4c, 0x84, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48, ++ 0x3e, 0x22, 0x3f, 0x22, 0x3e, 0x23, 0x00, 0x00, ++ 0x80, 0x80, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x40, 0xf8, 0x90, 0x60, 0xf0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x24, 0x3e, 0x24, 0x3e, 0x24, 0x3f, ++ 0x05, 0x3b, 0x2f, 0x2d, 0x42, 0x0d, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0x88, 0x50, 0x50, 0x70, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x03, 0x22, 0x13, 0x12, 0x03, 0x0a, 0x0b, ++ 0x10, 0x16, 0x25, 0x25, 0x28, 0x00, 0x00, 0x00, ++ 0x00, 0xf8, 0x40, 0xf0, 0x40, 0xf0, 0x40, 0xfc, ++ 0x24, 0x94, 0x54, 0x44, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x88, 0x88, 0x50, ++ 0x50, 0x30, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f, ++ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0x68, 0x68, 0x68, 0x68, 0x78, ++ 0xb8, 0x98, 0x08, 0x08, 0xf8, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xa0, 0x40, 0x60, 0x98, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c, ++ 0x70, 0x40, 0x40, 0x40, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x29, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x50, 0x48, 0xf4, 0x04, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x7e, 0x12, 0x3a, 0x0c, 0x77, 0x04, 0x07, ++ 0x07, 0x04, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x30, 0xc8, 0xf4, 0x80, 0xe0, ++ 0xe0, 0x80, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x40, 0x50, 0x90, 0x60, 0x28, ++ 0x48, 0x90, 0x10, 0x28, 0xc4, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3e, 0x28, 0x3e, 0x29, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x50, 0x48, 0x94, 0x54, 0x50, ++ 0x60, 0x20, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x28, 0x3c, 0x28, 0x3c, 0x29, 0x3f, ++ 0x0a, 0x3e, 0x3e, 0x33, 0x45, 0x1a, 0x00, 0x00, ++ 0x08, 0x88, 0xa8, 0xa8, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xa8, 0xa8, 0xa8, 0x28, 0x28, 0x08, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, 0xf8, ++ 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0b, 0x3e, 0x3e, 0x32, 0x44, 0x1b, 0x00, 0x00, ++ 0x00, 0xf8, 0x08, 0xfc, 0x08, 0xf8, 0x00, 0xfc, ++ 0x08, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x00, 0xfc, ++ 0x40, 0x78, 0x88, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78, ++ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x48, 0x48, 0x50, 0xfc, 0x90, 0x90, 0xf8, 0x90, ++ 0x90, 0xf8, 0x90, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00, ++ 0x88, 0x48, 0x50, 0xfc, 0x50, 0x50, 0x50, 0xfc, ++ 0x50, 0x50, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3f, 0x3f, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xfc, ++ 0xb4, 0xfc, 0xb4, 0xb4, 0xb4, 0x8c, 0x00, 0x00, ++ 0x01, 0x3f, 0x22, 0x7f, 0x1f, 0x02, 0x7f, 0x0f, ++ 0x17, 0x67, 0x05, 0x07, 0x1a, 0x25, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0xf8, 0xe0, 0x80, 0xfc, 0xf0, ++ 0xd0, 0xcc, 0x00, 0xf0, 0x90, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x2b, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0x50, 0xa0, 0x70, 0xac, 0xf8, ++ 0xa8, 0xf8, 0xb0, 0x28, 0x3c, 0xc4, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x29, 0x3f, ++ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0x78, 0x48, 0x78, 0x00, 0xfc, ++ 0xb4, 0xb4, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x3e, 0x29, 0x3c, 0x29, 0x3f, 0x28, 0x3e, ++ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x40, 0x90, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0x90, ++ 0x2c, 0xc0, 0x20, 0xc8, 0x30, 0xc0, 0x00, 0x00, ++ 0x04, 0x7f, 0x0f, 0x08, 0x0f, 0x0f, 0x7f, 0x07, ++ 0x1d, 0x67, 0x07, 0x07, 0x1a, 0x25, 0x00, 0x00, ++ 0x40, 0xfc, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xc0, ++ 0x30, 0xcc, 0xc0, 0xf8, 0x88, 0x70, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x29, 0x3f, 0x28, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8, ++ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, 0xd0, ++ 0x28, 0xfc, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3e, 0x29, 0x3e, ++ 0x0b, 0x3f, 0x3f, 0x33, 0x45, 0x19, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xfc, 0x50, 0xf8, 0x54, 0x70, ++ 0xfc, 0x74, 0x54, 0x74, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3f, 0x28, 0x3f, 0x28, 0x3e, ++ 0x0b, 0x3f, 0x3e, 0x32, 0x42, 0x0d, 0x00, 0x00, ++ 0x20, 0xf8, 0x20, 0xfc, 0x88, 0xdc, 0x88, 0xdc, ++ 0x00, 0xfc, 0x50, 0x50, 0x94, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3f, 0x28, 0x3e, 0x28, 0x3f, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x00, 0xfc, 0x54, 0xfc, 0x20, 0xf8, 0x20, 0xfc, ++ 0x50, 0xfc, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x28, 0x3f, 0x28, 0x3f, ++ 0x0b, 0x3f, 0x3e, 0x32, 0x45, 0x1a, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0xfc, 0x00, 0xf8, ++ 0x68, 0xf8, 0x90, 0xd8, 0x24, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3d, 0x29, 0x3d, 0x2b, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x32, 0x43, 0x0c, 0x00, 0x00, ++ 0x00, 0xe0, 0x7c, 0xd4, 0xc8, 0x54, 0xe4, 0x50, ++ 0x64, 0xb8, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x29, 0x3f, 0x29, 0x3f, 0x29, 0x3f, ++ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00, ++ 0x20, 0x38, 0xfc, 0x28, 0xd8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3e, 0x29, 0x3e, 0x28, 0x3e, ++ 0x0a, 0x3e, 0x3e, 0x33, 0x42, 0x0d, 0x00, 0x00, ++ 0x50, 0xd4, 0x58, 0xd4, 0x4c, 0xf8, 0xa8, 0xf8, ++ 0xf8, 0x50, 0xf8, 0xfc, 0x48, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3e, ++ 0x0a, 0x3f, 0x3e, 0x33, 0x44, 0x19, 0x00, 0x00, ++ 0x20, 0xfc, 0xdc, 0x54, 0xdc, 0x50, 0xfc, 0xf8, ++ 0x50, 0xfc, 0x68, 0x90, 0xe8, 0x84, 0x00, 0x00, ++ 0x00, 0x3f, 0x28, 0x3d, 0x29, 0x3d, 0x28, 0x3e, ++ 0x0b, 0x3e, 0x3e, 0x32, 0x42, 0x0c, 0x00, 0x00, ++ 0x50, 0xfc, 0x50, 0xdc, 0x54, 0xdc, 0x50, 0xfc, ++ 0x90, 0xf8, 0xf8, 0x90, 0xfc, 0x80, 0x00, 0x00, ++ 0x00, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x15, 0x3f, ++ 0x28, 0x3e, 0x3e, 0x3f, 0x3d, 0x57, 0x00, 0x00, ++ 0x00, 0xe0, 0xc0, 0xc0, 0xf0, 0x90, 0x60, 0xfc, ++ 0xa0, 0xf8, 0xf8, 0xfc, 0xf4, 0x58, 0x00, 0x00, ++ 0x00, 0x3f, 0x29, 0x3f, 0x29, 0x3e, 0x29, 0x3f, ++ 0x0b, 0x3f, 0x3f, 0x33, 0x46, 0x19, 0x00, 0x00, ++ 0x00, 0xdc, 0xdc, 0xdc, 0x54, 0x20, 0xfc, 0x50, ++ 0xf8, 0x58, 0xfc, 0xd8, 0xf4, 0x8c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7e, 0x43, 0x3f, ++ 0x22, 0x3e, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00, ++ 0x00, 0x70, 0x50, 0x54, 0x54, 0x8c, 0x00, 0xf8, ++ 0x48, 0x50, 0x30, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e, ++ 0x23, 0x3e, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xd0, 0x20, 0x50, 0x88, ++ 0xfc, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x42, 0x3e, ++ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x26, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x50, ++ 0x90, 0xfc, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2f, 0x2a, 0x7f, 0x42, 0x3e, ++ 0x22, 0x3f, 0x22, 0x3e, 0x22, 0x27, 0x00, 0x00, ++ 0x20, 0xf8, 0xa8, 0xfc, 0xa8, 0xf8, 0xf8, 0xa8, ++ 0xf8, 0xfc, 0x50, 0xd0, 0x30, 0xc8, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x3d, 0x34, 0x7e, 0x45, 0x3f, ++ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00, ++ 0x00, 0xf8, 0x68, 0xf8, 0x80, 0xf8, 0x48, 0xf8, ++ 0x58, 0xf8, 0x68, 0x78, 0x88, 0x30, 0x00, 0x00, ++ 0x02, 0x3d, 0x25, 0x3c, 0x36, 0x7f, 0x45, 0x3c, ++ 0x27, 0x3d, 0x25, 0x3d, 0x26, 0x2c, 0x00, 0x00, ++ 0x20, 0xfc, 0x40, 0x78, 0x90, 0xfc, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0x48, 0xd8, 0x7c, 0x00, 0x00, ++ 0x00, 0x3d, 0x25, 0x3d, 0x35, 0x7f, 0x42, 0x3f, ++ 0x25, 0x3d, 0x25, 0x3c, 0x27, 0x2c, 0x00, 0x00, ++ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc, ++ 0xf8, 0x08, 0xf8, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7e, 0x3c, 0x24, 0x3d, 0x01, 0x7f, ++ 0x42, 0x5f, 0x56, 0x5e, 0x43, 0x46, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x00, 0xdc, 0x54, 0xdc, ++ 0x20, 0xfc, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x10, 0x1e, 0x10, 0x1e, 0x10, ++ 0x7f, 0x14, 0x12, 0x27, 0x79, 0x01, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x28, 0x48, 0x90, 0x10, 0x24, ++ 0x44, 0x08, 0x08, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x09, ++ 0x09, 0x0f, 0x79, 0x09, 0x08, 0x07, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xf0, 0x10, 0x10, 0x64, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01, ++ 0x7f, 0x01, 0x01, 0x02, 0x0c, 0x30, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xfc, 0x00, 0xf0, 0x10, 0x10, 0xe0, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x00, ++ 0x0f, 0x1f, 0x02, 0x7f, 0x02, 0x01, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xc0, ++ 0x00, 0xf0, 0x00, 0xfc, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01, ++ 0x0f, 0x0f, 0x09, 0x7f, 0x08, 0x08, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xe0, 0xe0, 0x20, 0xfc, 0x20, 0x60, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3d, 0x1f, ++ 0x03, 0x0c, 0x7f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0, ++ 0x10, 0x60, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01, ++ 0x7f, 0x02, 0x05, 0x19, 0x66, 0x18, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xf0, 0x08, ++ 0xfc, 0x20, 0x40, 0x80, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x1f, ++ 0x04, 0x3f, 0x3f, 0x24, 0x18, 0x60, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xf0, ++ 0x90, 0xf0, 0xfc, 0x84, 0x98, 0x80, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02, ++ 0x0f, 0x7f, 0x08, 0x0f, 0x08, 0x07, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xf0, 0x90, 0x90, 0xe4, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x02, ++ 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x10, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x80, ++ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x01, ++ 0x7f, 0x1f, 0x0f, 0x08, 0x0f, 0x08, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x00, ++ 0xfc, 0xf0, 0xe0, 0x20, 0xe0, 0x20, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x08, ++ 0x7e, 0x18, 0x1d, 0x2a, 0x49, 0x08, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0x78, ++ 0x88, 0xa4, 0x30, 0x48, 0xf4, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x07, ++ 0x07, 0x1f, 0x1f, 0x0f, 0x03, 0x3c, 0x00, 0x00, ++ 0x10, 0x60, 0x90, 0x64, 0x98, 0x60, 0xc0, 0xc0, ++ 0xc0, 0xf0, 0xf0, 0xe0, 0x80, 0x78, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x12, 0x3f, 0x0f, ++ 0x71, 0x09, 0x31, 0x05, 0x19, 0x67, 0x00, 0x00, ++ 0x10, 0x60, 0x88, 0x30, 0xc4, 0x18, 0xe0, 0xfc, ++ 0xf0, 0x10, 0xf0, 0xf0, 0xf0, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x0f, ++ 0x7f, 0x07, 0x07, 0x7c, 0x07, 0x18, 0x00, 0x00, ++ 0x10, 0x60, 0x90, 0x64, 0x98, 0xe0, 0xe0, 0xe0, ++ 0xfc, 0xc0, 0xd8, 0xe0, 0x60, 0x1c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x3f, 0x2f, ++ 0x4b, 0x37, 0x3f, 0x07, 0x07, 0x3c, 0x00, 0x00, ++ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe0, 0xfc, 0xe8, ++ 0x40, 0xe0, 0xe0, 0xe0, 0xe0, 0x38, 0x00, 0x00, ++ 0x00, 0x1f, 0x1e, 0x1e, 0x7f, 0x16, 0x39, 0x04, ++ 0x1f, 0x13, 0x1f, 0x1d, 0x1d, 0x73, 0x00, 0x00, ++ 0x10, 0x60, 0x90, 0x64, 0x18, 0xe8, 0x30, 0x88, ++ 0xf0, 0x90, 0xf0, 0xd4, 0xcc, 0x04, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x20, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x08, ++ 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x21, 0x3f, ++ 0x21, 0x2f, 0x29, 0x29, 0x29, 0x21, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xf8, ++ 0x08, 0xe8, 0x28, 0x28, 0xc8, 0x18, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x22, ++ 0x2f, 0x22, 0x3f, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0x88, ++ 0xe8, 0x88, 0xf8, 0x88, 0x48, 0x58, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x22, 0x24, ++ 0x26, 0x24, 0x27, 0x22, 0x24, 0x28, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x08, 0xc8, ++ 0xc8, 0x48, 0xc8, 0x88, 0xa8, 0x78, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x24, 0x2e, 0x20, 0x3f, ++ 0x2f, 0x29, 0x2f, 0x2a, 0x27, 0x38, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0x48, 0xe8, 0x28, 0x28, ++ 0xf8, 0xa8, 0x68, 0x28, 0x28, 0x78, 0x00, 0x00, ++ 0x00, 0x2e, 0x24, 0x2e, 0x2e, 0x23, 0x3f, 0x2e, ++ 0x3a, 0x3e, 0x3a, 0x3a, 0x3e, 0x39, 0x00, 0x00, ++ 0x00, 0xe8, 0x48, 0xe8, 0xe8, 0x88, 0xe8, 0xe8, ++ 0xf8, 0xb8, 0xf8, 0xf8, 0x98, 0xf8, 0x00, 0x00, ++ 0x02, 0x21, 0x2c, 0x33, 0x29, 0x23, 0x2c, 0x3f, ++ 0x28, 0x08, 0x0f, 0x08, 0x08, 0x07, 0x00, 0x00, ++ 0x40, 0x48, 0xa8, 0x98, 0x48, 0x28, 0x88, 0xf8, ++ 0x08, 0x70, 0x80, 0x04, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x7f, 0x00, 0x0f, 0x08, 0x0f, 0x00, 0x3f, ++ 0x22, 0x2c, 0x37, 0x21, 0x21, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xf8, ++ 0x88, 0x98, 0xf8, 0x08, 0x08, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x11, 0x3d, 0x25, 0x25, 0x3d, 0x25, ++ 0x24, 0x24, 0x3d, 0x25, 0x06, 0x18, 0x00, 0x00, ++ 0x40, 0x80, 0xf8, 0x48, 0xf8, 0x48, 0xf8, 0x48, ++ 0xd0, 0xd0, 0x68, 0x78, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x2b, 0x3e, 0x2a, 0x3e, 0x18, ++ 0x1a, 0x1a, 0x1d, 0x2f, 0x29, 0x47, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xfc, 0x40, 0x50, 0x50, 0x50, ++ 0xa0, 0xa0, 0x50, 0x88, 0x04, 0xfc, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x1a, 0x2a, 0x48, ++ 0x7e, 0x12, 0x3a, 0x04, 0x1b, 0x62, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0xa0, ++ 0x68, 0x68, 0xb4, 0xbc, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x18, ++ 0x1a, 0x1a, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00, ++ 0x00, 0xf8, 0xd8, 0xb8, 0xa8, 0xf8, 0xa8, 0xf8, ++ 0xc8, 0xb8, 0x88, 0x9c, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x11, 0x3e, 0x2b, 0x3f, 0x2b, 0x3f, 0x19, ++ 0x1b, 0x1b, 0x1d, 0x2f, 0x28, 0x47, 0x00, 0x00, ++ 0x00, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0xd8, 0xd8, ++ 0xe8, 0x48, 0x48, 0x1c, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x11, 0x3e, 0x2a, 0x3e, 0x2a, 0x3e, 0x19, ++ 0x1d, 0x1d, 0x1b, 0x2f, 0x28, 0x47, 0x00, 0x00, ++ 0x20, 0xfc, 0x98, 0xe8, 0xd8, 0xf8, 0x20, 0xfc, ++ 0x54, 0xfc, 0x04, 0x0c, 0x04, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x1f, 0x1f, 0x19, ++ 0x17, 0x17, 0x27, 0x21, 0x46, 0x38, 0x00, 0x00, ++ 0x00, 0xfc, 0x18, 0x14, 0xfc, 0x90, 0xa8, 0xc4, ++ 0xf0, 0xf0, 0xf0, 0xa8, 0xfc, 0x7c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x38, 0x28, ++ 0x28, 0x48, 0x48, 0x88, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x7c, 0xa0, 0xa0, 0x3c, 0x20, ++ 0x20, 0x3c, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0xfc, ++ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xb0, 0x80, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0x20, 0x40, 0x40, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0x50, 0x20, 0x50, 0xc8, ++ 0x24, 0x20, 0x00, 0xc0, 0x30, 0x08, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x88, 0x20, 0x20, 0xfc, 0x48, ++ 0x48, 0xf0, 0x90, 0x38, 0xc4, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0x78, 0x90, 0xfc, 0x80, 0xf8, 0xc8, ++ 0xc8, 0xc8, 0xd8, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x80, 0x98, 0xe0, 0x80, 0x84, 0x7c, 0x00, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0x90, 0xfc, 0x90, 0xb8, 0xb8, ++ 0xb8, 0xd4, 0xd4, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x0c, 0xf0, 0x20, 0x28, 0xc8, 0x30, 0x30, 0x48, ++ 0xf4, 0x20, 0xa8, 0xa4, 0x24, 0x20, 0x00, 0x00, ++ 0x10, 0x49, 0x21, 0x0a, 0x14, 0x23, 0x27, 0x08, ++ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00, ++ 0x40, 0x50, 0x48, 0xd4, 0x64, 0x80, 0xc0, 0x80, ++ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xa8, 0xa4, 0x24, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x88, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3f, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x48, 0x88, 0xa8, 0xa8, 0xa8, 0xe8, 0xa8, 0xe8, ++ 0xe8, 0xa8, 0xa8, 0x88, 0x88, 0x98, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2b, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x08, 0xd0, 0x70, 0xa8, 0x20, 0xfc, 0x60, 0xa0, ++ 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x50, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0xb8, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x40, 0xfc, ++ 0x54, 0x54, 0x94, 0x24, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0x98, 0x88, 0xd8, 0x88, 0x88, 0xf8, ++ 0x68, 0x60, 0xa0, 0xa4, 0x24, 0x1c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x90, ++ 0x94, 0xf8, 0x90, 0x94, 0xd4, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x25, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0xa8, 0xa8, 0x50, 0x50, 0xa8, 0xa8, 0x00, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x42, 0x00, 0x00, ++ 0x50, 0x50, 0x50, 0xdc, 0x50, 0x50, 0xdc, 0x50, ++ 0x70, 0xdc, 0x90, 0x90, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2b, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x41, 0x00, 0x00, ++ 0x20, 0x50, 0xf8, 0x90, 0x68, 0xfc, 0x60, 0xb0, ++ 0xcc, 0x20, 0xc8, 0x10, 0x60, 0x80, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0xa8, 0xe8, 0x84, 0x94, 0xc8, ++ 0xc8, 0xc0, 0x50, 0x48, 0x44, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00, ++ 0x20, 0x38, 0x20, 0xfc, 0xa8, 0xf8, 0xa4, 0x9c, ++ 0xf0, 0xd0, 0x50, 0x54, 0x94, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x88, 0x74, 0x00, 0xf8, 0x10, ++ 0x20, 0x58, 0xd4, 0xc4, 0x50, 0x30, 0x00, 0x00, ++ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x41, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x48, 0xd8, 0x48, 0x00, 0xf8, ++ 0x28, 0x28, 0xd0, 0x10, 0x28, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x42, 0x00, 0x00, ++ 0x28, 0x24, 0x24, 0xfc, 0x20, 0xe8, 0x28, 0xe8, ++ 0xb0, 0xf0, 0x94, 0x2c, 0x4c, 0x84, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x00, ++ 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, 0xf8, 0x20, ++ 0x50, 0xd8, 0xc4, 0x54, 0x50, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x70, 0x50, 0x50, 0x88, 0xfc, 0x30, 0xf8, 0xb8, ++ 0xd8, 0x88, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3f, 0x2a, ++ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0x20, 0xfc, 0x50, ++ 0xf8, 0x8c, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0xa8, 0xa8, 0xfc, 0xa8, 0xb8, 0x80, 0xfc, 0x20, ++ 0xfc, 0x70, 0x70, 0xa8, 0x24, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3b, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0xf8, ++ 0x40, 0xf8, 0x50, 0x20, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x20, 0xf8, 0xb8, 0xe8, 0xf8, ++ 0x70, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x10, 0x10, 0x1c, 0x2b, 0x7e, 0x2f, 0x3e, 0x2f, ++ 0x3f, 0x0b, 0x3e, 0x3e, 0x35, 0x48, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0xa8, 0xe8, ++ 0x78, 0x50, 0x94, 0xdc, 0x2c, 0x44, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0xa8, 0xa8, 0xd8, 0x88, 0xf8, 0x00, ++ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0x88, 0xf8, 0x88, 0xf8, 0x00, ++ 0xf8, 0xe8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3f, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x54, 0x54, 0xfc, 0x20, 0xa8, 0xa8, ++ 0x24, 0x70, 0xa8, 0x24, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x05, 0x3b, 0x2f, 0x29, 0x40, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xd0, 0x7c, 0x74, 0xf4, 0x34, ++ 0xf4, 0x74, 0x7c, 0xd0, 0x10, 0x10, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x94, 0x54, 0xf4, 0x2c, 0x40, ++ 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x10, 0x11, 0x1c, 0x28, 0x7f, 0x2a, 0x3f, 0x2b, ++ 0x3f, 0x05, 0x3f, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x10, 0xd0, 0x10, 0x3c, 0xf4, 0xb4, 0xfc, 0xf4, ++ 0xf4, 0xfc, 0xb4, 0x90, 0x90, 0x90, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x29, 0x42, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0xa0, 0xf8, 0xa8, 0xfc, 0xa8, ++ 0xf8, 0xa8, 0xf0, 0x68, 0xa4, 0x60, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x47, ++ 0x3f, 0x09, 0x0f, 0x0f, 0x14, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xc8, 0x84, ++ 0xe0, 0x20, 0xe0, 0xe0, 0x90, 0x48, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7f, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x04, 0x3a, 0x2f, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xf8, 0x50, 0xfc, 0xf8, 0x88, 0xf8, ++ 0x88, 0xf8, 0x20, 0xfc, 0x20, 0x20, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x25, 0x7f, 0x2b, 0x3e, 0x2a, ++ 0x3e, 0x05, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x00, 0xfc, 0x50, 0xfc, 0x54, 0xfc, 0x00, 0xf8, ++ 0x00, 0xfc, 0xa8, 0xa4, 0x24, 0x60, 0x00, 0x00, ++ 0x08, 0x09, 0x1e, 0x24, 0x7e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x05, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x00, 0xf8, 0x88, 0xf8, ++ 0x50, 0xfc, 0xf8, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x40, 0x00, 0x00, ++ 0x40, 0x60, 0x90, 0xf8, 0xfc, 0xd8, 0x68, 0xf8, ++ 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0x90, 0x00, 0x00, ++ 0x08, 0x09, 0x1f, 0x25, 0x7f, 0x2b, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x29, 0x40, 0x00, 0x00, ++ 0x60, 0xf8, 0x68, 0xf8, 0x68, 0xf8, 0x00, 0xfc, ++ 0xf8, 0x88, 0xf8, 0x50, 0xfc, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x24, 0x7e, 0x2b, 0x3e, 0x2b, ++ 0x3e, 0x04, 0x3a, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x88, 0x50, 0xfc, 0x20, 0xf8, 0xfc, 0xd0, 0xf8, ++ 0x94, 0xf0, 0xf0, 0xa8, 0xd0, 0x0c, 0x00, 0x00, ++ 0x08, 0x08, 0x1f, 0x25, 0x7f, 0x2b, 0x3f, 0x2b, ++ 0x3f, 0x05, 0x3b, 0x2f, 0x2a, 0x41, 0x00, 0x00, ++ 0x20, 0x38, 0xfc, 0x68, 0xd8, 0xf8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xf8, 0xe8, 0xe8, 0xfc, 0x00, 0x00, ++ 0x01, 0x0f, 0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x15, ++ 0x12, 0x20, 0x07, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0xf8, 0x48, ++ 0xa8, 0x30, 0xc0, 0x40, 0x44, 0x3c, 0x00, 0x00, ++ 0x02, 0x1f, 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x1f, ++ 0x10, 0x07, 0x04, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xe0, 0xe0, 0xfc, 0x00, 0xf8, ++ 0x08, 0x88, 0xf0, 0x84, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x00, 0x39, 0x09, 0x09, 0x09, 0x19, 0x15, ++ 0x15, 0x23, 0x20, 0x43, 0x02, 0x04, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0xa4, 0x54, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x24, 0x24, 0x24, 0x7e, 0x0c, 0x0c, ++ 0x14, 0x14, 0x24, 0x45, 0x05, 0x0e, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x12, 0x12, 0x14, 0x14, 0x1c, ++ 0x14, 0x14, 0x24, 0x25, 0x45, 0x06, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xf8, 0x88, 0xf8, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x1f, 0x10, 0x13, 0x12, 0x13, 0x13, 0x13, ++ 0x12, 0x13, 0x26, 0x25, 0x49, 0x10, 0x00, 0x00, ++ 0x00, 0xfc, 0x80, 0xf0, 0x10, 0xf0, 0xf0, 0xfc, ++ 0x00, 0xfc, 0xa4, 0x54, 0x04, 0x18, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x22, 0x3e, 0x3f, ++ 0x20, 0x3f, 0x0d, 0x3d, 0x32, 0x4d, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x28, 0x28, 0x28, 0xfc, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x08, 0x3f, 0x2a, 0x48, 0x0c, ++ 0x0c, 0x15, 0x16, 0x25, 0x41, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x3f, 0x22, 0x40, 0x1c, 0x04, 0x14, ++ 0x14, 0x14, 0x22, 0x23, 0x41, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x01, 0x0f, 0x0a, 0x7f, 0x05, 0x1f, 0x64, 0x07, ++ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00, ++ 0x00, 0xe0, 0x20, 0xfc, 0x40, 0xf0, 0x4c, 0xc0, ++ 0xc0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00, ++ 0x15, 0x0e, 0x19, 0x3f, 0x21, 0x4f, 0x08, 0x0f, ++ 0x0f, 0x0f, 0x0f, 0x2a, 0x25, 0x40, 0x00, 0x00, ++ 0xa8, 0x70, 0xc8, 0xfc, 0x08, 0xe0, 0x20, 0xe0, ++ 0xe0, 0xfc, 0xf8, 0x48, 0x28, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x09, 0x09, 0x7f, 0x09, 0x09, 0x3d, ++ 0x25, 0x25, 0x25, 0x3e, 0x22, 0x04, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x00, 0x06, 0x38, 0x28, 0x28, 0x3f, 0x28, 0x2a, ++ 0x26, 0x26, 0x3a, 0x63, 0x3d, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x11, 0x19, 0x25, 0x7b, 0x09, 0x09, ++ 0x3f, 0x09, 0x09, 0x0e, 0x72, 0x04, 0x00, 0x00, ++ 0x40, 0x80, 0xf0, 0x10, 0xf0, 0x10, 0xf0, 0xfc, ++ 0x00, 0xfc, 0x54, 0xac, 0x84, 0x18, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x22, 0x3e, 0x23, 0x3e, 0x3f, ++ 0x20, 0x3f, 0x0d, 0x3d, 0x31, 0x46, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x88, 0x40, 0x40, 0x4c, ++ 0x70, 0x40, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7c, 0x00, 0x7e, ++ 0x12, 0x12, 0x12, 0x1d, 0x11, 0x12, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x12, 0x22, 0x54, ++ 0x0c, 0x08, 0x0c, 0x15, 0x21, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xf0, 0x90, 0xf0, 0x90, 0xf0, 0xfc, ++ 0x80, 0xfc, 0x54, 0xbc, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x14, 0x12, 0x22, 0x7e, 0x00, 0x3e, ++ 0x22, 0x22, 0x3e, 0x23, 0x21, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x0c, 0x12, 0x7d, 0x08, 0x28, 0x3e, 0x28, ++ 0x48, 0x7f, 0x08, 0x09, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x11, 0x12, 0x27, 0x4c, 0x0f, 0x14, 0x17, 0x37, ++ 0x54, 0x17, 0x13, 0x1f, 0x1c, 0x11, 0x00, 0x00, ++ 0x00, 0x3c, 0x80, 0x80, 0x80, 0xbc, 0x88, 0xe8, ++ 0x08, 0xc8, 0x48, 0x48, 0x48, 0x98, 0x00, 0x00, ++ 0x00, 0x7e, 0x24, 0x24, 0x3c, 0x24, 0x24, 0x3c, ++ 0x24, 0x24, 0x3c, 0x65, 0x05, 0x06, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x0c, 0x16, 0x75, 0x15, 0x14, 0x7f, 0x15, 0x15, ++ 0x1e, 0x72, 0x17, 0x1b, 0x11, 0x31, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c, ++ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00, ++ 0x06, 0x38, 0x7f, 0x0c, 0x79, 0x1f, 0x04, 0x07, ++ 0x07, 0x07, 0x07, 0x15, 0x12, 0x20, 0x00, 0x00, ++ 0x50, 0x48, 0xfc, 0x70, 0xb4, 0xec, 0x20, 0xe0, ++ 0xe0, 0xfc, 0xf8, 0x48, 0xa8, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x1e, 0x24, 0x7e, 0x2a, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x22, 0x23, 0x23, 0x46, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x3e, 0x00, 0x3e, 0x22, 0x3e, ++ 0x22, 0x3e, 0x22, 0x23, 0x23, 0x26, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x7f, 0x08, 0x2a, 0x2a, 0x2a, 0x2a, 0x3d, ++ 0x4d, 0x48, 0x08, 0x0f, 0x71, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x22, 0x3e, 0x22, 0x3e, 0x22, ++ 0x22, 0x3e, 0x18, 0x15, 0x25, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x14, 0x14, 0x14, 0x7f, 0x14, 0x14, 0x7f, 0x00, ++ 0x3e, 0x22, 0x3e, 0x23, 0x3f, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x7f, 0x00, 0x3c, 0x24, 0x3c, 0x00, 0x3e, ++ 0x04, 0x0e, 0x78, 0x09, 0x09, 0x1a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, 0x2a, ++ 0x3e, 0x1c, 0x1a, 0x29, 0x49, 0x0a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x7f, 0x6b, 0x5d, 0x7f, ++ 0x18, 0x1c, 0x2a, 0x49, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x10, 0x3e, 0x2a, 0x2a, 0x3e, 0x2a, 0x3e, ++ 0x14, 0x24, 0x7e, 0x05, 0x05, 0x06, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x14, 0x17, 0x29, 0x2e, ++ 0x72, 0x2c, 0x26, 0x2b, 0x31, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x77, 0x55, 0x77, 0x00, 0x3c, 0x00, 0x7e, ++ 0x10, 0x1c, 0x24, 0x05, 0x05, 0x1a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x7f, 0x08, 0x3e, 0x2a, 0x3e, ++ 0x2a, 0x3e, 0x08, 0x7f, 0x09, 0x0a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x14, 0x7f, 0x1a, 0x29, 0x5f, 0x04, ++ 0x07, 0x07, 0x07, 0x07, 0x15, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xfc, 0x90, 0x60, 0x9c, 0xe0, 0x20, ++ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00, ++ 0x0c, 0x24, 0x2a, 0x49, 0x14, 0x3e, 0x00, 0x7e, ++ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x36, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x06, 0x3c, 0x2a, 0x49, 0x14, 0x3c, 0x08, 0x14, ++ 0x3e, 0x08, 0x7e, 0x0d, 0x13, 0x62, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x1c, 0x14, 0x22, 0x3d, 0x40, 0x1c, 0x14, 0x22, ++ 0x7f, 0x2e, 0x2e, 0x2f, 0x71, 0x02, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x3e, 0x22, 0x2e, 0x2a, 0x7f, 0x41, 0x3e, ++ 0x22, 0x3e, 0x22, 0x3f, 0x23, 0x26, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x00, 0x7e, 0x12, 0x12, 0x7e, 0x48, 0x7e, 0x5a, ++ 0x36, 0x5a, 0x36, 0x5b, 0x13, 0x6e, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x6b, 0x08, 0x6f, 0x14, 0x12, 0x3f, 0x52, ++ 0x1e, 0x12, 0x1e, 0x13, 0x13, 0x16, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x13, 0x1c, 0x11, 0x0f, 0x2e, 0x2a, 0x2e, 0x2e, ++ 0x2a, 0x2e, 0x3f, 0x2d, 0x13, 0x62, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x7f, 0x08, 0x3e, 0x22, 0x3e, 0x3e, 0x22, ++ 0x3e, 0x00, 0x7f, 0x0d, 0x13, 0x62, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x10, 0x1e, 0x1a, 0x24, 0x54, 0x18, 0x7e, 0x28, ++ 0x7f, 0x2a, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x14, 0x7f, 0x3e, 0x09, 0x0f, ++ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00, ++ 0x40, 0x40, 0xf0, 0x50, 0xd4, 0xb4, 0x0c, 0xe0, ++ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x2a, 0x2a, 0x3f, 0x2a, 0x2e, ++ 0x2a, 0x20, 0x3e, 0x57, 0x57, 0x21, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xec, 0xc4, 0x18, 0x00, 0x00, ++ 0x00, 0x3f, 0x0a, 0x04, 0x7f, 0x1d, 0x64, 0x3f, ++ 0x2d, 0x37, 0x2f, 0x2b, 0x2f, 0x23, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0xf8, 0x48, 0x78, 0x7c, ++ 0x40, 0x7c, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00, ++ 0x12, 0x14, 0x3f, 0x68, 0x3e, 0x28, 0x3e, 0x28, ++ 0x3f, 0x04, 0x3e, 0x2f, 0x29, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x06, 0x3a, 0x2a, 0x1c, 0x7f, 0x1c, 0x2a, 0x7e, ++ 0x2a, 0x3e, 0x2a, 0x3f, 0x21, 0x22, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x55, 0x32, 0x3f, 0x62, 0x3e, ++ 0x22, 0x3e, 0x2a, 0x29, 0x49, 0x1a, 0x00, 0x00, ++ 0x20, 0x40, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0xfc, ++ 0x80, 0xfc, 0x54, 0xac, 0x44, 0x18, 0x00, 0x00, ++ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x21, 0x4f, 0x0f, ++ 0x08, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00, ++ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x08, 0xe0, 0xe0, ++ 0x20, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00, ++ 0x00, 0x3b, 0x2a, 0x3b, 0x3b, 0x2a, 0x3b, 0x1b, ++ 0x24, 0x7f, 0x0a, 0x1e, 0x0d, 0x31, 0x00, 0x00, ++ 0x10, 0xa0, 0xb8, 0xa8, 0xb8, 0xa8, 0xb8, 0x3c, ++ 0xa0, 0xbc, 0x34, 0xf4, 0xc4, 0x18, 0x00, 0x00, ++ 0x14, 0x7f, 0x14, 0x77, 0x55, 0x77, 0x14, 0x3f, ++ 0x68, 0x3e, 0x3e, 0x28, 0x3f, 0x21, 0x00, 0x00, ++ 0x10, 0x20, 0x78, 0x48, 0x78, 0x48, 0x78, 0x7c, ++ 0x40, 0x7c, 0x34, 0xfc, 0xc4, 0x18, 0x00, 0x00, ++ 0x13, 0x17, 0x6b, 0x1b, 0x7f, 0x3a, 0x57, 0x1f, ++ 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x22, 0x00, 0x00, ++ 0x90, 0xd4, 0xe8, 0x98, 0xfc, 0xb8, 0xd4, 0xf0, ++ 0xe0, 0xe0, 0xfc, 0xf8, 0x48, 0xb0, 0x00, 0x00, ++ 0x01, 0x01, 0x01, 0x3f, 0x22, 0x21, 0x2c, 0x23, ++ 0x38, 0x25, 0x23, 0x24, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x00, 0xf8, 0x48, 0x48, 0x68, 0x98, ++ 0x98, 0x48, 0x28, 0x88, 0xf8, 0x08, 0x00, 0x00, ++ 0x10, 0x10, 0x1e, 0x11, 0x7f, 0x57, 0x4f, 0x7b, ++ 0x6f, 0x57, 0x73, 0x4b, 0x7e, 0x42, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0xfc, 0x20, 0xe8, 0x28, 0xe8, ++ 0xb0, 0xf0, 0xb4, 0x2c, 0x4c, 0x04, 0x00, 0x00, ++ 0x01, 0x3d, 0x2a, 0x3f, 0x26, 0x3f, 0x2b, 0x3f, ++ 0x22, 0x1f, 0x12, 0x12, 0x7f, 0x00, 0x00, 0x00, ++ 0x00, 0xfc, 0x7c, 0xf8, 0xd8, 0x78, 0xa8, 0xf8, ++ 0x08, 0xf0, 0x90, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x01, 0x03, 0x0c, 0x71, 0x1f, 0x12, 0x1f, 0x12, ++ 0x1f, 0x14, 0x17, 0x24, 0x27, 0x58, 0x00, 0x00, ++ 0x00, 0xe0, 0x40, 0x80, 0xfc, 0x40, 0xf8, 0x48, ++ 0xf8, 0x4c, 0xf0, 0x40, 0x44, 0x3c, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x17, 0x17, ++ 0x1c, 0x2f, 0x27, 0x40, 0x1f, 0x00, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44, ++ 0xbc, 0xf8, 0xf0, 0x80, 0xfc, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x1f, 0x27, 0x47, ++ 0x19, 0x09, 0x7f, 0x07, 0x79, 0x01, 0x00, 0x00, ++ 0x80, 0xfc, 0x40, 0xf8, 0x48, 0xf8, 0x70, 0x44, ++ 0x3c, 0x20, 0xfc, 0xc0, 0x3c, 0x00, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x5e, 0x07, ++ 0x14, 0x17, 0x1f, 0x7f, 0x06, 0x78, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0xe0, ++ 0x20, 0xe0, 0xf0, 0xfc, 0x60, 0x1c, 0x00, 0x00, ++ 0x04, 0x04, 0x3f, 0x2a, 0x3f, 0x2b, 0x2b, 0x3f, ++ 0x34, 0x3d, 0x36, 0x54, 0x5d, 0x33, 0x00, 0x00, ++ 0x48, 0x48, 0x48, 0xfc, 0x48, 0x78, 0x48, 0x78, ++ 0x48, 0xfc, 0x50, 0x48, 0x84, 0x04, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x23, 0x4e, 0x1f, ++ 0x17, 0x1f, 0x13, 0x1d, 0x1f, 0x10, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0xe4, 0x3c, 0xf0, ++ 0xd0, 0xf0, 0x90, 0x50, 0xf0, 0x10, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x2f, 0x4e, 0x32, ++ 0x1c, 0x1e, 0x10, 0x1f, 0x0c, 0x70, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x70, 0x44, 0x3c, ++ 0xf0, 0xf0, 0x10, 0xf0, 0x84, 0x7c, 0x00, 0x00, ++ 0x00, 0x1f, 0x1f, 0x12, 0x1f, 0x27, 0x4e, 0x1e, ++ 0x13, 0x1e, 0x1e, 0x7e, 0x1a, 0x66, 0x00, 0x00, ++ 0x80, 0xfc, 0xf8, 0x48, 0xf8, 0x74, 0x3c, 0x10, ++ 0xfc, 0x90, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x01, 0x01, 0x7f, 0x09, 0x19, 0x27, 0x05, 0x19, ++ 0x63, 0x0e, 0x31, 0x01, 0x06, 0x38, 0x00, 0x00, ++ 0x00, 0x00, 0xfc, 0x20, 0x30, 0xc8, 0x40, 0x30, ++ 0xec, 0x20, 0x40, 0xc0, 0x20, 0x00, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1a, 0x29, ++ 0x4e, 0x12, 0x2c, 0x45, 0x1b, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x08, 0x7f, 0x10, ++ 0x1e, 0x32, 0x4c, 0x05, 0x1b, 0x60, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0x20, 0x20, 0xfc, 0x20, ++ 0x50, 0x50, 0x88, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x08, 0x09, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a, ++ 0x4e, 0x12, 0x2c, 0x44, 0x1a, 0x60, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0xa0, 0xb8, 0xa8, 0xa8, 0xa8, ++ 0xf8, 0x88, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x2a, 0x2a, 0x5d, 0x1c, 0x2a, ++ 0x4e, 0x12, 0x2c, 0x44, 0x1b, 0x60, 0x00, 0x00, ++ 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8, 0xe8, ++ 0xb0, 0x80, 0x84, 0x7c, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x1f, 0x12, 0x1f, 0x17, 0x17, 0x1a, 0x11, ++ 0x1f, 0x1f, 0x21, 0x3f, 0x42, 0x0c, 0x00, 0x00, ++ 0x80, 0xfc, 0x10, 0xfc, 0x38, 0xbc, 0xd4, 0x40, ++ 0x7c, 0x78, 0xc0, 0x7c, 0x40, 0x40, 0x00, 0x00, ++ 0x0a, 0x11, 0x1a, 0x19, 0x3f, 0x24, 0x5f, 0x07, ++ 0x7f, 0x0f, 0x0f, 0x09, 0x0f, 0x38, 0x00, 0x00, ++ 0xb0, 0x90, 0xb0, 0xb0, 0xfc, 0x48, 0xf0, 0xc0, ++ 0xfc, 0xe0, 0xe0, 0x20, 0xe0, 0x38, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x49, 0x0a, ++ 0x0d, 0x79, 0x05, 0x07, 0x39, 0x03, 0x00, 0x00, ++ 0x40, 0x40, 0xf8, 0x28, 0x48, 0x88, 0x30, 0x80, ++ 0x60, 0x3c, 0xc0, 0x60, 0x18, 0x00, 0x00, 0x00, ++ 0x06, 0x38, 0x08, 0x7f, 0x1c, 0x2a, 0x4d, 0x1c, ++ 0x6b, 0x2e, 0x1c, 0x6b, 0x08, 0x18, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x06, 0x38, 0x09, 0x7f, 0x1c, 0x2a, 0x49, 0x1c, ++ 0x2a, 0x6d, 0x1d, 0x6b, 0x09, 0x19, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x98, 0xe8, 0xb8, 0xc8, 0xf8, ++ 0x20, 0xfc, 0x54, 0xec, 0x04, 0x0c, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, ++ 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xa8, 0xa8, 0xa8, 0xf8, 0xa8, 0x20, ++ 0xa8, 0xa8, 0xa8, 0xa8, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20, 0xf8, ++ 0x88, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3e, 0x2a, 0x2e, 0x3b, 0x3f, 0x08, 0x3e, ++ 0x0c, 0x71, 0x1f, 0x2e, 0x2e, 0x40, 0x00, 0x00, ++ 0x90, 0x90, 0x90, 0x90, 0x50, 0x7c, 0xd4, 0x94, ++ 0xd4, 0x54, 0xe4, 0x24, 0x44, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0xf8, 0x00, ++ 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x10, 0x10, 0xfc, 0x00, 0x78, 0x48, 0x48, 0x78, ++ 0x10, 0x58, 0x54, 0x94, 0x10, 0x30, 0x00, 0x00, ++ 0x09, 0x05, 0x3f, 0x27, 0x47, 0x1f, 0x19, 0x15, ++ 0x1f, 0x3f, 0x01, 0x7f, 0x24, 0x42, 0x00, 0x00, ++ 0x20, 0x40, 0xfc, 0xc8, 0xc0, 0xf0, 0x30, 0x50, ++ 0xf0, 0xf8, 0x00, 0xfc, 0x88, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x35, 0x2f, 0x2d, 0x3f, 0x04, 0x3f, ++ 0x06, 0x78, 0x1a, 0x2d, 0x2d, 0x40, 0x00, 0x00, ++ 0x20, 0x20, 0xfc, 0x48, 0x30, 0xfc, 0x00, 0x78, ++ 0x48, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x12, 0x1a, 0x2f, 0x5f, 0x1f, 0x1b, 0x2e, 0x6f, ++ 0x2f, 0x22, 0x3f, 0x2f, 0x2b, 0x30, 0x00, 0x00, ++ 0x20, 0xa0, 0xa0, 0xe0, 0xbc, 0xe8, 0xe8, 0xa8, ++ 0x98, 0x10, 0xd8, 0xa8, 0xc4, 0x84, 0x00, 0x00, ++ 0x00, 0x1f, 0x17, 0x17, 0x1f, 0x2f, 0x4f, 0x0f, ++ 0x0d, 0x0f, 0x1f, 0x7f, 0x24, 0x42, 0x00, 0x00, ++ 0x00, 0xfc, 0x14, 0x7c, 0x90, 0xb0, 0xc8, 0xe4, ++ 0x60, 0xe0, 0xf0, 0xfc, 0x88, 0x44, 0x00, 0x00, ++ 0x00, 0x3f, 0x2a, 0x2e, 0x3b, 0x3f, 0x09, 0x3e, ++ 0x0c, 0x70, 0x1e, 0x2e, 0x28, 0x43, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0xfc, 0x5c, 0xfc, 0xf8, ++ 0x88, 0xf8, 0xf8, 0xf8, 0xc8, 0x04, 0x00, 0x00, ++ 0x02, 0x12, 0x0a, 0x7f, 0x11, 0x11, 0x3f, 0x51, ++ 0x15, 0x15, 0x15, 0x19, 0x11, 0x11, 0x00, 0x00, ++ 0x80, 0x90, 0xa0, 0xfc, 0x10, 0x08, 0xf4, 0x14, ++ 0x50, 0x50, 0x50, 0x50, 0x10, 0x30, 0x00, 0x00, ++ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a, ++ 0x3e, 0x3e, 0x3e, 0x2b, 0x2a, 0x27, 0x00, 0x00, ++ 0x30, 0x28, 0x28, 0x20, 0xfc, 0x20, 0x28, 0x28, ++ 0x68, 0x70, 0x90, 0x30, 0xc8, 0x04, 0x00, 0x00, ++ 0x14, 0x55, 0x36, 0x7f, 0x0a, 0x29, 0x7f, 0x2a, ++ 0x3e, 0x3e, 0x3e, 0x2a, 0x2a, 0x26, 0x00, 0x00, ++ 0x28, 0x24, 0xfc, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, ++ 0xa8, 0xf8, 0xa8, 0xa8, 0xa8, 0x98, 0x00, 0x00, ++ 0x00, 0x3f, 0x22, 0x3e, 0x02, 0x3e, 0x22, 0x3e, ++ 0x22, 0x22, 0x3e, 0x22, 0x02, 0x01, 0x00, 0x00, ++ 0x00, 0xf8, 0x88, 0xf8, 0x80, 0xf8, 0x88, 0xf8, ++ 0x88, 0x88, 0xf8, 0x88, 0x04, 0xfc, 0x00, 0x00, ++ 0x08, 0x3e, 0x7f, 0x08, 0x7f, 0x1e, 0x26, 0x5f, ++ 0x1e, 0x3e, 0x3e, 0x22, 0x3e, 0x21, 0x00, 0x00, ++ 0x20, 0x20, 0x7c, 0xc8, 0x30, 0x30, 0xcc, 0xf0, ++ 0xf0, 0xf8, 0xf8, 0x88, 0xfc, 0xfc, 0x00, 0x00, ++ 0x2a, 0x49, 0x7f, 0x5d, 0x6b, 0x49, 0x1f, 0x1e, ++ 0x32, 0x22, 0x3a, 0x3a, 0x22, 0x01, 0x00, 0x00, ++ 0x40, 0x7c, 0xc8, 0x28, 0x30, 0xcc, 0xf0, 0xf0, ++ 0xf8, 0x88, 0xf8, 0xf8, 0x84, 0xfc, 0x00, 0x00, ++ 0x08, 0x08, 0x7f, 0x08, 0x3e, 0x00, 0x3e, 0x22, ++ 0x3e, 0x24, 0x15, 0x1f, 0x1a, 0x65, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xfc, 0xa8, 0xa0, 0xf8, 0xc8, ++ 0xd0, 0xb0, 0x20, 0x50, 0x88, 0x04, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x1e, 0x12, 0x1e, 0x0f, 0x73, ++ 0x06, 0x19, 0x07, 0x79, 0x00, 0x07, 0x00, 0x00, ++ 0x20, 0xfc, 0x20, 0xf8, 0x50, 0x70, 0x8c, 0xe0, ++ 0x40, 0x80, 0xe0, 0x9c, 0xc0, 0x00, 0x00, 0x00, ++ 0x02, 0x11, 0x09, 0x08, 0x1f, 0x11, 0x11, 0x1f, ++ 0x11, 0x11, 0x1f, 0x21, 0x21, 0x41, 0x00, 0x00, ++ 0x10, 0x10, 0x20, 0x40, 0xf0, 0x10, 0x10, 0xf0, ++ 0x10, 0x10, 0xf4, 0x0c, 0x0c, 0x04, 0x00, 0x00, ++ 0x08, 0x36, 0x22, 0x36, 0x22, 0x3e, 0x2a, 0x2a, ++ 0x3e, 0x2a, 0x3d, 0x29, 0x3e, 0x48, 0x00, 0x00, ++ 0x20, 0x20, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0xa8, ++ 0xa8, 0xf8, 0x88, 0x04, 0xc4, 0x3c, 0x00, 0x00, ++ 0x08, 0x1e, 0x12, 0x1e, 0x1e, 0x1e, 0x3f, 0x3f, ++ 0x25, 0x3f, 0x7f, 0x12, 0x12, 0x22, 0x00, 0x00, ++ 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0xfc, 0x20, ++ 0x20, 0x20, 0xa0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x7f, 0x02, 0x7d, 0x15, 0x15, 0x2d, 0x48, ++ 0x0f, 0x08, 0x0f, 0x08, 0x10, 0x20, 0x00, 0x00, ++ 0x00, 0xfc, 0x88, 0x70, 0x50, 0x50, 0xe8, 0x24, ++ 0xe0, 0x20, 0xe0, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x01, 0x09, 0x09, 0x09, 0x7f, 0x24, 0x2a, 0x33, ++ 0x3f, 0x24, 0x2a, 0x33, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0x00, 0xf0, 0x00, 0xfc, 0x48, 0xa8, 0x28, ++ 0xf8, 0x48, 0xa8, 0x28, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2a, 0x2a, 0x35, ++ 0x3f, 0x2a, 0x2a, 0x35, 0x3f, 0x20, 0x00, 0x00, ++ 0x20, 0x20, 0xa0, 0x20, 0xe4, 0xa4, 0xa8, 0xb0, ++ 0xa0, 0xa0, 0xa0, 0xa4, 0xa4, 0x9c, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x40, 0x40, 0x40, 0x78, 0x88, 0xe8, 0xa8, 0xa8, ++ 0xe8, 0xa8, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x48, 0x48, ++ 0x78, 0x48, 0x48, 0x48, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xf8, 0x28, 0x28, 0xa8, 0x48, 0xb0, 0x00, ++ 0x78, 0x48, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x20, 0x20, 0x50, 0x50, 0x88, 0x74, 0x00, 0xf8, ++ 0x28, 0x28, 0x30, 0x20, 0x20, 0x20, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0xf8, 0x48, 0x48, 0x78, ++ 0x64, 0x68, 0x50, 0x50, 0x68, 0x84, 0x00, 0x00, ++ 0x08, 0x7f, 0x3e, 0x0e, 0x79, 0x09, 0x7f, 0x26, ++ 0x29, 0x3f, 0x26, 0x29, 0x3f, 0x20, 0x00, 0x00, ++ 0x00, 0xf8, 0x48, 0x88, 0x30, 0xf0, 0xfc, 0x48, ++ 0xa8, 0xf8, 0x48, 0xa8, 0xf8, 0x08, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0x20, 0x20, 0xf8, 0x48, 0x48, 0xfc, ++ 0x00, 0x78, 0x48, 0x48, 0x78, 0x48, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x48, 0xc8, 0x78, 0x10, 0x50, ++ 0x5c, 0x50, 0x50, 0x70, 0x90, 0x0c, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0x78, 0x48, 0x78, 0xc0, 0x7c, 0x58, 0x54, ++ 0x7c, 0x50, 0x7c, 0x90, 0xfc, 0x00, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x18, 0xe0, 0x20, 0xf8, 0xa8, 0xa8, 0xf8, 0x20, ++ 0xfc, 0xd4, 0xfc, 0x84, 0x84, 0x8c, 0x00, 0x00, ++ 0x04, 0x14, 0x17, 0x14, 0x7f, 0x2b, 0x2b, 0x35, ++ 0x3f, 0x2b, 0x2b, 0x35, 0x3f, 0x21, 0x00, 0x00, ++ 0x00, 0xfc, 0xb4, 0xfc, 0x00, 0x78, 0x00, 0xfc, ++ 0x20, 0x38, 0x48, 0x08, 0x08, 0x30, 0x00, 0x00, ++ 0x01, 0x02, 0x0f, 0x7f, 0x08, 0x0f, 0x3f, 0x12, ++ 0x7f, 0x1e, 0x1e, 0x1e, 0x12, 0x16, 0x00, 0x00, ++ 0x00, 0x80, 0xe0, 0xfc, 0x20, 0xe0, 0xf8, 0xf0, ++ 0x10, 0xf0, 0xf0, 0xf0, 0xf4, 0x7c, 0x00, 0x00, ++ 0x02, 0x07, 0x19, 0x7f, 0x12, 0x1e, 0x3a, 0x7e, ++ 0x3a, 0x3a, 0x7e, 0x0a, 0x3a, 0x01, 0x00, 0x00, ++ 0x00, 0xc0, 0x00, 0xf0, 0x90, 0xf0, 0x80, 0xf8, ++ 0xd8, 0xa8, 0xd8, 0xfc, 0x84, 0xfc, 0x00, 0x00, ++ 0x01, 0x02, 0x04, 0x1f, 0x60, 0x3b, 0x2a, 0x3b, ++ 0x00, 0x1f, 0x12, 0x1f, 0x12, 0x12, 0x00, 0x00, ++ 0x00, 0x80, 0x40, 0xf0, 0x0c, 0xb8, 0xa8, 0xb8, ++ 0x00, 0xf0, 0x90, 0xf0, 0x90, 0xb0, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x01, 0x1f, 0x01, 0x3f, 0x08, 0x3e, 0x08, 0x0f, ++ 0x70, 0x3f, 0x02, 0x04, 0x18, 0x60, 0x00, 0x00, ++ 0x00, 0xf0, 0x00, 0xf8, 0x20, 0xf8, 0x20, 0xfc, ++ 0x00, 0xf8, 0x40, 0x44, 0x44, 0x3c, 0x00, 0x00, ++ 0x08, 0x08, 0x08, 0x7f, 0x09, 0x19, 0x1d, 0x1b, ++ 0x2b, 0x29, 0x49, 0x09, 0x08, 0x0b, 0x00, 0x00, ++ 0x98, 0xe0, 0x84, 0x7c, 0x78, 0x48, 0x78, 0x48, ++ 0x78, 0x48, 0x78, 0xfc, 0xd8, 0x04, 0x00, 0x00, ++ 0x20, 0x10, 0x11, 0x46, 0x21, 0x2f, 0x02, 0x77, ++ 0x12, 0x12, 0x13, 0x1a, 0x26, 0x41, 0x00, 0x00, ++ 0x40, 0xf8, 0x90, 0x60, 0x80, 0xf8, 0x40, 0xfc, ++ 0x48, 0x48, 0xf8, 0x08, 0x00, 0xfc, 0x00, 0x00, ++ 0x00, 0x00, 0x7c, 0x11, 0x16, 0x10, 0x7f, 0x11, ++ 0x12, 0x17, 0x1e, 0x62, 0x03, 0x02, 0x00, 0x00, ++ 0x40, 0x78, 0xc8, 0x30, 0xa0, 0xc0, 0x00, 0xf8, ++ 0x40, 0xfc, 0x48, 0x48, 0xf8, 0x08, 0x00, 0x00 ++}; +diff -Nur linux_c860_org/drivers/video/shepherdLogoMsg.c linux/drivers/video/shepherdLogoMsg.c +--- linux_c860_org/drivers/video/shepherdLogoMsg.c 2003-07-12 18:18:36.000000000 +0900 ++++ linux/drivers/video/shepherdLogoMsg.c 2004-06-10 21:09:11.000000000 +0900 +@@ -2,147 +2,257 @@ + #ifndef __initdata + #define __initdata + #endif +-static const int logo_msg_width __initdata = 20; +-static const int logo_msg_height __initdata = 140; +-static const unsigned short logo_msg_data[20*140] __initdata ={ +- 0xffff,0x3186,0x0000,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0861,0x0861,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x0841,0x18e3, +- 0xffff,0x39e7,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x18e3,0x18e3,0x2104,0x18c3,0x0000,0x0861, +- 0xad37,0x83f3,0x83f3,0x8bf3,0x8bf3,0x8bf3,0x8bf3,0x8bf3,0x8c33,0x7b91,0x0862,0x0862,0x7b90,0x8c33,0x8bf3,0x8bf3,0x8c33,0x7b91,0x1062,0x0841, +- 0xb558,0xa4b6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4f7,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d6,0xa4d6,0xa4f7,0xa4d6,0x83f3,0x1082,0x0841, +- 0xf79e,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xe73d,0x8c33,0x1082,0x18c3,0xd6ba,0xf79e,0xf79e,0xf79e,0xe73d,0x8c33,0x1082,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c34,0x1082,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xffff,0xffff,0xf79e,0x9454,0x1082,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xffff,0xffff,0xffff,0xf79e,0x83d2,0x0862,0x0841, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x9454,0x20e4,0x0000,0x3186,0xd69a,0xef7d,0xef7d,0xc639,0x18e4,0x0000,0x2104, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xa4d6,0x7bb1,0x3166,0x18c3,0x2124,0x2124,0x2124,0x2104,0x1062,0x20e4,0xbdf7, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad37,0x9475,0x9cb5,0xb5b7,0x2965,0x10a2,0x1082,0x20e4,0x7370,0x9475,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73d,0xad37,0xa4d6,0xa4f7,0x9474,0x9454,0x9454,0x8c34,0xad17,0xe71d,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xef3d,0xad17,0xa4b6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff, +- 0xffff,0xe71c,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xd69a,0xd69a,0xd69a,0xd69a,0xdefb,0xdefb,0xdefb,0xdefb, +- 0xffff,0x39e7,0x1082,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10a2,0x2124, +- 0xf79e,0x39c7,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x10a2,0x2124, +- 0xb558,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c13,0x9454,0xdefb, +- 0xb558,0x9cb6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4b6,0xa4f7,0xffff, +- 0xf79e,0xf77e,0xf79e,0xf79e,0xef7e,0xd6ba,0xce7a,0xd69a,0xd69a,0xce7a,0xd6ba,0xef7e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf77e,0xf79e,0xffff, +- 0xffff,0xffff,0xffff,0xf79e,0xce79,0x3186,0x10a2,0x2104,0x2104,0x10a2,0x3186,0xce79,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xce79,0x39e7,0x18e3,0x20e4,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x18e3,0x39e7,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xe73c,0x31a6,0x0000,0x18e4,0x83f2,0x83f2,0x1062,0x0862,0x8c12,0xc618,0x2965,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xb5b7,0x0841,0x18c3,0x83f2,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d7,0x8c53,0x2124,0x1082,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7be,0x2945,0x0841,0x83d1,0xef5e,0xef5d,0x8c33,0x1082,0x18c3,0xce7a,0xad17,0x9c75,0x83f2,0x1082,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xe73d,0x1082,0x1082,0xce7a,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xef5d,0xad17,0x8c34,0x18e3,0x10a2,0xdedb,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x1082,0x18c3,0xe71c,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xe73d,0x7bb1,0x0861,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x2105,0x1082,0xc638,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xc639,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x7bb1,0x1082,0x2965,0xce79,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xd69a,0x2945,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad38,0x9454,0x31a6,0x0000,0x3186,0xdefc,0x9454,0x1082,0x0000,0x18c3,0x18e3,0x0862,0x2104,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xe73d,0x9cb6,0x8412,0x2945,0x3186,0xdedb,0x9474,0x2105,0x18c3,0x1082,0x20e4,0x7370,0x9cd5,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7be,0xad38,0x9475,0x9cb5,0xdefb,0xf79e,0xa4d6,0x83f3,0x8c33,0x8c33,0x8c33,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xef5d,0xad17,0x9cb5,0xdedb,0xd69a,0x9cb5,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xc638,0x3186,0x10a2,0x10a2,0x3186,0xc618,0xf77e,0xf79e,0xffdf,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xd69a,0x3186,0x0000,0x10a2,0x10a2,0x0000,0x31a6,0xd69a,0xffff,0xe71c,0x31a6,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x39c7,0x0000,0x20e4,0x83f2,0x8c33,0x2966,0x0000,0x39c7,0xef5d,0xdedb,0x31a6,0x0861,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xef5e,0x18a3,0x0841,0x7bb1,0xa4b6,0x9c75,0x8412,0x1082,0x18e3,0xd6ba,0xad37,0x9c95,0xb576,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x1082,0x10a2,0xd69a,0xef5e,0xad37,0x8c13,0x18e4,0x10a2,0xc618,0xad38,0x9cb6,0x9494,0x18e3,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x2104,0x0861,0xc638,0xffff,0xef3d,0x9cb6,0x7b91,0x10a2,0x39c7,0xdefb,0xe71d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x83f2,0x3186,0x2965,0xce79,0xf7be,0xad17,0x8c34,0x18e3,0x18c3,0xdefb,0xf79e,0x83d2,0x0861,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xad38,0x9cb6,0xad76,0x0861,0x2965,0xce59,0xd69b,0x7bb1,0x1082,0x10a2,0xce59,0xce59,0x20e4,0x0000,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xef5d,0x8c33,0x2125,0x0000,0x0000,0x18c3,0x2104,0x1082,0x0000,0x0000,0x18e3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x3186,0x0000,0x0862,0x18c3,0x10a2,0x1082,0x0861,0x1082,0x18c3,0x1082,0x0841,0x18c3,0x8c33,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xef5e,0x2125,0x18c3,0x7370,0x8c33,0x8c13,0x8c13,0x83d2,0x83d2,0x8c13,0x8c13,0x7bb2,0x9454,0xef3d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad58,0x83f3,0x9454,0xa4d6,0xa4b6,0xa4b6,0xa4b6,0xa4d6,0xa4d6,0xa4b6,0x9cb6,0xad17,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad37,0xad17,0xd67a,0xd67a,0xd69a,0xef5d,0xef7e,0xef7e,0xef5e,0xd69a,0xce7a,0xd67a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0xdedb,0x4208,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xce79,0x39c7,0x18c3,0x18c3,0x39c7,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xbdf7,0x10a2,0x0841,0x39c7,0xe71c,0xffff,0xe71c,0x31a6,0x0000,0x18c3,0x18c3,0x0000,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7be,0x2925,0x0861,0x83f2,0xdefc,0xffdf,0xffff,0xce5a,0x1082,0x0862,0x83d2,0x9453,0x2966,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xe73d,0x1082,0x1082,0x9c95,0xf79e,0xffff,0xf79e,0x8c33,0x0862,0x1082,0x8c33,0x9c75,0x8412,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xad38,0x10a3,0x18c3,0xd6bb,0xffff,0xffff,0xdedb,0x2925,0x0000,0x31a6,0xd69a,0xad37,0x83f3,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x10a3,0x18c3,0xe71c,0xffff,0xffff,0xce5a,0x1082,0x0861,0xbdf7,0xffff,0xef3d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x10a3,0x1082,0xce59,0xffff,0xf7be,0x8c33,0x0861,0x1082,0xd69a,0xffff,0xf79e,0x7bd1,0x0861,0x3166,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x2925,0x0000,0x3186,0xd69a,0xc639,0x20e4,0x0000,0x3186,0xe73c,0xffff,0xc618,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x83d2,0x2945,0x0000,0x18c3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xe73c,0x2966,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9c75,0x8c33,0x3186,0x1082,0x0862,0x18e4,0x8c33,0xf79e,0xffff,0xce7a,0x18e4,0x18c3,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xef5d,0xad17,0x9475,0x8c54,0x8c33,0x83f3,0x9cb5,0xef5d,0xffff,0xf79e,0xad17,0x83f3,0x9c95,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xef5d,0xad37,0xa4b6,0xa4b6,0x9cb5,0xce7a,0xdefb,0xdefb,0xd69a,0x9c95,0xad17,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xf77e,0xdedb,0xbdf7,0x2965,0x10a2,0x2104,0x2104,0x10a2,0x2965,0xbdd7,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xce59,0x31a6,0x10a2,0x18e3,0x18c3,0x0000,0x0000,0x18c3,0x2104,0x10a2,0x31a6,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xe73c,0x39a7,0x0000,0x18e4,0x83f2,0x83f2,0x1062,0x0862,0x8c12,0xbdf8,0x2965,0x0000,0x39c7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xb596,0x0841,0x18c3,0x83f2,0xa4d6,0x83f3,0x1082,0x1082,0x9454,0xa4d6,0x8c33,0x2125,0x1082,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7be,0x2125,0x0841,0x83f2,0xef5e,0xef5d,0x8c33,0x1082,0x18c3,0xce7a,0xad17,0x9c75,0x8c12,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xe73d,0x1082,0x1082,0xce7a,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xef5d,0xad17,0x8c34,0x18e3,0x10a2,0xdedb,0xffff,0xffff,0xffff,0xffff, +- 0xad38,0x1082,0x18c3,0xe71c,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xef3d,0x7bb1,0x0861,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x2105,0x1082,0xc638,0xffff,0xf79e,0x8c33,0x1082,0x18c3,0xe71c,0xffff,0xc639,0x18c3,0x0841,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x7bb1,0x1082,0x2965,0xce79,0xf79e,0x8c33,0x1082,0x10a2,0xce59,0xd69a,0x2945,0x0000,0x2125,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad38,0x9454,0x31a6,0x0000,0x3186,0xdefc,0x9454,0x1082,0x0000,0x18c3,0x18e3,0x0862,0x2104,0xbdb7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xe73d,0x9cb6,0x8412,0x2945,0x3186,0xdedb,0x9474,0x2105,0x18c3,0x1082,0x20e4,0x7370,0x9cd5,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7be,0xad38,0x9475,0x9494,0xd6bb,0xf77e,0xa4d6,0x83f3,0x8c33,0x8c33,0x8c33,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xef5d,0xad17,0xad17,0xf7be,0xf7bf,0xb558,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xf79e,0xf79e,0xffff,0xffff,0xf79e,0xf77e,0xf77e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xef5d,0xce79,0x2945,0x2965,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xe71c,0xce59,0x39c7,0x18e3,0x2124,0x10a2,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xe71c,0xe71c,0xce59,0x3186,0x10a2,0x18e3,0x18e3,0x1082,0x18e4,0x83f2,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xe71c,0xe73c,0xce59,0x31a6,0x10a2,0x18e3,0x18e3,0x1082,0x20e4,0x83d2,0x9474,0x8c34,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x4208,0x18e3,0x2104,0x0020,0x10a2,0x2125,0x83d2,0x9454,0x8c33,0x9cb6,0xad17,0xef3d,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0x39e7,0x0861,0x0000,0x0862,0x734f,0x8c33,0x8c33,0x9cb5,0xef3d,0xf79e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9474,0x83d2,0x20e4,0x1082,0x2125,0x2945,0x10a2,0x2965,0xbdf7,0xe71c,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9cb6,0x9475,0x8c34,0xc619,0xb596,0x2945,0x10a2,0x2104,0x2965,0x2124,0x18c3,0x31a6,0xc638,0xe73c,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xf7bf,0xef3d,0xad37,0xa4f7,0xad37,0xad17,0x9454,0x9494,0xd69b,0xb5b7,0x18c3,0x0000,0x0000,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xf79e,0xf79e,0xe71d,0xad17,0x9454,0x9454,0x9cb5,0x7bb1,0x1082,0x0000,0x0000,0x1082,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xe73c,0xef5d,0xbdf7,0x2965,0x10a2,0x18e3,0x18a3,0x1082,0x0841,0x18e4,0x8412,0xdedb,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xef5d,0xce59,0x39e7,0x2945,0x39e7,0x2945,0x10a2,0x2945,0x7370,0x83d2,0x7bb2,0x8c13,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x4208,0x0861,0x0000,0x10a2,0x7390,0x8c13,0x8c34,0x9c95,0xa4d6,0xa4b6,0xad17,0xef3d,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf7bf,0x31a7,0x0861,0x1082,0x0020,0x1082,0x2925,0x8c33,0xce7a,0xd6bb,0xef5d,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x8413,0x83d2,0x7bb1,0x2945,0x1082,0x18c3,0x2104,0x18e3,0x31a6,0xce79,0xe73c,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0xa4b6,0xa4d6,0x9c95,0x9454,0x9cb5,0xbdb7,0x2965,0x10a2,0x18e3,0x18e3,0x10a2,0x3186,0xc638,0xe73c,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xf77e,0xf77e,0xe73d,0xad37,0x9cb6,0xa4d6,0xa4f7,0x9454,0x9c95,0xbdb7,0x2965,0x10a2,0x18e3,0x10a2,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xf79e,0xf79e,0xef3d,0xad17,0xa4b6,0xa4d7,0xa4d6,0x8c33,0x9c95,0xb5b7,0x2104,0x2945,0xe71c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xffff,0xe71c,0xdefb,0xdedb,0xd6bb,0xf79e,0xef3d,0xad17,0xa4b6,0xa4d7,0xa4b6,0x9474,0xce59,0xffdf,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xce79,0x31a6,0x10a2,0x10a2,0x31a6,0xce79,0xffff,0xf79e,0xef7e,0xce39,0x9454,0xa4f7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xce79,0x2965,0x0000,0x10a3,0x18c3,0x0000,0x3186,0xce79,0xffff,0xe71c,0x3186,0x2124,0xc5f8,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x39e7,0x0000,0x18e4,0x83d2,0x8c33,0x2945,0x0000,0x39e7,0xef5d,0xdedb,0x3186,0x0841,0x31a6,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xef5e,0x10a3,0x0841,0x7bd1,0xa4d6,0x9c75,0x83f2,0x1082,0x18e3,0xd6bb,0xad17,0x9495,0xad76,0x1082,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x1082,0x10a2,0xd67a,0xef5d,0xad17,0x8c13,0x2105,0x10a2,0xbdf7,0xad37,0x9c96,0x9c95,0x18e3,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x20e4,0x0862,0xce79,0xffff,0xef3d,0x9cb6,0x7bd1,0x10a2,0x3186,0xdedb,0xe71d,0x8c33,0x1082,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xa4f7,0x83d2,0x3186,0x31a6,0xce79,0xf7be,0xad37,0x8c34,0x18e3,0x18c3,0xdefb,0xf79e,0x83d2,0x0861,0x18c3,0xdefb,0xffff,0xffff,0xffff,0xffff, +- 0xad37,0x9cb6,0xb576,0x0861,0x2965,0xce59,0xd6bb,0x7bb1,0x1082,0x10a2,0xce59,0xce59,0x20e4,0x0000,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xef3d,0x8c33,0x2925,0x0000,0x0000,0x18c3,0x2104,0x1062,0x0000,0x0000,0x18e3,0x18c3,0x0000,0x18e4,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x3186,0x0000,0x1082,0x2104,0x18c3,0x18c3,0x1082,0x10a3,0x18e3,0x18c3,0x0862,0x18e4,0x8c33,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xef5e,0x2125,0x18c3,0x7b91,0x9454,0x9454,0x8c33,0x83f2,0x83f2,0x8c33,0x8c33,0x83d2,0x9494,0xef3d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad58,0x83f3,0x8c54,0xa4f7,0xa4d6,0xa4d6,0xa4d6,0xa4f7,0xa4f7,0xa4d6,0xa4b6,0xad37,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xad37,0xad17,0xef3d,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf77e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0xd6bb,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe71c,0xffff,0xffff,0xe71c,0xdedb,0xdefb, +- 0xffff,0x39e7,0x1082,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x10a2,0x31a6,0xe73c,0xe73c,0x31a6,0x0861,0x2124, +- 0xf79e,0x39c7,0x1082,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x31a6,0xe73c,0xdedb,0x31a6,0x0861,0x2124, +- 0xb558,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x9474,0xd6bb,0xf79e,0xad37,0x8c13,0x8c53,0xdefb, +- 0xb558,0x9cb6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4b6,0xad37,0xf7be,0xf7be,0xad37,0x9cb6,0xa4f7,0xffff, +- 0xf79e,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xef7e,0xd69a,0xdefb,0xffdf,0xf79e,0xf77e,0xf79e,0xffff, +- 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x31a6,0x31a6,0xe73c,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xffff,0xe71c,0xdedb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xe73c,0xbdd7,0x10a2,0x10a2,0xc618,0xe73c,0xdedb,0xe71c,0xffdf, +- 0xffff,0xce79,0x31a6,0x10a2,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x18e3,0x1082,0x0000,0x0020,0x18c3,0x18e3,0x10a2,0x31a6,0xe71c, +- 0xffff,0x39c7,0x0000,0x18c3,0x18e3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x18c3,0x1082,0x0000,0x0020,0x18c3,0x18e3,0x1082,0x31a6,0xe71c, +- 0xef5d,0x10a3,0x0861,0x7bb1,0x9454,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x8c33,0x9454,0x7370,0x0861,0x0861,0x7bb1,0x9454,0x9474,0xd6bb,0xffdf, +- 0xb558,0x2105,0x20e4,0x9454,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0xa4d6,0x8c13,0x20e4,0x20e4,0x9454,0xa4b6,0xad37,0xf79e,0xffff, +- 0xa4f7,0x8c33,0xce39,0xf77e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xf79e,0xe73d,0x9cb6,0x8c13,0xce39,0xf77e,0xf77e,0xf79e,0xffff,0xffff, +- 0xb558,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad37,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0xd6ba,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0x39c7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x8c13,0x9474,0xd6bb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0xef7e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xe71c,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0x39c7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x8c13,0x9474,0xd6bb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0xef7e,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0xe71c,0xdedb,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xffff,0x39e7,0x0841,0x31a6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xf79e,0x41e8,0x1082,0x39e7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb558,0x9c96,0xad37,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- 0xb578,0xa4b6,0xb558,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, +- }; ++ ++static int logo_msg_width __initdata = 30; ++static int logo_msg_height __initdata = 250; ++static unsigned short logo_msg_data[] __initdata ={ ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad55,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x738e,0x0020,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0020,0x528a,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x18c3,0x738e,0x9cf3,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x52aa,0x2104,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0x1082,0x18e3,0xef3d,0xffff,0xffff,0xffff,0xffff,0xe73c,0xbdf7,0xdebb,0xffdf,0xffff,0xffff,0xffdf,0x6b6d,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebd,0xad17,0x0000,0x5a8c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bb1,0xc5da,0xd67c,0xffbf,0xffff,0xef7d,0x0000,0x632c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xb558,0x0000,0x6b4e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x62ec,0xce1b,0xc5ba,0xce1b,0xffff,0xf7be,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0x18e3,0x2124,0xf79e,0xffff,0xffdf,0xf77e,0xef7d,0x2945,0x0000,0x10a2,0xe71c,0xdebd,0xc5ba,0xef1e,0x94b2,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdebd,0xffff,0x8c71,0x0000,0x2945,0x8430,0x9493,0x6b0e,0x2125,0x0000,0x94b2,0x0020,0x0841,0x526a,0x4209,0x3166,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5ba,0xdedd,0xffff,0xffff,0x8430,0x0020,0x0000,0x0000,0x0000,0x0000,0x8410,0xffff,0xb596,0x18e3,0x0000,0x0000,0x0000,0x3186,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0xffff,0xffff,0xffff,0xe71c,0x9cd3,0x630d,0x6b4f,0xa4f6,0xffbf,0xffff,0xffff,0xffff,0xbdd8,0x9474,0xc5f9,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xce1b,0xe6fd,0xef3e,0xe6fd,0xce1b,0xc5ba,0xe71d,0xc5da,0xc5db,0xd67c,0xde9c,0xd63c,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5da,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xe6dd,0xffff,0xef5e,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xef1e,0xe6dd,0xe71d,0xf79f,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2124,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x4a69,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xf79f,0xffff,0xffff,0x4a69,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xce1b,0xce1b,0xffff,0x4208,0x632c,0x2945,0x0000,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x0841,0xc618,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0x2104,0x5aeb,0xe73c,0x2965,0x0000,0x39c7,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xdebd,0xffff,0xffff,0xc618,0x0861,0x0861,0x94b2,0xffdf,0xffff,0xffff,0xd67c,0xc5ba,0x18e3,0x5aeb,0xffff,0xf79e,0x5aeb,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xe71d,0xffff,0xffff,0xc638,0x18e3,0x0000,0x18c3,0x6b6d,0x9494,0xc5fa,0xce1b,0x18c3,0x526a,0xffff,0xffff,0xffff,0xad55,0x10a2,0x0000,0x2124,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5db,0xf77e,0xffff,0xffff,0xf79e,0x8410,0x18e3,0x0000,0x0000,0x0000,0x0861,0x0000,0x4209,0xd63c,0xffbf,0xffff,0xffff,0xef7d,0x738e,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5db,0xc5db,0xe71d,0xffff,0xffff,0xffff,0xffff,0xc618,0x6b0e,0x4209,0x2945,0x0000,0x4a6a,0xc5ba,0xc5db,0xe6fd,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x8c13,0xcdfb,0xdebd,0xef5e,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xef3e,0xc5fb,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x528a,0xcdfb,0xc5ba,0xc5ba,0xc5ba,0xc5db,0xc5da,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffdf,0xdebd,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xf77e,0xe6fd,0xd67c,0xce1b,0xc5ba,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xf7be,0x9492,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79e,0xef5e,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xffff,0xbdf7,0x2124,0x0000,0x0841,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x528a,0xdefb,0xdefb,0xdefb,0xffdf,0xffff,0xce1b,0xde9c,0xffff,0x2104,0x5aeb,0xffff,0xffff,0x8410,0x0020,0x0020,0x6b4d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffdf,0x5acb,0x0000,0x18e3,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xdefb,0x5aeb,0x4228,0x4228,0x4228,0x4228,0x4228,0x31a7,0x20e4,0x2104,0x2104,0x73ae,0x4a6a,0x0000,0x2946,0xbd79,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xd67c,0xf7bf,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xffff,0x6b4e,0x0000,0x3187,0xd65b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xde9c,0xffff,0x9473,0x0000,0x2105,0xe73d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xd65c,0xce1b,0xce1b,0xce1b,0xdebd,0xd67c,0x3166,0x0861,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xce1a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xd69a,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x4228,0xad55,0xffdf,0xd65c,0xc5fb,0xffbf,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce59,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x6b6d,0x2104,0x0000,0x10a2,0x630c,0xad55,0xf79e,0xffff,0xffff,0x2104,0x5aeb,0xffff,0xffff,0xce79,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdebb,0xdefb,0xdefb,0xdefb,0xdefb,0xb5b6,0x6b6d,0x31a6,0x0000,0x0841,0x39c7,0x6b6d,0x1082,0x528a,0xdefb,0xdefb,0xce59,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x9493,0x83d1,0x7bb1,0x7bb1,0x8c32,0x94b3,0xa514,0x8430,0x2945,0x0000,0x18e3,0x9492,0x10a2,0x39c7,0x7bb1,0x94b3,0xa514,0x2945,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xf7bf,0xf7bf,0xf7bf,0xf7bf,0xef5e,0xdebd,0xbdb9,0x7b90,0x3187,0x0000,0x10a2,0x734f,0xce3b,0xf7bf,0x2104,0x5acb,0xc5ba,0xe71d,0xffff,0x7bcf,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x62ee,0x0000,0x0000,0x20e4,0x7370,0xbd9a,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x4209,0xc5ba,0xdebd,0xffff,0xbdd7,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef5e,0xef3e,0xef3e,0x8411,0x18e4,0xef3e,0xb577,0x526a,0x9c94,0xc5ba,0xce1b,0xe71d,0x8c33,0x9494,0xef3e,0xce3a,0xb5b7,0xb558,0xb578,0xdefb,0xdedb,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xef1e,0xd65c,0xc5ba,0x0000,0x738e,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x736e,0x0000,0xc5ba,0xce1b,0xe71d,0x0000,0x7bef,0xffff,0xffff,0x31a7,0x39c7,0xffff,0xdefb,0x0000,0x62ec,0x83f1,0x9cf3,0x39c7,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe71d,0xce1b,0xffff,0x7baf,0x0000,0xf77e,0xffff,0xffff,0x0000,0x73af,0xef5e,0xffff,0x4208,0x4208,0xf7bf,0xd6bb,0x0000,0x9cd3,0xf7bf,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xc5ba,0xacf7,0x0000,0x7bb1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x62cd,0x736e,0x7bef,0x0000,0x3187,0x6b2e,0x7bef,0x2104,0x3187,0xdebc,0xce3a,0x0000,0x83f1,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xe6dd,0x736e,0x0000,0xc5ba,0xd65c,0xe6dd,0x0000,0x630d,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x8c32,0xce1b,0xffff,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xc5ba,0x62cd,0x0000,0xc5ba,0xc5ba,0xc5ba,0x0000,0x62cd,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x738f,0xb537,0xdefb,0x528a,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0x0000,0x6b2e,0xd65c,0xffff,0x4208,0x3187,0xef3e,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0x7bef,0x0000,0xc5ba,0xe6dd,0xffff,0xc638,0xbd98,0xd65c,0xffff,0x736e,0x5a8c,0xef3e,0xf79e,0xa514,0x8c32,0x83d1,0xa514,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xe71c,0xc638,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xe6fd,0xf7bf,0xf7bf,0xd67c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xd65c,0xd65c,0xffff,0xf7bf,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0xffff,0xdefb,0xdedb,0xf77e,0xffbf,0xffff,0xffff,0xdebd,0xdebd,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef5e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffbf,0xf77e,0xffff,0x5aeb,0x0000,0x39e7,0x8c71,0xbdf7,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7bf,0xf7bf,0xffff,0xffff,0xffff,0xe73c,0xb5b6,0x9492,0x7bef,0x630c,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x528a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xd65c,0xbdd8,0x9493,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xffff,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe71d,0xce3b,0xc5ba,0x2945,0x1082,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x4209,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x736e,0x0000,0xb577,0xde9c,0xde9c,0xd67c,0x9473,0x18e3,0xbdd9,0xde9c,0xde9c,0xde9c,0x4a4a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79f,0xef1e,0xffff,0xc618,0x0000,0x8430,0xffff,0xf7be,0x2965,0x528a,0x0000,0xdefb,0xa514,0x73af,0x7bef,0x2965,0x0861,0x738f,0xad75,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd63c,0xcdfb,0xffff,0xffff,0x18e3,0x39e7,0xffff,0x7bcf,0x0000,0x5aeb,0x0000,0xdefb,0x4a6a,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xffff,0x73ae,0x0000,0xbdb7,0x0020,0x4a69,0xa514,0x0000,0xdefb,0x4a6a,0x10a3,0xdefb,0x4a69,0x10a3,0xce3a,0xd69a,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xdefb,0x0000,0x10a2,0x0000,0xce59,0x9493,0x0000,0xc5f9,0x4a2a,0x18c3,0xe6dd,0x52ab,0x18c3,0xef3e,0xdefb,0x0000,0x39c7,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xcdfb,0xd65c,0xffff,0xe6dd,0x39c8,0x0000,0x3187,0xf7bf,0x8c32,0x0000,0xacf7,0x4209,0x18c3,0xc5ba,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xf79e,0xc5db,0x630d,0x0000,0x62ed,0xf7bf,0x8c32,0x0000,0xd6bb,0x4a4a,0x18c3,0xf7bf,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0xcdfb,0xbd9a,0x1082,0x0000,0x1082,0xef7e,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xd65c,0xbdb8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0x8411,0x0000,0x6b4d,0x0000,0x8410,0x8c32,0x0000,0xdefb,0x4a6a,0x18c3,0xffff,0x5acb,0x18c3,0xc5ba,0xacf7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5ba,0x39a7,0x1082,0xe6fd,0x4a2a,0x0861,0x736e,0x0000,0xdefb,0x4a6a,0x0020,0x4228,0x18c3,0x0020,0x39e8,0x94b2,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xb558,0x0000,0x5acb,0xef3e,0xb559,0x2104,0x0020,0x0000,0xdefb,0x62ed,0x18c3,0x2104,0x0861,0x0000,0x18e4,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9452,0x0000,0x9493,0xef3e,0xc5ba,0xce59,0x0841,0x0000,0xdefb,0xde9c,0xce1b,0xffff,0x5acb,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5fb,0x5aeb,0x0000,0xb558,0xe6fd,0xc5ba,0xf7bf,0xa515,0x62ed,0xc5fa,0xcdfb,0xc5db,0xd65c,0x528a,0x18c3,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffdf,0xc5da,0xde9c,0x5aeb,0x2124,0xce1b,0xc5db,0xc5ba,0xf7bf,0xdebd,0xce1b,0xce1b,0xc5db,0xc5da,0xce1b,0x7bcf,0x4209,0xef3e,0xdefb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef3e,0xffff,0xef7d,0xf79f,0xc5db,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xffff,0xffff,0xef5d,0x9cd3,0x7bef,0xa534,0xef7d,0xffff,0xe6fd,0xde9c,0xffff,0xf7bf,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xad55,0x0861,0x0000,0x0000,0x0000,0x1082,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0841,0x1082,0xa534,0xdefb,0xad75,0x2965,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x6b4e,0x0000,0xa535,0xffdf,0xffff,0xffff,0xf79e,0x2965,0x0841,0xdefb,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5db,0x4209,0x0000,0xbd9a,0xc5fb,0xef1e,0xffff,0xffff,0xd69a,0x0000,0x630c,0xe71d,0xce1b,0xffbf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5fb,0x83f0,0x0000,0x4a6a,0x8c32,0x9474,0xb576,0xc638,0xc638,0x3186,0x0861,0xad56,0x9474,0xbdf8,0x630c,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xef5e,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xffff,0xffff,0xd6ba,0xad75,0x9cd3,0x7bb1,0x8c32,0xa514,0x8430,0x0000,0x528a,0x7bb1,0x9cf3,0x528a,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xd67c,0xef5e,0xef3d,0xf77e,0xf77e,0xf77e,0xce3b,0xc5db,0xf77e,0xef5e,0x0000,0x5aac,0xc5ba,0xef3e,0x7baf,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0x4a2a,0x20e4,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x18c3,0x3187,0xc5ba,0xc5ba,0x62cd,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x41e8,0x0841,0xef3e,0xef3e,0xef3e,0xe6fd,0xc5ba,0xde9c,0xef3e,0x18e4,0x39a7,0xc5ba,0xe6fd,0x738f,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xef5d,0xffff,0xffff,0xffff,0xc5ba,0xdebc,0xffff,0x1082,0x4229,0xc5ba,0xf7bf,0x7bef,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xce1b,0xffff,0x8c71,0x0000,0xb596,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xdefb,0x0000,0x630d,0xc5ba,0xf7bf,0xe71c,0xc638,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0xd69a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xce1b,0xd65c,0x8410,0x0000,0xa515,0xc5ba,0xf7bf,0xffff,0x94b2,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffdf,0xffff,0x2965,0x0020,0xc618,0xffff,0xffff,0xc5fb,0xad57,0x0861,0x2124,0xdebc,0xc5ba,0xf7bf,0x8c71,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xef5e,0xffff,0xce59,0x0020,0x0861,0x73ae,0x9cf3,0x526b,0x0020,0x0861,0xc638,0xffbf,0xf77e,0x7bef,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xde9c,0xffff,0xffff,0xb5b6,0x2104,0x0000,0x0000,0x0000,0x3186,0xd69a,0xffff,0xffff,0xce5a,0x18a3,0x39e7,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xce39,0x9474,0xb578,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xbd98,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xc5da,0xc5db,0xdedd,0xef3e,0xdebc,0xc5db,0xc5db,0xf77e,0xffff,0xffff,0xe6dd,0xc5ba,0xce1b,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xd63b,0xf79f,0xd6ba,0xffff,0xffdf,0xcdfb,0xd65c,0xffdf,0xef5d,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0xf77e,0xffbf,0xffff,0x9cd3,0x0020,0xad55,0xffff,0xffbf,0xffff,0xffdf,0x39e7,0x4a69,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x0000,0x8430,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x5aeb,0x5aeb,0x5aeb,0x5acb,0x5aeb,0x5aeb,0x4228,0x0000,0x0000,0x4228,0xe71c,0xffff,0xffdf,0x7bef,0x0000,0x1082,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x7bef,0xef7d,0xffff,0xbdf7,0x2104,0x0000,0x2965,0xd69a,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xcdfb,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xad57,0x2925,0x0000,0x1082,0xd69a,0xffff,0xf7be,0x8410,0x0841,0xdedb,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdebd,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xde9c,0xd65c,0xc5ba,0xc5ba,0xd65c,0xffbf,0xffff,0xffff,0xe6dd,0x83d1,0x39a7,0xe6fd,0xffff,0xffff,0xffff,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0x3187,0x7bb1,0xe6dd,0xffdf,0x5aeb,0x2104,0xce1b,0xc5ba,0xa516,0x7bcf,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x6b0d,0xc5ba,0xc5fb,0x5acb,0x2104,0xffff,0xe6dd,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x4228,0xffdf,0x0000,0x7bef,0xef3e,0xd65c,0x5aeb,0x2104,0xffff,0xffff,0x9cf4,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x5aeb,0x0000,0x10a3,0xd6ba,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x2104,0xe6dd,0xffdf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x39a8,0xc61a,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xb577,0xa514,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x10a3,0x9474,0xbdf8,0x7bef,0x0000,0xad55,0xc638,0xef7d,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd67c,0xacf7,0xcdfb,0xf79f,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0x20e4,0x4a4a,0xffbf,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xce1b,0xffff,0x5aeb,0x1082,0x7bb1,0x9cf3,0x632c,0x0000,0x8c71,0xa514,0xe73c,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x18e4,0x5aeb,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0x0000,0x6b4e,0xcdfb,0xf77e,0x5aab,0x18e3,0xc5ba,0xef3e,0x9cb3,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xffff,0x2104,0x4228,0xc638,0xc638,0x9474,0xad56,0xc638,0x0000,0x528b,0x9474,0x9474,0x31a7,0x18c3,0xc5ba,0xc5ba,0x7bb1,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0x4a69,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xc5ba,0xe6fd,0x9493,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xde9c,0xffff,0xf79e,0xa534,0xa514,0xa514,0x7bb1,0x8c52,0xa514,0x0000,0x4209,0x83d1,0xa514,0x39c7,0x18e4,0xc5ba,0xf7bf,0xa514,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xce1b,0xd65c,0xf77e,0xf77e,0xf77e,0xf77e,0xf77e,0xc5ba,0xde9c,0xf77e,0x0000,0x6b2e,0xce1b,0xffff,0x5aeb,0x18e4,0xc5ba,0xf7bf,0xb5b6,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xffff,0xdedb,0xb5b7,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xef3e,0xc5ba,0xd67c,0xef3e,0xef3e,0xd65c,0xce1b,0xffff,0xffff,0xef3e,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xe6dd,0xffff,0xffff,0xde9c,0xce1b,0xffff,0xffff,0xef5e,0xa4d5,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xad75,0xef5d,0xf79e,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0841,0x4a69,0x9cf3,0xe73c,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x18c3,0x1082,0x0000,0x0000,0x3186,0x5aeb,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0xd6bb,0xef5e,0xffff,0xf79e,0x3186,0x0020,0xce79,0xa4f4,0x41e9,0x0841,0x0000,0x0000,0x0861,0x528a,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xbdb8,0xc5ba,0xc5db,0xd67c,0xce5a,0x0861,0x4208,0xf77e,0xc5ba,0xe6fd,0x94b2,0x0000,0x18e3,0x0000,0x0000,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0861,0xdebc,0xc5ba,0xcdfb,0xc5fb,0xc5ba,0x62ed,0x0000,0xa4f5,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xef5d,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xe6dd,0xffbf,0x2965,0x31a6,0xffff,0xce3b,0xc5da,0xf79e,0xef3e,0xce1a,0x0020,0x4209,0xc5ba,0xc5db,0xa4f5,0x0000,0x9cf4,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf7bf,0x2104,0x4228,0xffff,0xffbf,0xc5db,0xd65c,0xffff,0xffff,0x4229,0x10a2,0xc5ba,0xcdfb,0x9474,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5db,0xffff,0x2104,0x4228,0xffff,0xffff,0xe6dd,0xc5ba,0xf77e,0xffff,0x738e,0x0000,0xb558,0xef3e,0xc5f8,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce3b,0xce3b,0xffff,0x4208,0x18e3,0xffff,0xffff,0xffdf,0xc5db,0xde9c,0xffff,0x7bef,0x0000,0xacf7,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0x632c,0x0000,0xef5d,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x6b4d,0x0000,0xb559,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xd65c,0xffff,0xad55,0x0000,0x9cd3,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0x2124,0x2104,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xf7be,0x10a2,0x2104,0xf79e,0xffff,0xe6dd,0xc5ba,0xa4f4,0x0000,0x6b4d,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xffdf,0xffff,0x9492,0x0000,0x4228,0xdedb,0xde9c,0x83d1,0x0861,0x10a2,0xdedc,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x1082,0xc618,0xf77e,0xc5ba,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fb,0xce1b,0xffff,0xffff,0xffff,0xbdd7,0x630d,0x4209,0x7bd0,0xef5d,0xffff,0xf77e,0xc5ba,0xef3e,0xe71c,0x7bef,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xf7bf,0xffff,0xef3e,0xc5db,0xc5fb,0xffdf,0xffff,0xffff,0xf77e,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5fb,0xf77e,0xffff,0xe71c,0x8430,0xbdd8,0xc5ba,0xef3e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7e,0xdebd,0xde9c,0xe71d,0xffdf,0xffff,0xe73c,0x18c3,0x0000,0x0020,0xb557,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0x73ae,0x0020,0x3186,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc619,0x0020,0x528a,0xffff,0x7bcf,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xcdfb,0x41e9,0x0000,0xc639,0xffff,0xf7be,0x2104,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0x9474,0x0000,0x39c8,0xce3b,0xffff,0xffff,0xb596,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5ba,0x2104,0x0020,0xc5f9,0xc5ba,0xe71d,0xffff,0xffff,0x52aa,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x62cd,0x0000,0x6b6d,0xffff,0xce1b,0xc5fb,0xffbf,0xffff,0xe71c,0x1082,0x10a2,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0x9cb5,0x0000,0x18c3,0xef7d,0xffff,0xef5e,0xc5ba,0xd67c,0xffff,0xffff,0x94b2,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5fa,0x2105,0x0000,0xad55,0xffff,0xffff,0xffff,0xd67c,0xc5ba,0xef3e,0xffff,0xffff,0x39c7,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0x524b,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5fb,0xc5fb,0xffdf,0xffff,0xdedb,0x0841,0x0861,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79f,0x7bb1,0x0000,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd67c,0xffff,0xffff,0x9492,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5acd,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xef3e,0xffff,0xffff,0x5aeb,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xdebc,0xc5ba,0xd67c,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5db,0xc5db,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xcdfb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xd65c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe6dd,0xc5da,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xde9c,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x528a,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x73ae,0x0000,0x0000,0x39e7,0xa534,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x5aeb,0x0861,0x0000,0x0861,0x52aa,0xa514,0xe73c,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79e,0xd67c,0xf79f,0xffff,0xffff,0xffff,0xf79e,0xa534,0x52aa,0x0861,0x0000,0x0000,0x2104,0x39c8,0x7bd0,0x8410,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xc5ba,0xd65c,0xef3e,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x7bcf,0x39c7,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x18e3,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xde9c,0xc5db,0xc5ba,0xc5db,0xd67c,0xef3e,0xffdf,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xbdf8,0x8c51,0x0000,0x4208,0x4a69,0x2945,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd4,0x1082,0x0841,0x528c,0xbd79,0xce1b,0xd67c,0xe6fd,0xe6dd,0xc5ba,0xe6fd,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0841,0x0020,0x10a2,0x1082,0xd65b,0xd65c,0xc5db,0x9474,0x62cd,0xb559,0xc5ba,0x9474,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x9cf3,0xffdf,0xbdf7,0xffff,0xffff,0xffff,0x7bf0,0x0000,0x9454,0xd65c,0xa4f5,0x0000,0x94b3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5fb,0x4a29,0x0000,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x7bb1,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffbf,0xc5db,0xc5da,0x3187,0x10a3,0xffdf,0xffff,0xffff,0xf77e,0xe6dd,0xffdf,0xce79,0x0000,0x62ed,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xef1e,0x4228,0x2104,0xffff,0xffff,0xffff,0xe6fd,0xc5ba,0xf77e,0xdefb,0x0000,0x62cd,0xef3e,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x4228,0x18e3,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xef3e,0xdefb,0x0000,0x62cd,0xef3e,0xe71c,0x7bef,0xd69a,0xf7be,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0x5acb,0x0000,0xffdf,0xffff,0xffff,0xf79e,0xc5ba,0xe6fd,0xc638,0x0000,0x7370,0xef3e,0xffff,0xe71c,0x630c,0x10a2,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xce1b,0xffff,0x738e,0x0000,0xd69a,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0xad55,0x0000,0x8c12,0xef3e,0xffff,0xf79e,0x1082,0x528a,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd65c,0xcdfb,0xffff,0xa534,0x0000,0x94b2,0xffff,0xffff,0xf7bf,0xc5ba,0xe6dd,0x9cf3,0x2104,0xbdd9,0xf79f,0xffff,0xffdf,0xf7be,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xdedb,0x5aeb,0xbdf7,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0xffff,0xffff,0xffbf,0xde9c,0xc5fb,0xd67c,0xbdf7,0x4a69,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xf79f,0xffff,0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xef5e,0xffff,0xffff,0xffff,0xc5fb,0xd67c,0xef5e,0xa534,0x18e3,0x73ae,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xe71d,0xffff,0xffff,0xffff,0xffff,0xffff,0xef1e,0xce1b,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xde9c,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xd67c,0xc5da,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xa534,0x528a,0x4228,0x738e,0xe71c,0xffff,0xffff,0xffff,0xef3e,0xcdfb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0x18c3,0x0000,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x632c,0xf7be,0xffff,0xb5b6,0x0841,0x3186,0xffff,0xffff,0xffff,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0x10a2,0x20e4,0xdebc,0xffbf,0xffff,0xffff,0x73ae,0x0000,0xbdd7,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd67c,0x9474,0x0000,0x7370,0xc5ba,0xcdfb,0xf7bf,0xffff,0xd6ba,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0x7bd0,0x0000,0xd69a,0xef5e,0xc5db,0xce3b,0xffff,0xffff,0x1082,0x4a49,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xcdfb,0xce1b,0x6b6d,0x0000,0xf79e,0xffff,0xdedd,0xc5ba,0xef7e,0xffff,0x2104,0x4228,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe71d,0x5aeb,0x0000,0xffff,0xffff,0xf7bf,0xc5ba,0xdebd,0xffff,0x10a2,0x4a69,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf79f,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xc5fb,0xd65c,0xe71c,0x0000,0x6b6d,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffff,0x6b6d,0x0000,0xe73c,0xffff,0xffff,0xce1b,0xd65c,0x9cd3,0x0000,0xb596,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xdedb,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0x9492,0x0000,0xbdf7,0xffff,0xffff,0xc5fb,0xd67c,0x2965,0x1082,0xf7be,0xc5ba,0xde9c,0xd69a,0x0000,0x0841,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xde9c,0xc5ba,0xffff,0xbdf7,0x0000,0x8430,0xffff,0xffbf,0xc5ba,0x8c52,0x0000,0x8410,0xf7be,0x7370,0x2945,0x0000,0x0000,0x18c3,0x6b6d,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdebd,0xc5ba,0xffdf,0xf7be,0x4228,0x6b4d,0xffff,0xe71d,0xbd79,0x18c3,0x1082,0x6b6d,0x10a2,0x0000,0x0861,0x632d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5ba,0xf77e,0xffff,0xffff,0xffff,0xffff,0xce3b,0x5aac,0x0000,0x0000,0x0000,0x2124,0x7370,0xbd9a,0xc5ba,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf77e,0xc5ba,0xe6fd,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0x9cb4,0x0000,0x2945,0x8c33,0xc5ba,0xc5ba,0xcdfb,0xdebd,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xdebc,0xffff,0xffff,0xffff,0xcdfb,0xc5fb,0xdebd,0x9474,0xc5ba,0xc5fb,0xdebc,0xc5ba,0xde9c,0xffff,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedd,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xe71d,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5e,0xc5ba,0xce3b,0xef5e,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc5ba,0xde9c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xb596,0x9cf3,0x7bef,0x7bef,0x736e,0x73af,0xa514,0xad55,0xc638,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x632c,0x18c3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x18e3,0x632c,0xa514,0xc638,0xdefb,0xdefb,0xdefb,0xd69a,0xc638,0x9cf3,0x738e,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0020,0x18c3,0x9cd4,0xe6fd,0xe6dd,0xe6dd,0xe6dd,0xe6dd,0xef3e,0xef3e,0xf77e,0xffbf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7bf,0x8c32,0x0000,0x4a2a,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce3b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5da,0xa4d6,0x0000,0x0000,0x4a49,0xb576,0xef7e,0xf7bf,0xf7bf,0xf79f,0xf77e,0xef1e,0xdebd,0xe6fd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7bf,0xc5da,0xcdfb,0xef3e,0x94b2,0x1082,0x0000,0x0000,0x2104,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef3e,0xc5ba,0xde9c,0xffff,0xffff,0xef7d,0x94b2,0x4208,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79f,0xc5ba,0xc5ba,0xd67c,0xef7e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71d,0xc5fb,0xc5ba,0xc5ba,0xce1b,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71d,0xd65c,0xe6dd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x8410,0x18e3,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xad55,0x52aa,0x0841,0x0000,0x0841,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xd69a,0xbdd7,0x94b2,0x6b4d,0x39c7,0x0020,0x0000,0x0000,0x2104,0x8c51,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x630d,0x9c94,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x4228,0x630c,0x8430,0xad35,0xc5fa,0xc5db,0xc5ba,0xc5db,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffbf,0xf79f,0xef7e,0xe71d,0xdebc,0xd63c,0xc5da,0xc5ba,0xc5ba,0xce1b,0xe6fd,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd65c,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xc5ba,0xce1b,0xdebd,0xf77e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe6dd,0xd65c,0xde9c,0xe6fd,0xef5e,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0x8c51,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x8c71,0x7bef,0x7bef,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71d,0xe6dd,0xe6dd,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce1b,0xc5ba,0xc5ba,0xf7bf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}; +diff -Nur linux_c860_org/drivers/video/shepherdLogoMsgJ.c linux/drivers/video/shepherdLogoMsgJ.c +--- linux_c860_org/drivers/video/shepherdLogoMsgJ.c 2003-06-18 17:49:13.000000000 +0900 ++++ linux/drivers/video/shepherdLogoMsgJ.c 2004-06-10 21:09:11.000000000 +0900 +@@ -3,6 +3,7 @@ + * ChangeLog: + * 16-04-2003 SHARP + */ ++/* Logo Screen 16bits RGB(565) data*/ + #ifndef __initdata + #define __initdata + #endif +diff -Nur linux_c860_org/drivers/video/tc6393fb.c linux/drivers/video/tc6393fb.c +--- linux_c860_org/drivers/video/tc6393fb.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/tc6393fb.c 2004-06-10 21:10:10.000000000 +0900 +@@ -0,0 +1,1255 @@ ++/* ++ * linux/drivers/video/tc6393fb.c ++ * ++ * Frame Buffer Device for TOSHIBA tc6393 ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Based on: ++ * linux/drivers/video/w100fb.c ++ * ++ * Frame Buffer Device for ATI w100 (Wallaby) ++ * ++ * Copyright (C) 2002, ATI Corp. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Based on: ++ * drivers/video/skeletonfb.c ++ * ++ * ChangeLog: ++ * 28-02-2003 SHARP supported VRAM image cache for ver.1.3 ++ * 19-03-2003 SHARP disabled VRAM image cache for ver.1.3 ++ */ ++ ++// define this here because unistd.h needs it ++extern int errno; ++ ++#include <asm/io.h> ++#include <asm/hardware.h> ++#include <asm/ucb1200.h> ++#include <asm/uaccess.h> ++// unistd.h is included for the configuration ioctl stuff ++#define __KERNEL_SYSCALLS__ 1 ++#include <asm/unistd.h> ++#undef __KERNEL_SYSCALLS__ ++#include <linux/ioport.h> ++#include <linux/delay.h> ++#include <linux/errno.h> ++#include <linux/fb.h> ++#include <linux/init.h> ++#include <linux/kernel.h> ++#include <linux/slab.h> ++#include <linux/mm.h> ++#include <linux/module.h> ++#include <linux/sched.h> ++#include <linux/string.h> ++#include <linux/tty.h> ++#include <linux/fs.h> ++#include <linux/file.h> ++#include <video/fbcon-cfb8.h> ++#include <video/fbcon-cfb16.h> ++#include <video/fbcon-mfb.h> ++#include <video/fbcon.h> ++ ++#include "tc6393fb.h" ++#include <linux/pm.h> ++#include <asm/arch/i2sc.h> ++#include <asm/arch/tosa.h> ++ ++#include <video/tosa_backlight.h> ++ ++#ifdef CONFIG_PM ++#include <asm/arch/sharpsl_param.h> ++static struct pm_dev *tc6393_pm_dev; ++static int tc6393_pm_callback(struct pm_dev* pm_dev,pm_request_t req, void* data); ++#endif //CONFIG_PM ++ ++static void tc6393_pm_suspend(int suspend_mode); ++static void tc6393_pm_resume(void); ++static void tc6393_clear_screen(u32 mode); ++ ++// Some hardware related constants ++// The name the kernel will know us by ++#define TC6393_NAME "TC6393FB" ++ ++ ++#define KH_CMDREG_NUM 6 ++ ++#define PIXEL_PER_LINE_QVGA 240 ++#define HORIZONTAL_LINE_QVGA 320 ++#define PIXEL_PER_LINE_VGA 480 ++#define HORIZONTAL_LINE_VGA 640 ++ ++typedef struct FrameBuffer_QVGA { ++ unsigned short pixel[HORIZONTAL_LINE_QVGA][PIXEL_PER_LINE_QVGA]; ++} FrameBuffer_QVGA; ++ ++typedef struct FrameBuffer_VGA { ++ unsigned short pixel[HORIZONTAL_LINE_VGA][PIXEL_PER_LINE_VGA]; ++} FrameBuffer_VGA; ++ ++static TC6393_REGS kh_cmd[] = ++{ ++ { KH_BASEADDR_H, 0x0000}, // base address high ++ { KH_BASEADDR_L, TC6393_GC_INTERNAL_REG_BASE}, // base address low ++ { KH_COMMAND_REG, 0x0002}, // base address enable ++ { KH_VRAMTC, 0x40a8}, // VRAMRC, VRAMTC ++ { KH_VRAMAC, 0x0018}, // VRAMSTS, VRAMAC ++ { KH_VRAMBC, 0x0002}, ++}; ++ ++#define TC6393_lcdinner (TC6393_SYS_BASE+TC6393_GC_INTERNAL_REG_BASE) ++ ++#define FB_OFFSET 0x00100000 ++#define TC6393_LCD_INNER_ADDRESS TC6393_lcdinner ++#define TC6393_FB_BASE TC6393_RAM1_BASE ++#define REMAPPED_FB_LEN 0x100000 ++ ++#define REMAPPED_LCD_BASE_LEN 0x200 ++#define REMAPPED_CFG_LEN 0x100 ++#define REMAPPED_MMR_LEN 0x200 ++#define TC6393_PHYS_ADR_LEN 0x2000000 ++#define MAX_XRES_QVGA 240 ++#define MAX_YRES_QVGA 320 ++#define MAX_XRES_VGA 480 ++#define MAX_YRES_VGA 640 ++#define BITS_PER_PIXEL 16 ++ ++#define TC6393_SMEM_START (TOSA_LCDC_PHYS+FB_OFFSET) ++#define TC6393_MMIO_START (TOSA_LCDC_PHYS+0x500) ++ ++#define COMADJ_DEFAULT 97 ++ ++// Pseudo palette size ++#define MAX_PALETTES 16 ++ ++#define USE_ACCELERATOR ++#ifdef USE_ACCELERATOR ++// for Accelerator ++#define FIFO_ADDR (((int)remapped_fbuf)+(1024*1024)-(4*512)) ++static void tc6393_acc_init(void); ++static void tc6393_acc_write( u32* cmd, int cmdnum ); ++static void tc6393_acc_sync(void); ++#endif ++ ++// ioctls ++#define TC6393FB_POWERDOWN 0x54433601 /* TC6\01 */ ++#ifdef USE_ACCELERATOR ++#define TC6393FB_ACC_CMD_WRITE 0x54433602 /* TC6\02 */ ++#define TC6393FB_ACC_SYNC 0x54433603 /* TC6\03 */ ++#define TC6393FB_ACC_CMD_MAX_LEN 10 ++#endif ++ ++// General frame buffer data structures ++struct tc6393fb_info { ++ struct fb_info_gen gen; ++ union { ++#ifdef FBCON_HAS_CFB16 ++ u16 cfb16[ MAX_PALETTES]; ++#endif ++#ifdef FBCON_HAS_CFB24 ++ u32 cfb24[ MAX_PALETTES]; ++#endif ++#ifdef FBCON_HAS_CFB32 ++ u32 cfb32[ MAX_PALETTES]; ++#endif ++ } fbcon_cmap; ++}; ++ ++struct tc6393fb_par { ++ u32 xres; ++ u32 yres; ++ u32 xres_virtual; ++ u32 yres_virtual; ++ u32 bits_per_pixel; ++ u32 visual; ++ u32 palette_size; ++}; ++ ++static struct tc6393fb_info fb_info; ++static struct tc6393fb_par current_par; ++static int current_par_valid = 0; ++static struct display disp; ++ ++static void *remapped_lcdbase; ++static void *remapped_regs; ++static void *remapped_inner; ++static void *remapped_fbuf; ++ ++static FrameBuffer_QVGA *fb_QVGA; ++static FrameBuffer_VGA *fb_VGA; ++ ++static void *remapped_scoop2_1; ++static void *remapped_scoop2_2; ++ ++#define LCD_MODE_QVGA 0 ++#define LCD_MODE_VGA 1 ++ ++// referenced by tosa_fb ++int tc6393fb_lcdMode = LCD_MODE_VGA; ++int tc6393fb_isblank = 0; ++ ++static int tg_ssp_reg0; ++ ++#if defined(CONFIG_ARCH_SHARP_SL) ++// checking in mm/omm_kill.c ++int disable_signal_to_mm = 0; ++#endif ++ ++int tc6393fb_init(void); ++static void tc6393fb_setlcdmode(int); ++static void tc6393fb_initssp(void); ++static void tc6393fb_lcdhwsetup(int); ++static void tc6393_soft_reset(void); ++ ++static int tc6393_encode_var(struct fb_var_screeninfo *var, ++ const void *raw_par, ++ struct fb_info_gen *info); ++static int tc6393fb_ioctl(struct inode *inode, ++ struct file *file, ++ u_int cmd, ++ u_long arg, ++ int con, ++ struct fb_info *info); ++ ++void pxa_nssp_init(void); ++ ++int isspace(int x); ++int config_open(const char *config_filename); ++int config_close(int config_fd); ++int config_get_dword(int config_fd, ++ const char *section, ++ const char *id, ++ u32 *val, ++ u32 defval); ++long my_strtol(const char *string, char **endPtr, int base); ++ ++extern void pxa_nssp_output(unsigned char, unsigned char); ++ ++#define LINE_WAIT 20 ++#define PLCLN_MASK 0x03FF ++static int wait_vsync(void) ++{ ++ int ct=0; ++ volatile u16 val1,val2; ++ ++ u16 line = (tc6393fb_lcdMode==LCD_MODE_VGA)?HORIZONTAL_LINE_VGA:HORIZONTAL_LINE_QVGA; ++ do { ++ val1 = readw(remapped_inner + PLCLN)&PLCLN_MASK; ++ while(val1!=(val2=(readw(remapped_inner + PLCLN)&PLCLN_MASK))) { ++ val1 = val2; ++ } ++ if (val1==line) break; ++ if (++ct>1000*1000/LINE_WAIT) break; ++ udelay(LINE_WAIT); ++ } while(1); ++ if (val1!=line) { ++ printk("unable to wait vsync\n"); ++ return 1; ++ } ++ return 0; ++} ++ ++// save & restore image ++//#define STATIC_IMAGE_BUF ++#ifdef STATIC_IMAGE_BUF ++static u32 ImageBuf[MAX_XRES_VGA*MAX_YRES_VGA/2]; ++static void save_image(void) ++{ ++ int i,size = current_par.xres*current_par.yres/2; ++ u32 *src = (u32*)remapped_fbuf; ++ u32 *dst = ImageBuf; ++ ++ for (i=0; i<size; i++) { ++ *dst++ = *src++; ++ } ++} ++static void load_image(void) ++{ ++ int i,size = current_par.xres*current_par.yres/2; ++ u32 *src = ImageBuf; ++ u32 *dst = (u32*)remapped_fbuf; ++ ++ for (i=0; i<size; i++) { ++ *dst++ = *src++; ++ } ++} ++#else ++#define SAVE_LINES 20 ++static u16 *gSaveImagePtr[HORIZONTAL_LINE_VGA/SAVE_LINES] = {NULL}; ++void clear_imagebuf() ++{ ++ if(gSaveImagePtr[0] != NULL){ ++ int i; ++ for (i = 0; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) { ++ if (gSaveImagePtr[i] != NULL) { ++ kfree(gSaveImagePtr[i]); ++ gSaveImagePtr[i]=NULL; ++ } ++ } ++ } ++} ++#endif ++ ++ ++ ++/* ------------------- chipset specific functions -------------------------- */ ++// ++// static void tc6393_hw_init(void) ++// ++static void tc6393_hw_init(void) ++{ ++ remapped_regs = (void *)TC6393_SYS_BASE; ++ remapped_lcdbase = (void *)TC6393_GC_BASE; ++ remapped_inner = (void *)TC6393_LCD_INNER_ADDRESS; ++ remapped_scoop2_1 = (void *)CF_BUF_CTRL_BASE; ++ remapped_scoop2_2 = (void *)CF2_BUF_CTRL_BASE; ++ remapped_fbuf = (void *)TC6393_FB_BASE; ++ tc6393_soft_reset(); ++#ifdef USE_ACCELERATOR ++ tc6393_acc_init(); ++#endif ++ ++} ++ ++ ++// ++// Fill the fix structure based on values in the par ++// ++static int tc6393_encode_fix(struct fb_fix_screeninfo *fix, ++ const void *raw_par, ++ struct fb_info_gen *info) ++{ ++ const struct tc6393fb_par *par = raw_par; ++ ++ if (!par) ++ BUG(); ++ ++ memset(fix, 0, sizeof *fix); ++ ++ strcpy(fix->id, TC6393_NAME); ++ ++ fix->type= FB_TYPE_PACKED_PIXELS; ++ fix->type_aux = 0; ++ ++ if (par->bits_per_pixel == 1) ++ { ++ fix->visual = FB_VISUAL_MONO10; ++ } ++ else if (par->bits_per_pixel <= 8) ++ { ++ fix->visual = FB_VISUAL_PSEUDOCOLOR; ++ } ++ else ++ { ++ fix->visual = FB_VISUAL_TRUECOLOR; ++ } ++ ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ fix->ypanstep = fix->xpanstep = fix->xwrapstep = 0; ++#else ++ fix->xpanstep = fix->ypanstep = fix->ywrapstep = 0; ++#endif ++ fix->smem_start = TC6393_SMEM_START; ++ ++ if(tc6393fb_lcdMode == LCD_MODE_VGA ){ ++ fix->line_length = (480 * BITS_PER_PIXEL) / 8; ++ fix->smem_len = (480 * 640 * BITS_PER_PIXEL) / 8; ++ } else { // QVGA ++ fix->line_length = (240 * BITS_PER_PIXEL) / 8; ++ fix->smem_len = (240 * 320 * BITS_PER_PIXEL) / 8; ++ } ++ fix->mmio_start = TC6393_MMIO_START; ++ fix->mmio_len = REMAPPED_CFG_LEN + REMAPPED_MMR_LEN; // LCD-COMMON+LCD-MMR ++ ++ fix->accel = FB_ACCEL_NONE; ++ ++ return 0; ++} ++ ++// ++// Get video parameters out of the par ++// ++static int tc6393_decode_var(const struct fb_var_screeninfo *var, ++ void *raw_par, ++ struct fb_info_gen *info) ++{ ++ struct tc6393fb_par *par = raw_par; ++ ++ *par = current_par; ++ ++ if (!par) ++ BUG(); ++ ++ if((par->xres == 480 && par->yres == 640)|| ++ (par->xres == 240 && par->yres == 320)){ ++ par->xres = var->xres; ++ par->yres = var->yres; ++ }else{ ++ ++ if(tc6393fb_lcdMode == LCD_MODE_VGA ){ ++ par->xres = MAX_XRES_VGA; ++ par->yres = MAX_YRES_VGA; ++ }else{ // QVGA ++ par->xres = MAX_XRES_QVGA; ++ par->yres = MAX_YRES_QVGA; ++ } ++ } ++ ++ par->xres_virtual = ++ var->xres_virtual < par->xres ? par->xres : var->xres_virtual; ++ par->yres_virtual = ++ var->yres_virtual < par->yres ? par->yres : var->yres_virtual; ++ ++ par->bits_per_pixel = var->bits_per_pixel; ++ ++ par->visual = FB_VISUAL_TRUECOLOR; ++ par->palette_size = 0; ++ ++ return 0; ++} ++ ++// ++// Fill the var structure with values in the par ++// ++static int tc6393_encode_var(struct fb_var_screeninfo *var, ++ const void *raw_par, ++ struct fb_info_gen *info) ++{ ++ struct tc6393fb_par *par = (struct tc6393fb_par *)raw_par; ++ ++ // set up var for 565 ++ var->bits_per_pixel = BITS_PER_PIXEL; ++ var->red.offset = 11; ++ var->red.length = 5; ++ var->green.offset = 5; ++ var->green.length = 6; ++ var->blue.offset = 0; ++ var->blue.length = 5; ++ var->transp.offset = 0; ++ var->transp.length = 0; ++ ++ var->red.msb_right = 0; ++ var->green.msb_right = 0; ++ var->blue.msb_right = 0; ++ var->transp.msb_right = 0; ++ ++ var->nonstd = 0; ++ ++ var->grayscale = 0; ++ ++ // set up screen coordinates ++ if((par->xres == 480 && par->yres == 640)|| ++ (par->xres == 240 && par->yres == 320)){ ++ var->xres = par->xres; ++ var->yres = par->yres; ++ }else{ ++ if(tc6393fb_lcdMode == LCD_MODE_VGA ){ ++ var->xres = MAX_XRES_VGA; ++ var->yres = MAX_YRES_VGA; ++ }else{ // QVGA ++ var->xres = MAX_XRES_QVGA; ++ var->yres = MAX_YRES_QVGA; ++ } ++ } ++ ++ var->xres_virtual = var->xres; ++ var->yres_virtual = var->yres; ++ var->xoffset = var->yoffset = 0; ++ ++ var->activate = FB_ACTIVATE_NOW; ++ ++ var->height = -1; ++ var->width = -1; ++ var->vmode = FB_VMODE_NONINTERLACED; ++ ++ var->sync = 0; ++ var->pixclock = 0x04; ++ ++ return 0; ++} ++ ++// ++// Fill the par structure with relevant hardware values ++// ++static void tc6393_get_par(void *raw_par, struct fb_info_gen *info) ++{ ++ struct tc6393fb_par *par = raw_par; ++ ++ if (current_par_valid) ++ *par = current_par; ++} ++ ++// ++// Set the hardware according to the values in the par ++// ++static void tc6393_set_par(const void *raw_par, struct fb_info_gen *info) ++{ ++ const struct tc6393fb_par *par = raw_par; ++ ++ current_par = *par; ++ current_par_valid = 1; ++} ++ ++// ++// Split a color register into RGBT components. N/A on TC6393 ++// ++static int tc6393_getcolreg(unsigned regno, unsigned *red, unsigned *green, ++ unsigned *blue, unsigned *transp, ++ struct fb_info *info) ++{ ++ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info; ++ ++ if (regno >= 16) return 1; ++ ++ *transp = 0; ++ *red = ((linfo->fbcon_cmap.cfb16[regno] >> 11) & 31) << 11; ++ *green = ((linfo->fbcon_cmap.cfb16[regno] >> 5 ) & 63) << 10; ++ *blue = ((linfo->fbcon_cmap.cfb16[regno]) & 31) << 11; ++ ++ return 0; ++} ++ ++// ++// Set a single color register. N/A on TC6393 ++// ++static int tc6393_setcolreg(unsigned regno, unsigned red, unsigned green, ++ unsigned blue, unsigned transp, ++ struct fb_info *info) ++{ ++ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info; ++ ++ if (regno < MAX_PALETTES) ++ { ++ linfo->fbcon_cmap.cfb16[regno] = ++ (red & 0xf800) | ((green & 0xfc00) >> 5) | ((blue & 0xf800) >> 11); ++ } ++ ++ return 0; ++} ++ ++// ++// Pan the display based on var->xoffset & var->yoffset values ++// ++static int tc6393_pan_display(const struct fb_var_screeninfo *var, ++ struct fb_info_gen *info) ++{ ++ ++ return 0; ++} ++ ++// ++// Blank the display based on value in blank_mode ++// ++static int tc6393_blank(int blank_mode, struct fb_info_gen *info) ++{ ++ if(!in_interrupt()){ ++ if (blank_mode && !tc6393fb_isblank) { ++ tc6393_pm_suspend(1); ++ }else if(!blank_mode && tc6393fb_isblank){ ++ tc6393_pm_resume(); ++ } ++ } ++ ++ return 0; ++} ++ ++#ifdef CONFIG_SHARP_LOGO_SCREEN ++#include "vgaLogoScreen.c" ++#define SHOW_WAIT_MSG ++#ifdef SHOW_WAIT_MSG ++#include "tosaLogoMsgJ.c" ++#include "tosaLogoMsg.c" ++#if 0 ++static int logo_lang = 0; ++#else ++extern int logo_lang; // Battery Driver refers. ++#endif ++static int logo_msg_width __initdata = 0; ++static int logo_msg_height __initdata = 0; ++static unsigned short *logo_msg_data __initdata = NULL; ++#ifndef MODULE ++static int __init logolang_setup(char *str) ++{ ++ logo_lang = simple_strtoul(str,NULL,0); ++ return 0; ++} ++__setup("LOGOLANG=", logolang_setup); ++#endif // MODULE ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++static int logo_msg_yoff __initdata = 100; ++#else ++static int logo_msg_yoff __initdata = 500; ++#endif ++#endif // end SHOW_WAIT_MSG ++ ++// ++// static void __init draw_img() ++// ++static void __init draw_img( int sx, int sy, int w, int h, unsigned short* data ) ++{ ++ int x, y,ppl; ++ unsigned short *p; ++ // LCD_MODE_VGA ++ if (tc6393fb_lcdMode == LCD_MODE_VGA ){ ++ ppl = PIXEL_PER_LINE_VGA; ++ p = &fb_VGA->pixel[sy][sx]; ++ }else{ // QVGA ++ ppl = PIXEL_PER_LINE_QVGA; ++ p = &fb_QVGA->pixel[sy][sx]; ++ } ++ ++ for (y=0; y<h; y++) { ++ for (x=0; x<w; x++) { ++ unsigned short col = data[(h-1-y)+x*h]; ++#if 0 // ++ if (col==0x7bef) col=0xFFFF; ++#endif ++ *p++ = col; ++ } ++ p += ppl - w; ++ } ++} ++ ++static void __init draw_logo_screen(void) ++{ ++ switch(logo_lang) { ++ case 1: // JP ++ logo_msg_width = logo_msg_width_jp; ++ logo_msg_height = logo_msg_height_jp; ++ logo_msg_data = logo_msg_data_jp; ++ break; ++ default: // EN ++ logo_msg_width = logo_msg_width_en; ++ logo_msg_height = logo_msg_height_en; ++ logo_msg_data = logo_msg_data_en; ++ break; ++ } ++ ++ if (tc6393fb_lcdMode == LCD_MODE_VGA){ ++ memset(remapped_fbuf,0xff,(HORIZONTAL_LINE_VGA-16)*(PIXEL_PER_LINE_VGA*2)); ++ }else{ // QVGA ++ memset(remapped_fbuf,0xff,(HORIZONTAL_LINE_QVGA-16)*(PIXEL_PER_LINE_QVGA*2)); ++ } ++ ++ draw_img((current_par.xres - logo_screen_height) / 2, ++ (current_par.yres - logo_screen_width) / 2, ++ logo_screen_height, logo_screen_width, logo_screen_data); ++ ++ ++#ifdef SHOW_WAIT_MSG ++ draw_img((current_par.xres - logo_msg_height) / 2,logo_msg_yoff, ++ logo_msg_height,logo_msg_width,logo_msg_data); ++#endif ++ ++} ++#endif //CONFIG_SHARP_LOGO_SCREEN ++ ++ ++// ++// Set up the display for the fb subsystem ++// ++static void tc6393_set_disp(const void *unused, struct display *disp, ++ struct fb_info_gen *info) ++{ ++ struct tc6393fb_info *linfo = (struct tc6393fb_info *)info; ++ int newLcdMode = -1; ++ ++ if (current_par.xres == PIXEL_PER_LINE_QVGA && current_par.yres == HORIZONTAL_LINE_QVGA){ ++ newLcdMode = LCD_MODE_QVGA; ++ } else if (current_par.xres == PIXEL_PER_LINE_VGA && current_par.yres == HORIZONTAL_LINE_VGA){ ++ newLcdMode = LCD_MODE_VGA; ++ } else { // unknown ++ return; ++ } ++ ++ if (newLcdMode!=tc6393fb_lcdMode) { ++#if 0 ++ printk("change resolution from %s to %s\n", tc6393fb_lcdMode?"VGA":"QVGA", newLcdMode?"VGA":"QVGA"); ++#endif ++ if (tc6393fb_isblank) { ++ printk("force resume from blank!!!\n"); ++ clear_imagebuf(); ++ tc6393_pm_resume(); ++ } ++ ++ wait_vsync(); ++ tc6393_clear_screen(LCD_MODE_VGA); ++ wait_vsync(); ++ tc6393fb_setlcdmode(newLcdMode); ++ } ++ ++ // Do the rest of the display initialization ++ disp->screen_base = remapped_fbuf; ++ ++ // Set appropriate low level text console handler ++ switch(disp->var.bits_per_pixel) ++ { ++#ifdef FBCON_HAS_MFB ++ case 1: ++ disp->dispsw = &fbcon_mfb; ++ break; ++#endif ++#ifdef FBCON_HAS_CFB8 ++ case 8: ++ disp->dispsw = &fbcon_cfb8; ++ break; ++#endif ++#ifdef FBCON_HAS_CFB16 ++ case 16: ++ disp->dispsw = &fbcon_cfb16; ++ disp->dispsw_data = linfo->fbcon_cmap.cfb16; ++ break; ++#endif ++ default: ++ disp->dispsw = &fbcon_dummy; ++ break; ++ } ++ ++#if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) ++ disp->xpanstep = 0; ++ disp->xwrapstep = 0; ++ disp->scrollmode = 0; // for logoscreen scroll ++#else ++ disp->ypanstep = 0; ++ disp->ywrapstep = 0; ++#endif ++ ++ ++} ++ ++/* ------------ Interfaces to hardware functions ------------ */ ++ ++struct fbgen_hwswitch tc6393_switch = ++{ ++ //X detect: tc6393_detect, ++ encode_fix: tc6393_encode_fix, ++ decode_var: tc6393_decode_var, ++ encode_var: tc6393_encode_var, ++ get_par: tc6393_get_par, ++ set_par: tc6393_set_par, ++ getcolreg: tc6393_getcolreg, ++ setcolreg: tc6393_setcolreg, ++ pan_display: tc6393_pan_display, ++ blank: tc6393_blank, ++ set_disp: tc6393_set_disp, ++}; ++ ++/* ------------ Hardware Independent Functions ------------ */ ++ ++ ++static struct fb_ops tc6393fb_ops = ++{ ++ owner: THIS_MODULE, ++ fb_get_fix: fbgen_get_fix, ++ fb_get_var: fbgen_get_var, ++ fb_set_var: fbgen_set_var, ++ fb_get_cmap: fbgen_get_cmap, ++ fb_set_cmap: fbgen_set_cmap, ++ fb_pan_display: fbgen_pan_display, ++ fb_ioctl: tc6393fb_ioctl, ++}; ++ ++// ++int __init tc6393fb_init(void) ++{ ++#ifndef STATIC_IMAGE_BUF ++ memset(gSaveImagePtr,0,sizeof(gSaveImagePtr)); ++#endif ++ ++ fb_info.gen.fbhw = &tc6393_switch; // generic frame buffer device ++ tc6393_hw_init(); ++ tc6393_clear_screen(LCD_MODE_VGA); ++ tc6393fb_setlcdmode(tc6393fb_lcdMode); ++ ++ strcpy(fb_info.gen.info.modename, TC6393_NAME); ++ fb_info.gen.info.changevar = NULL; ++ fb_info.gen.info.node = -1; ++ fb_info.gen.info.fbops = &tc6393fb_ops; ++ fb_info.gen.info.disp = &disp; ++ fb_info.gen.parsize = sizeof(struct tc6393fb_par); ++ fb_info.gen.info.switch_con = &fbgen_switch; ++ fb_info.gen.info.updatevar = &fbgen_update_var; ++ fb_info.gen.info.blank = &fbgen_blank; ++ fb_info.gen.info.flags = FBINFO_FLAG_DEFAULT; ++ /* This should give a reasonable default video mode */ ++ fbgen_get_var(&disp.var, -1, &fb_info.gen.info); ++ fbgen_do_set_var(&disp.var, 1, &fb_info.gen); ++ fbgen_set_disp(-1, &fb_info.gen); ++ ++ if (disp.var.bits_per_pixel > 1) ++ fbgen_install_cmap(0, &fb_info.gen); ++ ++ if (register_framebuffer(&fb_info.gen.info) < 0) ++ return -EINVAL; ++ ++#ifdef CONFIG_PM ++ tc6393_pm_dev = pm_register(PM_COTULLA_DEV, 0, tc6393_pm_callback); ++#endif //CONFIG_PM ++ ++ printk("fb%d: %s frame buffer device\n", ++ GET_FB_IDX(fb_info.gen.info.node), ++ fb_info.gen.info.modename); ++ ++ ++#if defined(CONFIG_SHARP_LOGO_SCREEN) ++ draw_logo_screen(); ++ tosa_bl_temporary_contrast_set(); ++ tosa_bl_temporary_contrast_reset(); ++#endif ++ ++ return 0; ++} ++ ++void tc6393fb_cleanup(struct fb_info *info) ++{ ++ unregister_framebuffer(info); ++#ifndef STATIC_IMAGE_BUF ++ if(gSaveImagePtr[0] != NULL){ ++ int i; ++ for (i = 0; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) { ++ if (gSaveImagePtr[i] != NULL) { ++ kfree(gSaveImagePtr[i]); ++ gSaveImagePtr[i]=NULL; ++ } ++ } ++ } ++#endif ++} ++ ++#ifdef MODULE ++int __init init_module(void) ++{ ++ return tc6393fb_init(); ++} ++ ++void cleanup_module(void) ++{ ++ tc6393fb_cleanup(&fb_info.gen.info); ++} ++#endif ++ ++static int tc6393fb_ioctl(struct inode *inode, struct file *file, u_int cmd, ++ u_long arg, int con, struct fb_info *info2) ++{ ++ switch (cmd){ ++ case TC6393FB_POWERDOWN: ++ { ++ int blank_mode = (int)arg; ++ tc6393_blank(blank_mode,NULL); ++ } ++ break; ++#ifdef USE_ACCELERATOR ++ case TC6393FB_ACC_CMD_WRITE: ++ { ++ u32 cmdbuf[TC6393FB_ACC_CMD_MAX_LEN + 1]; ++ ++ if (tc6393fb_isblank) { ++ printk("force resume from blank!\n"); ++ clear_imagebuf(); ++ tc6393_pm_resume(); ++ } ++ if (copy_from_user(cmdbuf, (void *)arg, ++ (TC6393FB_ACC_CMD_MAX_LEN + 1) * sizeof(u32))) ++ return -EFAULT; ++ ++ if (cmdbuf[0] == 0) ++ return 0; ++ ++ if (cmdbuf[0] > TC6393FB_ACC_CMD_MAX_LEN) ++ return -EFAULT; ++ ++ tc6393_acc_write( &cmdbuf[1], cmdbuf[0] ); ++ } ++ break; ++ case TC6393FB_ACC_SYNC: ++ if (tc6393fb_isblank) { ++ printk("force resume from blank!!\n"); ++ clear_imagebuf(); ++ tc6393_pm_resume(); ++ } ++ tc6393_acc_sync(); ++ break; ++#endif // end USE_ACCELERATOR ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++// ++// Constants ++// ++ ++static void tc6393fb_initssp( void) ++{ ++ pxa_nssp_init(); ++ tg_ssp_reg0 = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR; ++ pxa_nssp_output(1,0x00); //delaied 0clk TCTL signal for VGA ++ pxa_nssp_output(3,0x02); // GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL ++} ++ ++static void tc6393fb_setpnlctl(int dat) ++{ ++ pxa_nssp_output(6,dat); ++} ++ ++static void tc6393fb_lcdhwsetup(int mode) ++{ ++ int i; ++ ++ // define the framebuffer base. ++ fb_VGA = (FrameBuffer_VGA *) (remapped_fbuf); ++ fb_QVGA = (FrameBuffer_QVGA *) (remapped_fbuf); ++ ++ if ( mode == LCD_MODE_QVGA ) { // change to QVGA ++ writew((u16)(0x0000), remapped_inner + PLGMD); ++ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) & ~FUNC_SLCDEN), ++ remapped_regs + TC6393_SYS_FER); ++ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT); ++ writew((u16)(PLL10_QVGA), remapped_regs + TC6393_SYS_PLL1CR1); ++ writew((u16)(PLL11_QVGA), remapped_regs + TC6393_SYS_PLL1CR2); ++ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN), ++ remapped_regs + TC6393_SYS_FER); ++ ++ for( i=0; i<kurohyo_LCDCREG_NUM-1; i++){ ++ writew((u16)(kurohyoLcdcQVGA[i].Value), remapped_inner + kurohyoLcdcQVGA[i].Index); ++ } ++ } else { // change to VGA ++ writew((u16)(0x0000), remapped_inner + PLGMD); ++ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) & ~FUNC_SLCDEN), ++ remapped_regs + TC6393_SYS_FER); ++ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT); ++ writew((u16)(PLL10_VGA), remapped_regs + TC6393_SYS_PLL1CR1); ++ writew((u16)(PLL11_VGA), remapped_regs + TC6393_SYS_PLL1CR2); ++ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN), ++ remapped_regs + TC6393_SYS_FER); ++ ++ for( i=0; i<kurohyo_LCDCREG_NUM-1; i++){ ++ writew((u16)(kurohyoLcdcVGA[i].Value), remapped_inner + kurohyoLcdcVGA[i].Index); ++ } ++ } ++ ++ writew((u16)(PLCNT_DEFAULT), remapped_inner + PLCNT); ++ mdelay(5); ++ writew((u16)(PLCNT_DEFAULT | PLCNT_STOP_CKP), remapped_inner+PLCNT); ++ mdelay(5); ++ writew((u16)(PLCNT_DEFAULT | PLCNT_STOP_CKP | PLCNT_SOFT_RESET), remapped_inner + PLCNT); ++ writew((u16)(0xfffa), remapped_inner + PIFEN); ++ ++ // TG LCD pannel power up ++ tc6393fb_setpnlctl(0x4); ++ mdelay(50); ++ ++ // TG LCD GVSS ++ tc6393fb_setpnlctl(0x0); ++ ++ { ++ int comadj; ++ /* Set Common Voltage */ ++ comadj = -1; ++ comadj = sharpsl_get_comadj(); ++ if ( comadj < 0 ) { ++ comadj = COMADJ_DEFAULT; ++ } ++ mdelay(50); ++ i2c_init(1); ++ tosa_set_common_voltage( comadj ); ++ } ++ ++} ++ ++static void tc6393fb_setlcdmode(int mode) ++{ ++ if( mode == LCD_MODE_VGA ){ ++ tg_ssp_reg0 |= TG_REG0_VQV; ++ pxa_nssp_output(0, tg_ssp_reg0); // data send to TG ++ tc6393fb_lcdhwsetup(LCD_MODE_VGA); ++ tc6393fb_lcdMode = LCD_MODE_VGA; ++ }else{ ++ tg_ssp_reg0 &= ~TG_REG0_VQV; ++ pxa_nssp_output(0, tg_ssp_reg0); // data send to TG ++ tc6393fb_lcdhwsetup(LCD_MODE_QVGA); ++ tc6393fb_lcdMode = LCD_MODE_QVGA; ++ } ++} ++ ++static void tc6393_soft_reset() ++{ ++ int i; ++ PSPR=0;// Clear Core Clock Change status ++ ++ // L3V On ++ writew((u16)(readw(remapped_scoop2_2 + SCP_GPWR) | SCOOP22_L3VON),remapped_scoop2_2 + SCP_GPWR); ++ ++ // TG On ++ writew((u16)(readw(remapped_regs + TC6393_SYS_GPODSR1) & ~0x0001),remapped_regs + TC6393_SYS_GPODSR1); ++ ++ // Clock Control Register ++ writew((u16)((readw(remapped_regs + TC6393_SYS_CCR) & CLKCTL_USB_MASK) | CLKCTL_CONFIG_DTA), ++ remapped_regs + TC6393_SYS_CCR); ++ ++ writew((u16)(0x0cc1), remapped_regs + TC6393_SYS_PLL2CR); ++ ++ if ( tc6393fb_lcdMode == LCD_MODE_VGA ) { // VGA ++ writew((u16)(PLL10_VGA), remapped_regs + TC6393_SYS_PLL1CR1); ++ writew((u16)(PLL11_VGA), remapped_regs + TC6393_SYS_PLL1CR2); ++ } else { // QVGA ++ writew((u16)(PLL10_QVGA), remapped_regs + TC6393_SYS_PLL1CR1); ++ writew((u16)(PLL11_QVGA), remapped_regs + TC6393_SYS_PLL1CR2); ++ } ++ writew((u16)(0x003a), remapped_lcdbase + KH_CLKEN); ++ writew((u16)(0x003a), remapped_lcdbase + KH_GCLKEN); ++ writew((u16)(0x3f00), remapped_lcdbase + KH_PSWCLR); ++ writew((u16)(readw(remapped_regs + TC6393_SYS_FER) | FUNC_SLCDEN), remapped_regs + TC6393_SYS_FER); ++ mdelay(2); ++ ++ writew((u16)(0x0000), remapped_lcdbase + KH_PSWCLR); ++ writew((u16)(0x3300), remapped_regs + TC6393_SYS_GPER); ++ ++ // initialize kurohyo configration register ++ for( i=0; i <= KH_CMDREG_NUM; i++){ ++ writew((u16)(kh_cmd[i].Value), remapped_lcdbase + kh_cmd[i].Index); ++ } ++ mdelay(2); ++ writew((u16)(0x000b), remapped_lcdbase + KH_VRAMBC); ++ ++ tc6393fb_initssp(); ++ tc6393fb_isblank = 0; ++} ++ ++#ifdef USE_ACCELERATOR ++static void tc6393_acc_init() ++{ ++ writew((u16)((FIFO_ADDR>>16)&0x001f), remapped_inner + KH_CMDADR_H); ++ writew((u16)(FIFO_ADDR&0x0fff8), remapped_inner + KH_CMDADR_L); ++ writew(512-1, remapped_inner + KH_CMDFIF); ++ ++ writew(1, remapped_inner + KH_FIFOR); ++ ++ writew(0, remapped_inner + KH_BINTMSK); ++ writew(0, remapped_inner + KH_CMDFINT); ++} ++ ++static void tc6393_acc_write( u32* cmd, int cmdnum ) ++{ ++ volatile int i; ++ int ct=0; ++ ++ if (readw(remapped_inner + KH_FIPT)>400) { ++ while(readw(remapped_inner + KH_FIPT)>200) { ++ mdelay(1); ++ if (++ct>1000) { ++ printk(__FUNCTION__ ": timeout\n"); ++ return; // timeout ++ } ++ } ++ } ++ ++ for ( i = 0; i < cmdnum; i ++ ) { ++ writew((u16)((cmd[i]>>16) & 0x0ffff), remapped_inner + KH_COMD_H); ++ writew((u16)(cmd[i] & 0x0ffff), remapped_inner + KH_COMD_L); ++ } ++} ++ ++static void tc6393_acc_sync() ++{ ++ int ct=0; ++ while(readw(remapped_inner + KH_FIPT)>0) { ++ mdelay(1); ++ if (++ct>1000) { ++ printk(__FUNCTION__ ": timeout\n"); ++ return; // timeout ++ } ++ } ++ ct=0; ++ while(readw(remapped_inner + KH_DMAST)&PXAIO_DMAST_BLT) { ++ mdelay(1); ++ if (++ct>1000) { ++ printk(__FUNCTION__ ": timeout\n"); ++ return; // timeout ++ } ++ } ++} ++#endif // end USE_ACCELERATOR ++ ++static void tc6393_clear_screen(u32 mode) ++{ ++#ifndef USE_ACCELERATOR ++ if(mode == LCD_MODE_VGA){ ++ memset(remapped_fbuf,0xff,MAX_XRES_VGA*MAX_YRES_VGA*2); ++ }else if(mode == LCD_MODE_QVGA){ ++ memset(remapped_fbuf,0xff,MAX_XRES_QVGA*MAX_YRES_QVGA*2); ++ } ++#else // Accelerator always clear VGA area ++ static u32 cmd[6]; ++ u16 xres = (tc6393fb_lcdMode == LCD_MODE_VGA)?MAX_XRES_VGA:MAX_XRES_QVGA; ++ u16 yres = (tc6393fb_lcdMode == LCD_MODE_VGA)?MAX_YRES_VGA:MAX_YRES_QVGA; ++ ++ cmd[0] = PXAIO_COMDI_DSADR|PXAIO_COMDD_DSADR(((int)remapped_fbuf)); ++ cmd[1] = PXAIO_COMDI_DHPIX|PXAIO_COMDD_DHPIX(xres - 1); ++ cmd[2] = PXAIO_COMDI_DVPIX|PXAIO_COMDD_DVPIX(yres - 1); ++ cmd[3] = PXAIO_COMDI_FILL|PXAIO_COMDD_FILL(0xffff); ++ cmd[4] = PXAIO_COMDI_FLGO; ++ ++ tc6393_acc_write(cmd,5); ++ tc6393_acc_sync(); ++ ++#endif // end USE_ACCELERATOR ++} ++ ++static DECLARE_WAIT_QUEUE_HEAD(blank_queue); ++ ++static void tc6393_pm_suspend(int suspend_mode) ++{ ++#ifndef STATIC_IMAGE_BUF ++ int i,j; ++ u32 *pVram = (u32*)remapped_fbuf; ++#endif ++ ++#ifdef USE_ACCELERATOR ++ tc6393_acc_sync(); ++#endif ++ ++ if (!tc6393fb_isblank) { ++#ifdef STATIC_IMAGE_BUF ++ save_image(); ++#else ++ for (i = 0; i < current_par.yres/SAVE_LINES; i++) { ++ if (gSaveImagePtr[i] != NULL){ ++ kfree(gSaveImagePtr[i]); ++ gSaveImagePtr[i] = NULL; ++ } ++ gSaveImagePtr[i] = kmalloc(current_par.xres * BITS_PER_PIXEL*SAVE_LINES / 8, GFP_KERNEL); ++ if (gSaveImagePtr[i] != NULL){ ++ memcpy(gSaveImagePtr[i],pVram,current_par.xres*SAVE_LINES*2); ++ pVram += current_par.xres*SAVE_LINES/2; ++ } ++ else { ++ printk("can't alloc pre-off image buffer %d\n", i); ++ for (j = 0; j < i; j++) { ++ if (gSaveImagePtr[i] != NULL) { ++ kfree(gSaveImagePtr[i]); ++ gSaveImagePtr[i] = NULL; ++ } ++ } ++ break; ++ } ++ } ++ for (; i < HORIZONTAL_LINE_VGA/SAVE_LINES; i++) { ++ gSaveImagePtr[i] = NULL; ++ } ++#endif ++ ++#ifdef CONFIG_PM ++ tosa_bl_pm_callback(NULL, PM_SUSPEND, NULL); ++#endif ++ ++ tc6393fb_isblank = 1; ++ ++ wait_vsync(); ++ tc6393_clear_screen(LCD_MODE_VGA); ++ wait_vsync(); ++ wait_vsync(); ++ ++ // TG LCD VHSA off ++ tc6393fb_setpnlctl(0x4); ++ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 50/2 ); ++ else mdelay(50); ++ ++ // TG LCD signal off ++ tc6393fb_setpnlctl(0x6); ++ wait_vsync(); ++ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 50/2 ); ++ else mdelay(50); ++ ++ // TG Off ++ writew((u16)(readw(remapped_regs + TC6393_SYS_GPODSR1) | 0x0001),remapped_regs + TC6393_SYS_GPODSR1); ++ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 120/2 ); ++ else mdelay(120); ++ ++ // CLK: Stop ++ writew((u16)(0x0), remapped_lcdbase + KH_CLKEN); ++ if (suspend_mode) interruptible_sleep_on_timeout((wait_queue_head_t*)&blank_queue, 100/2 ); ++ else mdelay(100); ++ ++ // L3V Off ++ writew((u16)(readw(remapped_scoop2_2 + SCP_GPWR) & ~SCOOP22_L3VON),remapped_scoop2_2 + SCP_GPWR); ++ ++//X tc6393fb_isblank = 1; ++ } ++} ++ ++static void tc6393_pm_resume() ++{ ++#ifndef STATIC_IMAGE_BUF ++ int i; ++ u32 *pVram = (u32*)remapped_fbuf; ++#endif ++ ++ tc6393_hw_init(); ++ ++#ifdef USE_ACCELERATOR ++ // erase whole VRAM ++ if (tc6393fb_lcdMode == LCD_MODE_QVGA) { ++ memset(remapped_fbuf,0xff,MAX_XRES_VGA*MAX_YRES_VGA*2); ++ } ++#endif ++ ++#ifdef STATIC_IMAGE_BUF ++ load_image(); ++#else ++ if (gSaveImagePtr[0] != NULL){ ++ for (i = 0; i < (current_par.yres)/SAVE_LINES; i++) { ++ if (gSaveImagePtr[i] == NULL) { ++ printk("can't find pre-off image buffer %d\n", i); ++ continue; ++ } ++ memcpy(pVram,gSaveImagePtr[i],current_par.xres*SAVE_LINES*2); ++ pVram += current_par.xres*SAVE_LINES/2; ++ kfree(gSaveImagePtr[i]); ++ gSaveImagePtr[i] = NULL; ++ } ++ } ++#endif ++ ++ tc6393fb_setlcdmode(tc6393fb_lcdMode); ++ ++#ifdef CONFIG_PM ++ tosa_bl_pm_callback(NULL, PM_RESUME, NULL); ++#endif ++ ++} ++ ++#ifdef CONFIG_PM ++static int tc6393_pm_callback(struct pm_dev* pm_dev, ++ pm_request_t req, void* data) ++{ ++ switch (req) { ++ case PM_SUSPEND: ++ tc6393_pm_suspend(0); ++ break; ++ ++ case PM_RESUME: ++ tc6393_pm_resume(); ++ break; ++ } ++ return 0; ++} ++ ++void tc6393_fatal_off(void) ++{ ++ tc6393_pm_suspend(0); ++} ++#endif //CONFIG_PM ++ ++// EOF +diff -Nur linux_c860_org/drivers/video/tc6393fb.h linux/drivers/video/tc6393fb.h +--- linux_c860_org/drivers/video/tc6393fb.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/tc6393fb.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,249 @@ ++/* ++ * linux/drivers/video/tc6393fb.h ++ * ++ * Frame Buffer Device for TOSHIBA tc6393 ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ */ ++ ++#if !defined (_TC6393FB) ++#define _TC6393FB ++ ++#define KH_COMMAND_REG 0x004 ++#define KH_BASEADDR_H 0x012 ++#define KH_BASEADDR_L 0x010 ++#define KH_CLKEN 0x040 ++#define KH_GCLKEN 0x042 ++#define KH_PSWCLR 0x050 ++#define KH_VRAMTC 0x060 ++#define KH_VRAMRC 0x061 ++#define KH_VRAMAC 0x062 ++#define KH_VRAMBC 0x064 ++#define KH_VMREQMD 0x06F ++ ++#define KH_CMDADR_L 0x00A ++#define KH_CMDADR_H 0x00C ++#define KH_CMDFIF 0x00E ++#define KH_CMDFINT 0x010 ++#define KH_BINTMSK 0x012 ++#define KH_BINTST 0x014 ++#define KH_FIPT 0x016 ++#define KH_DMAST 0x018 ++#define KH_COMD_L 0x01C ++#define KH_COMD_H 0x01E ++#define KH_FIFOR 0x022 ++ ++#define PXAIO_DMAST_DMA 0x0001 ++#define PXAIO_DMAST_BLT 0x0002 ++ ++#define kurohyo_LCDCREG_NUM 18 ++ ++#define PLMOD 0x164 ++#define PLCST 0x102 ++#define VHLIN 0x008 ++#define PLDSA_H 0x124 ++#define PLDSA_L 0x122 ++#define PLPIT_H 0x12c ++#define PLPIT_L 0x12a ++#define PLHT 0x140 ++#define PLHDS 0x142 ++#define PLHSS 0x144 ++#define PLHSE 0x146 ++#define PLHBS 0x148 ++#define PLHBE 0x14a ++#define PLHPX 0x14c ++#define PLVT 0x150 ++#define PLVDS 0x152 ++#define PLVSS 0x154 ++#define PLVSE 0x156 ++#define PLVBS 0x158 ++#define PLVBE 0x15a ++#define PLGMD 0x12e ++#define PLCST 0x102 ++#define PLMOD 0x164 ++#define MISC 0x166 ++#define PLCNT 0x100 ++#define PIFEN 0x18e ++#define PLCLN 0x160 ++ ++ ++#define CLKCTL_USB_MASK 0x0002 ++#define CLKCTL_CONFIG_DTA 0x1310 ++ ++#define SCOOP_CF_MODE 0x0100 ++#define SCOOP21_OUT_MASK 0x0004 ++#define SCOOP22_OUT_MASK 0x036e ++ ++#define SCOOP21_RESET_IN 0x0004 ++#define SCOOP22_SUSPEND 0x0020 ++#define SCOOP22_L3VON 0x0040 ++ ++ ++#define PLCNT_SOFT_RESET 0x0001 ++#define PLCNT_STOP_CKP 0x0004 ++#define PLCNT_DEFAULT 0x0010 ++ ++ ++ ++#define FUNC_SLCDEN 0x0004 ++#define PLL10_QVGA 0xf203 ++#define PLL11_QVGA 0x00e7 ++#define PLL10_VGA 0xdf00 ++#define PLL11_VGA 0x002c ++ ++typedef struct ++{ ++ unsigned short Index; ++ unsigned short Value; ++} TC6393_REGS; ++ ++static TC6393_REGS kurohyoLcdcQVGA[] = ++{ ++ { VHLIN, 0x01E0 }, // VHLIN ++ { PLDSA_H, 0x0000 }, // PLDSA display start address high ++ { PLDSA_L, 0x0000 }, // PLDSA display start address low ++ { PLPIT_H, 0x0000 }, // PLPIT horizontal pixel high ++ { PLPIT_L, 0x01E0 }, // PLPIT horizontal pixel low ++ { PLHT, 0x0145 }, // PLHT horizontal total ++ { PLHDS, 0x0026 }, // PLHDS horizontal display start ++ { PLHSS, 0x0000 }, // PLHSS H-sync start ++ { PLHSE, 0x0002 }, // PLHSE H-sync end ++ { PLHPX, 0x00f0 }, // PLHPX Horizontal number of pixel ++ { PLVT, 0x014F }, // PLVT Vertical total ++ { PLVDS, 0x0002 }, // PLVDS Vertical display start ++ { PLVSS, 0x0000 }, // PLVSS V-sync start ++ { PLVSE, 0x0001 }, // PLVSE V-sync end ++ { MISC, 0x0003 }, // MISC RGB565 mode ++ { PLGMD, 0x0001 }, // PLGMD vram access enable ++ { PLCST, 0x4007 }, // PLCST ++ { PLMOD, 0x0003 }, // PLMOD Sync polarity ++}; ++ ++static TC6393_REGS kurohyoLcdcVGA[] = ++{ ++ { VHLIN, 0x03c0 }, // VHLIN ++ { PLDSA_H, 0x0000 }, // PLDSA display start address high ++ { PLDSA_L, 0x0000 }, // PLDSA display start address low ++ { PLPIT_H, 0x0000 }, // PLPIT horizontal pixel high ++ { PLPIT_L, 0x03c0 }, // PLPIT horizontal pixel low ++ { PLHT, 0x0289 }, // PLHT horizontal total ++ { PLHDS, 0x004e }, // PLHDS horizontal display start ++ { PLHSS, 0x0000 }, // PLHSS H-sync start ++ { PLHSE, 0x0002 }, // PLHSE H-sync end ++ { PLHPX, 0x01e0 }, // PLHPX Horizontal number of pixel ++ { PLVT, 0x028f }, // PLVT Vertical total ++ { PLVDS, 0x0002 }, // PLVDS Vertical display start ++ { PLVSS, 0x0000 }, // PLVSS V-sync start ++ { PLVSE, 0x0001 }, // PLVSE V-sync end ++ { MISC, 0x0003 }, // MISC RGB565 mode ++ { PLGMD, 0x0001 }, // PLGMD vram access enable ++ { PLCST, 0x4007 }, // PLCST ++ { PLMOD, 0x0003 }, // PLMOD Sync polarity ++}; ++ ++#define TG_REG0_VQV 0x0001 ++#define TG_REG0_COLOR 0x0002 ++#define TG_REG0_UD 0x0004 ++#define TG_REG0_LR 0x0008 ++ ++#define CK_SSP (0x1u << 3) ++ ++/* ++ * Accelerator COMMAND ++ */ ++ ++// Set Command ++#define PXAIO_COMDI_CSADR 0x00000000 ++#define PXAIO_COMDD_CSADR(x) (x&0x001ffffe) ++#define PXAIO_COMDI_CHPIX 0x01000000 ++#define PXAIO_COMDD_CHPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_CVPIX 0x02000000 ++#define PXAIO_COMDD_CVPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_PSADR 0x03000000 ++#define PXAIO_COMDD_PSADR(x) (x&0x00fffffe) ++#define PXAIO_COMDI_PHPIX 0x04000000 ++#define PXAIO_COMDD_PHPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_PVPIX 0x05000000 ++#define PXAIO_COMDD_PVPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_PHOFS 0x06000000 ++#define PXAIO_COMDD_PHOFS(x) (x&0x000003ff) ++#define PXAIO_COMDI_PVOFS 0x07000000 ++#define PXAIO_COMDD_PVOFS(x) (x&0x000003ff) ++#define PXAIO_COMDI_POADR 0x08000000 ++#define PXAIO_COMDD_POADR(x) (x&0x00fffffe) ++#define PXAIO_COMDI_RSTR 0x09000000 ++#define PXAIO_COMDD_RSTR(x) (x&0x000000ff) ++#define PXAIO_COMDI_TCLOR 0x0A000000 ++#define PXAIO_COMDD_TCLOR(x) (x&0x0000ffff) ++#define PXAIO_COMDI_FILL 0x0B000000 ++#define PXAIO_COMDD_FILL(x) (x&0x0000ffff) ++#define PXAIO_COMDI_DSADR 0x0C000000 ++#define PXAIO_COMDD_DSADR(x) (x&0x00fffffe) ++#define PXAIO_COMDI_SSADR 0x0D000000 ++#define PXAIO_COMDD_SSADR(x) (x&0x00fffffe) ++#define PXAIO_COMDI_DHPIX 0x0E000000 ++#define PXAIO_COMDD_DHPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_DVPIX 0x0F000000 ++#define PXAIO_COMDD_DVPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_SHPIX 0x10000000 ++#define PXAIO_COMDD_SHPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_SVPIX 0x11000000 ++#define PXAIO_COMDD_SVPIX(x) (x&0x000003ff) ++#define PXAIO_COMDI_LBINI 0x12000000 ++#define PXAIO_COMDD_LBINI(x) (x&0x0000ffff) ++#define PXAIO_COMDI_LBK2 0x13000000 ++#define PXAIO_COMDD_LBK2(x) (x&0x0000ffff) ++#define PXAIO_COMDI_SHBINI 0x14000000 ++#define PXAIO_COMDD_SHBINI(x) (x&0x0000ffff) ++#define PXAIO_COMDI_SHBK2 0x15000000 ++#define PXAIO_COMDD_SHBK2(x) (x&0x0000ffff) ++#define PXAIO_COMDI_SVBINI 0x16000000 ++#define PXAIO_COMDD_SVBINI(x) (x&0x0000ffff) ++#define PXAIO_COMDI_SVBK2 0x17000000 ++#define PXAIO_COMDD_SVBK2(x) (x&0x0000ffff) ++ ++// Action Command ++#define PXAIO_COMDI_CMGO 0x20000000 ++#define PXAIO_COMDD_CMGO_CEND 0x00000001 ++#define PXAIO_COMDD_CMGO_INT 0x00000002 ++#define PXAIO_COMDD_CMGO_CMOD 0x00000010 ++#define PXAIO_COMDD_CMGO_CDVRV 0x00000020 ++#define PXAIO_COMDD_CMGO_CDHRV 0x00000040 ++#define PXAIO_COMDD_CMGO_RUND 0x00008000 ++#define PXAIO_COMDI_SCGO 0x21000000 ++#define PXAIO_COMDD_SCGO_CEND 0x00000001 ++#define PXAIO_COMDD_SCGO_INT 0x00000002 ++#define PXAIO_COMDD_SCGO_ROP3 0x00000004 ++#define PXAIO_COMDD_SCGO_TRNS 0x00000008 ++#define PXAIO_COMDD_SCGO_DVRV 0x00000010 ++#define PXAIO_COMDD_SCGO_DHRV 0x00000020 ++#define PXAIO_COMDD_SCGO_SVRV 0x00000040 ++#define PXAIO_COMDD_SCGO_SHRV 0x00000080 ++// Specifications Document Rev.18 Add ++#define PXAIO_COMDD_SCGO_DSTXY 0x00008000 ++#define PXAIO_COMDI_SBGO 0x22000000 ++#define PXAIO_COMDD_SBGO_CEND 0x00000001 ++#define PXAIO_COMDD_SBGO_INT 0x00000002 ++#define PXAIO_COMDD_SBGO_DVRV 0x00000010 ++#define PXAIO_COMDD_SBGO_DHRV 0x00000020 ++#define PXAIO_COMDD_SBGO_SVRV 0x00000040 ++#define PXAIO_COMDD_SBGO_SHRV 0x00000080 ++#define PXAIO_COMDD_SBGO_SBMD 0x00000100 ++#define PXAIO_COMDI_FLGO 0x23000000 ++#define PXAIO_COMDD_FLGO_CEND 0x00000001 ++#define PXAIO_COMDD_FLGO_INT 0x00000002 ++#define PXAIO_COMDD_FLGO_ROP3 0x00000004 ++#define PXAIO_COMDI_LDGO 0x24000000 ++#define PXAIO_COMDD_LDGO_CEND 0x00000001 ++#define PXAIO_COMDD_LDGO_INT 0x00000002 ++#define PXAIO_COMDD_LDGO_ROP3 0x00000004 ++#define PXAIO_COMDD_LDGO_ENDPX 0x00000008 ++#define PXAIO_COMDD_LDGO_LVRV 0x00000010 ++#define PXAIO_COMDD_LDGO_LHRV 0x00000020 ++#define PXAIO_COMDD_LDGO_LDMOD 0x00000040 ++ ++#endif +diff -Nur linux_c860_org/drivers/video/tosaLogoMsg.c linux/drivers/video/tosaLogoMsg.c +--- linux_c860_org/drivers/video/tosaLogoMsg.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/tosaLogoMsg.c 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,488 @@ ++/* Logo Screen 16bits RGB(565) data*/ ++#ifndef __initdata ++#define __initdata ++#endif ++static const int logo_msg_width_en __initdata = 32; ++static const int logo_msg_height_en __initdata = 480; ++static const unsigned short logo_msg_data_en[32*480] __initdata ={ ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xa514,0xa514,0xa514,0xa514,0xa514,0xa514,0x528a,0x0000,0x528a,0xa514,0xa514,0xa514,0xa514,0xa514,0x632c,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0020,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xdedb,0x18e3,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x39e7,0x5aeb,0x4a49,0x0841,0x0000,0x4208,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x18e3,0x0000,0x0000,0x0000,0x0841,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0xc638,0xce79,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb596,0x8c71,0x7bef,0x8430,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x738e,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x18c3,0x7bcf,0xad75,0x31a6,0x10a2,0x9492,0x4a69,0x0000,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39c7,0xef7d,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xad55,0x0020,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xd69a,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xc618,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x39e7,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x2124,0xce79,0xffff,0xffff,0x4228,0x2104,0xffff,0xffdf,0x7bef,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x9cf3,0xffff,0x4228,0x0861,0x4a69,0x10a2,0x0000,0x2965,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x39e7,0xad75,0xffff,0x4228,0x0000,0x0000,0x31a6,0x9492,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xdefb,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bef,0x9492,0xdefb,0xffff,0xffff,0xffff,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39e7,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xffff,0xffff,0x4228,0x10a2,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x39c7,0xb5b6,0xa514,0x10a2,0x0841,0xe71c,0xffff,0x73ae,0x1082,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xdedb,0xffff,0xffff,0x94b2,0x0000,0x94b2,0xffff,0xffff,0xe73c,0x18c3,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x630c,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xd6ba,0xffff,0xffff,0xffdf,0x0841,0x39c7,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2104,0x4a69,0xffdf,0xffff,0xffff,0x4228,0x0020,0xf79e,0xffff,0xffff,0x4a49,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x39c7,0x9cf3,0xc638,0x738e,0x0000,0x8430,0xbdf7,0x6b4d,0x0000,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x528a,0x738e,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x8410,0x2945,0xad75,0xffff,0xffff,0xef5d,0x73ae,0x4228,0x52aa,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0861,0xa534,0xffff,0xef7d,0x2104,0x0000,0x0000,0x0000,0x0000,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x528a,0xef7d,0xffff,0xffff,0x8430,0x0000,0x2945,0xef5d,0xdefb,0x10a2,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xe71c,0xffff,0xffff,0xffff,0x2124,0x0000,0xa534,0xffff,0xffff,0x6b6d,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x0841,0xf79e,0xffff,0xffff,0x7bcf,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0xbdf7,0xffff,0xffff,0x73ae,0x0000,0x528a,0xffff,0xffff,0xf79e,0x2945,0x0020,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x0020,0x18c3,0x8c71,0x8c51,0x0861,0x0000,0xad75,0xffff,0xad75,0x18c3,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0841,0x0000,0x0000,0x0000,0x5acb,0xffff,0xffff,0xad55,0x0861,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xf7be,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x7bef,0x31a6,0x0861,0x0000,0x0020,0x2945,0x5acb,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0861,0x0000,0x0020,0x2965,0x1082,0x0020,0x1082,0x0000,0x0000,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0861,0x0020,0x8c51,0xf79e,0xffff,0x4228,0x2104,0xffff,0xce79,0x39c7,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x9492,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xf79e,0x2124,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf79e,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x73ae,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xef7d,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xe71c,0x1082,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x18c3,0x0000,0x4a69,0xd6ba,0xffff,0x4228,0x18e3,0xce79,0x9492,0x18c3,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x2124,0x0000,0x9cd3,0xffff,0x4228,0x0000,0x0000,0x0000,0x18c3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0xdefb,0xffff,0x8c51,0x5aeb,0x73ae,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x2965,0x632c,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0x0861,0x4208,0x7bcf,0xb5b6,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x2124,0x528a,0x8c71,0xc618,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xc618,0x9492,0x52aa,0x2124,0x0000,0x0000,0x0020,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb5b6,0x7bef,0x4a69,0x1082,0x0000,0x0000,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xce79,0x9492,0x5acb,0x31a6,0x0020,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0x7bcf,0x4208,0x0861,0x0000,0x0000,0x1082,0x4228,0x7bef,0xb596,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x0000,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x18c3,0x528a,0x9492,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0x6b6d,0x39c7,0x0020,0x0000,0x0000,0x0861,0x4228,0x8410,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x7bcf,0x39c7,0x0020,0x0000,0x0000,0x0020,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x8410,0x4208,0x0841,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x31a6,0x0000,0x1082,0x630c,0xef7d,0xffff,0xffff,0x8430,0x9492,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0020,0x0000,0x39c7,0x2124,0x0000,0x31a6,0xffdf,0xffff,0x31a6,0x0000,0x18e3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x9cd3,0xffff,0xffdf,0x52aa,0x0000,0xbdd7,0xffff,0xe73c,0x73ae,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf7be,0xffff,0xffff,0xb5b6,0x0000,0x738e,0xffff,0xffff,0xffff,0x4a49,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xf79e,0xffff,0xffff,0xef5d,0x0000,0x528a,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0xa514,0xffff,0xffff,0xffff,0x2104,0x18c3,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0861,0xb5b6,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xe71c,0x18c3,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x5aeb,0x0020,0x0000,0x18e3,0x4228,0x2965,0x0000,0x2124,0x4208,0x0841,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0x630c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0xd69a,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xa514,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0x4228,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xffff,0xffff,0xd69a,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xd69a,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x4a49,0x0000,0xc638,0xc638,0xc638,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x4208,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x2965,0x0000,0x7bef,0x7bef,0x7bef,0x7bef,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0xad55,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x0861,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xdefb,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x5aeb,0xffff,0xffff,0xffff,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x9492,0x7bef,0x7bef,0xa534,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x73ae,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2965,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0x18c3,0x7bcf,0xad75,0xc638,0xbdf7,0x94b2,0x4a69,0x0000,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39e7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bcf,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2965,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0020,0x0861,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x528a,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0020,0x0000,0x18c3,0x4a69,0x5aeb,0x5acb,0x39c7,0x0020,0x0000,0x39c7,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x5acb,0x10a2,0x0000,0x0000,0x0000,0x0000,0x31a6,0x9492,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xdefb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x2124,0x0000,0x0000,0x2965,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x73ae,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x10a2,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x0841,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bef,0x9492,0xdefb,0xffff,0xffff,0xffff,0xe71c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39e7,0x0000,0x0000,0x0000,0x0020,0x9cf3,0xffff,0xffff,0x4228,0x10a2,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x39c7,0xb5b6,0xa514,0x10a2,0x0841,0xe71c,0xffff,0x73ae,0x1082,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xdedb,0xffff,0xffff,0x94b2,0x0000,0x94b2,0xffff,0xffff,0xe73c,0x18c3,0x1082,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xffff,0xffff,0xffff,0xd69a,0x0000,0x630c,0xffff,0xffff,0xffff,0x6b6d,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xd6ba,0xffff,0xffff,0xffdf,0x0841,0x39c7,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2104,0x4a69,0xffdf,0xffff,0xffff,0x4228,0x0020,0xf79e,0xffff,0xffff,0x4a49,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x39c7,0x9cf3,0xc638,0x738e,0x0000,0x8430,0xbdf7,0x6b4d,0x0000,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x528a,0x738e,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x10a2,0x5aeb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x0861,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xdefb,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x5aeb,0xffff,0xffff,0xffff,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb596,0x8c71,0x7bef,0x8430,0xad55,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x738e,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x4208,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x18c3,0x7bcf,0xad75,0x31a6,0x10a2,0x9492,0x4a69,0x0000,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x39c7,0xef7d,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xad55,0x0020,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xd69a,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffff,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xc618,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x39e7,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x2124,0xce79,0xffff,0xffff,0x4228,0x2104,0xffff,0xffdf,0x7bef,0x0000,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0000,0x9cf3,0xffff,0x4228,0x0861,0x4a69,0x10a2,0x0000,0x2965,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x39e7,0xad75,0xffff,0x4228,0x0000,0x0000,0x31a6,0x9492,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xdefb,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x5aeb,0x2104,0x0000,0x0000,0x0000,0x2965,0x632c,0xa514,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0x0861,0x4208,0x7bcf,0xb5b6,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x2124,0x528a,0x8c71,0xc618,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xc618,0x9492,0x52aa,0x2124,0x0000,0x0000,0x0020,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb5b6,0x7bef,0x4a69,0x1082,0x0000,0x0000,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xce79,0x9492,0x5acb,0x31a6,0x0020,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xb596,0x7bcf,0x4208,0x0861,0x0000,0x0000,0x1082,0x4228,0x7bef,0xb596,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x0000,0x31a6,0x632c,0xa514,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x18c3,0x528a,0x9492,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xb596,0x6b6d,0x39c7,0x0020,0x0000,0x0000,0x0861,0x4228,0x8410,0xbdd7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x7bcf,0x39c7,0x0020,0x0000,0x0000,0x0020,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xb5b6,0x8410,0x4208,0x0841,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xad55,0x7bcf,0x18c3,0x3186,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x1082,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2965,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x2945,0x0000,0x18e3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x3186,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xbdd7,0x8430,0x18e3,0x4a49,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x1082,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2945,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x738e,0x2965,0x0000,0x18c3,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0x4228,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0xffff,0xffff,0x73ae,0x4228,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xb596,0x7bef,0x10a2,0x31a6,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x1082,0x4a49,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xce59,0x632c,0x0000,0x0861,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x94b2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x632c,0x8c71,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x9cf3,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0000,0x0861,0x8430,0xb5b6,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0861,0xa514,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x0861,0x0000,0x0000,0x18e3,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x8430,0x528a,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x18c3,0x0000,0x4228,0x4228,0x4228,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x528a,0x2945,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x7bef,0x31a6,0x0861,0x0000,0x0020,0x2945,0x5acb,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x0861,0x0000,0x0020,0x2965,0x1082,0x0020,0x1082,0x0000,0x0000,0x5aeb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0861,0x0020,0x8c51,0xf79e,0xffff,0x4228,0x2104,0xffff,0xce79,0x39c7,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x9492,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xf79e,0x2124,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xf79e,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x73ae,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xef7d,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x7bcf,0xffff,0xffff,0xffff,0x4228,0x2104,0xffff,0xffff,0xe71c,0x1082,0x18c3,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x18c3,0x0000,0x4a69,0xd6ba,0xffff,0x4228,0x18e3,0xce79,0x9492,0x18c3,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x2124,0x0000,0x9cd3,0xffff,0x4228,0x0000,0x0000,0x0000,0x18c3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xbdd7,0xdefb,0xffff,0x8c51,0x5aeb,0x73ae,0xb596,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xad55,0xdefb,0xffff,0xffff,0xffff,0xef7d,0xc638,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x1082,0x0000,0x9cd3,0xffff,0xffff,0x8c71,0x0841,0x0000,0x0000,0x3186,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x0861,0x7bcf,0xdefb,0xffff,0xbdf7,0x0000,0x0020,0x6b4d,0x5aeb,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0xad55,0xffff,0xffff,0xffff,0x528a,0x0000,0x6b6d,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xffdf,0xffff,0xffff,0xf79e,0x0841,0x0000,0xd69a,0xffff,0xffff,0x7bef,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xef5d,0xffff,0xffff,0xa534,0x0000,0x2124,0xffff,0xffff,0xffff,0x630c,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x6b6d,0xffdf,0xf7be,0x39c7,0x0000,0x7bef,0xffff,0xef5d,0x8c71,0x0020,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x2945,0x0000,0x1082,0x1082,0x0000,0x0861,0xe73c,0xffff,0x94b2,0x0000,0x0841,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x738e,0x31a6,0x2104,0x52aa,0xce79,0xffff,0xffff,0xd69a,0x8c51,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x7bef,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x2104,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ }; +diff -Nur linux_c860_org/drivers/video/tosaLogoMsgJ.c linux/drivers/video/tosaLogoMsgJ.c +--- linux_c860_org/drivers/video/tosaLogoMsgJ.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/tosaLogoMsgJ.c 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,488 @@ ++/* Logo Screen 16bits RGB(565) data*/ ++#ifndef __initdata ++#define __initdata ++#endif ++static const int logo_msg_width_jp __initdata = 32; ++static const int logo_msg_height_jp __initdata = 480; ++static const unsigned short logo_msg_data_jp[32*480] __initdata ={ ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x0000,0x39c7,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x0020,0x39c7,0x9492,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x0861,0x0000,0x0020,0x7bef,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000,0x39e7,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0x94b2,0x0861,0x0000,0x3186,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0xbdd7,0x3186,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xdefb,0x3186,0x0000,0x0861,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x0861,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xf7be,0x632c,0x0000,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0020,0x0000,0x52aa,0xe73c,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0020,0x2965,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x1082,0x0000,0x0841,0x5acb,0x94b2,0xa514,0x6b4d,0x0861,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x738e,0x4228,0x4228,0x5acb,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe71c,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xc618,0x18c3,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0x0020,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdedb,0x0861,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4a49,0x0000,0x0020,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x0000,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd6ba,0x39e7,0x0000,0x0020,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x0861,0xc618,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xf7be,0x52aa,0x0000,0x0000,0x632c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0861,0xbdd7,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x8410,0x0020,0x0000,0x18e3,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x5acb,0x0000,0x0000,0x6b4d,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xbdf7,0x2104,0x0000,0x0000,0x2965,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0x0861,0x0000,0x0000,0x2124,0x2965,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xf7be,0x8410,0x1082,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x738e,0x18c3,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x7bef,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7be,0xa534,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x630c,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xad55,0x2945,0x0000,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7be,0x10a2,0x0000,0x0000,0x18c3,0x2104,0x4208,0x4228,0x5acb,0x5aeb,0x4a69,0x0000,0x7bef,0xffff,0xffff,0xdefb,0x39c7,0x0000,0x0000,0x2124,0x94b2,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xc638,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xa514,0x0861,0x0000,0x0861,0x8c71,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0xc638,0xc638,0xa534,0xa514,0x94b2,0x7bef,0x7bef,0x630c,0xad75,0x8c71,0x0000,0x0000,0x3186,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0000,0x0000,0x528a,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce79,0x0020,0x0000,0x39e7,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x2945,0x0000,0x18e3,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x2104,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x630c,0x52aa,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xc638,0xce59,0xffff,0xffff,0xffff,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0020,0x0000,0x4228,0xe73c,0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x39e7,0x0000,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x10a2,0x0000,0x10a2,0x9cf3,0xffdf,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x4a49,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x632c,0x0020,0x0000,0x2124,0x94b2,0xe73c,0x0000,0x2104,0xffff,0xffff,0x6b6d,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x73ae,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0020,0x2104,0x2104,0x1082,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef5d,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0xdedb,0x39c7,0x0000,0x2104,0xd6ba,0xdefb,0x0000,0x18e3,0xdefb,0xdefb,0xdefb,0x0861,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x39e7,0x0000,0x0861,0xd6ba,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0x52aa,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x5aeb,0x73ae,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x18e3,0x0861,0xc618,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0x9492,0x2965,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xffff,0xffff,0xffff,0xffff,0x7bef,0x9492,0xffff,0xffff,0xffff,0xe71c,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x9cd3,0x5aeb,0xdedb,0xffff,0x7bef,0x0000,0xa514,0xef7d,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xd69a,0x2945,0x0000,0x2104,0x4228,0x4228,0x31a6,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x1082,0x7bef,0x7bef,0x2965,0x0000,0x630c,0x7bef,0x4208,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x1082,0x7bef,0x7bef,0x2965,0x0000,0x630c,0x7bef,0x4208,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xe71c,0x528a,0x0000,0x4208,0x7bef,0x7bef,0x630c,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0x7bef,0x0000,0xa514,0xc638,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xc638,0xa514,0xe73c,0xffff,0x7bef,0x0000,0xa514,0xe71c,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x4228,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79e,0x3186,0x0000,0x528a,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xe73c,0x52aa,0x0000,0x0000,0x0000,0x0841,0x39e7,0x5aeb,0x7bcf,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x6b6d,0x2104,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdefb,0xe73c,0xffff,0xffff,0xe71c,0xb5b6,0x9cd3,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x7bef,0x528a,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x6b4d,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x632c,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0x5acb,0x73ae,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x9492,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0x2104,0x4228,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xc638,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0x18e3,0x4228,0xf7be,0xc638,0xc638,0xc638,0x630c,0x0000,0xad55,0xc638,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffdf,0x10a2,0x0000,0xdedb,0xffff,0xf79e,0x5aeb,0x0000,0x4228,0xdefb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0x8410,0xef7d,0x39e7,0x0000,0x0000,0x4228,0xe73c,0x2104,0x0000,0x39e7,0x2104,0x0000,0x39e7,0x31a6,0xa514,0x0000,0x2965,0x5aeb,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x18c3,0x2124,0x0000,0x8410,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0x0000,0x738e,0xffff,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x2965,0x5aeb,0x52aa,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0000,0xd6ba,0xffff,0x2104,0x4228,0xffff,0x7bef,0x0000,0xdefb,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffdf,0x18e3,0x0841,0x0020,0x2945,0xf79e,0x2104,0x4228,0xffff,0x528a,0x0000,0x8c71,0x528a,0x0000,0x8c71,0xa514,0x94b2,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xad75,0x0000,0x5acb,0x7bef,0x0000,0x4a49,0x18e3,0x4228,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x8410,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0xa514,0xffdf,0x52aa,0x0000,0x0000,0x4228,0xffff,0x5aeb,0x5aeb,0x5aeb,0x2965,0x0000,0x528a,0x4a69,0x8c51,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x1082,0x0000,0xdefb,0xffff,0xf79e,0x39e7,0x0000,0x31a6,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd69a,0x0000,0x10a2,0xffff,0xffff,0xffff,0xffdf,0x39e7,0xc638,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x9cf3,0x0000,0x4208,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x6b6d,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xd6ba,0x9492,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xdefb,0xffdf,0xffff,0xf79e,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffdf,0x73ae,0x18e3,0x0020,0x2945,0x6b6d,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x9492,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x1082,0x2104,0x0861,0x0000,0x0861,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xef5d,0x0020,0x2945,0xf79e,0xffff,0xf7be,0x94b2,0x0020,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x5acb,0xffff,0xffff,0xffff,0xffff,0xb5b6,0x0020,0x18c3,0xef5d,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf7be,0x1082,0x0861,0x9cd3,0xd6ba,0xdefb,0xdefb,0xdefb,0x73ae,0x0000,0x5aeb,0xdefb,0xdefb,0xdefb,0xb596,0x0000,0x4208,0xdefb,0xdefb,0xdefb,0xdefb,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x4228,0x2104,0x2104,0x2104,0x2104,0x2104,0x10a2,0x0000,0x1082,0x2104,0x2104,0x2104,0x0020,0x0000,0x2104,0x2104,0x2104,0x18c3,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x52aa,0xffff,0xffff,0xffff,0x4228,0x0000,0xd69a,0xffff,0xffff,0xffdf,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x1082,0x18e3,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xf79e,0xffff,0xffff,0xad55,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x1082,0x0000,0x9cd3,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xdefb,0xffff,0xffff,0xe73c,0x0841,0x39e7,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf7be,0x18c3,0x0000,0x528a,0xef7d,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x39c7,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x10a2,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b6d,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0x630c,0xffff,0xffff,0xffff,0xffff,0x9492,0x0000,0x2945,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedb,0x0000,0x1082,0xdedb,0xffff,0xffff,0xffff,0xad75,0x0861,0x0020,0xd6ba,0xffff,0xffff,0xffff,0xbdf7,0x0020,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x5acb,0x0000,0x1082,0x52aa,0x5aeb,0x39c7,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xdedb,0x10a2,0x0000,0x4228,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a69,0x0000,0x0000,0x0000,0x0000,0x10a2,0x9cf3,0xffff,0xffff,0xffff,0xe71c,0x18c3,0x0000,0x2104,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0xa534,0xa514,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x18c3,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffdf,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4a69,0x0000,0x4228,0xffdf,0xffff,0xffff,0xe73c,0x3186,0x1082,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x0000,0x52aa,0xffdf,0xffff,0xffff,0x4228,0x0000,0x3186,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdedb,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0xc638,0x738e,0x0000,0x0000,0x4228,0xef5d,0xffff,0xef5d,0x2124,0x0000,0x39e7,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x18c3,0xad75,0xffff,0xe73c,0x2124,0x0000,0x2104,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x8c51,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x4228,0x2945,0x0000,0x0000,0x4228,0xd69a,0xe73c,0x4228,0x0000,0x0020,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x9492,0x1082,0x0000,0x39c7,0xffff,0xffdf,0x8c71,0x2124,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xc638,0xf7be,0xffff,0xd69a,0x7bef,0xad55,0x4a69,0xd6ba,0xffff,0xffff,0xffff,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xa514,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x94b2,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x2124,0x0000,0xad55,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x2104,0x0000,0x2124,0xf79e,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad55,0x0020,0x18c3,0xdefb,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x6b6d,0xdefb,0xdefb,0x0000,0x18e3,0xdefb,0xdefb,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdd7,0xe73c,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x7bcf,0x0861,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x1082,0x2104,0x2104,0x0000,0x0020,0x2104,0x2104,0x3186,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0xad55,0xdefb,0xdefb,0xdefb,0xdefb,0xdefb,0x39e7,0x0000,0xc618,0xdefb,0x8c71,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0x5aeb,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xc618,0x2965,0x2104,0x2104,0x2104,0x2104,0x2104,0x2104,0x0841,0x0000,0x18e3,0x2104,0x10a2,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0x4228,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xdefb,0xffff,0xa514,0x0000,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xc638,0xf7be,0xffff,0xad75,0x2104,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x39c7,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x7bcf,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0x2945,0x8430,0xce79,0xffff,0xffff,0xffff,0xef5d,0x0000,0x39e7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x0000,0x0000,0x0000,0x18c3,0x528a,0x9492,0xce79,0x0000,0x2104,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x4228,0x0000,0x1082,0x4208,0x0841,0x0000,0x0000,0x0000,0x0000,0x0841,0x630c,0x94b2,0xbdf7,0xdedb,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xf7be,0xffff,0xffff,0xffff,0xe73c,0x10a2,0x0000,0xd6ba,0xf7be,0xc638,0x8c51,0x528a,0x0841,0x0000,0x0000,0x0000,0x0000,0x0000,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x6b6d,0xffff,0xffff,0xffff,0xffff,0x528a,0x0000,0x8c71,0x6b6d,0x39c7,0x10a2,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffdf,0x10a2,0x18e3,0xffff,0xffff,0xffff,0xffff,0x632c,0x0000,0xc638,0xffff,0xffff,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x2104,0x0000,0xdedb,0xffff,0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0xd6ba,0xffff,0xffff,0xffff,0x8430,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x2965,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0xad75,0xffff,0xffff,0xffff,0xa514,0x0000,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x4a49,0x0000,0xad55,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0xa514,0xffff,0xffff,0xffff,0xc638,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x6b6d,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cf3,0x0000,0xa514,0xffff,0xffff,0xffff,0xdefb,0x0000,0x2965,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xad55,0x0000,0x2945,0xffff,0xffff,0xffff,0xffff,0xffff,0x6b4d,0x0000,0xbdf7,0xffff,0xffff,0xffff,0xffff,0x9492,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef5d,0x0841,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xdedb,0x0861,0x0841,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x738e,0x0000,0x0020,0x5acb,0x9cd3,0x738e,0x0861,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a49,0x0000,0x0000,0x0000,0x0000,0x0000,0x5acb,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x6b4d,0x5aeb,0x6b6d,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x39e7,0x2124,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x18c3,0x0000,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0x2124,0x0000,0x39e7,0x8430,0x0020,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x39c7,0x0000,0x2124,0xf79e,0xffff,0xad55,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x39e7,0x0000,0x1082,0xdedb,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0020,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0x52aa,0x0000,0x0000,0x9cf3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4a69,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0x0000,0x52aa,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xef7d,0x39e7,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x9cd3,0x0020,0x0000,0x2945,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0861,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xdedb,0x18c3,0x8430,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x8410,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xad75,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x9492,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xc618,0x0000,0x0020,0x528a,0xad75,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xbdd7,0x2945,0x0000,0x0000,0x0000,0x0861,0x52aa,0xa514,0xe71c,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0xc638,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x6b6d,0x2124,0x0000,0x0000,0x0000,0x0000,0x2124,0x5acb,0x9492,0xc618,0x6b4d,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdedb,0x9cd3,0x52aa,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2945,0x5acb,0x7bcf,0xa514,0xc638,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xb596,0x7bef,0x4a69,0x18e3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x4a49,0xa534,0x738e,0x4208,0x0841,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x0000,0x39e7,0xffff,0xffff,0xffff,0xdefb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x3186,0x9492,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x10a2,0x1082,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4a69,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x6b4d,0xf7be,0xffff,0xffff,0x4208,0x0000,0xd6ba,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0x4208,0x0000,0xad75,0xffff,0xffff,0xb5b6,0xb5b6,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xf79e,0x0020,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0x94b2,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xce59,0x0000,0x18e3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x2124,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa534,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0841,0x0000,0xef7d,0xffff,0xffff,0xffff,0xffff,0xb5b6,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x31a6,0x0000,0xce59,0xffff,0xffff,0xffff,0xe71c,0x0861,0x4a49,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x4a69,0x0000,0xad55,0xffff,0xffff,0xffff,0x4208,0x0020,0xdedb,0x9492,0xe71c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x9cd3,0xffff,0xffff,0x94b2,0x0000,0x8430,0xbdf7,0x0000,0x6b4d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bcf,0x0000,0x7bef,0xffff,0xffff,0xbdd7,0x5acb,0xef7d,0x2104,0x18e3,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xad75,0x2104,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0xd69a,0xffdf,0xffff,0xffff,0xffff,0xffff,0x630c,0x0000,0xb596,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xce59,0x8c51,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xad55,0x630c,0x5aeb,0x94b2,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xbdf7,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x4208,0x0000,0x0000,0x0000,0x0000,0x2124,0xe73c,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x4228,0x0000,0x2104,0x9492,0x9cf3,0x4208,0x0000,0x528a,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x1082,0xe73c,0xffff,0xffff,0xf7be,0x2124,0x0000,0xdefb,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x52aa,0x0000,0x73ae,0xffff,0xffff,0xffff,0xffff,0x8c71,0x0000,0xa514,0xffff,0xffff,0xffff,0xc638,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0x18e3,0x0000,0xbdd7,0xffff,0xffff,0xffff,0xffff,0xc638,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdefb,0x0000,0x52aa,0xffff,0xffff,0xffff,0xd69a,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xf79e,0x0000,0x0000,0xdefb,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdefb,0x0000,0x39e7,0xa534,0x52aa,0x1082,0x0000,0x5aeb,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0x0000,0x7bef,0xffff,0xffff,0xffff,0xdedb,0x0000,0x0000,0x0000,0x0000,0x0000,0x1082,0x630c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xd69a,0x0000,0x7bef,0xffff,0xef7d,0x6b4d,0x0020,0x0000,0x0000,0x39e7,0x8c51,0xd6ba,0xffff,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xb596,0x0000,0x8c51,0xbdd7,0x18e3,0x0000,0x0841,0x0841,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0x7bef,0x0000,0x39e7,0x0020,0x0000,0x4228,0xe71c,0x4208,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xdefb,0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0x39e7,0x0000,0x0000,0x0000,0x8410,0xffff,0xffff,0x528a,0x0000,0xce59,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffdf,0xb596,0x7bcf,0xffff,0xffff,0xffff,0xffff,0xe71c,0x0000,0x0000,0x0000,0x8c71,0xffff,0xffff,0xffff,0x632c,0x0000,0xa514,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x0000,0x8c51,0xffff,0xffff,0xffff,0xffff,0x8430,0x0000,0x738e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xc618,0x18c3,0x5acb,0xffff,0xffff,0xffff,0xffff,0xffff,0xa534,0x18e3,0x7bef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xe71c,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xd69a,0xb5b6,0xa514,0x9cd3,0x7bef,0x7bef,0x7bef,0x7bef,0xa514,0xa514,0xad75,0xc638,0xd69a,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x6b6d,0x0861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xad75,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0000,0x0020,0x2965,0x4a49,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x5aeb,0x52aa,0x4228,0x31a6,0x18c3,0x0000,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x0000,0x0020,0x9492,0xf79e,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xb5b6,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x5aeb,0x0000,0x39c7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0x8410,0x0000,0x0020,0xbdf7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xf79e,0x2124,0x0000,0x0020,0x630c,0xce79,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef5d,0x4a69,0x0000,0x0000,0x0000,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xad75,0x39c7,0x6b6d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0xef7d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xd6ba,0x2124,0x73ae,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xf7be,0x8c51,0x0841,0x0000,0x10a2,0xf7be,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x9492,0x18e3,0x0000,0x0000,0x18c3,0xc618,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xdefb,0xa514,0x528a,0x0841,0x0000,0x0000,0x0000,0x4a69,0xe73c,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xef7d,0x10a2,0x0000,0x0000,0x0000,0x0000,0x0000,0x2124,0xa534,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x2945,0x0000,0x0000,0x0020,0x4228,0xad55,0xffdf,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x8c51,0x6b6d,0xad55,0xef5d,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xa514,0x0000,0x4228,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xe73c,0xc638,0xd69a,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, ++ }; +diff -Nur linux_c860_org/drivers/video/tosa_backlight.c linux/drivers/video/tosa_backlight.c +--- linux_c860_org/drivers/video/tosa_backlight.c 1970-01-01 09:00:00.000000000 +0900 ++++ linux/drivers/video/tosa_backlight.c 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,489 @@ ++/* ++ * drivers/video/tosa_backlight.c ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * ++ * linux/drivers/video/corgi_frontlight.c ++ * ++ * (C) Copyright 2002 SHARP ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * ++ * linux/drivers/video/poodle_frontlight.c ++ * ++ * (C) Copyright 2001 Lineo Japan, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * ++ * linux/drivers/video/collie_frontlight.c ++ * ++ * (C) Copyright 2001 Lineo Japan, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * drivers/video/sa1100_frontlight.c ++ * Initial Version by: Nicholas Mistry (nmistry@lhsl.com) ++ * ++ * ChangeLog: ++ * 02-Dec-2002 SHARP for SL-C700 ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/sched.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/ctype.h> ++#include <linux/mm.h> ++#include <linux/tty.h> ++#include <linux/slab.h> ++#include <linux/proc_fs.h> ++#include <linux/init.h> ++#include <linux/fb.h> ++#include <linux/delay.h> ++ ++#include <linux/pm.h> ++ ++#include <asm/system.h> ++#include <asm/hardware.h> ++#include <asm/io.h> ++#include <asm/irq.h> ++#include <asm/uaccess.h> ++#include <asm/proc/pgtable.h> ++ ++#include <video/tosa_backlight.h> ++ ++#include <linux/interrupt.h> ++ ++#include <asm/arch/i2sc.h> ++ ++extern void pxa_nssp_output(unsigned char, unsigned char); ++ ++#if 0 ++#define DPRINTK(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ## args) ++#else ++#define DPRINTK(fmt, args...) ++#endif ++ ++#ifdef CONFIG_PM ++static int is_bl_pm = 0; ++static int is_bl_blank = 0; ++static int counter_step_save = 0; ++#endif ++ ++#define BL_SETTING 6 ++#define BL_DEFAULT 3 ++ ++int counter_step_contrast = BL_DEFAULT; ++static int bl_limit = BL_SETTING - 1; ++static spinlock_t bl_lock = SPIN_LOCK_UNLOCKED; ++ ++typedef struct _duty_vr_t { ++ int duty; ++ int vr; ++} duty_vr_t; ++ ++static duty_vr_t bl_duty_table[BL_SETTING] = { ++ {0, 0}, //Light Off ++ {11, 1}, ++ {33, 1}, ++ {68, 1}, ++ {100, 1}, ++ {255, 1}, ++}; ++ ++static int tosa_bl_ioctl(struct inode* inode, struct file*, unsigned int, ++ unsigned long); ++static int bl_step_contrast_setting(int); ++ ++extern unsigned short set_scoop_gpio(unsigned short); ++extern unsigned short reset_scoop_gpio(unsigned short); ++ ++#define SetBacklightDuty(a) set_bl_bright(a); ++#define SetBacklightVR(a) if (a) { TC6393_SYS_REG(TC6393_SYS_GPODSR1) |= TC6393_BL_C20MA; } \ ++ else { TC6393_SYS_REG(TC6393_SYS_GPODSR1) &= ~TC6393_BL_C20MA; } ++ ++/* ++ * I2C functions. ++ */ ++#define I2C_TIMEOUT 100 //wait for 5ms ++#define I2C_ADR_DAC 0x4e //DAC Slave address ++#define DAC_CH1 0 ++#define DAC_CH2 1 ++#define I2C_ICR_DEF_VAL (ICR_IUE | ICR_SCLE | ICR_FM) ++#define i2c_reset() i2c_init(1) ++#define i2c_set() i2c_init(0) ++void i2c_init(int reset) ++{ ++ if( reset ) { ++ ICR = ICR_UR; ++ CKEN &= ~CKEN14_I2C; ++ } ++ CKEN |= CKEN14_I2C; //Set I2C cleck ++ ICR = I2C_ICR_DEF_VAL; ++ ISR = 0x6f0; //Clear all status. ++} ++ ++static int i2c_wait_for_fifo_empty(void) ++{ ++ int timeo = 0; ++ while( 1 ) { ++ if( ISR & ISR_ITE) break; ++ if( timeo++ > I2C_TIMEOUT ) { ++ DPRINTK("timeout: %x\n", ISR); ++ i2c_reset(); ++ return -EBUSY; ++ } ++ mdelay(1); ++ } ++ ISR = ISR_ITE; ++ return 0; ++} ++ ++static int i2c_write(unsigned char reg, unsigned char val) ++{ ++ int ret; ++ ++ /* Start condition */ ++ if( ISR & ISR_IBB ) { ++ DPRINTK("bus is busy\n"); ++ i2c_reset(); ++ return -EBUSY; ++ } ++ /* Slave address write */ ++ IDBR = (I2C_ADR_DAC << 1); ++ ICR = (ICR_START | ICR_TB | I2C_ICR_DEF_VAL | ICR_ACKNAK); ++ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret; ++ ++ /* DAC channel write */ ++ IDBR = reg; ++ ICR = (ICR_TB | I2C_ICR_DEF_VAL); ++ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret; ++ ++ /* data write */ ++ IDBR = val; ++ ICR = (ICR_STOP | ICR_TB | I2C_ICR_DEF_VAL | ICR_ACKNAK); ++ if( (ret = i2c_wait_for_fifo_empty()) < 0 ) return ret; ++ ++ ICR = I2C_ICR_DEF_VAL; ++ return 0; ++} ++ ++/* ++ * Backlight control functions. ++ */ ++static void bl_enable(int sw) ++{ ++ if( sw ) pxa_nssp_output(TG_GPODR2, 0x01); //GP04=1 ++ else pxa_nssp_output(TG_GPODR2, 0x00); //GP04=0 ++} ++ ++static int set_bl_bright(unsigned char dat) ++{ ++ return i2c_write(DAC_CH2, dat); ++} ++ ++#ifdef CONFIG_PROC_FS ++struct proc_dir_entry *proc_bl; ++ ++static ssize_t bl_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char obuf[15]; ++ int count = 0; ++ ++ if( *ppos>0 ) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(obuf, "0x%02X%02X\n", ++ bl_duty_table[counter_step_contrast].vr, ++ bl_duty_table[counter_step_contrast].duty); ++ *ppos += count; ++ if( count>nbytes ) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if( copy_to_user(buf, obuf, count) ) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t bl_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned long param; ++ char *endp; ++ ++ param = simple_strtoul(buf,&endp,0); ++ SetBacklightDuty(param & 0xff); ++ SetBacklightVR((param & 0xff00) >> 8); ++ return nbytes+endp-buf; ++} ++ ++static struct file_operations proc_params_operations = { ++ read: bl_read_params, ++ write: bl_write_params, ++}; ++#endif /* CONFIG_PROC_FS */ ++ ++#ifdef CONFIG_PM ++void tosa_bl_blank(int blank) ++{ ++ if( blank ) { ++ if( !is_bl_blank ) { ++ is_bl_blank = 1; ++ counter_step_save = counter_step_contrast; ++ bl_step_contrast_setting(0); ++ } ++ } else { ++ if( is_bl_blank && !is_bl_pm ) { ++ bl_step_contrast_setting(counter_step_save); ++ is_bl_blank = 0; ++ } ++ } ++} ++ ++void tosa_l_blank_power_button(void) ++{ ++ if (!is_bl_blank) { ++ is_bl_blank = 1; ++ counter_step_save = counter_step_contrast; ++ bl_step_contrast_setting(0); ++ }else{ ++ counter_step_contrast = counter_step_save; ++ bl_step_contrast_setting(counter_step_contrast); ++ is_bl_blank = 0; ++ } ++} ++ ++ ++int tosa_bl_pm_callback(struct pm_dev* pm_dev, ++ pm_request_t req, void *data) ++{ ++ switch (req) { ++ case PM_SUSPEND: ++ is_bl_pm = 1; ++ tosa_bl_blank(1); ++ break; ++ case PM_RESUME: ++ is_bl_pm = 0; ++ tosa_bl_blank(0); ++ break; ++ } ++ return 0; ++} ++#endif /* CONFIG_PM */ ++ ++static struct file_operations tosa_bl_fops = { ++ ioctl: tosa_bl_ioctl, ++}; ++ ++static int bl_major; ++ ++#define CHECK_BATTERY_TIME 1 ++static int bl_step_contrast_setting_nocheck(int need_value) ++{ ++ unsigned long flags; ++ ++ /* Check value */ ++ if( need_value < 0 ) need_value = 0; ++ if( need_value > bl_limit ) need_value = bl_limit; ++ ++ spin_lock_irqsave(&bl_lock, flags); ++ if(need_value > 0) bl_enable(1); ++ else bl_enable(0); ++ SetBacklightDuty(bl_duty_table[need_value].duty); ++ SetBacklightVR(bl_duty_table[need_value].vr); ++ spin_unlock_irqrestore(&bl_lock, flags); ++ counter_step_contrast = need_value; ++ ++ return counter_step_contrast; ++} ++ ++ ++static int bl_step_contrast_setting(int need_value) ++{ ++ int ret = 0; ++ extern void sharpsl_kick_battery_check(int,int,int); ++ sharpsl_kick_battery_check(0,1,0); // check battery and wait 10msec ++ ret = bl_step_contrast_setting_nocheck(need_value); ++ sharpsl_kick_battery_check(1,0,0); // wait 10msec and check battery ++ return ret; ++} ++ ++static int temporary_contrast_set_flag = 0; ++ ++void tosa_bl_temporary_contrast_set(void) ++{ ++ int need_value = counter_step_contrast; ++ ++ if( temporary_contrast_set_flag ) return; ++ ++ temporary_contrast_set_flag = 1; ++ bl_step_contrast_setting(need_value); ++} ++ ++void tosa_bl_temporary_contrast_reset(void) ++{ ++ int need_value = counter_step_contrast; ++ ++ if( !temporary_contrast_set_flag ) return; ++ ++ temporary_contrast_set_flag = 0; ++ bl_step_contrast_setting(need_value); ++} ++ ++void tosa_bl_set_limit_contrast(int val) ++{ ++ unsigned long flags; ++ spin_lock_irqsave(&bl_lock, flags); ++ if( (val > BL_SETTING - 1) || (val < 0) ) { ++ if( bl_limit != BL_SETTING - 1 ) { ++ printk("bl : unlimit contrast\n"); ++ } ++ bl_limit = BL_SETTING - 1; ++ } else { ++ if( bl_limit != val ) { ++ printk("bl : change limit contrast %d\n", val); ++ } ++ bl_limit = val; ++ } ++ spin_unlock_irqrestore(&bl_lock, flags); ++ if( counter_step_contrast > bl_limit ) ++ bl_step_contrast_setting_nocheck(bl_limit); ++} ++ ++int tosa_set_common_voltage(unsigned char dat) ++{ ++ return i2c_write(DAC_CH1, dat); ++} ++ ++static int tosa_bl_ioctl(struct inode* inode, struct file* filp, ++ unsigned int cmd, unsigned long arg) ++{ ++ int ret = -EINVAL; ++ ++ switch(cmd) { ++ case TOSA_BL_IOCTL_ON: ++ if (is_bl_blank) return 0; ++ ret = bl_step_contrast_setting_nocheck(counter_step_contrast); ++ break; ++ case TOSA_BL_IOCTL_OFF: ++ if (is_bl_blank) return 0; ++ ret = bl_step_contrast_setting_nocheck(0); ++ break; ++ case TOSA_BL_IOCTL_STEP_CONTRAST: ++ if (is_bl_blank) return 0; ++ ret = bl_step_contrast_setting_nocheck(arg); ++ break; ++ case TOSA_BL_IOCTL_GET_STEP_CONTRAST: ++ ret = counter_step_contrast; ++ break; ++ case TOSA_BL_IOCTL_GET_STEP: ++ ret = BL_SETTING; ++ break; ++ default: ++ ; ++ } ++ ++ return ret; ++} ++ ++static __init int tosa_bl_init(void) ++{ ++ int ret; ++ ++ bl_major = BL_MAJOR; ++ ++ if( (ret = register_chrdev(bl_major, BL_NAME, &tosa_bl_fops)) < 0 ) { ++ DPRINTK("%s: cant get major %d\n", BL_NAME, bl_major); ++ return ret; ++ } ++ ++ if( !bl_major ) bl_major = ret; ++ ++ bl_step_contrast_setting_nocheck(counter_step_contrast); ++ ++#ifdef CONFIG_PROC_FS ++ { ++ struct proc_dir_entry *entry; ++ ++ proc_bl = proc_mkdir("driver/fl", NULL); ++ if (proc_bl == NULL) { ++ bl_step_contrast_setting(0); ++ unregister_chrdev(bl_major, BL_NAME); ++ printk(KERN_ERR "%s: can't create /proc/driver/fl\n", BL_NAME); ++ return -ENOMEM; ++ } ++ entry = create_proc_entry(BL_NAME, S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, ++ proc_bl); ++ if( entry ) { ++ entry->proc_fops = &proc_params_operations; ++ } else { ++ remove_proc_entry("driver/fl", &proc_root); ++ proc_bl = 0; ++ bl_step_contrast_setting(0); ++ unregister_chrdev(bl_major, BL_NAME); ++ printk(KERN_ERR "%s: can't create /proc/driver/fl/\n", BL_NAME); ++ return -ENOMEM; ++ } ++ } ++#endif /* CONFIG_PROC_FS */ ++ ++ printk(KERN_INFO "%s: Initialized.\n", BL_NAME); ++ ++#if 0 ++ { /* IOCTL TEST */ ++ int i; ++ printk("\n%s: ioctl test.\n", BL_NAME); ++ printk("%s: Backlight off\n", BL_NAME); ++ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_OFF, 0); ++ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret); ++ mdelay(5000); ++ printk("%s: Backlight on\n", BL_NAME); ++ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_ON, 0); ++ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret); ++ mdelay(5000); ++ for(i = 1; i < BL_SETTING; i++) { ++ printk("%s: Backlight step: %d\n", BL_NAME, i); ++ ret = tosa_bl_ioctl(0, 0, TOSA_BL_IOCTL_STEP_CONTRAST, i); ++ if(ret < 0) printk("%s: error:%d\n", BL_NAME, ret); ++ mdelay(5000); ++ } ++ } ++#endif ++ return 0; ++} ++ ++#ifdef MODULE ++void __exit tosa_bl_exit(void) ++{ ++ bl_step_contrast_setting(0); ++ ++ unregister_chrdev(bl_major, BL_NAME); ++ ++#ifdef CONFIG_PROC_FS ++ { ++ remove_proc_entry(BL_NAME, proc_bl); ++ remove_proc_entry("driver/fl", NULL); ++ proc_bl = 0; ++ } ++#endif /* CONFIG_PROC_FS */ ++ printk(KERN_INFO "%s: Unloaded\n", BL_NAME); ++} ++ ++module_exit(tosa_bl_exit); ++#endif /* MODULE */ ++ ++module_init(tosa_bl_init); +diff -Nur linux_c860_org/drivers/video/w100fb.c linux/drivers/video/w100fb.c +--- linux_c860_org/drivers/video/w100fb.c 2003-06-18 17:43:52.000000000 +0900 ++++ linux/drivers/video/w100fb.c 2004-06-10 21:09:11.000000000 +0900 +@@ -54,6 +54,9 @@ + #include <video/fbcon-mfb.h> + #include <video/fbcon.h> + ++#include <linux/proc_fs.h> ++#include <asm/proc/pgtable.h> ++ + #include "w100fb.h" + #include <linux/pm.h> + +@@ -74,6 +77,7 @@ + static void w100_resume(void); + static void w100_suspend(u32 mode); + static void w100_init_qvga_rotation(u16 deg); ++static void w100_init_vga_rotation(u16 deg); + static void w100_soft_reset(void); + static void w100_clear_screen(u32 mode,void *fbuf); + static void w100_vsync(void); +@@ -106,7 +110,7 @@ + #define REMAPPED_CFG_LEN 0x10 + #define REMAPPED_MMR_LEN 0x2000 + #define W100_PHYS_ADR_LEN 0x1000000 +-#define MAX_XRES 480 ++#define MAX_XRES 640 + #define MAX_YRES 640 + #define BITS_PER_PIXEL 16 + +@@ -177,9 +181,23 @@ + #define LCD_MODE_480 0 + #define LCD_MODE_320 1 + #define LCD_MODE_240 2 ++#define LCD_MODE_640 3 ++ + #define LCD_MODE_UNKOWN (-1) + + int w100fb_lcdMode = LCD_MODE_UNKOWN; //default UNKOWN ++#if defined(CONFIG_FBCON_ROTATE_R) ++static int w100fb_rotation_flag = 270; ++#else ++static int w100fb_rotation_flag = 90; ++#endif ++#if defined(CONFIG_SL_SYSCLK100) ++int fastsysclk_mode=100; ++#else ++int fastsysclk_mode=75; ++#endif ++static int lcd_param=0; ++static int proc_resume_mode=0; + + static u16 *gSaveImagePtr[640] = {NULL}; + #define SAVE_IMAGE_MAX_SIZE ((640 * 480 * BITS_PER_PIXEL) / 8) +@@ -245,6 +263,171 @@ + static void w100_PwmSetup(void); + static void w100_InitExtMem(u32 mode); + ++#ifdef CONFIG_PROC_FS ++struct proc_dir_entry *proc_w100; ++ ++ ++static ssize_t w100_read_rotation(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[50]; ++ int count; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "Rotation degree %d.\n",w100fb_rotation_flag); ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t w100_write_rotation(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int len; ++ unsigned int degree; ++ ++ sscanf(buf,"%d",°ree); ++ printk("Change rotation degree %d\n",degree); ++ ++ if ( degree == 180) ++ w100fb_rotation_flag = 90; ++ else ++ w100fb_rotation_flag = 270; ++ ++ if (w100fb_lcdMode == LCD_MODE_320) ++ w100_init_qvga_rotation(w100fb_rotation_flag); ++ ++ len=strlen(buf); ++ return len; ++} ++ ++static ssize_t w100_read_reg(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int len; ++ unsigned long regs; ++ unsigned long param; ++ ++ ++ sscanf(buf,"%x",®s); ++ ++ param = readl(remapped_regs+regs); ++ ++ printk("Read reg:: regs 0x%08X : 0x%08X\n", regs, param); ++ ++ len=strlen(buf); ++ return len; ++} ++ ++static ssize_t w100_write_reg(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int len; ++ unsigned long regs; ++ unsigned long param; ++ ++ ++ sscanf(buf,"%x %x",®s,¶m); ++ ++ if (regs <= 0x2000){ ++ printk("Write regs 0x%08X : 0x%08X\n", regs, param); ++ writel(param, remapped_regs+regs); ++ } ++ ++ len=strlen(buf); ++ return len; ++} ++ ++static ssize_t lcd_read_param(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[50]; ++ int count; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "LCD parm %d.\n",lcd_param); ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t lcd_write_param(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int len; ++ int param; ++ ++ sscanf(buf,"%d",¶m); ++ printk("LCD param %d\n",param); ++ ++ lcd_param=param; ++ ++ len=strlen(buf); ++ return len; ++} ++ ++static ssize_t fastsysclk_read_param(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[50]; ++ int count; ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "Fastsysclk : %d.\n",fastsysclk_mode); ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t fastsysclk_write_param(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ int len; ++ int param; ++ ++ sscanf(buf,"%d",¶m); ++ if (param == 75) { ++ printk("Set fastsysclk %d\n",param); ++ fastsysclk_mode=param; ++ w100_SetFastSysClk(fastsysclk_mode); ++ }else if (param == 100) { ++ printk("Set fastsysclk %d\n",param); ++ fastsysclk_mode=param; ++ w100_SetFastSysClk(fastsysclk_mode); ++ } ++ len=strlen(buf); ++ return len; ++} ++ ++static struct file_operations proc_read_reg = { ++ write: w100_read_reg, ++}; ++static struct file_operations proc_write_reg = { ++ write: w100_write_reg, ++}; ++static struct file_operations proc_rotation = { ++ read: w100_read_rotation, ++ write: w100_write_rotation, ++}; ++static struct file_operations proc_lcd = { ++ read: lcd_read_param, ++ write: lcd_write_param, ++}; ++static struct file_operations proc_fastsysclk = { ++ read: fastsysclk_read_param, ++ write: fastsysclk_write_param, ++}; ++#endif ++ + /* ------------------- chipset specific functions -------------------------- */ + + // +@@ -317,8 +500,12 @@ + // remap the areas we're going to use + remapped_base = ioremap_nocache(W100_PHYS_ADDRESS, REMAPPED_CFG_LEN); + remapped_regs = ioremap_nocache(W100_REG_BASE, REMAPPED_MMR_LEN); +- remapped_fbuf = ioremap_nocache(W100_FB_BASE, REMAPPED_FB_LEN); +- ++#if defined(CONFIG_CORGI_LCD_BUFF) ++ remapped_fbuf = __ioremap(W100_FB_BASE, REMAPPED_FB_LEN, L_PTE_BUFFERABLE ); ++#else ++ remapped_fbuf = ioremap_nocache(W100_FB_BASE, REMAPPED_FB_LEN); ++#endif ++ + isRemapped = 1; + } + +@@ -385,7 +572,7 @@ + + if (w100fb_lcdMode == LCD_MODE_UNKOWN){ + w100_InitExtMem(LCD_SHARP_VGA); +- } else if(w100fb_lcdMode == LCD_MODE_480) { ++ } else if( (w100fb_lcdMode == LCD_MODE_480) || (w100fb_lcdMode == LCD_MODE_640) ) { + w100_InitExtMem(LCD_SHARP_VGA); + } else { + w100_InitExtMem(LCD_SHARP_QVGA); +@@ -400,6 +587,76 @@ + writel((u32)(wrap_top_dir.val), remapped_regs+mmWRAP_TOP_DIR); + + writel((u32)0x2440, remapped_regs+mmRBBM_CNTL); ++ ++#ifdef CONFIG_PROC_FS ++ { ++ struct proc_dir_entry *entry; ++ if (proc_resume_mode == 0) { ++ ++ proc_w100 = proc_mkdir("driver/w100", NULL); ++ if (proc_w100 == NULL) { ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100\n"); ++ return -ENOMEM; ++ } ++ ++ entry = create_proc_entry("read_reg", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100); ++ if (entry) { ++ entry->proc_fops = &proc_read_reg; ++ } else { ++ remove_proc_entry("driver/w100", &proc_root); ++ proc_w100 = 0; ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n"); ++ return -ENOMEM; ++ } ++ entry = create_proc_entry("write_reg", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100); ++ if (entry) { ++ entry->proc_fops = &proc_write_reg; ++ } else { ++ remove_proc_entry("driver/w100", &proc_root); ++ proc_w100 = 0; ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n"); ++ return -ENOMEM; ++ } ++ entry = create_proc_entry("rotation", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100); ++ if (entry) { ++ entry->proc_fops = &proc_rotation; ++ } else { ++ remove_proc_entry("driver/w100", &proc_root); ++ proc_w100 = 0; ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n"); ++ return -ENOMEM; ++ } ++ ++ entry = create_proc_entry("lcd", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100); ++ if (entry) { ++ entry->proc_fops = &proc_lcd; ++ } else { ++ remove_proc_entry("driver/w100", &proc_root); ++ proc_w100 = 0; ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n"); ++ return -ENOMEM; ++ } ++ ++ entry = create_proc_entry("fastsysclk", S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH, proc_w100); ++ if (entry) { ++ entry->proc_fops = &proc_fastsysclk; ++ } else { ++ remove_proc_entry("driver/w100", &proc_root); ++ proc_w100 = 0; ++ unregister_chrdev(228, "w100"); ++ printk(KERN_ERR "w100: can't create /proc/driver/w100/\n"); ++ return -ENOMEM; ++ } ++ } ++ } ++ ++#endif ++ + } + + // +@@ -453,9 +710,11 @@ + #endif + + fix->smem_start = W100_FB_BASE; +- +- if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_480){ +- ++#if defined(CONFIG_FBCON_ROTATE_R) ++ if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_480 ){ ++#else ++ if(w100fb_lcdMode == LCD_MODE_480 ){ ++#endif + fix->line_length = (480 * BITS_PER_PIXEL) / 8; + fix->smem_len = 0x200000; + +@@ -468,6 +727,13 @@ + + fix->line_length = (240 * BITS_PER_PIXEL) / 8; + fix->smem_len = 0x60000; ++#if defined(CONFIG_FBCON_ROTATE_R) ++ } else if(w100fb_lcdMode == LCD_MODE_640){ ++#else ++ } else if(w100fb_lcdMode == LCD_MODE_UNKOWN || w100fb_lcdMode == LCD_MODE_640){ ++#endif ++ fix->line_length = (640 * BITS_PER_PIXEL) / 8; ++ fix->smem_len = 0x200000; + + } + +@@ -494,13 +760,19 @@ + BUG(); + + if((par->xres == 480 && par->yres == 640)|| ++ (par->xres == 640 && par->yres == 480)|| + (par->xres == 320 && par->yres == 240)|| + (par->xres == 240 && par->yres == 320)){ + par->xres = var->xres; + par->yres = var->yres; + }else{ +- par->xres = MAX_XRES; +- par->yres = MAX_YRES; ++#if defined(CONFIG_FBCON_ROTATE_R) ++ par->xres = 480; ++ par->yres = 640; ++#else ++ par->xres = 640; ++ par->yres = 480; ++#endif + } + + par->xres_virtual = +@@ -547,13 +819,19 @@ + + // set up screen coordinates + if((par->xres == 480 && par->yres == 640)|| ++ (par->xres == 640 && par->yres == 480)|| + (par->xres == 320 && par->yres == 240)|| + (par->xres == 240 && par->yres == 320)){ + var->xres = par->xres; + var->yres = par->yres; + }else{ +- var->xres = MAX_XRES; +- var->yres = MAX_YRES; ++#if defined(CONFIG_FBCON_ROTATE_R) ++ var->xres = 480; ++ var->yres = 640; ++#else ++ var->xres = 640; ++ var->yres = 480; ++#endif + } + + var->xres_virtual = var->xres; +@@ -851,7 +1129,7 @@ + w100_vsync(); + w100_suspend(W100_SUSPEND_EXTMEM); + w100_init_sharp_lcd(LCD_SHARP_QVGA); +- w100_init_qvga_rotation( (u16)270 ); ++ w100_init_qvga_rotation( w100fb_rotation_flag ); + w100_InitExtMem(LCD_SHARP_QVGA); + w100_clear_screen(LCD_SHARP_QVGA,NULL); + lcdtg_lcd_change(LCD_SHARP_QVGA); +@@ -873,6 +1151,70 @@ + + w100fb_lcdMode = LCD_MODE_240; + ++ }else if(current_par.xres == 640 && current_par.yres == 480){ ++ ++ printk("change resolution 480x640 => 640x480\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)90 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ w100fb_lcdMode = LCD_MODE_640; ++ ++ } ++ break; ++ case LCD_MODE_640: ++ if(current_par.xres == 320 && current_par.yres == 240){ ++ ++ printk("change resolution 640x480 => 320x240\n"); ++ ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation( w100fb_rotation_flag ); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ w100fb_lcdMode = LCD_MODE_320; ++ ++ }else if(current_par.xres == 240 && current_par.yres == 320){ ++ ++ printk("change resolution 640x480 => 240x320\n"); ++ ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation( (u16)0 ); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ w100fb_lcdMode = LCD_MODE_240; ++ ++ }else if(current_par.xres == 480 && current_par.yres == 640){ ++ ++ printk("change resolution 640x480 => 480x640\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ w100fb_lcdMode = LCD_MODE_480; ++ + } + break; + case LCD_MODE_240: +@@ -891,12 +1233,28 @@ + + w100fb_lcdMode = LCD_MODE_480; + ++ }else if(current_par.xres == 640 && current_par.yres == 480){ ++ ++ printk("change resolution 240x320 => 640x480\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)90 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ w100fb_lcdMode = LCD_MODE_640; ++ + }else if(current_par.xres == 320 && current_par.yres == 240){ + + printk("change resolution 240x320 => 320x240\n"); + + w100_clear_screen(LCD_SHARP_QVGA,NULL); +- w100_init_qvga_rotation( (u16)270 ); ++ w100_init_qvga_rotation( w100fb_rotation_flag ); + + w100fb_lcdMode = LCD_MODE_320; + } +@@ -917,6 +1275,22 @@ + + w100fb_lcdMode = LCD_MODE_480; + ++ }else if(current_par.xres == 640 && current_par.yres == 480){ ++ ++ printk("change resolution 320x240 => 640x480\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)90 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ w100fb_lcdMode = LCD_MODE_640; ++ + }else if(current_par.xres == 240 && current_par.yres == 320){ + + printk("change resolution 320x240 => 240x320\n"); +@@ -928,9 +1302,16 @@ + } + break; + case LCD_MODE_UNKOWN: +- printk("reset resolution unkown => 480x640\n"); +- w100_init_sharp_lcd(LCD_SHARP_VGA); ++#if defined(CONFIG_FBCON_ROTATE_R) ++ printk("reset resolution unkown => 480x640\n"); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); + w100fb_lcdMode = LCD_MODE_480; ++#else ++ printk("reset resolution unkown => 640x480\n"); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)90 ); ++ w100fb_lcdMode = LCD_MODE_640; ++#endif + isInitTG = 1; + break; + default: +@@ -992,14 +1373,16 @@ + #if defined(CONFIG_FBCON_ROTATE_R) || defined(CONFIG_FBCON_ROTATE_L) + disp->xpanstep = 0; + disp->xwrapstep = 0; +- disp->scrollmode = 0; // for logoscreen scroll ++ disp->scrollmode = SCROLL_XREDRAW; + #else + disp->ypanstep = 0; + disp->ywrapstep = 0; ++ disp->scrollmode = SCROLL_YREDRAW; + #endif + + switch(w100fb_lcdMode){ + case LCD_MODE_480: ++ case LCD_MODE_640: + if(isInitTG != 0) + lcdtg_hw_init(LCD_SHARP_VGA); + break; +@@ -1267,7 +1650,149 @@ + end_skip_save_image_no = (-1); + return 0; + } ++ break; + #endif //_IMAGE_CACHE_SUPPORT ++ case 100: //change 480x640 ++ printk("[w100fb] set 480x640 (VGA 0 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)0 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ break; ++ case 101: //change 640x480 ++ printk("[w100fb] set 640x480 (VGA 90 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)90 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ break; ++ case 102: //change 480x640 ++ printk("[w100fb] set 480x640 (VGA 180 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)180 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ break; ++ case 103: //change 640x480 ++ printk("[w100fb] set 640x480 (VGA 270 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ writel(0xBFFFA000, remapped_regs+mmMC_EXT_MEM_LOCATION); ++ w100_InitExtMem(LCD_SHARP_VGA); ++ w100_clear_screen(LCD_SHARP_VGA,(void*)0xF1A00000); ++ w100_vsync(); ++ w100_init_sharp_lcd(LCD_SHARP_VGA); ++ w100_init_vga_rotation( (u16)270 ); ++ lcdtg_lcd_change(LCD_SHARP_VGA); ++ ++ break; ++ case 110: //change 240x320 ++ printk("[w100fb] set 240x320 (QVGA 0 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation( (u16)0 ); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ break; ++ case 111: //change 320x240 ++ printk("[w100fb] set 320x240 (QVGA 90 degree)\n"); ++ ++ w100fb_rotation_flag=90; ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation(w100fb_rotation_flag); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ break; ++ ++ case 112: //change 240x320 ++ printk("[w100fb] set 240x320 (QVGA 180 degree)\n"); ++ ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation( (u16)180 ); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ break; ++ case 113: //change 320x240 ++ printk("[w100fb] set 320x240 (QVGA 270 degree)\n"); ++ ++ w100fb_rotation_flag=270; ++ w100_PwmSetup(); ++ w100_vsync(); ++ w100_suspend(W100_SUSPEND_EXTMEM); ++ w100_init_sharp_lcd(LCD_SHARP_QVGA); ++ w100_init_qvga_rotation(w100fb_rotation_flag); ++ w100_InitExtMem(LCD_SHARP_QVGA); ++ w100_clear_screen(LCD_SHARP_QVGA,NULL); ++ lcdtg_lcd_change(LCD_SHARP_QVGA); ++ ++ break; ++ case 120: //non rotation in QVGA ++ printk("[w100fb] set rotation 0 in QVGA\n"); ++ ++ w100fb_rotation_flag = 270; ++ if (w100fb_lcdMode == LCD_MODE_320) ++ w100_init_qvga_rotation(w100fb_rotation_flag); ++ ++ break; ++ case 121: //rotation 180 degree in QVGA ++ printk("[w100fb] set rotation 180 in QVGA\n"); ++ ++ w100fb_rotation_flag = 90; ++ if (w100fb_lcdMode == LCD_MODE_320) ++ w100_init_qvga_rotation(w100fb_rotation_flag); ++ ++ break; ++ case 130: //Fastsysclock 75MHz ++ printk("[w100fb] set Fastsysclk 75MHz\n"); ++ ++ fastsysclk_mode=75; ++ w100_SetFastSysClk(fastsysclk_mode); ++ ++ break; ++ case 131: //Fastsysclock 100MHz ++ printk("[w100fb] set Fastsysclk 100MHz\n"); ++ ++ fastsysclk_mode=100; ++ w100_SetFastSysClk(fastsysclk_mode); ++ ++ break; + default: + break; + } +@@ -2348,6 +2873,8 @@ + { 50, 0, 1, 0, 0xE0, 56}, // 50.00 MHz + { 75, 0, 5, 0, 0xDE, 37}, // 75.00 MHz + {100, 0, 7, 0, 0xE0, 28}, // 100.00 MHz ++ {125, 0, 9, 0, 0xE0, 22}, // 125.00 MHz ++ {150, 0, 11, 0, 0xE0, 17}, // 150.00 MHz + { 0, 0, 0, 0, 0, 0} // Terminator + }; + #else +@@ -2779,7 +3306,8 @@ + break; + case LCD_SHARP_VGA: + w100_SetSlowSysClk(12); // use crystal -- 12.5MHz +- w100_SetFastSysClk(75); // use PLL -- 75.0MHz ++ w100_SetFastSysClk(fastsysclk_mode); ++ + gPowerState.pclk_cntl.f.pclk_src_sel = 0x1; + gPowerState.pclk_cntl.f.pclk_post_div = 0x2; + writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL); +@@ -2836,6 +3364,72 @@ + writel((u32)(disp_db_buf_wr_cntl.val), remapped_regs+mmDISP_DB_BUF_CNTL); + } // w100_init_sharp_lcd + ++static void w100_init_vga_rotation(u16 deg) ++{ ++ // for resolution change and rotation ++ // GRAPHIC_CTRL ++ // GRAPHIC_OFFSET ++ // GRAPHIC_PITCH ++ ++ switch(deg){ ++ case 0: ++ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1; ++ gPowerState.pclk_cntl.f.pclk_post_div = 0x2; ++ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL); ++ ++ writel(0x00DE1D66, remapped_regs+mmGRAPHIC_CTRL); ++ writel(0x00800000, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x000003c0, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ case 90: ++ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1; ++ gPowerState.pclk_cntl.f.pclk_post_div = 0x6; ++ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL); ++ ++ writel(0x00DE1D0e, remapped_regs+mmGRAPHIC_CTRL); ++ writel(0x00895b00, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x00000500, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ case 180: ++ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1; ++ gPowerState.pclk_cntl.f.pclk_post_div = 0x2; ++ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL); ++ ++ writel(0x00DE1D7e, remapped_regs+mmGRAPHIC_CTRL); ++ writel(0x00895ffc, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x000003c0, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ case 270: ++ gPowerState.pclk_cntl.f.pclk_src_sel = 0x1; ++ gPowerState.pclk_cntl.f.pclk_post_div = 0x6; ++ writel((u32)(gPowerState.pclk_cntl.val), remapped_regs+mmPCLK_CNTL); ++ ++ writel(0x00DE1D16, remapped_regs+mmGRAPHIC_CTRL); ++ writel(0x008004fc, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x00000500, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ default: ++ // not-support ++ break; ++ } ++} ++ + static void w100_init_qvga_rotation(u16 deg) + { + // for resolution change and rotation +@@ -2848,12 +3442,38 @@ + writel(0x00d41c06, remapped_regs+mmGRAPHIC_CTRL); + writel(0x00800000, remapped_regs+mmGRAPHIC_OFFSET); + writel(0x000001e0, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ case 90: ++ writel(0x00d41c0E, remapped_regs+mmGRAPHIC_CTRL); ++ //writel(0x0080027e, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x00825580, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x00000280, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ ++ break; ++ case 180: ++ writel(0x00d41c1e, remapped_regs+mmGRAPHIC_CTRL); ++ writel(0x008257fc, remapped_regs+mmGRAPHIC_OFFSET); ++ writel(0x000001e0, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); ++ + break; + case 270: + writel(0x00d41c16, remapped_regs+mmGRAPHIC_CTRL); + //writel(0x0080027e, remapped_regs+mmGRAPHIC_OFFSET); + writel(0x0080027c, remapped_regs+mmGRAPHIC_OFFSET); + writel(0x00000280, remapped_regs+mmGRAPHIC_PITCH); ++ ++ // Re-enable display updates ++ writel(0x0000007b, remapped_regs+mmDISP_DB_BUF_CNTL); + break; + default: + // not-support +@@ -2920,6 +3540,7 @@ + { + u32 temp32; + ++ proc_resume_mode=1; + w100_hw_init(); + w100_PwmSetup(); + +@@ -2928,13 +3549,16 @@ + temp32 |= 0x00800000; + writel(temp32, remapped_regs+mmDISP_DEBUG2); + +- if (w100fb_lcdMode == LCD_MODE_480) { ++ if (w100fb_lcdMode == LCD_MODE_480 || w100fb_lcdMode == LCD_MODE_640) { + w100_init_sharp_lcd(LCD_SHARP_VGA); ++ if (w100fb_lcdMode == LCD_MODE_640) { ++ w100_init_vga_rotation( (u16)90 ); ++ } + } + else { + w100_init_sharp_lcd(LCD_SHARP_QVGA); + if (w100fb_lcdMode == LCD_MODE_320) { +- w100_init_qvga_rotation( (u16)270 ); ++ w100_init_qvga_rotation( w100fb_rotation_flag ); + } + } + +@@ -3269,7 +3893,7 @@ + + static void lcdtg_resume() + { +- if (w100fb_lcdMode == LCD_MODE_480) { ++ if (w100fb_lcdMode == LCD_MODE_480 || w100fb_lcdMode == LCD_MODE_640) { + lcdtg_hw_init(LCD_SHARP_VGA); + } + else { +@@ -3379,7 +4003,7 @@ + break; + case LCD_SHARP_VGA: + /* Set Lcd Resolution (VGA) */ +- lcdtg_ssp_send( RESCTL_ADRS, RESCTL_VGA ); ++ lcdtg_ssp_send( RESCTL_ADRS, lcd_param ); + break; + default: + break; +@@ -3393,7 +4017,7 @@ + + if(mode == LCD_SHARP_VGA) + /* Set Lcd Resolution (VGA) */ +- lcdtg_ssp_send( RESCTL_ADRS, RESCTL_VGA ); ++ lcdtg_ssp_send( RESCTL_ADRS, lcd_param ); + else if(mode == LCD_SHARP_QVGA) + /* Set Lcd Resolution (QVGA) */ + lcdtg_ssp_send( RESCTL_ADRS, RESCTL_QVGA ); +@@ -3659,6 +4283,8 @@ + int i, j; + u16 *pVram = (u16*)remapped_fbuf; + ++ ++ + if(suspend_mode == 1){ + // called from blank() + isSuspended_tg_only = 1; +diff -Nur linux_c860_org/fs/adfs/map.c linux/fs/adfs/map.c +--- linux_c860_org/fs/adfs/map.c 2002-08-26 14:43:25.000000000 +0900 ++++ linux/fs/adfs/map.c 2004-06-10 21:09:11.000000000 +0900 +@@ -12,6 +12,7 @@ + #include <linux/fs.h> + #include <linux/adfs_fs.h> + #include <linux/spinlock.h> ++#include <linux/sched.h> + + #include <asm/unaligned.h> + +diff -Nur linux_c860_org/fs/buffer.c linux/fs/buffer.c +--- linux_c860_org/fs/buffer.c 2002-08-29 12:24:14.000000000 +0900 ++++ linux/fs/buffer.c 2004-06-10 21:09:11.000000000 +0900 +@@ -267,6 +267,11 @@ + } + if (dev && bh->b_dev != dev) + continue; ++ if (conditional_schedule_needed()) { ++ debug_lock_break(1); ++ spin_unlock(&lru_list_lock); ++ return -EAGAIN; ++ } + + get_bh(bh); + spin_unlock(&lru_list_lock); +@@ -696,6 +701,13 @@ + /* Not hashed? */ + if (!bh->b_pprev) + continue; ++ if (conditional_schedule_needed()) { ++ debug_lock_break(2); /* bkl is held too */ ++ get_bh(bh); ++ break_spin_lock_and_resched(&lru_list_lock); ++ put_bh(bh); ++ slept = 1; ++ } + if (buffer_locked(bh)) { + get_bh(bh); + spin_unlock(&lru_list_lock); +@@ -847,6 +859,8 @@ + struct buffer_head *bh; + struct inode tmp; + int err = 0, err2; ++ ++ DEFINE_LOCK_COUNT(); + + INIT_LIST_HEAD(&tmp.i_dirty_buffers); + +@@ -868,6 +882,12 @@ + spin_lock(&lru_list_lock); + } + } ++ /* haven't hit this code path ... */ ++ debug_lock_break(551); ++ if (TEST_LOCK_COUNT(32)) { ++ RESET_LOCK_COUNT(); ++ break_spin_lock(&lru_list_lock); ++ } + } + + while (!list_empty(&tmp.i_dirty_buffers)) { +@@ -897,6 +917,7 @@ + struct inode tmp; + int err = 0, err2; + ++ DEFINE_LOCK_COUNT(); + INIT_LIST_HEAD(&tmp.i_dirty_data_buffers); + + spin_lock(&lru_list_lock); +@@ -928,9 +949,14 @@ + if (!buffer_uptodate(bh)) + err = -EIO; + brelse(bh); ++ debug_lock_break(1); ++ if (TEST_LOCK_COUNT(32)) { ++ RESET_LOCK_COUNT(); ++ conditional_schedule(); ++ } + spin_lock(&lru_list_lock); + } +- ++ + spin_unlock(&lru_list_lock); + err2 = osync_inode_data_buffers(inode); + +@@ -957,6 +983,8 @@ + struct list_head *list; + int err = 0; + ++ DEFINE_LOCK_COUNT(); ++ + spin_lock(&lru_list_lock); + + repeat: +@@ -964,6 +992,17 @@ + for (list = inode->i_dirty_buffers.prev; + bh = BH_ENTRY(list), list != &inode->i_dirty_buffers; + list = bh->b_inode_buffers.prev) { ++ /* untested code path ... */ ++ debug_lock_break(551); ++ ++ if (TEST_LOCK_COUNT(32)) { ++ RESET_LOCK_COUNT(); ++ if (conditional_schedule_needed()) { ++ break_spin_lock(&lru_list_lock); ++ goto repeat; ++ } ++ } ++ + if (buffer_locked(bh)) { + get_bh(bh); + spin_unlock(&lru_list_lock); +diff -Nur linux_c860_org/fs/dcache.c linux/fs/dcache.c +--- linux_c860_org/fs/dcache.c 2002-08-26 14:37:31.000000000 +0900 ++++ linux/fs/dcache.c 2004-06-10 21:09:11.000000000 +0900 +@@ -320,11 +320,24 @@ + + void prune_dcache(int count) + { ++ DEFINE_LOCK_COUNT(); ++ + spin_lock(&dcache_lock); ++ ++redo: + for (;;) { + struct dentry *dentry; + struct list_head *tmp; + ++ if (TEST_LOCK_COUNT(100)) { ++ RESET_LOCK_COUNT(); ++ debug_lock_break(1); ++ if (conditional_schedule_needed()) { ++ break_spin_lock(&dcache_lock); ++ goto redo; ++ } ++ } ++ + tmp = dentry_unused.prev; + + if (tmp == &dentry_unused) +@@ -480,6 +493,8 @@ + struct list_head *next; + int found = 0; + ++ DEFINE_LOCK_COUNT(); ++ + spin_lock(&dcache_lock); + repeat: + next = this_parent->d_subdirs.next; +@@ -493,6 +508,12 @@ + list_add(&dentry->d_lru, dentry_unused.prev); + found++; + } ++ if (TEST_LOCK_COUNT(500) && found > 10) { ++ debug_lock_break(1); ++ if (conditional_schedule_needed()) ++ goto out; ++ RESET_LOCK_COUNT(); ++ } + /* + * Descend a level if the d_subdirs list is non-empty. + */ +@@ -517,6 +538,7 @@ + #endif + goto resume; + } ++out: + spin_unlock(&dcache_lock); + return found; + } +diff -Nur linux_c860_org/fs/exec.c linux/fs/exec.c +--- linux_c860_org/fs/exec.c 2003-06-18 16:12:27.000000000 +0900 ++++ linux/fs/exec.c 2004-06-10 21:09:11.000000000 +0900 +@@ -469,8 +469,8 @@ + active_mm = current->active_mm; + current->mm = mm; + current->active_mm = mm; +- task_unlock(current); + activate_mm(active_mm, mm); ++ task_unlock(current); + mm_release(); + if (old_mm) { + if (active_mm != old_mm) BUG(); +@@ -631,8 +631,10 @@ + + current->sas_ss_sp = current->sas_ss_size = 0; + +- if (current->euid == current->uid && current->egid == current->gid) ++ if (current->euid == current->uid && current->egid == current->gid) { + current->mm->dumpable = 1; ++ current->task_dumpable = 1; ++ } + name = bprm->filename; + for (i=0; (ch = *(name++)) != '\0';) { + if (ch == '/') +@@ -1024,7 +1026,7 @@ + binfmt = current->binfmt; + if (!binfmt || !binfmt->core_dump) + goto fail; +- if (!current->mm->dumpable) ++ if (!is_dumpable(current)) + goto fail; + current->mm->dumpable = 0; + if (current->rlim[RLIMIT_CORE].rlim_cur < binfmt->min_coredump) +diff -Nur linux_c860_org/fs/ext3/inode.c linux/fs/ext3/inode.c +--- linux_c860_org/fs/ext3/inode.c 2002-08-26 14:37:42.000000000 +0900 ++++ linux/fs/ext3/inode.c 2004-06-10 21:09:11.000000000 +0900 +@@ -1649,6 +1649,8 @@ + } + + for (p = first; p < last; p++) { ++ debug_lock_break(1); /* bkl is held */ ++ conditional_schedule(); + nr = le32_to_cpu(*p); + if (nr) { + /* accumulate blocks to free if they're contiguous */ +@@ -1714,6 +1716,9 @@ + /* Go read the buffer for the next level down */ + bh = sb_bread(inode->i_sb, nr); + ++ debug_lock_break(1); ++ conditional_schedule(); ++ + /* + * A read failure? Report error and clear slot + * (should be rare). +diff -Nur linux_c860_org/fs/ext3/namei.c linux/fs/ext3/namei.c +--- linux_c860_org/fs/ext3/namei.c 2002-08-26 14:43:28.000000000 +0900 ++++ linux/fs/ext3/namei.c 2004-06-10 21:09:11.000000000 +0900 +@@ -157,6 +157,8 @@ + if ((bh = bh_use[ra_ptr++]) == NULL) + goto next; + wait_on_buffer(bh); ++ debug_lock_break(1); ++ conditional_schedule(); + if (!buffer_uptodate(bh)) { + /* read error, skip block & hope for the best */ + brelse(bh); +diff -Nur linux_c860_org/fs/fat/cache.c linux/fs/fat/cache.c +--- linux_c860_org/fs/fat/cache.c 2002-08-29 12:24:17.000000000 +0900 ++++ linux/fs/fat/cache.c 2004-06-10 21:09:11.000000000 +0900 +@@ -17,6 +17,7 @@ + #include <linux/string.h> + #include <linux/stat.h> + #include <linux/fat_cvf.h> ++#include <linux/sched.h> + + #if 0 + # define PRINTK(x) printk x +diff -Nur linux_c860_org/fs/inode.c linux/fs/inode.c +--- linux_c860_org/fs/inode.c 2002-11-22 21:03:26.000000000 +0900 ++++ linux/fs/inode.c 2004-06-10 21:09:11.000000000 +0900 +@@ -589,6 +589,12 @@ + if (tmp == head) + break; + inode = list_entry(tmp, struct inode, i_list); ++ ++ debug_lock_break(2); /* bkl is also held */ ++ atomic_inc(&inode->i_count); ++ break_spin_lock_and_resched(&inode_lock); ++ atomic_dec(&inode->i_count); ++ + if (inode->i_sb != sb) + continue; + invalidate_inode_buffers(inode); +@@ -699,8 +705,11 @@ + #endif + #endif + ++ DEFINE_LOCK_COUNT(); ++ + spin_lock(&inode_lock); + ++free_unused: + count = 0; + entry = inode_unused.prev; + while (entry != &inode_unused) +@@ -736,6 +745,14 @@ + count++; + if (!--goal) + break; ++ if (TEST_LOCK_COUNT(32)) { ++ RESET_LOCK_COUNT(); ++ debug_lock_break(1); ++ if (conditional_schedule_needed()) { ++ break_spin_lock(&inode_lock); ++ goto free_unused; ++ } ++ } + } + inodes_stat.nr_unused -= count; + spin_unlock(&inode_lock); +diff -Nur linux_c860_org/fs/jbd/commit.c linux/fs/jbd/commit.c +--- linux_c860_org/fs/jbd/commit.c 2002-08-26 14:37:42.000000000 +0900 ++++ linux/fs/jbd/commit.c 2004-06-10 21:09:11.000000000 +0900 +@@ -212,6 +212,9 @@ + __journal_remove_journal_head(bh); + refile_buffer(bh); + __brelse(bh); ++ debug_lock_break(2); ++ if (conditional_schedule_needed()) ++ break; + } + } + if (bufs == ARRAY_SIZE(wbuf)) { +@@ -235,8 +238,7 @@ + journal_brelse_array(wbuf, bufs); + lock_journal(journal); + spin_lock(&journal_datalist_lock); +- if (bufs) +- goto write_out_data_locked; ++ goto write_out_data_locked; + } + + /* +@@ -272,6 +274,14 @@ + */ + while ((jh = commit_transaction->t_async_datalist)) { + struct buffer_head *bh = jh2bh(jh); ++ if (conditional_schedule_needed()) { ++ debug_lock_break(551); ++ spin_unlock(&journal_datalist_lock); ++ unlock_journal(journal); ++ lock_journal(journal); ++ spin_lock(&journal_datalist_lock); ++ continue; ++ } + if (buffer_locked(bh)) { + spin_unlock(&journal_datalist_lock); + unlock_journal(journal); +diff -Nur linux_c860_org/fs/jffs2/build.c linux/fs/jffs2/build.c +--- linux_c860_org/fs/jffs2/build.c 2003-05-14 15:01:21.000000000 +0900 ++++ linux/fs/jffs2/build.c 2004-06-10 21:09:11.000000000 +0900 +@@ -13,6 +13,7 @@ + * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility + * 20-Sep-2002 Lineo Japan, Inc. add jffs2_orphaned_inodes + * but it is useless right now ++ * 05-Aug-2003 SHARP for Tosa + * + */ + +@@ -295,7 +296,7 @@ + + c->free_size = c->flash_size; + c->nr_blocks = c->flash_size / c->sector_size; +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + c->blocks = consistent_alloc(GFP_KERNEL, + sizeof(struct jffs2_eraseblock) * c->nr_blocks, + &c->blocks_phys); +@@ -341,7 +342,7 @@ + D1(printk(KERN_DEBUG "build_fs failed\n")); + jffs2_free_ino_caches(c); + jffs2_free_raw_node_refs(c); +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + consistent_free( c->blocks, + sizeof(struct jffs2_eraseblock) * c->nr_blocks, + c->blocks_phys ); +diff -Nur linux_c860_org/fs/jffs2/fs.c linux/fs/jffs2/fs.c +--- linux_c860_org/fs/jffs2/fs.c 2003-05-14 15:01:21.000000000 +0900 ++++ linux/fs/jffs2/fs.c 2004-06-10 21:09:11.000000000 +0900 +@@ -19,6 +19,7 @@ + * 24-Nov-2002 SHARP modify storage-avail calculation, and add erasing_dirty_size + * 09-Nov-2002 Lineo Japan, Inc. add code to do avail = 0 when cannot reserve space + * 01-Nov-2002 Lineo Japan, Inc. involve nr_bad_blocks in USED calc. ++ * 05-Aug-2003 SHARP for Tosa + * + */ + +@@ -402,7 +403,7 @@ + out_nodes: + jffs2_free_ino_caches(c); + jffs2_free_raw_node_refs(c); +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + consistent_free( c->blocks, + sizeof(struct jffs2_eraseblock) * c->nr_blocks, + c->blocks_phys ); +diff -Nur linux_c860_org/fs/jffs2/nodelist.h linux/fs/jffs2/nodelist.h +--- linux_c860_org/fs/jffs2/nodelist.h 2003-06-19 17:23:10.000000000 +0900 ++++ linux/fs/jffs2/nodelist.h 2004-06-10 21:14:59.000000000 +0900 +@@ -17,8 +17,16 @@ + * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree + * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT + * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC ++ * ++ * ChangeLog: + * 05-Dec-2002 SHARP adjust REVERVED_BLOCKS values for storage-full +- * 21-May-2003 SHARP modified JFFS2_RESERVED_BLOCKS_BAD ++ * 27-Nov-2002 Lineo Japan, Inc. add effective-gc mode ++ * 23-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_DIRTY ++ * add JFFS2_RESERVED_BLOCKS_CLEAN ++ * 19-Nov-2002 Lineo Japan, Inc. add counter of fragtree elements ++ * 18-Nov-2002 Lineo Japan, Inc. add dynamic construction of fragtree ++ * 11-Nov-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_ROOT ++ * 29-Oct-2002 Lineo Japan, Inc. add JFFS2_RESERVED_BLOCKS_BAD and JFFS2_MAX_CONT_GC + * + */ + +@@ -233,13 +241,7 @@ + #define JFFS2_RESERVED_BLOCKS_GCTRIGGER 39 /* ... wake up the GC thread */ + #define JFFS2_RESERVED_BLOCKS_GCBAD (JFFS2_RESERVED_BLOCKS_BASE + 1) /* ... pick a block from the bad_list to GC */ + #define JFFS2_RESERVED_BLOCKS_GCMERGE (JFFS2_RESERVED_BLOCKS_BASE) /* ... merge pages when garbage collecting */ +- +-#ifdef CONFIG_ARCH_PXA_HUSKY + #define JFFS2_RESERVED_BLOCKS_BAD 80 +-#else +-#define JFFS2_RESERVED_BLOCKS_BAD 24 +-#endif +- + #define JFFS2_RESERVED_BLOCKS_ROOT 5 + #define JFFS2_RESERVED_BLOCKS_DIRTY 24 + #define JFFS2_RESERVED_BLOCKS_CLEAN 12 +diff -Nur linux_c860_org/fs/jffs2/super-v24.c linux/fs/jffs2/super-v24.c +--- linux_c860_org/fs/jffs2/super-v24.c 2003-05-14 15:01:21.000000000 +0900 ++++ linux/fs/jffs2/super-v24.c 2004-06-10 21:09:11.000000000 +0900 +@@ -11,6 +11,7 @@ + * + * ChangeLog: + * 08-Nov-2002 Lineo Japan, Inc. add /proc/fs/jffs2 files for JFFS2 information ++ * 05-Aug-2003 SHARP for Tosa + * + */ + +@@ -106,7 +107,7 @@ + up(&c->alloc_sem); + jffs2_free_ino_caches(c); + jffs2_free_raw_node_refs(c); +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + consistent_free( c->blocks, + sizeof(struct jffs2_eraseblock) * c->nr_blocks, + c->blocks_phys ); +diff -Nur linux_c860_org/fs/jffs2/super.c linux/fs/jffs2/super.c +--- linux_c860_org/fs/jffs2/super.c 2003-05-14 15:01:21.000000000 +0900 ++++ linux/fs/jffs2/super.c 2004-06-10 21:09:11.000000000 +0900 +@@ -9,6 +9,9 @@ + * + * $Id: super.c,v 1.73 2002/07/23 17:00:45 dwmw2 Exp $ + * ++ * ChangeLog: ++ * 05-Aug-2003 SHARP for Tosa ++ * + */ + + #include <linux/config.h> +@@ -263,7 +266,7 @@ + up(&c->alloc_sem); + jffs2_free_ino_caches(c); + jffs2_free_raw_node_refs(c); +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + consistent_free( c->blocks, + sizeof(struct jffs2_eraseblock) * c->nr_blocks, + c->blocks_phys ); +diff -Nur linux_c860_org/fs/nls/nls_base.c linux/fs/nls/nls_base.c +--- linux_c860_org/fs/nls/nls_base.c 2002-08-26 14:37:33.000000000 +0900 ++++ linux/fs/nls/nls_base.c 2004-06-10 21:09:11.000000000 +0900 +@@ -18,6 +18,7 @@ + #ifdef CONFIG_KMOD + #include <linux/kmod.h> + #endif ++#include <linux/sched.h> + #include <linux/spinlock.h> + + static struct nls_table *tables; +diff -Nur linux_c860_org/fs/reiserfs/bitmap.c linux/fs/reiserfs/bitmap.c +--- linux_c860_org/fs/reiserfs/bitmap.c 2002-08-26 14:37:39.000000000 +0900 ++++ linux/fs/reiserfs/bitmap.c 2004-06-10 21:09:11.000000000 +0900 +@@ -410,19 +410,23 @@ + amount_needed++ ; + continue ; + } +- + +- reiserfs_prepare_for_journal(s, SB_AP_BITMAP(s)[i], 1) ; ++ RFALSE( is_reusable (s, search_start, 0) == 0, ++ "vs-4140: bad block number found"); + +- RFALSE( buffer_locked (SB_AP_BITMAP (s)[i]) || +- is_reusable (s, search_start, 0) == 0, +- "vs-4140: bitmap block is locked or bad block number found"); ++ reiserfs_prepare_for_journal(s, SB_AP_BITMAP(s)[i], 1) ; + + /* if this bit was already set, we've scheduled, and someone else + ** has allocated it. loop around and try again + */ + if (reiserfs_test_and_set_le_bit (j, SB_AP_BITMAP (s)[i]->b_data)) { + reiserfs_restore_prepared_buffer(s, SB_AP_BITMAP(s)[i]) ; ++ /* if this block has been allocated while we slept, it is ++ ** impossible to find any more contiguous blocks for ourselves. ++ ** If we are doing preallocation, give up now and return. ++ */ ++ if (for_prealloc) ++ goto free_and_return; + amount_needed++ ; + continue ; + } +diff -Nur linux_c860_org/fs/reiserfs/buffer2.c linux/fs/reiserfs/buffer2.c +--- linux_c860_org/fs/reiserfs/buffer2.c 2002-08-26 14:37:40.000000000 +0900 ++++ linux/fs/reiserfs/buffer2.c 2004-06-10 21:09:11.000000000 +0900 +@@ -55,6 +55,8 @@ + PROC_EXP( unsigned int ctx_switches = kstat.context_swtch ); + + result = bread (super -> s_dev, n_block, n_size); ++ debug_lock_break(1); ++ conditional_schedule(); + PROC_INFO_INC( super, breads ); + PROC_EXP( if( kstat.context_swtch != ctx_switches ) + PROC_INFO_INC( super, bread_miss ) ); +diff -Nur linux_c860_org/fs/reiserfs/journal.c linux/fs/reiserfs/journal.c +--- linux_c860_org/fs/reiserfs/journal.c 2002-08-26 14:37:40.000000000 +0900 ++++ linux/fs/reiserfs/journal.c 2004-06-10 21:09:11.000000000 +0900 +@@ -574,6 +574,8 @@ + /* lock the current transaction */ + inline static void lock_journal(struct super_block *p_s_sb) { + PROC_INFO_INC( p_s_sb, journal.lock_journal ); ++ debug_lock_break(1); ++ conditional_schedule(); + while(atomic_read(&(SB_JOURNAL(p_s_sb)->j_wlock)) > 0) { + PROC_INFO_INC( p_s_sb, journal.lock_journal_wait ); + sleep_on(&(SB_JOURNAL(p_s_sb)->j_wait)) ; +@@ -704,6 +706,8 @@ + mark_buffer_dirty(tbh) ; + } + ll_rw_block(WRITE, 1, &tbh) ; ++ debug_lock_break(1); ++ conditional_schedule(); + count++ ; + put_bh(tbh) ; /* once for our get_hash */ + } +@@ -833,6 +837,8 @@ + set_bit(BH_Dirty, &(SB_JOURNAL(p_s_sb)->j_header_bh->b_state)) ; + ll_rw_block(WRITE, 1, &(SB_JOURNAL(p_s_sb)->j_header_bh)) ; + wait_on_buffer((SB_JOURNAL(p_s_sb)->j_header_bh)) ; ++ debug_lock_break(1); ++ conditional_schedule(); + if (!buffer_uptodate(SB_JOURNAL(p_s_sb)->j_header_bh)) { + printk( "reiserfs: journal-837: IO error during journal replay\n" ); + return -EIO ; +@@ -2089,6 +2095,8 @@ + } + + int journal_begin(struct reiserfs_transaction_handle *th, struct super_block * p_s_sb, unsigned long nblocks) { ++ debug_lock_break(1); ++ conditional_schedule(); + return do_journal_begin_r(th, p_s_sb, nblocks, 0) ; + } + +@@ -2229,6 +2237,8 @@ + } + + int journal_end(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks) { ++ debug_lock_break(1); ++ conditional_schedule(); + return do_journal_end(th, p_s_sb, nblocks, 0) ; + } + +@@ -2680,6 +2690,8 @@ + RFALSE( buffer_locked(bh) && cur_tb != NULL, + "waiting while do_balance was running\n") ; + wait_on_buffer(bh) ; ++ debug_lock_break(1); ++ conditional_schedule(); + } + PROC_INFO_INC( p_s_sb, journal.prepare_retry ); + retry_count++ ; +@@ -2852,6 +2864,8 @@ + /* copy all the real blocks into log area. dirty log blocks */ + if (test_bit(BH_JDirty, &cn->bh->b_state)) { + struct buffer_head *tmp_bh ; ++ debug_lock_break(1); ++ conditional_schedule(); + tmp_bh = sb_getblk(p_s_sb, reiserfs_get_journal_block(p_s_sb) + + ((cur_write_start + jindex) % JOURNAL_BLOCK_COUNT)) ; + mark_buffer_uptodate(tmp_bh, 1) ; +diff -Nur linux_c860_org/fs/reiserfs/stree.c linux/fs/reiserfs/stree.c +--- linux_c860_org/fs/reiserfs/stree.c 2002-08-26 14:37:40.000000000 +0900 ++++ linux/fs/reiserfs/stree.c 2004-06-10 21:09:11.000000000 +0900 +@@ -648,9 +648,8 @@ + stop at leaf level - set to + DISK_LEAF_NODE_LEVEL */ + ) { +- int n_block_number = SB_ROOT_BLOCK (p_s_sb), +- expected_level = SB_TREE_HEIGHT (p_s_sb), +- n_block_size = p_s_sb->s_blocksize; ++ int n_block_number, expected_level; ++ int n_block_size = p_s_sb->s_blocksize; + struct buffer_head * p_s_bh; + struct path_element * p_s_last_element; + int n_node_level, n_retval; +@@ -662,7 +661,10 @@ + #endif + + PROC_INFO_INC( p_s_sb, search_by_key ); +- ++ ++ debug_lock_break(1); ++ conditional_schedule(); ++ + /* As we add each node to a path we increase its count. This means that + we must be careful to release all nodes in a path before we either + discard the path struct or re-use the path struct, as we do here. */ +@@ -674,6 +676,8 @@ + /* With each iteration of this loop we search through the items in the + current node, and calculate the next current node(next path element) + for the next iteration of this loop.. */ ++ n_block_number = SB_ROOT_BLOCK (p_s_sb); ++ expected_level = SB_TREE_HEIGHT (p_s_sb); + while ( 1 ) { + + #ifdef CONFIG_REISERFS_CHECK +@@ -1100,6 +1104,9 @@ + for (n_counter = *p_n_removed; + n_counter < n_unfm_number; n_counter++, p_n_unfm_pointer-- ) { + ++ debug_lock_break(1); ++ conditional_schedule(); ++ + if (item_moved (&s_ih, p_s_path)) { + need_research = 1 ; + break; +diff -Nur linux_c860_org/include/asm-alpha/processor.h linux/include/asm-alpha/processor.h +--- linux_c860_org/include/asm-alpha/processor.h 2002-08-26 14:37:49.000000000 +0900 ++++ linux/include/asm-alpha/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -119,7 +119,7 @@ + extern void release_thread(struct task_struct *); + + /* Create a kernel thread without removing it from tasklists. */ +-extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); ++extern long arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); + + #define copy_segments(tsk, mm) do { } while (0) + #define release_segments(mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/hardware.h linux/include/asm-arm/arch-pxa/hardware.h +--- linux_c860_org/include/asm-arm/arch-pxa/hardware.h 2002-12-18 19:52:24.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/hardware.h 2004-06-10 21:12:44.000000000 +0900 +@@ -11,6 +11,7 @@ + * + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifndef __ASM_ARCH_HARDWARE_H +@@ -160,6 +161,10 @@ + + #ifdef CONFIG_ARCH_PXA_CORGI + #include "corgi.h" +-#endif ++#endif /* CONFIG_ARCH_PXA_CORGI */ ++ ++#ifdef CONFIG_ARCH_PXA_TOSA ++#include "tosa.h" ++#endif /* CONFIG_ARCH_PXA_TOSA */ + + #endif /* _ASM_ARCH_HARDWARE_H */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/irqs.h linux/include/asm-arm/arch-pxa/irqs.h +--- linux_c860_org/include/asm-arm/arch-pxa/irqs.h 2002-12-18 19:29:34.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/irqs.h 2004-06-10 21:12:37.000000000 +0900 +@@ -11,6 +11,7 @@ + * + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #define PXA_IRQ_SKIP 8 /* The first 8 IRQs are reserved */ +@@ -345,6 +346,20 @@ + + #endif + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#define TC6393_IRQ(x) (IRQ_GPIO(80) + 1 + (x)) ++#define TC6393_IRQ_NDINT TC6393_IRQ(0) ++#define TC6393_IRQ_SDINT TC6393_IRQ(1) ++#define TC6393_IRQ_USBINT TC6393_IRQ(2) ++#define TC6393_IRQ_SIOINT TC6393_IRQ(3) ++#define TC6393_IRQ_GCINT TC6393_IRQ(4) ++#define TC6393_IRQ_GPINT TC6393_IRQ(5) ++#define TC6393_IRQ_CLKINT TC6393_IRQ(7) ++ ++#undef NR_IRQS ++#define NR_IRQS (TC6393_IRQ(7) + 1) ++#endif /* CONFIG_ARCH_PXA_TOSA */ ++ + #if defined(CONFIG_ARCH_PXA_POODLE) + #if CONFIG_SA1111 + #error POODLE configuration error +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/keyboard.h linux/include/asm-arm/arch-pxa/keyboard.h +--- linux_c860_org/include/asm-arm/arch-pxa/keyboard.h 2002-12-18 19:29:34.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/keyboard.h 2004-06-10 21:13:12.000000000 +0900 +@@ -5,6 +5,7 @@ + * + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifndef _PXA_KEYBOARD_H +@@ -22,6 +23,8 @@ + #include <asm/arch/keyboard_poodle.h> + #elif defined(CONFIG_ARCH_PXA_CORGI) + #include <asm/arch/keyboard_corgi.h> ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#include <asm/arch/keyboard_tosa.h> + #else + + #define kbd_disable_irq() do { } while(0); +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/keyboard_tosa.h linux/include/asm-arm/arch-pxa/keyboard_tosa.h +--- linux_c860_org/include/asm-arm/arch-pxa/keyboard_tosa.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/keyboard_tosa.h 2004-06-10 21:13:12.000000000 +0900 +@@ -0,0 +1,162 @@ ++/* ++ * linux/include/asm-arm/arch-pxa/keyboard_tosa.h ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * ++ * linux/include/asm-arm/arch-pxa/keyboard_corgi.h ++ * ++ * (C) Copyright 2001 Lineo Japan, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * linux/include/asm-arm/arch-sa1100/keyboard_collie.h ++ * include/asm-arm/arch-linkup/keyboard.h ++ * Created by Xuejun Tao 2000, ISDCorp www.isdcorp.com ++ * ++ * Changelog: ++ * 04-13-2001 Lineo Japan, Inc. ++ * 04-25-2001 Lineo Japan, Inc. ++ * 10-23-2002 Sharp Corporation ++ */ ++#ifndef __ASM_ARCH_KEYBOARD_TOSA_H ++#define __ASM_ARCH_KEYBOARD_TOSA_H ++ ++#include <linux/spinlock.h> ++#include <asm/arch/hardware.h> ++ ++/* ========================================================= ++ * !!! CAUTION !!! ++ * Iris board without Keyboard Enhancements makes PA5 INTR ++ * all times. So , you should disable PA5 INTR on such boards. ++ * Define this option to run on such board. ++ * ========================================================= */ ++#define TOSA_WITHOUT_KEY_ENH_WORKAROUND ++/* ========================================================= ++ * CAUTION ends. ++ * ========================================================= */ ++ ++/* ++ * My driver now supports both keyboard interrupt driven or timer driven ++ * Both modes work although keyboard interrupt mode is highly recommended. ++ */ ++#define USE_KBD_IRQ /* Use keyboard interrupt instead of timer */ ++ ++#define KB_ROWS 7 ++#define KB_COLS 11 ++ ++#define KBD_COL9_IS_USED_FOR_SIC ++ /* KBDCOL9 Hardware is used as SIC SYS_CLK , so , it cannot be used */ ++ ++#define ALL_AUX_COLS 0x00 /* no AUX Cols */ ++ ++#define set_bits(var, mask, bits) (var) = (((var) & ~(mask)) | (bits)) ++ ++/* ++ * Be sure to change the if you increase the ++ * number of kbd rows... ++ */ ++#define KEYCODE(r,c) ( ((r)<<4) + (c) + 1 ) ++#define KB_ROWMASK(r) (1 << (r)) ++ ++ /* ++ * KB_DELAY is used to allow the matrix ++ * to stabilize.., value is determined via ++ * experimentation. ++ */ ++ ++#define KB_DISCHARGE_DELAY 10 ++#define KB_ACTIVATE_DELAY 10 ++ ++typedef struct { ++ int in; /* If the key down */ ++} kbd_keyinfo; ++ ++#define KBUP (0x80) ++#define KBDOWN (0) ++ ++#define KBSCANCDE(x,y) ((x) | (y)) ++ ++#define CHARGE_VALUE 0x00FF ++#define DISCHARGE_VALUE 0x0000 ++#define IRQ_STATE_CLEAR 0xFEFF ++#define INIT_KCMD 0x0001 ++ ++ ++ ++/* ++ * We have a spinlock we use to ensure that keysdown ++ * is consisent with kbd_state[] ++ * ++ * This is prolly overkill since the arm doesn't support SMP. ++ */ ++// Yes, it is - WA static spinlock_t kbd_spinlock; ++extern spinlock_t kbd_spinlock; ++ ++ /* ++ * #define for functions we can't make use of ++ */ ++ ++#define kbd_leds(x) ++#define kbd_setleds(x) ++#define kbd_getledstate (0) ++extern int tosa_kbd_translate(unsigned char sc,unsigned char *keycode_p); ++#define kbd_translate(sc,kc,rm) tosa_kbd_translate(sc,kc) ++/* ++ *#define kbd_sysrq_xlate() (1) ++ */ ++#define kbd_pretranslate(x,y) (1) ++#define kbd_unexpected_up(kc) (0x80) ++#define kbd_setkeycode(sc,kc) (-EINVAL) ++#define kbd_getkeycode(sc) (-EINVAL) ++ ++extern void tosa_kbd_hw_init(void); ++#define kbd_init_hw() tosa_kbd_hw_init() ++ ++extern void tosa_kbd_cleartable(void); ++ ++/* ++ * I need to do something better for these two... ++ * Sometime v. soon. I don't like these at all, as they ++ * ++ * don't look like fn calls. ++ */ ++ ++#define kbd_disable_irq() { \ ++ int flags; \ ++ spin_lock_irqsave(&kbd_spinlock,flags); ++ ++ ++#define kbd_enable_irq() spin_unlock_irqrestore(&kbd_spinlock,flags); \ ++ } ++ ++ ++/* data structure for raw keyboard event */ ++ ++/* ++ * row , col values for feature keys ++ */ ++#define TOSA_KEYPOS_2nd_ROW 0 ++#define TOSA_KEYPOS_2nd_COL 1 ++ ++#define TOSA_KEYPOS_NUM_ROW 0 ++#define TOSA_KEYPOS_NUM_COL 8 ++ ++#define TOSA_KEYPOS_LSHIFT_ROW 1 ++#define TOSA_KEYPOS_LSHIFT_COL 0 ++ ++#define TOSA_KEYPOS_RSHIFT_ROW 1 ++#define TOSA_KEYPOS_RSHIFT_COL 8 ++ ++/* ++ * number of modifier status keys resolved on corgikb driver ++ */ ++#define TOSAKB_MODIFIERS 5 /* for CapsLock / NumLock / 2ND / LSHIFT / RSHIFT */ ++ ++#endif +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/pcmcia.h linux/include/asm-arm/arch-pxa/pcmcia.h +--- linux_c860_org/include/asm-arm/arch-pxa/pcmcia.h 2002-12-18 19:29:34.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/pcmcia.h 2004-06-10 21:13:56.000000000 +0900 +@@ -14,6 +14,7 @@ + * + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifndef _ASM_ARCH_PCMCIA +@@ -71,6 +72,10 @@ + int (*socket_state)(struct pcmcia_state_array *); + int (*get_irq_info)(struct pcmcia_irq_info *); + int (*configure_socket)(const struct pcmcia_configure *); ++#ifdef CONFIG_ARCH_SHARP_SL ++ int (*socket_init)(int sock); ++ int (*socket_suspend)(int sock); ++#endif + }; + + extern struct pcmcia_low_level *pcmcia_low_level; +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/pxa-regs.h linux/include/asm-arm/arch-pxa/pxa-regs.h +--- linux_c860_org/include/asm-arm/arch-pxa/pxa-regs.h 2002-08-29 14:59:56.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/pxa-regs.h 2004-06-10 21:09:11.000000000 +0900 +@@ -11,6 +11,7 @@ + * + * Change Log + * 08-19-2002 Sharp add I2S defines ++ * 26-Feb-2004 Lineo Solutions, Inc. supply a definition for FM bit of ICR + * + */ + #ifndef _PXA_REGS_H_ +@@ -443,6 +444,7 @@ + #define ICR_ALDIE 0x1000 /* enable arbitration interrupt */ + #define ICR_SADIE 0x2000 /* slave address detected int enable */ + #define ICR_UR 0x4000 /* unit reset */ ++#define ICR_FM 0x8000 /* fast mode */ + + /* ----- Status register bits ----------------------------------------- */ + +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/serial_pxa200.h linux/include/asm-arm/arch-pxa/serial_pxa200.h +--- linux_c860_org/include/asm-arm/arch-pxa/serial_pxa200.h 2003-01-15 15:51:16.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/serial_pxa200.h 2004-06-10 21:13:15.000000000 +0900 +@@ -3,6 +3,7 @@ + * + * Change Log + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifndef __ASM_ARCH_SERIAL_H +@@ -30,7 +31,10 @@ + #define CONFIG_UART2_DFLT_CONSOLE + #elif defined(CONFIG_ARCH_PXA_CORGI) + #define CONFIG_UART2_DFLT_CONSOLE ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#define CONFIG_UART2_DFLT_CONSOLE + #endif ++ + #if defined(CONFIG_UART0_DFLT_CONSOLE) + + #define STD_SERIAL_PORT_DEFNS \ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/sharpsl_battery.h linux/include/asm-arm/arch-pxa/sharpsl_battery.h +--- linux_c860_org/include/asm-arm/arch-pxa/sharpsl_battery.h 2002-08-26 16:00:32.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/sharpsl_battery.h 2004-06-10 21:17:53.000000000 +0900 +@@ -10,6 +10,7 @@ + * + * ChangeLog: + * 21-Aug-2002 Lineo Japan, Inc. for 2.4.18 ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + * + */ + +@@ -81,6 +82,11 @@ + #define BATT_AD 4u /* channel of BATTery */ + #define BATT_THM 2u /* channel of BATTery */ + #define JK_VAD 6u /* channel of BATTery */ ++#elif defined(CONFIG_ARCH_PXA_TOSA) ++#define BATT_VC 0x4 /* channel of BAT V CAUTION */ ++#define BATT_TH 0x5 /* channel of BAT TH */ ++#define BATT_V 0x6 /* channel of BAT V */ ++#define BU_V 0x7 /* channel of BU V */ + #endif + + #define Temper_V47 0x449 /* 0.670v (47"C) */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/sharpsl_wakeup.h linux/include/asm-arm/arch-pxa/sharpsl_wakeup.h +--- linux_c860_org/include/asm-arm/arch-pxa/sharpsl_wakeup.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/sharpsl_wakeup.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,26 @@ ++/* ++ * include/asm-arm/arch-pxa/sharpsl_wakeup.h ++ * Copyright (C) 2003 SHARP ++ */ ++ ++#ifndef __SHARPSL_WAKEUP_H__ ++#define __SHARPSL_WAKEUP_H__ ++ ++ ++#define IDPM_WAKEUP_AC (0x1<<1) ++#define IDPM_WAKEUP_SYNC (0x1<<3) ++#define IDPM_WAKEUP_REMOCON (0x1<<4) ++#define IDPM_WAKEUP_REC (0x1<<10) ++#define IDPM_WAKEUP_JACKET (0x1<<16) ++#define IDPM_WAKEUP_USBD (0x1<<17) ++#define IDPM_WAKEUP_CALENDAR (0x1<<25) ++#define IDPM_WAKEUP_ADDRESSBOOK (0x1<<26) ++#define IDPM_WAKEUP_MAIL (0x1<<27) ++#define IDPM_WAKEUP_MENU (0x1<<28) ++#define IDPM_WAKEUP_HOME (0x1<<29) ++#define IDPM_WAKEUP_RTC (0x1<<31) ++ ++extern unsigned long logical_wakeup_src_mask; ++ ++ ++#endif // end __SHARPSL_WAKEUP_H__ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/system.h linux/include/asm-arm/arch-pxa/system.h +--- linux_c860_org/include/asm-arm/arch-pxa/system.h 2003-06-18 16:12:28.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/system.h 2004-06-10 21:17:56.000000000 +0900 +@@ -12,6 +12,7 @@ + * Change Log + * 17-Sep-2002 Lineo Japan, Inc. + * 13-Mar-2003 Sharp for Shepherd ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #include <linux/config.h> +@@ -32,11 +33,13 @@ + static inline void arch_reset(char mode) + { + #ifdef CONFIG_ARCH_SHARP_SL +-#ifdef CONFIG_ARCH_PXA_SHEPHERD ++#ifdef CONFIG_PM ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) + sharpsl_restart_nonstop(); + #else + sharpsl_restart(); + #endif ++#endif + #else + if (mode == 's') { + /* Jump into ROM at address 0 */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/time.h linux/include/asm-arm/arch-pxa/time.h +--- linux_c860_org/include/asm-arm/arch-pxa/time.h 2003-01-14 12:07:55.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/time.h 2004-06-10 21:18:00.000000000 +0900 +@@ -12,6 +12,7 @@ + * ChangLog: + * 12-Dec-2002 Lineo Japan, Inc. + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifdef CONFIG_SABINAL_DISCOVERY +@@ -19,14 +20,18 @@ + //#define RTC_DEF_TRIM 0 + #define RTC_DEF_TRIM 0x11b3 + #endif ++ + #ifdef CONFIG_ARCH_PXA_POODLE + #define RTC_DEF_DIVIDER 32768 - 1 + #define RTC_DEF_TRIM 0 +-#endif +-#ifdef CONFIG_ARCH_PXA_CORGI ++#elif CONFIG_ARCH_PXA_CORGI ++#define RTC_DEF_DIVIDER 32768 - 1 ++#define RTC_DEF_TRIM 0 ++#elif CONFIG_ARCH_PXA_TOSA + #define RTC_DEF_DIVIDER 32768 - 1 + #define RTC_DEF_TRIM 0 + #endif ++ + #ifdef CONFIG_ARCH_SHARP_SL + #define SHARP_SL_DEF_YEAR 2003 + #endif +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa.h linux/include/asm-arm/arch-pxa/tosa.h +--- linux_c860_org/include/asm-arm/arch-pxa/tosa.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/tosa.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,433 @@ ++/* ++ * include/asm-arm/arch-pxa/tosa.h ++ * Copyright (C) 2003 Lineo uSolutions, Inc. ++ * ++ * ChangeLog: ++ * 23-Oct-2003 SHARP Corporation ++ */ ++ ++#ifndef _ASM_ARCH_TOSA_H_ ++#define _ASM_ARCH_TOSA_H_ 1 ++ ++/* TOSA Chip selects */ ++#define TOSA_LCDC_PHYS PXA_CS4_PHYS ++/* Internel Scoop */ ++#define TOSA_CF_PHYS (PXA_CS2_PHYS + 0x00800000) ++/* Jacket Scoop */ ++#define TOSA_SCOOP_PHYS (PXA_CS5_PHYS + 0x00800000) ++ ++/* ++ * TC6393 internal I/O mappings ++ * ++ * We have the following mapping: ++ * phys virt ++ * 10000000 f1000000 ++ */ ++#define TC6393_SYS_BASE 0xf1000000 ++#define TC6393_NAND_BASE (TC6393_SYS_BASE + 0x000100) ++#define TC6393_SD_BASE (TC6393_SYS_BASE + 0x000200) ++#define TC6393_USB_BASE (TC6393_SYS_BASE + 0x000300) ++#define TC6393_SERIAL_BASE (TC6393_SYS_BASE + 0x000400) ++#define TC6393_GC_BASE (TC6393_SYS_BASE + 0x000500) ++#define TC6393_RAM0_BASE (TC6393_SYS_BASE + 0x010000) ++#define TC6393_RAM0_SIZE (32*1024) ++#define TC6393_RAM1_BASE (TC6393_SYS_BASE + 0x100000) ++#define TC6393_RAM1_SIZE (64 * 1024 * 16) ++ ++/* ++ * Internal Local Memory use purpose ++ * RAM0 is used for USB ++ * RAM1 is used for GC ++ */ ++/* Internal register mapping */ ++#define TC6393_GC_INTERNAL_REG_BASE 0x000600 /* Length 0x200 */ ++#define TC6393_USB_OHCI_OP_REG_BASE 0x000A00 /* Length 0x100 */ ++#define TC6393_NAND_FLASH_CTL_REG_BASE 0x001000 /* Length 0x8 */ ++ ++ ++/* System Configuration register */ ++#define TC6393_SYS_REG(ofst) (*(volatile unsigned short*)(TC6393_SYS_BASE+(ofst))) ++#define TC6393_SYS_RIDR 0x008 ++#define TC6393_SYS_ISR 0x050 ++#define TC6393_SYS_IMR 0x052 ++#define TC6393_SYS_IRR 0x054 ++#define TC6393_SYS_GPER 0x060 ++#define TC6393_SYS_GPISR1 0x064 ++#define TC6393_SYS_GPISR2 0x066 ++#define TC6393_SYS_GPIIMR1 0x068 ++#define TC6393_SYS_GPIIMR2 0x06A ++#define TC6393_SYS_GPIEDER1 0x06C ++#define TC6393_SYS_GPIEDER2 0x06E ++#define TC6393_SYS_GPILIR1 0x070 ++#define TC6393_SYS_GPILIR2 0x072 ++#define TC6393_SYS_GPODSR1 0x078 ++#define TC6393_SYS_GPODSR2 0x07A ++#define TC6393_SYS_GPOOECR1 0x07C ++#define TC6393_SYS_GPOOECR2 0x07E ++#define TC6393_SYS_GPIARCR1 0x080 ++#define TC6393_SYS_GPIARCR2 0x082 ++#define TC6393_SYS_GPIARLCR1 0x084 ++#define TC6393_SYS_GPIARLCR2 0x086 ++#define TC6393_SYS_GPIBCR1 0x088 ++#define TC6393_SYS_GPIBCR2 0x08A ++#define TC6393_SYS_GPaIARCR 0x08C ++#define TC6393_SYS_GPaIARLCR 0x090 ++#define TC6393_SYS_GPaIBCR 0x094 ++#define TC6393_SYS_CCR 0x098 /* Clock Control Register */ ++#define TC6393_SYS_PLL2CR 0x09A ++#define TC6393_SYS_PLL1CR1 0x09C ++#define TC6393_SYS_PLL1CR2 0x09E ++#define TC6393_SYS_DCR 0x0A0 ++#define TC6393_SYS_FER 0x0E0 /* Function Enable Register */ ++#define TC6393_SYS_MCR 0x0E4 ++#define TC6393_SYS_ConfigCR 0x0FC ++ ++/* NAND FLASH controller configuration register */ ++#define TC6393_NAND_REG(ofst) (*(volatile unsigned short*)(TC6393_NAND_BASE+(ofst))) ++ ++/* SD Card Configuration register */ ++#define TC6393_SD_REG(ofst) (*(volatile unsigned short*)(TC6393_SD_BASE+(ofst))) ++ ++/* USB HOST Configuration register */ ++#define TC6393_USB_REG(ofst) (*(volatile unsigned short*)(TC6393_USB_BASE+(ofst))) ++#define TC6393_USB_SPRID 0x08 ++#define TC6393_USB_SPBA1 0x10 ++#define TC6393_USB_SPBA2 0x12 ++#define TC6393_USB_ILME 0x40 ++#define TC6393_USB_SVPMCS 0x4C ++#define TC6393_USB_PM_PMES (1 << 15) ++#define TC6393_USB_PM_PMEE (1 << 8) ++#define TC6393_USB_PM_USPW2 (1 << 3) ++#define TC6393_USB_PM_USPW1 (1 << 2) ++#define TC6393_USB_PM_CKRNEN (1 << 1) ++#define TC6393_USB_PM_GCKEN (1 << 0) ++#define TC6393_USB_INTC 0x50 ++#define TC6393_USB_SP1INTC1 0x54 ++#define TC6393_USB_SP1INTC2 0x56 ++#define TC6393_USB_SP1MBA1 0x58 ++#define TC6393_USB_SP1MBA2 0x5A ++#define TC6393_USB_SP2INTC1 0x5C ++#define TC6393_USB_SP2INTC2 0x5E ++#define TC6393_USB_SP2MBA1 0x60 ++#define TC6393_USB_SP2MBA2 0x62 ++#define TC6393_USB_SPPCNF 0xFC ++ ++#define IS_TC6393_RAM0(p) (TC6393_RAM0_BASE <= (unsigned int)p \ ++ && (unsigned int)p <= TC6393_RAM0_BASE + TC6393_RAM0_SIZE) ++#define TC6393_RAM0_VAR_TO_OFFSET(x) ((unsigned int)x - TC6393_RAM0_BASE) ++#define TC6393_RAM0_OFFSET_TO_VAR(x) ((unsigned int)x + TC6393_RAM0_BASE) ++ ++/* Serial I/O controller Configuration register */ ++#define TC6393_SERIAL_REG(ofst) (*(volatile unsigned short*)(TC6393_SERIAL_BASE+(ofst))) ++ ++/* Graphic controller Configuration register */ ++#define TC6393_GC_REG(ofst) (*(volatile unsigned short*)(TC6393_GC_BASE+(ofst))) ++ ++/* GPIO bit */ ++#define TC6393_GPIO19 ( 1 << 19 ) ++#define TC6393_GPIO18 ( 1 << 18 ) ++#define TC6393_GPIO17 ( 1 << 17 ) ++#define TC6393_GPIO16 ( 1 << 16 ) ++#define TC6393_GPIO15 ( 1 << 15 ) ++#define TC6393_GPIO14 ( 1 << 14 ) ++#define TC6393_GPIO13 ( 1 << 13 ) ++#define TC6393_GPIO12 ( 1 << 12 ) ++#define TC6393_GPIO11 ( 1 << 11 ) ++#define TC6393_GPIO10 ( 1 << 10 ) ++#define TC6393_GPIO9 ( 1 << 9 ) ++#define TC6393_GPIO8 ( 1 << 8 ) ++#define TC6393_GPIO7 ( 1 << 7 ) ++#define TC6393_GPIO6 ( 1 << 6 ) ++#define TC6393_GPIO5 ( 1 << 5 ) ++#define TC6393_GPIO4 ( 1 << 4 ) ++#define TC6393_GPIO3 ( 1 << 3 ) ++#define TC6393_GPIO2 ( 1 << 2 ) ++#define TC6393_GPIO1 ( 1 << 1 ) ++#define TC6393_GPIO0 ( 1 << 0 ) ++ ++/* ++ * TC6393 GPIOs ++ */ ++#define TC6393_TG_ON TC6393_GPIO0 ++#define TC6393_L_MUTE TC6393_GPIO1 ++#define TC6393_BL_C20MA TC6393_GPIO3 ++#define TC6393_CARD_VCC_ON TC6393_GPIO4 ++#define TC6393_CHARGE_OFF TC6393_GPIO6 ++#define TC6393_CHARGE_OFF_JC TC6393_GPIO7 ++#define TC6393_BAT0_V_ON TC6393_GPIO9 ++#define TC6393_BAT1_V_ON TC6393_GPIO10 ++#define TC6393_BU_CHRG_ON TC6393_GPIO11 ++#define TC6393_BAT_SW_ON TC6393_GPIO12 ++#define TC6393_BAT0_TH_ON TC6393_GPIO14 ++#define TC6393_BAT1_TH_ON TC6393_GPIO15 ++ ++#define TC6393_GPO_OE ( TC6393_TG_ON | TC6393_L_MUTE | TC6393_BL_C20MA | \ ++ TC6393_CARD_VCC_ON | TC6393_CHARGE_OFF | \ ++ TC6393_CHARGE_OFF_JC | TC6393_BAT0_V_ON | \ ++ TC6393_BAT1_V_ON | TC6393_BU_CHRG_ON | \ ++ TC6393_BAT_SW_ON | TC6393_BAT0_TH_ON | \ ++ TC6393_BAT1_TH_ON ) ++ ++/* ++ * SCOOP2 internal I/O mappings ++ * ++ * We have the following mapping: ++ * phys virt ++ * 08800000 f2000000 ++ */ ++#define CF_BUF_CTRL_BASE 0xF2000000 ++#define SCP_REG(adr) (*(volatile unsigned short*)(CF_BUF_CTRL_BASE+(adr))) ++ ++#define SCP_MCR 0x00 ++#define SCP_CDR 0x04 ++#define SCP_CSR 0x08 ++#define SCP_CPR 0x0C ++#define SCP_CCR 0x10 ++#define SCP_IRR 0x14 ++#define SCP_IRM 0x14 ++#define SCP_IMR 0x18 ++#define SCP_ISR 0x1C ++#define SCP_GPCR 0x20 ++#define SCP_GPWR 0x24 ++#define SCP_GPRR 0x28 ++#define SCP_REG_MCR SCP_REG(SCP_MCR) ++#define SCP_REG_CDR SCP_REG(SCP_CDR) ++#define SCP_REG_CSR SCP_REG(SCP_CSR) ++#define SCP_REG_CPR SCP_REG(SCP_CPR) ++#define SCP_REG_CCR SCP_REG(SCP_CCR) ++#define SCP_REG_IRR SCP_REG(SCP_IRR) ++#define SCP_REG_IRM SCP_REG(SCP_IRM) ++#define SCP_REG_IMR SCP_REG(SCP_IMR) ++#define SCP_REG_ISR SCP_REG(SCP_ISR) ++#define SCP_REG_GPCR SCP_REG(SCP_GPCR) ++#define SCP_REG_GPWR SCP_REG(SCP_GPWR) ++#define SCP_REG_GPRR SCP_REG(SCP_GPRR) ++ ++#define SCP_GPCR_PA22 ( 1 << 12 ) ++#define SCP_GPCR_PA21 ( 1 << 11 ) ++#define SCP_GPCR_PA20 ( 1 << 10 ) ++#define SCP_GPCR_PA19 ( 1 << 9 ) ++#define SCP_GPCR_PA18 ( 1 << 8 ) ++#define SCP_GPCR_PA17 ( 1 << 7 ) ++#define SCP_GPCR_PA16 ( 1 << 6 ) ++#define SCP_GPCR_PA15 ( 1 << 5 ) ++#define SCP_GPCR_PA14 ( 1 << 4 ) ++#define SCP_GPCR_PA13 ( 1 << 3 ) ++#define SCP_GPCR_PA12 ( 1 << 2 ) ++#define SCP_GPCR_PA11 ( 1 << 1 ) ++ ++/* ++ * SCOOP2 internal GPIOs ++ */ ++#define SCP_PXA_VCORE1 SCP_GPCR_PA11 ++#define SCP_TC6393_REST_IN SCP_GPCR_PA12 ++#define SCP_IR_POWERDWN SCP_GPCR_PA13 ++#define SCP_SD_WP SCP_GPCR_PA14 ++#define SCP_PWR_ON SCP_GPCR_PA15 ++#define SCP_AUD_PWR_ON SCP_GPCR_PA16 ++#define SCP_BT_RESET SCP_GPCR_PA17 ++#define SCP_BT_PWR_EN SCP_GPCR_PA18 ++#define SCP_AC_IN_OL SCP_GPCR_PA19 ++ ++/* GPIO Direction 1 : outpu mode / 0:input mode */ ++#define SCP_IO_DIR ( SCP_PXA_VCORE1 | SCP_TC6393_REST_IN | \ ++ SCP_IR_POWERDWN | SCP_PWR_ON | SCP_AUD_PWR_ON |\ ++ SCP_BT_RESET | SCP_BT_PWR_EN ) ++/* GPIO out put level when init 1: Hi */ ++#define SCP_IO_OUT ( SCP_TC6393_REST_IN ) ++//#define GPIO_CO 16 ++ ++/* ++ * SCOOP2 for jacket I/O mappings ++ * ++ * We have the following mapping: ++ * phys virt ++ * 14800000 f2200000 ++ */ ++ ++#define CF2_BUF_CTRL_BASE 0xF2200040 ++#define SCP_JC_REG(adr) (*(volatile unsigned short*)(CF2_BUF_CTRL_BASE+(adr))) ++ ++#define SCP_JC_REG_MCR SCP_JC_REG(SCP_MCR) ++#define SCP_JC_REG_CDR SCP_JC_REG(SCP_CDR) ++#define SCP_JC_REG_CSR SCP_JC_REG(SCP_CSR) ++#define SCP_JC_REG_CPR SCP_JC_REG(SCP_CPR) ++#define SCP_JC_REG_CCR SCP_JC_REG(SCP_CCR) ++#define SCP_JC_REG_IRR SCP_JC_REG(SCP_IRR) ++#define SCP_JC_REG_IRM SCP_JC_REG(SCP_IRM) ++#define SCP_JC_REG_IMR SCP_JC_REG(SCP_IMR) ++#define SCP_JC_REG_ISR SCP_JC_REG(SCP_ISR) ++#define SCP_JC_REG_GPCR SCP_JC_REG(SCP_GPCR) ++#define SCP_JC_REG_GPWR SCP_JC_REG(SCP_GPWR) ++#define SCP_JC_REG_GPRR SCP_JC_REG(SCP_GPRR) ++ ++/* ++ * SCOOP2 jacket GPIOs ++ */ ++#define SCP_JC_BT_LED SCP_GPCR_PA11 ++#define SCP_JC_NOTE_LED SCP_GPCR_PA12 ++#define SCP_JC_CHRG_ERR_LED SCP_GPCR_PA13 ++#define SCP_JC_USB_PULLUP SCP_GPCR_PA14 ++#define SCP_JC_TC6393_SUSPEND SCP_GPCR_PA15 ++#define SCP_JC_TC3693_L3V_ON SCP_GPCR_PA16 ++#define SCP_JC_WLAN_DETECT SCP_GPCR_PA17 ++#define SCP_JC_WLAN_LED SCP_GPCR_PA18 ++#define SCP_JC_CARD_LIMIT_SEL SCP_GPCR_PA19 ++ ++/* GPIO Direction 1 : outpu mode / 0:input mode */ ++#define SCP_JC_IO_DIR ( SCP_JC_BT_LED | SCP_JC_NOTE_LED | \ ++ SCP_JC_CHRG_ERR_LED | SCP_JC_USB_PULLUP | \ ++ SCP_JC_TC6393_SUSPEND | SCP_JC_TC3693_L3V_ON | \ ++ SCP_JC_WLAN_LED | SCP_JC_CARD_LIMIT_SEL ) ++/* GPIO out put level when init 1: Hi */ ++//#define SCP_JC_IO_OUT ( SCP_JC_TC6393_SUSPEND | SCP_JC_TC3693_L3V_ON ) ++#define SCP_JC_IO_OUT ( 0 ) ++ ++/* ++ * NSSP ++ */ ++#define NSSCR0 __REG(0x41400000) ++#define NSSCR1 __REG(0x41400008) ++#define NSSSR __REG(0x4140000C) ++#define NSSITR __REG(0x41400010) ++#define NSSDRTO __REG(0x41400028) ++ ++/* ++ * Timing Generator ++ */ ++#define TG_PNLCTL 0x00 ++#define TG_TPOSCTL 0x01 ++#define TG_DUTYCTL 0x02 ++#define TG_GPOSR 0x03 ++#define TG_GPODR1 0x04 ++#define TG_GPODR2 0x05 ++#define TG_PINICTL 0x06 ++#define TG_HPOSCTL 0x07 ++ ++#if 0 ++/* ++ * Flash Memory mappings ++ * ++ * We have the following mapping: ++ * phys virt ++ * boot ROM 00000000 ef000000 ++ * NAND Flash 0C000000 f2100000 ++ */ ++#define NAND_FLASH_REG_BASE 0xf2100000 ++#define CPLD_REG(ofst) (*(volatile unsigned char*)(NAND_FLASH_REG_BASE+(ofst))) ++ ++/* register offset */ ++#define ECCLPLB 0x00 /* line parity 7 - 0 bit */ ++#define ECCLPUB 0x04 /* line parity 15 - 8 bit */ ++#define ECCCP 0x08 /* column parity 5 - 0 bit */ ++#define ECCCNTR 0x0C /* ECC byte counter */ ++#define ECCCLRR 0x10 /* cleare ECC */ ++#define FLASHIO 0x14 /* Flash I/O */ ++#define FLASHCTL 0x18 /* Flash Control */ ++ ++/* Flash control bit */ ++#define FLRYBY (1 << 5) ++#define FLCE1 (1 << 4) ++#define FLWP (1 << 3) ++#define FLALE (1 << 2) ++#define FLCLE (1 << 1) ++#define FLCE0 (1 << 0) ++#endif ++ ++ ++/* ++ * LED ++ */ ++#define SCP_LED_BLUE SCP_GPCR_PA11 ++#define SCP_LED_GREEN SCP_GPCR_PA12 ++#define SCP_LED_ORANGE SCP_GPCR_PA13 ++#define SCP_LED_WLAN SCP_GPCR_PA18 ++ ++ ++/* ++ * PXA GPIOs ++ */ ++#define GPIO_POWERON (0) ++#define GPIO_RESET (1) ++#define GPIO_AC_IN (2) ++#define GPIO_RECORD_BTN (3) ++#define GPIO_SYNC (4) /* Cradle SYNC Button */ ++#define GPIO_USB_IN (5) ++//#define GPIO_nSD_CLK (6) ++#define GPIO_JACKET_DETECT (7) ++#define GPIO_nSD_DETECT (9) ++#define GPIO_nSD_INT (10) ++#define GPIO_TC6393_CLK (11) ++#define GPIO_BAT1_CRG (12) ++#define GPIO_CF_CD (13) ++#define GPIO_BAT0_CRG (14) ++#define GPIO_TC6393_INT (15) ++#define GPIO_BAT0_LOW (17) ++#define GPIO_TC6393_RDY (18) ++#define GPIO_ON_RESET (19) ++#define GPIO_EAR_IN (20) ++#define GPIO_CF_IRQ (21) /* CF slot0 Ready */ ++#define GPIO_ON_KEY (22) ++#define GPIO_VGA_LINE (27) ++#define GPIO_TP_INT (32) /* Touch Panel pen down interrupt */ ++#define GPIO_JC_CF_IRQ (36) /* CF slot1 Ready */ ++#define GPIO_BAT_LOCKED (38) /* Battery locked */ ++#define GPIO_TG_SPI_SCLK (81) ++#define GPIO_TG_SPI_CS (82) ++#define GPIO_TG_SPI_MOSI (83) ++#define GPIO_BAT1_LOW (84) ++ ++#define GPIO_HP_IN GPIO_EAR_IN ++ ++#define GPIO_MAIN_BAT_LOW GPIO_BAT0_LOW ++ ++#define KEY_STROBE_NUM (11) ++#define KEY_SENSE_NUM (7) ++#define GPIO_HIGH_STROBE_BIT (0xfc000000) ++#define GPIO_LOW_STROBE_BIT (0x0000001f) ++#define GPIO_ALL_SENSE_BIT (0x00000fe0) ++#define GPIO_ALL_SENSE_RSHIFT (5) ++#define GPIO_STROBE_BIT(a) GPIO_bit(58+(a)) ++#define GPIO_SENSE_BIT(a) GPIO_bit(69+(a)) ++#define GAFR_HIGH_STROBE_BIT (0xfff00000) ++#define GAFR_LOW_STROBE_BIT (0x000003ff) ++#define GAFR_ALL_SENSE_BIT (0x00fffc00) ++#define GPIO_KEY_SENSE(a) (69+(a)) ++ ++ ++/* ++ * Interrupts ++ */ ++#define IRQ_GPIO_WAKEUP IRQ_GPIO(GPIO_WAKEUP) ++#define IRQ_GPIO_AC_IN IRQ_GPIO(GPIO_AC_IN) ++#define IRQ_GPIO_RECORD_BTN IRQ_GPIO(GPIO_RECORD_BTN) ++#define IRQ_GPIO_SYNC IRQ_GPIO(GPIO_SYNC) ++#define IRQ_GPIO_USB_IN IRQ_GPIO(GPIO_USB_IN) ++#define IRQ_GPIO_JACKET_DETECT IRQ_GPIO(GPIO_JACKET_DETECT) ++#define IRQ_GPIO_nSD_INT IRQ_GPIO(GPIO_nSD_INT) ++#define IRQ_GPIO_nSD_DETECT IRQ_GPIO(GPIO_nSD_DETECT) ++#define IRQ_GPIO_BAT1_CRG IRQ_GPIO(GPIO_BAT1_CRG) ++#define IRQ_GPIO_CF_CD IRQ_GPIO(GPIO_CF_CD) ++#define IRQ_GPIO_BAT0_CRG IRQ_GPIO(GPIO_BAT0_CRG) ++#define IRQ_GPIO_TC6393_INT IRQ_GPIO(GPIO_TC6393_INT) ++#define IRQ_GPIO_BAT0_LOW IRQ_GPIO(GPIO_BAT0_LOW) ++#define IRQ_GPIO_EAR_IN IRQ_GPIO(GPIO_EAR_IN) ++#define IRQ_GPIO_CF_IRQ IRQ_GPIO(GPIO_CF_IRQ) ++#define IRQ_GPIO_ON_KEY IRQ_GPIO(GPIO_ON_KEY) ++#define IRQ_GPIO_VGA_LINE IRQ_GPIO(GPIO_VGA_LINE) ++#define IRQ_GPIO_TP_INT IRQ_GPIO(GPIO_TP_INT) ++#define IRQ_GPIO_JC_CF_IRQ IRQ_GPIO(GPIO_JC_CF_IRQ) ++#define IRQ_GPIO_BAT_LOCKED IRQ_GPIO(GPIO_BAT_LOCKED) ++#define IRQ_GPIO_BAT1_LOW IRQ_GPIO(GPIO_BAT1_LOW) ++#define IRQ_GPIO_KEY_SENSE(a) IRQ_GPIO(69+(a)) ++ ++#define IRQ_GPIO_MAIN_BAT_LOW IRQ_GPIO(GPIO_MAIN_BAT_LOW) ++ ++// CS ++#define CS_MAX1111 1 ++#define CS_ADS7846 2 ++#define CS_LZ9JG18 3 ++ ++#define LOGICAL_WAKEUP_SRC ++ ++#endif /* _ASM_ARCH_TOSA_H_ */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa_ac97_codec.h linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h +--- linux_c860_org/include/asm-arm/arch-pxa/tosa_ac97_codec.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,32 @@ ++/* ++ * linux/include/asm-arm/arch-pxa/tosa_ac97_codec.h ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ */ ++#ifndef _TOSA_AC97_CODEC_H_ ++#define _TOSA_AC97_CODEC_H_ ++ ++//#define USE_AC97_INTERRUPT ++ ++extern int pxa_ac97_get(struct ac97_codec **, unsigned char *); ++extern void pxa_ac97_put(unsigned char *); ++extern unsigned int ac97_set_dac_rate(struct ac97_codec *, unsigned int); ++extern unsigned int ac97_set_adc_rate(struct ac97_codec *, unsigned int); ++ ++extern struct ac97_codec *codec; ++#define ac97_read(r) codec->codec_read(codec, r) ++#define ac97_write(r, v) codec->codec_write(codec, r, v); ++#define ac97_bit_clear(r, v) codec->codec_bit_clear(codec, r, v) ++#define ac97_bit_set(r, v) codec->codec_bit_set(codec, r, v) ++ ++/* Function1 */ ++#define AC97_JIEN (1 << 12) ++#define AC97_FRC (1 << 11) ++/* Function2 */ ++#define AC97_AMUTE (1 << 15) //DAC Auto-Mute Enable(read-only) ++#define AC97_AMEN (1 << 7) //DAC Auto-Mute Enable ++ ++#endif /* _TOSA_AC97_CODEC_H_ */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/tosa_wm9712.h linux/include/asm-arm/arch-pxa/tosa_wm9712.h +--- linux_c860_org/include/asm-arm/arch-pxa/tosa_wm9712.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/tosa_wm9712.h 2004-06-10 21:13:20.000000000 +0900 +@@ -0,0 +1,204 @@ ++/* ++ * linux/drivers/sound/tosa_wm9712.h ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * Sound Driver for WM9712 codec device header file ++ * ++ * Base on: ++ * linux/drivers/sound/poodle_wm8731.h ++ * ++ * Copyright (C) 2002 SHARP ++ * ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Change Log ++ * ++ */ ++#ifndef _WM9712_H_ ++#define _WM9712_H_ ++ ++#define TRUE 1 ++#define FALSE 0 ++ ++// Line input volume ctrl registers ++#define LINEIN_MUTE_H (1 << 15) //Headphone ++#define LINEIN_MUTE_S (1 << 14) //Speaker ++#define LINEIN_MUTE_P (1 << 13) //Phone ++#define LINEIN_MUTE_ALL ( LINEIN_MUTE_H | \ ++ LINEIN_MUTE_S | \ ++ LINEIN_MUTE_P ) ++ ++// Headphone volume ctrl ++#define HP_MUTE (1 << 15) ++#define HP_ZC_ENABLE (1 << 7) ++ ++// Speaker volume ctrl ++#define SP_MUTE (1 << 15) ++#define SP_SRC (1 << 8) ++#define SP_ZC_ENABLE (1 << 7) ++#define SP_INV (1 << 6) ++ ++// Initial value ++#define INIT_HP_VOL (0) // Initial Volume 0dB ++#define INIT_SP_VOL (0) // Initial Volume 0dB ++#define INIT_LINE_VOL (8) // Initial Volume 0dB ++#define INIT_DAC_VOL (8) // Initial Volume 0dB ++#define MAX_HP_VOL (63) ++#define MIN_HP_VOL (0) ++#define MAX_SP_VOL (63) ++#define MIN_SP_VOL (0) ++#define MAX_LINE_VOL (31) ++#define MIN_LINE_VOL (0) ++#define MAX_DAC_VOL (31) ++#define MIN_DAC_VOL (0) ++ ++//DAC Volume control ++#define DAC_MUTE_H (1 << 15) //Headphone ++#define DAC_MUTE_S (1 << 14) //Speaker ++#define DAC_MUTE_P (1 << 13) //Phone ++#define DAC_MUTE_ALL ( DAC_MUTE_H | \ ++ DAC_MUTE_S | \ ++ DAC_MUTE_P ) ++ ++// Analog Audio path ctrl register (0000100) ++#define SIDETONE_ENABLE (1<<5) ++#define SIDETONE_DISABLE ( 0 ) ++#define ST_ATTN_6dB ( (0) << 6 ) ++#define ST_ATTN_9dB ( (1) << 6 ) ++#define ST_ATTN_12dB ( (2) << 6 ) ++#define ST_ATTN_15dB ( (3) << 6 ) ++#define DAC_OFF ( 0 ) ++#define DAC_SELECT ( 1 << 4 ) ++#define BYPASS_ENABLE ( 1 << 3 ) ++#define BYPASS_DISABLE ( 0 ) ++#define INPUT_MIC ( 1 << 2 ) ++#define INPUT_LINE ( 0 << 2 ) ++#define MIC_MUTE ( (1 << 13) | (1 << 14) ) ++#define REC_SELECT_MASK ( (1 << 10) | (1 << 9) | (1 << 8) | \ ++ (1 << 2) | (1 << 1) | (1 << 0) ) ++#define REC_SELECT_LINEIN ( 4 ) ++#define MIC_BOOST ( 1 << 7 ) ++ ++// Digital Audio path ctrl register (0000101) ++#define DPC_DAC_MUTE_ON ( 1U << 3 ) ++#define DPC_DAC_MUTE_OFF ( 0U ) ++#define DPC_DAC_MUTE_MASK (~ ( 1U << 3 ) ) ++#define DEEMPHASIS_MODE(x) ( (( x ) & 3U ) << 1 ) ++#define DPC_DEEMPHASIS_MASK (~ ( 3U << 1 ) ) ++#define DPC_ADC_HPF_ENABLE ( 1U ) ++#define DPC_ADC_HPF_DISABLE ( 0U ) ++#define DPC_INIT ( 0U ) ++ ++// Power Consumption ++#define NUM_OF_WM9712_DEV ( 4 ) ++#define WM9712_DEV_TS ( 0 ) ++#define WM9712_DEV_AUDIO ( 1 ) ++#define WM9712_DEV_AUDIOIN ( 2 ) ++#define WM9712_DEV_TMP ( 3 ) ++ ++#define WM9712_PWR_OFF ( 0 ) ++#define WM9712_PWR_REC ( 1 ) ++#define WM9712_PWR_PLAY ( 2 ) ++#define WM9712_PWR_REC_HP ( 3 ) ++#define WM9712_PWR_PLAY_HP ( 4 ) ++#define WM9712_PWR_REC_MIC ( 5 ) ++#define WM9712_PWR_PLAY_MIC ( 6 ) ++#define WM9712_PWR_TP_WAIT ( 7 ) ++#define WM9712_PWR_TP_CONV ( 8 ) ++#define WM9712_PWR_ENMICBIAS ( 9 ) ++#define WM9712_PWR_FULL ( 10 ) ++ ++extern void wm9712_power_mode(int, int); ++#define wm9712_power_mode_ts(m) wm9712_power_mode(WM9712_DEV_TS, m) ++#define wm9712_power_mode_audio(m) wm9712_power_mode(WM9712_DEV_AUDIO, m) ++#define wm9712_power_mode_audioin(m) wm9712_power_mode(WM9712_DEV_AUDIOIN, m) ++#define wm9712_power_mode_tmp(m) wm9712_power_mode(WM9712_DEV_TMP, m) ++#ifdef CONFIG_PM ++extern void lock_FCS_AC97(int, int); ++#define lock_FCS_AC97_ts(m) lock_FCS_AC97(WM9712_DEV_TS, m) ++#define lock_FCS_AC97_audio(m) lock_FCS_AC97(WM9712_DEV_AUDIO, m) ++#endif /* CONFIG_PM */ ++ ++// Digital Audio Interface Format register (0000111) ++#define SLAVE ( 0 ) ++#define MASTER ( 1U << 6 ) ++#define I2S_MODE ( 2U ) ++#define LEFT_JUSTIFIED ( 1U ) ++#define RIGHT_JUSTIFIED ( 0U ) ++#define IWL_16BIT ( 0 ) ++#define IWL_20BIT ( 1U << 2 ) ++#define IWL_24BIT ( 2U << 2 ) ++#define IWL_32BIT ( 3U << 2 ) ++#define LRSWAP_DISABLE ( 0U ) ++#define LRSWAP_ENABLE ( 1U << 5 ) ++#define LRP_RIGHT_HIGH ( 0U ) ++#define LRP_RIGHT_LOW ( 1U ) ++ ++// Sampling ctrl register defines (0001000) ++#define SRC_CLKOUT_DIV ( 1 << 7 ) ++#define SRC_CLKIN_DIV ( 1 << 6 ) ++#define SRC_BOTH_44KHZ ( 8 << 2 ) ++#define SRC_BOTH_48KHZ ( 0 << 2 ) ++#define SRC_BOTH_8KHZ ( 3 << 2 ) ++#define SRC_OSR_256FS ( 0 ) // 12.288MHz/48kHz,11.2896MHz/44.1kHz ++#define SRC_OSR_384FS ( 1 << 1 ) // 18.432MHz/48kHz,16.9344MHz/44.1kHz ++#define SRC_OSR_250FS ( 0 ) // 12MHz/48 kHz ++#define SRC_OSR_272FS ( 1 << 1 ) // 12MHz/44.1kHz ++#define SRC_USB_MODE ( 1 ) ++#define SRC_NORMAL_MODE ( 0 ) ++#define DIGITAL_IF_ACTIVE ( 1 ) // digital interface active ++#define DIGITAL_IF_INACTIVE ( 0 ) ++ ++typedef struct { ++ int left; ++ int right; ++} GAIN_SETTINGS; ++ ++typedef struct { ++ unsigned short mode; ++ GAIN_SETTINGS output; ++ GAIN_SETTINGS input; ++ int frequency; ++} SOUND_SETTINGS; ++ ++// mode ++#define SOUND_PLAY_MODE (0x0001) ++#define SOUND_REC_MODE (0x0002) ++#define SOUND_MODE_MASK (0x0003) ++ ++// volume ++enum { ++ VOLUME_IGNORE = -2, ++ VOLUME_MUTE = -1 ++}; ++#define MAX_VOLUME MAX_HP_VOL ++#define MIN_VOLUME MIN_HP_VOL ++#define MAX_INPUT_VOLUME MAX_LINE_VOL ++#define MIN_INPUT_VOLUME MIN_LINE_VOL ++ ++int wm9712_busy(void); ++int wm9712_init(void); ++void wm9712_exit(void); ++int wm9712_open(SOUND_SETTINGS *); ++int wm9712_close(void); ++int wm9712_set_freq(SOUND_SETTINGS *); ++int wm9712_set_output_volume(int, int); ++int wm9712_set_input_gain(int, int); ++int wm9712_set_agc(int); ++void wm9712_suspend(void); ++void wm9712_resume(void); ++void wm9712_update_jack_state(void); ++void wm9712_checkjack_sleep(void); ++void wm9712_checkjack_wakeup(void); ++ ++#endif /* _WM9712_H_ */ +diff -Nur linux_c860_org/include/asm-arm/arch-pxa/uncompress.h linux/include/asm-arm/arch-pxa/uncompress.h +--- linux_c860_org/include/asm-arm/arch-pxa/uncompress.h 2003-01-14 12:07:55.000000000 +0900 ++++ linux/include/asm-arm/arch-pxa/uncompress.h 2004-06-10 21:09:11.000000000 +0900 +@@ -11,6 +11,7 @@ + * Change Log + * 31-Jul-2002 Lineo Japan, Inc. + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #define FFUART ((volatile unsigned long *)0x40100000) +@@ -35,7 +36,7 @@ + */ + static void puts(const char *s) + { +-#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) ++#if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) || defined(CONFIG_ARCH_PXA_TOSA) + return; + #endif + +diff -Nur linux_c860_org/include/asm-arm/dma.h linux/include/asm-arm/dma.h +--- linux_c860_org/include/asm-arm/dma.h 2002-08-26 14:37:53.000000000 +0900 ++++ linux/include/asm-arm/dma.h 2004-06-10 21:13:07.000000000 +0900 +@@ -5,6 +5,7 @@ + + #include <linux/config.h> + #include <linux/spinlock.h> ++#include <linux/sched.h> + #include <asm/system.h> + #include <asm/memory.h> + #include <asm/scatterlist.h> +diff -Nur linux_c860_org/include/asm-arm/hardirq.h linux/include/asm-arm/hardirq.h +--- linux_c860_org/include/asm-arm/hardirq.h 2002-08-26 14:37:53.000000000 +0900 ++++ linux/include/asm-arm/hardirq.h 2004-06-10 21:12:36.000000000 +0900 +@@ -34,6 +34,7 @@ + #define irq_exit(cpu,irq) (local_irq_count(cpu)--) + + #define synchronize_irq() do { } while (0) ++#define release_irqlock(cpu) do { } while (0) + + #else + #error SMP not supported +diff -Nur linux_c860_org/include/asm-arm/pgalloc.h linux/include/asm-arm/pgalloc.h +--- linux_c860_org/include/asm-arm/pgalloc.h 2003-06-18 16:12:27.000000000 +0900 ++++ linux/include/asm-arm/pgalloc.h 2004-06-10 21:12:37.000000000 +0900 +@@ -60,40 +60,48 @@ + { + unsigned long *ret; + ++ preempt_disable(); + if ((ret = pgd_quicklist) != NULL) { + pgd_quicklist = (unsigned long *)__pgd_next(ret); + ret[1] = ret[2]; + clean_dcache_entry(ret + 1); + pgtable_cache_size--; + } ++ preempt_enable(); + return (pgd_t *)ret; + } + + static inline void free_pgd_fast(pgd_t *pgd) + { ++ preempt_disable(); + __pgd_next(pgd) = (unsigned long) pgd_quicklist; + pgd_quicklist = (unsigned long *) pgd; + pgtable_cache_size++; ++ preempt_enable(); + } + + static inline pte_t *pte_alloc_one_fast(struct mm_struct *mm, unsigned long address) + { + unsigned long *ret; + ++ preempt_disable(); + if((ret = pte_quicklist) != NULL) { + pte_quicklist = (unsigned long *)__pte_next(ret); + ret[0] = 0; + clean_dcache_entry(ret); + pgtable_cache_size--; + } ++ preempt_enable(); + return (pte_t *)ret; + } + + static inline void free_pte_fast(pte_t *pte) + { ++ preempt_disable(); + __pte_next(pte) = (unsigned long) pte_quicklist; + pte_quicklist = (unsigned long *) pte; + pgtable_cache_size++; ++ preempt_enable(); + } + + #else /* CONFIG_NO_PGT_CACHE */ +diff -Nur linux_c860_org/include/asm-arm/processor.h linux/include/asm-arm/processor.h +--- linux_c860_org/include/asm-arm/processor.h 2002-08-26 14:43:40.000000000 +0900 ++++ linux/include/asm-arm/processor.h 2004-06-10 21:12:37.000000000 +0900 +@@ -117,7 +117,7 @@ + /* + * Create a new kernel thread + */ +-extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); + + #endif + +diff -Nur linux_c860_org/include/asm-arm/sharp_apm.h linux/include/asm-arm/sharp_apm.h +--- linux_c860_org/include/asm-arm/sharp_apm.h 2003-03-13 14:53:18.000000000 +0900 ++++ linux/include/asm-arm/sharp_apm.h 2004-06-10 21:13:10.000000000 +0900 +@@ -9,6 +9,7 @@ + * Change Log + * 26-Jun-2002 SHARP Add `APM_IOC_GET_BACKPACK_STATE` + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 26-Feb-2004 Lineo Solutions, Inc. for Tosa + */ + + #ifndef _SHARP_APM_H +@@ -59,6 +60,10 @@ + + #define APM_IOC_KICK_BATTERY_CHECK _IO(APM_IOC_MAGIC, 80) + ++#define APM_IOC_GET_JACKET_STATE _IO(APM_IOC_MAGIC, 90) /* for tosa */ ++#define APM_IOC_BATTERY_JACKET_CHK _IO(APM_IOC_MAGIC, 91) ++#define APM_IOC_GET_CARDSLOT_ERROR _IO(APM_IOC_MAGIC, 92) ++ + + #define APM_IOCGWUPSRC _IOR (APM_IOC_MAGIC, 200, int) /* 0x800441c8 */ + #define APM_IOCSWUPSRC _IOWR(APM_IOC_MAGIC, 201, int) /* 0xc00441c9 */ +@@ -90,6 +95,11 @@ + #define LOCK_FCS_AC97 0x00000080 + #define LOCK_FCS_PCMCIA 0x00000100 + #define LOCK_FCS_SOUND 0x00000200 ++#define LOCK_FCS_KEY 0x00000400 ++#define LOCK_FCS_TOUCH 0x00000800 ++#define LOCK_FCS_BATTERY 0x00001000 ++#define LOCK_FCS_AC97_SUB 0x00002000 ++#define LOCK_FCS_PCMCIA2 0x00004000 + #define LOCK_FCS_USR0 0x01000000 + #define LOCK_FCS_USR1 0x02000000 + #define LOCK_FCS_USR2 0x04000000 +@@ -113,10 +123,17 @@ + #define POWER_MODE_SOUND 0x00000200 + #define POWER_MODE_KEY 0x00000400 + #define POWER_MODE_TOUCH 0x00000800 ++#define POWER_MODE_BATTERY 0x00001000 ++#define POWER_MODE_AC97_SUB 0x00002000 ++#define POWER_MODE_PCMCIA2 0x00004000 + + #define POWER_MODE_CAUTION_MASK (POWER_MODE_MMC|POWER_MODE_STUART|POWER_MODE_UDC|POWER_MODE_PCMCIA) + ++#if defined(CONFIG_ARCH_PXA_TOSA) ++#define LOCK_FCS_POWER_MODE_CORRESPOND_MASK (POWER_MODE_FFUART|POWER_MODE_STUART|POWER_MODE_BTUART|POWER_MODE_IRDA|POWER_MODE_SSP|POWER_MODE_UDC|POWER_MODE_AC97|POWER_MODE_PCMCIA|POWER_MODE_SOUND|POWER_MODE_KEY|POWER_MODE_TOUCH|POWER_MODE_BATTERY|POWER_MODE_AC97_SUB|POWER_MODE_PCMCIA2) ++#else + #define LOCK_FCS_POWER_MODE_CORRESPOND_MASK (POWER_MODE_FFUART|POWER_MODE_STUART|POWER_MODE_BTUART|POWER_MODE_IRDA|POWER_MODE_SSP|POWER_MODE_UDC|POWER_MODE_AC97|POWER_MODE_PCMCIA|POWER_MODE_SOUND) ++#endif + + int change_power_mode(unsigned long, int); + int lock_FCS(unsigned long, int); +diff -Nur linux_c860_org/include/asm-arm/sharp_char.h linux/include/asm-arm/sharp_char.h +--- linux_c860_org/include/asm-arm/sharp_char.h 2003-01-14 12:07:55.000000000 +0900 ++++ linux/include/asm-arm/sharp_char.h 2004-06-10 21:09:11.000000000 +0900 +@@ -17,6 +17,7 @@ + * + * Change Log + * 12-Dec-2002 Sharp Corporation for Poodle and Corgi ++ * 1-Nov-2003 Sharp Corporation for Tosa + */ + + #ifndef __ASM_SHARP_CHAR_H_INCLUDED +@@ -65,7 +66,7 @@ + int status; /* set new led status if you call SHARP_LED_SETSTATUS */ + } sharp_led_status; + +-#define SHARP_LED_WHICH_MAX 15 /* last number of LED */ ++#define SHARP_LED_WHICH_MAX 17 /* last number of LED */ + + /* parameters for 'which' member */ + #define SHARP_LED_PDA 0 /* PDA status */ +@@ -84,6 +85,8 @@ + #define SHARP_LED_COLLIE_1 13 /* 1st pri. mail LED control */ + #define SHARP_LED_COMM 14 /* communication status */ + #define SHARP_LED_BROWSER 15 /* WWW browser status */ ++#define SHARP_LED_BLUETOOTH 16 /* Bluetooth */ ++#define SHARP_LED_WLAN 17 /* Wireless LAN */ + + /* parameters for 'status' member */ + #define LED_PDA_RUNNING 0 /* for SHARP_LED_RUN */ +@@ -158,6 +161,14 @@ + #define LED_BROWSER_ONLINE 1 /* for SHARP_LED_BROWSER */ + #define LED_BROWSER_ERROR 2 /* for SHARP_LED_BROWSER */ + ++#define LED_BLUETOOTH_OFFLINE 0 /* for SHARP_LED_BLUETOOTH */ ++#define LED_BLUETOOTH_OUTOFRANGE 1 /* for SHARP_LED_BLUETOOTH */ ++#define LED_BLUETOOTH_STANBY 2 /* for SHARP_LED_BLUETOOTH */ ++ ++#define LED_WLAN_OFFLINE 0 /* for SHARP_LED_WLAN */ ++#define LED_WLAN_OUTOFRANGE 1 /* for SHARP_LED_WLAN */ ++#define LED_WLAN_BLINK 2 /* for SHARP_LED_WLAN */ ++ + + /* --- for SHARP_BUZZER device --- */ + #define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) +@@ -257,6 +268,9 @@ + #define IRIS_KBDCTL_ENABLEKEYBOARD (SHARP_KBDCTL_IOCTL_START+16) + #define IRIS_KBDCTL_DISABLEKEYBOARD (SHARP_KBDCTL_IOCTL_START+17) + #define SHARP_KBDCTL_SENDKEY (SHARP_KBDCTL_IOCTL_START+18) ++#define SHARP_KBDCTL_SETMODIFSTAT (SHARP_KBDCTL_IOCTL_START+20) ++#define SHARP_KBDCTL_SETSWKEY (SHARP_KBDCTL_IOCTL_START+21) ++#define SHARP_KBDCTL_GETSWKEY (SHARP_KBDCTL_IOCTL_START+22) + + typedef struct sharp_kbdctl_modifstat { + int which; +@@ -274,6 +288,11 @@ + int hold_slcode; + } sharp_kbdctl_holdcustom; + ++typedef struct _sharp_kbdctl_swkey { ++ int key; ++ int mode; ++} sharp_kbdctl_swkey; ++ + #define SHARP_EXTMODIF_2ND 0x01 + #define SHARP_EXTMODIF_CAPS 0x02 + #define SHARP_EXTMODIF_NUMLOCK 0x03 +diff -Nur linux_c860_org/include/asm-arm/sharp_tc6393.h linux/include/asm-arm/sharp_tc6393.h +--- linux_c860_org/include/asm-arm/sharp_tc6393.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/sharp_tc6393.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,333 @@ ++/* ++ * linux/include/asm-arm/sharp_tc6393.h ++ * ++ * Copyright (C) 2003 SHARP ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * ChangeLog: ++ * 05-Aug-2003 SHARP Corporation ++ * ++ */ ++ ++#ifndef _TC6393XB_H_ ++#define _TC6393XB_H_ ++ ++//TC6393XB Resource Area Map (Offset) ++// System Configration Register Area 0x00000000 - 0x000000FF (Size 0x00000100) ++// NAND Flash Host Controller Register Area 0x00000100 - 0x000001FF (Size 0x00000100) ++// USB Host Controller Register Area 0x00000300 - 0x000003FF (Size 0x00000100) ++// LCD Host Controller Register Area 0x00000500 - 0x000005FF (Size 0x00000100) ++// NAND Flash Control Register 0x00001000 - 0x00001007 (Size 0x00000008) ++// USB Control Register 0x00003000 - 0x000031FF (Size 0x00000200) ++// LCD Control Register 0x00005000 - 0x000051FF (Size 0x00000200) ++// Local Memory 0 (32KB) 0x00010000 - 0x00017FFF (Size 0x00008000) ++// Local Memory 0 (32KB) alias 0x00018000 - 0x0001FFFF (Size 0x00008000) ++// Local Memory 1 (1MB) 0x00100000 - 0x001FFFFF (Size 0x00100000) ++ ++ ++#define TC6393XB_BASE (0xf1000000) ++ ++typedef struct { ++ volatile unsigned char reserved1[8]; ++ // Revision ID ++ volatile unsigned char warid; ++ volatile unsigned char reserved2[71]; ++ // Interrupt Status ++ volatile unsigned char r_itrsts; ++ volatile unsigned char reserved3; ++ // Interrupt Mask ++ volatile unsigned char r_itrmsk; ++ volatile unsigned char reserved4; ++ // Interrupt Routing ++ volatile unsigned char r_itrrot; ++ volatile unsigned char reserved5[11]; ++ // GP Enable ++ volatile unsigned char gpioen; ++ // GP Alternative Enable ++ volatile unsigned char gpaioen; ++ volatile unsigned char reserved6[2]; ++ // GPI Status 0 ++ volatile unsigned char gpists0; ++ // GPI Status 1 ++ volatile unsigned char gpists1; ++ // GPI Status 2 ++ volatile unsigned char gpists2; ++ volatile unsigned char reserved7; ++ // GPI INT Mask 0 ++ volatile unsigned char gpintmsk0; ++ // GPI INT Mask 1 ++ volatile unsigned char gpintmsk1; ++ // GPI INT Mask 2 ++ volatile unsigned char gpintmsk2; ++ volatile unsigned char reserved8; ++ // GPI Edge Detect Enable 0 ++ volatile unsigned char gpedgen0; ++ // GPI Edge Detect Enable 1 ++ volatile unsigned char gpedgen1; ++ // GPI Edge Detect Enable 2 ++ volatile unsigned char gpedgen2; ++ volatile unsigned char reserved9; ++ // GPI Level Invert 0 ++ volatile unsigned char gplvinv0; ++ // GPI Level Invert 1 ++ volatile unsigned char gplvinv1; ++ // GPI Level Invert 2 ++ volatile unsigned char gplvinv2; ++ volatile unsigned char reserved10[5]; ++ // GPO Data set 0 ++ volatile unsigned char gpodt0; ++ // GPO Data set 1 ++ volatile unsigned char gpodt1; ++ // GPO Data set 2 ++ volatile unsigned char gpodt2; ++ volatile unsigned char reserved11; ++ // GPO Data OE Contorol 0 ++ volatile unsigned char gpooe0; ++ // GPO Data OE Contorol 1 ++ volatile unsigned char gpooe1; ++ // GPO Data OE Contorol 2 ++ volatile unsigned char gpooe2; ++ volatile unsigned char reserved12; ++ // GP Internal Active Register Contorol 0 ++ volatile unsigned char gpapulc0; ++ // GP Internal Active Register Contorol 1 ++ volatile unsigned char gpapulc1; ++ // GP Internal Active Register Contorol 2 ++ volatile unsigned char gpIapulc2; ++ volatile unsigned char reserved13; ++ // GP Internal Active Register Level Contorol 0 ++ volatile unsigned char gparlv0; ++ // GP Internal Active Register Level Contorol 1 ++ volatile unsigned char gparlv1; ++ // GP Internal Active Register Level Contorol 2 ++ volatile unsigned char gparlv2; ++ volatile unsigned char reserved14; ++ // GPI Buffer Contorol 0 ++ volatile unsigned char gpibfc0; ++ // GPI Buffer Contorol 1 ++ volatile unsigned char gpibfc1; ++ // GPI Buffer Contorol 2 ++ volatile unsigned char gpibfc2; ++ volatile unsigned char reserved15; ++ // GPa Internal Activ Register Contorol 0 ++ volatile unsigned char gpaapulc0; ++ // GPa Internal Activ Register Contorol 1 ++ volatile unsigned char gpaapulc1; ++ volatile unsigned char reserved16[2]; ++ // GPa Internal Activ Register Level Contorol 0 ++ volatile unsigned char gpaarlv0; ++ // GPa Internal Activ Register Level Contorol 1 ++ volatile unsigned char gpaarlv1; ++ volatile unsigned char reserved17[2]; ++ // GPa Buffer Contorol 0 ++ volatile unsigned char gpaibfc0; ++ // GPa Buffer Contorol 1 ++ volatile unsigned char gpaibfc1; ++ volatile unsigned char reserved18[2]; ++ // Clock Control ++ volatile unsigned short clkctl; ++ // PLL2 Control ++ volatile unsigned short pll2ctl; ++ // PLL1 Control ++ volatile unsigned short pll1ctl; ++ // Device Internal Avtive Register Contorol ++ volatile unsigned char diarctl; ++ // Device Buffer Contorol ++ volatile unsigned char dvbctl; ++ volatile unsigned char reserved19[62]; ++ // Function Enable ++ volatile unsigned char funcebl; ++ volatile unsigned char reserved20[3]; ++ // Mode Contorol 0 ++ volatile unsigned char modectl0; ++ // Mode Contorol 1 ++ volatile unsigned char modectl1; ++ volatile unsigned char reserved21[22]; ++ // Configuraation Control ++ volatile unsigned char cfctl; ++ volatile unsigned char reserved22[2]; ++ // Debug ++ volatile unsigned char debug; ++} TC6393XB_SysConfig; ++ ++#define TC6393XB_SYSCONFIG_BASE ((TC6393XB_SysConfig *)TC6393XB_BASE) ++ ++typedef struct { ++ // Vendor ID Register ++ volatile unsigned short spvid; ++ // Device ID Register ++ volatile unsigned short spdid; ++ // Command Register ++ volatile unsigned short spcmd; ++ // Status Register ++ volatile unsigned short spst; ++ // Revision ID Register / Class Code Register ++ volatile unsigned short sprid_spcc; ++ volatile unsigned char reserved1[4]; ++ // Header Tyep Register ++ volatile unsigned char spht; ++ volatile unsigned char reserved2; ++ // SmartMedia Controller Register Base Address Register ++ union { ++ volatile unsigned short spba1; ++ volatile unsigned short spba2; ++ } spba; ++ volatile unsigned char reserved3[22]; ++ // CIS Pointer Register ++ volatile unsigned short scisp; ++ // Subsystem Vender ID Register ++ volatile unsigned short spsvid; ++ // Subsystem Deviece ID Register ++ volatile unsigned short spsdid; ++ volatile unsigned char reserved4[4]; ++ // Capability Pointer Register ++ volatile unsigned char sid; ++ volatile unsigned char reserved5[7]; ++ // Interrupt Ling Register ++ volatile unsigned char spitrl; ++ // Interrupt Pin Register ++ volatile unsigned char spitrp; ++ volatile unsigned char reserved6[10]; ++ // INT Enable Register ++ volatile unsigned char spintc; ++ // PME Enable Register ++ volatile unsigned char sppmec; ++ // Event Control Register ++ volatile unsigned char sevntcnt; ++ volatile unsigned char reserved7; ++ // CLKRUN Control Register ++ volatile unsigned char spcrunc; ++ volatile unsigned char reserved8[14]; ++ // Debug Register ++ volatile unsigned char spdbg; ++ volatile unsigned char reserved9[4]; ++ // SmartMedia Transaction Control Register ++ volatile unsigned char smtrcnt; ++ // SmartMedia Monitor Register ++ volatile unsigned char smsts; ++ // SmartMedia Power Supply Control Register ++ volatile unsigned char ssmpwc; ++ // SmartMedia Detect Control Register ++ volatile unsigned char ssmdtc; ++ volatile unsigned char reserved10[28]; ++ // Capability ID Register ++ volatile unsigned char svcid; ++ // Next Item Ptr Register ++ volatile unsigned char svniptr; ++ // Power Management Capabilities (PMC) Register ++ volatile unsigned short svpmc; ++ // Power Management Control/Status (PMCSR) Register ++ volatile unsigned short svpmcs; ++ // PMCSR PCI to PCI Bridge Support Extensions Register ++ volatile unsigned char svppcbs; ++ // Data Register ++ volatile unsigned char svdata; ++ volatile unsigned char reserved11[24]; ++ // CIS Register SCISRx ++ volatile unsigned char scisr[80]; ++ // ROM Data Port Register ++ volatile unsigned short srmdp; ++ // ROM Index Port Register ++ volatile unsigned char srmip; ++ // ROM Control Register ++ volatile unsigned char srmcr; ++ volatile unsigned char reserved12[8]; ++ // Configration Control Register ++ volatile unsigned char sppcnf; ++ volatile unsigned char reserved13[2]; ++ // Monitor Select Register ++ volatile unsigned char pfadb; ++} TC6393XB_NandConfig; ++ ++#define TC6393XB_NANDCONFIG_BASE ((TC6393XB_NandConfig *)(TC6393XB_BASE+0x100)) ++ ++ ++typedef struct { ++ union { ++ volatile struct { ++ unsigned char sdata0; // Data Register0 ++ unsigned char sdata1; // Data Register1 ++ unsigned char sdata2; // Data Register2 ++ unsigned char sdata3; // Data Register3 ++ } data8; ++ volatile struct { ++ unsigned short sdata0_1; // Data Register0,1 ++ unsigned short sdata2_3; // Data Register2,3 ++ } data16; ++ volatile struct { ++ unsigned long sdata0_3; // Data Register 0,1,2,3 ++ } data32; ++ } sdata; ++ // Mode Register ++ volatile unsigned char smode; ++ // Status Register ++ volatile unsigned char sustus; ++ // Interrupt Status Register ++ volatile unsigned char sintst; ++ // Interrupt Mask Register ++ volatile unsigned char sintmsk; ++} TC6393XB_NandCtrl; ++ ++#define TC6393XB_NANDCTRL_OFFSET 0x1000 ++#define TC6393XB_NANDCTRL_BASE ((TC6393XB_NandCtrl *)(TC6393XB_BASE+TC6393XB_NANDCTRL_OFFSET)) ++ ++ ++/* SMODE Register Command List */ ++#define SMODE_READ_COMMAND 0x15 // DataRead Command_Mode ++#define SMODE_READ_ADDRESS 0x16 // DataRead Address_Mode ++#define SMODE_READ_DATAREAD 0x14 // DataRead Data_Mode ++#define SMODE_WRITE_COMMAND 0x95 // DataWrite Command_Mode ++#define SMODE_WRITE_ADDRESS 0x96 // DataWrite Address_Mode ++#define SMODE_WRITE_DATAWRITE 0x94 // DataWrite Data_Mode ++ ++#define SMODE_POWER_ON 0x0C // Power Supply ON to SSFDC card ++#define SMODE_POWER_OFF 0x08 // Power Supply OFF to SSFDC card ++ ++#define SMODE_LED_OFF 0x00 // LED OFF ++#define SMODE_LED_ON 0x04 // LED ON ++ ++#define SMODE_EJECT_ON 0x68 // Ejection Demand from Penguin is Advanced ++#define SMODE_EJECT_OFF 0x08 // Ejection Demand from Penguin is Not Advanced ++ ++#define SMODE_LOCK 0x6C // Operates By Lock_Mode. Ejection Switch is Invalid ++#define SMODE_UNLOCK 0x0C // Operates By UnLock_Mode.Ejection Switch is Effective ++ ++#define SMODE_HWECC_READ_ECCCALC 0x34 // HW-ECC DataRead ++#define SMODE_HWECC_READ_RESET_ECC 0x74 // HW-ECC ResetMode ++#define SMODE_HWECC_READ_CALC_RESULT 0x54 // HW-ECC Calculation Result Read_Mode ++ ++#define SMODE_HWECC_WRITE_ECCCALC 0xB4 // HW-ECC DataWrite ++#define SMODE_HWECC_WRITE_RESET_ECC 0xF4 // HW-ECC ResetMode ++#define SMODE_HWECC_WRITE_CALC_RESULT 0xD4 // HW-ECC Calculation Result Read_Mode ++ ++#define SMODE_CONTROLLER_ID_READ 0x40 // Controller ID Read ++#define SMODE_STANDBY 0x00 // SSFDC card Changes Standby State ++ ++#define SMODE_WE 0x80 ++#define SMODE_ECC1 0x40 ++#define SMODE_ECC0 0x20 ++#define SMODE_CE 0x10 ++#define SMODE_PCNT1 0x08 ++#define SMODE_PCNT0 0x04 ++#define SMODE_ALE 0x02 ++#define SMODE_CLE 0x01 ++ ++#define SMODE_SELECT (SMODE_WE|SMODE_CE|SMODE_PCNT0) ++#define SMODE_DESELECT 0x00 //Changes Standby State ++ ++/* SUSTUS Register */ ++#define SUSTUS_BUSY 0x80 ++ ++#endif +diff -Nur linux_c860_org/include/asm-arm/sharp_tc6393_usb.h linux/include/asm-arm/sharp_tc6393_usb.h +--- linux_c860_org/include/asm-arm/sharp_tc6393_usb.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/asm-arm/sharp_tc6393_usb.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,22 @@ ++/* ++ * linux/include/asm-arm/sharp_tc6393_usb.h ++ * ++ * Sharp PDA Driver Header File ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ */ ++ ++#ifndef _SHARP_TC6393_USB_H ++#define _SHARP_TC6393_USB_H ++ ++#define TC6393_OHCI_IOC_MAGIC 'U' ++ ++#define TC6393_OHCI_IOC_PDOWN _IO(TC6393_OHCI_IOC_MAGIC, 10) ++#define TC6393_OHCI_IOC_PON _IO(TC6393_OHCI_IOC_MAGIC, 11) ++#define TC6393_OHCI_IOC_PCHECK _IO(TC6393_OHCI_IOC_MAGIC, 12) ++ ++#endif /* _SHARP_TC6393_USB_H */ +diff -Nur linux_c860_org/include/asm-arm/smplock.h linux/include/asm-arm/smplock.h +--- linux_c860_org/include/asm-arm/smplock.h 2002-08-26 14:37:53.000000000 +0900 ++++ linux/include/asm-arm/smplock.h 2004-06-10 21:12:37.000000000 +0900 +@@ -3,12 +3,17 @@ + * + * Default SMP lock implementation + */ ++#include <linux/config.h> + #include <linux/interrupt.h> + #include <linux/spinlock.h> + + extern spinlock_t kernel_flag; + ++#ifdef CONFIG_PREEMPT ++#define kernel_locked() preempt_get_count() ++#else + #define kernel_locked() spin_is_locked(&kernel_flag) ++#endif + + /* + * Release global kernel lock and global interrupt lock +@@ -40,8 +45,14 @@ + */ + static inline void lock_kernel(void) + { ++#ifdef CONFIG_PREEMPT ++ if (current->lock_depth == -1) ++ spin_lock(&kernel_flag); ++ ++current->lock_depth; ++#else + if (!++current->lock_depth) + spin_lock(&kernel_flag); ++#endif + } + + static inline void unlock_kernel(void) +diff -Nur linux_c860_org/include/asm-arm/softirq.h linux/include/asm-arm/softirq.h +--- linux_c860_org/include/asm-arm/softirq.h 2002-08-26 14:37:53.000000000 +0900 ++++ linux/include/asm-arm/softirq.h 2004-06-10 21:12:37.000000000 +0900 +@@ -5,20 +5,22 @@ + #include <asm/hardirq.h> + + #define __cpu_bh_enable(cpu) \ +- do { barrier(); local_bh_count(cpu)--; } while (0) ++ do { barrier(); local_bh_count(cpu)--; preempt_enable(); } while (0) + #define cpu_bh_disable(cpu) \ +- do { local_bh_count(cpu)++; barrier(); } while (0) ++ do { preempt_disable(); local_bh_count(cpu)++; barrier(); } while (0) + + #define local_bh_disable() cpu_bh_disable(smp_processor_id()) + #define __local_bh_enable() __cpu_bh_enable(smp_processor_id()) + + #define in_softirq() (local_bh_count(smp_processor_id()) != 0) + +-#define local_bh_enable() \ ++#define _local_bh_enable() \ + do { \ + unsigned int *ptr = &local_bh_count(smp_processor_id()); \ + if (!--*ptr && ptr[-2]) \ + __asm__("bl%? __do_softirq": : : "lr");/* out of line */\ + } while (0) + ++#define local_bh_enable() do { _local_bh_enable(); preempt_enable(); } while (0) ++ + #endif /* __ASM_SOFTIRQ_H */ +diff -Nur linux_c860_org/include/asm-cris/processor.h linux/include/asm-cris/processor.h +--- linux_c860_org/include/asm-cris/processor.h 2002-08-26 14:38:01.000000000 +0900 ++++ linux/include/asm-cris/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -81,7 +81,7 @@ + #define INIT_THREAD { \ + 0, 0, 0x20 } /* ccr = int enable, nothing else */ + +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* give the thread a program location + * set user-mode (The 'U' flag (User mode flag) is CCR/DCCR bit 8) +diff -Nur linux_c860_org/include/asm-i386/hardirq.h linux/include/asm-i386/hardirq.h +--- linux_c860_org/include/asm-i386/hardirq.h 2002-08-26 14:37:47.000000000 +0900 ++++ linux/include/asm-i386/hardirq.h 2004-06-10 21:09:11.000000000 +0900 +@@ -19,12 +19,16 @@ + + /* + * Are we in an interrupt context? Either doing bottom half +- * or hardware interrupt processing? ++ * or hardware interrupt processing? Note the preempt check, ++ * this is both a bugfix and an optimization. If we are ++ * preemptible, we cannot be in an interrupt. + */ +-#define in_interrupt() ({ int __cpu = smp_processor_id(); \ +- (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); }) ++#define in_interrupt() (preempt_is_disabled() && \ ++ ({unsigned long __cpu = smp_processor_id(); \ ++ (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })) + +-#define in_irq() (local_irq_count(smp_processor_id()) != 0) ++#define in_irq() (preempt_is_disabled() && \ ++ (local_irq_count(smp_processor_id()) != 0)) + + #ifndef CONFIG_SMP + +@@ -36,6 +40,8 @@ + + #define synchronize_irq() barrier() + ++#define release_irqlock(cpu) do { } while (0) ++ + #else + + #include <asm/atomic.h> +diff -Nur linux_c860_org/include/asm-i386/highmem.h linux/include/asm-i386/highmem.h +--- linux_c860_org/include/asm-i386/highmem.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-i386/highmem.h 2004-06-10 21:09:11.000000000 +0900 +@@ -88,6 +88,7 @@ + enum fixed_addresses idx; + unsigned long vaddr; + ++ preempt_disable(); + if (page < highmem_start_page) + return page_address(page); + +@@ -109,8 +110,10 @@ + unsigned long vaddr = (unsigned long) kvaddr; + enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id(); + +- if (vaddr < FIXADDR_START) // FIXME ++ if (vaddr < FIXADDR_START) { // FIXME ++ preempt_enable(); + return; ++ } + + if (vaddr != __fix_to_virt(FIX_KMAP_BEGIN+idx)) + BUG(); +@@ -122,6 +125,8 @@ + pte_clear(kmap_pte-idx); + __flush_tlb_one(vaddr); + #endif ++ ++ preempt_enable(); + } + + #endif /* __KERNEL__ */ +diff -Nur linux_c860_org/include/asm-i386/hw_irq.h linux/include/asm-i386/hw_irq.h +--- linux_c860_org/include/asm-i386/hw_irq.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-i386/hw_irq.h 2004-06-10 21:09:11.000000000 +0900 +@@ -95,6 +95,18 @@ + #define __STR(x) #x + #define STR(x) __STR(x) + ++#define GET_CURRENT \ ++ "movl %esp, %ebx\n\t" \ ++ "andl $-8192, %ebx\n\t" ++ ++#ifdef CONFIG_PREEMPT ++#define BUMP_LOCK_COUNT \ ++ GET_CURRENT \ ++ "incl 4(%ebx)\n\t" ++#else ++#define BUMP_LOCK_COUNT ++#endif ++ + #define SAVE_ALL \ + "cld\n\t" \ + "pushl %es\n\t" \ +@@ -108,15 +120,12 @@ + "pushl %ebx\n\t" \ + "movl $" STR(__KERNEL_DS) ",%edx\n\t" \ + "movl %edx,%ds\n\t" \ +- "movl %edx,%es\n\t" ++ "movl %edx,%es\n\t" \ ++ BUMP_LOCK_COUNT + + #define IRQ_NAME2(nr) nr##_interrupt(void) + #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr) + +-#define GET_CURRENT \ +- "movl %esp, %ebx\n\t" \ +- "andl $-8192, %ebx\n\t" +- + /* + * SMP has a few special interrupts for IPI messages + */ +diff -Nur linux_c860_org/include/asm-i386/i387.h linux/include/asm-i386/i387.h +--- linux_c860_org/include/asm-i386/i387.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-i386/i387.h 2004-06-10 21:09:11.000000000 +0900 +@@ -12,6 +12,7 @@ + #define __ASM_I386_I387_H + + #include <linux/sched.h> ++#include <linux/spinlock.h> + #include <asm/processor.h> + #include <asm/sigcontext.h> + #include <asm/user.h> +@@ -24,7 +25,7 @@ + extern void restore_fpu( struct task_struct *tsk ); + + extern void kernel_fpu_begin(void); +-#define kernel_fpu_end() stts() ++#define kernel_fpu_end() do { stts(); preempt_enable(); } while(0) + + + #define unlazy_fpu( tsk ) do { \ +diff -Nur linux_c860_org/include/asm-i386/pgalloc.h linux/include/asm-i386/pgalloc.h +--- linux_c860_org/include/asm-i386/pgalloc.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-i386/pgalloc.h 2004-06-10 21:09:11.000000000 +0900 +@@ -75,20 +75,26 @@ + { + unsigned long *ret; + ++ preempt_disable(); + if ((ret = pgd_quicklist) != NULL) { + pgd_quicklist = (unsigned long *)(*ret); + ret[0] = 0; + pgtable_cache_size--; +- } else ++ preempt_enable(); ++ } else { ++ preempt_enable(); + ret = (unsigned long *)get_pgd_slow(); ++ } + return (pgd_t *)ret; + } + + static inline void free_pgd_fast(pgd_t *pgd) + { ++ preempt_disable(); + *(unsigned long *)pgd = (unsigned long) pgd_quicklist; + pgd_quicklist = (unsigned long *) pgd; + pgtable_cache_size++; ++ preempt_enable(); + } + + static inline void free_pgd_slow(pgd_t *pgd) +@@ -119,19 +125,23 @@ + { + unsigned long *ret; + ++ preempt_disable(); + if ((ret = (unsigned long *)pte_quicklist) != NULL) { + pte_quicklist = (unsigned long *)(*ret); + ret[0] = ret[1]; + pgtable_cache_size--; + } ++ preempt_enable(); + return (pte_t *)ret; + } + + static inline void pte_free_fast(pte_t *pte) + { ++ preempt_disable(); + *(unsigned long *)pte = (unsigned long) pte_quicklist; + pte_quicklist = (unsigned long *) pte; + pgtable_cache_size++; ++ preempt_enable(); + } + + static __inline__ void pte_free_slow(pte_t *pte) +diff -Nur linux_c860_org/include/asm-i386/processor.h linux/include/asm-i386/processor.h +--- linux_c860_org/include/asm-i386/processor.h 2002-08-26 14:37:47.000000000 +0900 ++++ linux/include/asm-i386/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -429,7 +429,7 @@ + /* + * create a kernel thread without removing it from tasklists + */ +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + extern void copy_segments(struct task_struct *p, struct mm_struct * mm); +diff -Nur linux_c860_org/include/asm-i386/smplock.h linux/include/asm-i386/smplock.h +--- linux_c860_org/include/asm-i386/smplock.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-i386/smplock.h 2004-06-10 21:09:11.000000000 +0900 +@@ -10,7 +10,15 @@ + + extern spinlock_t kernel_flag; + ++#ifdef CONFIG_SMP + #define kernel_locked() spin_is_locked(&kernel_flag) ++#else ++#ifdef CONFIG_PREEMPT ++#define kernel_locked() preempt_get_count() ++#else ++#define kernel_locked() 1 ++#endif ++#endif + + /* + * Release global kernel lock and global interrupt lock +@@ -42,6 +50,11 @@ + */ + static __inline__ void lock_kernel(void) + { ++#ifdef CONFIG_PREEMPT ++ if (current->lock_depth == -1) ++ spin_lock(&kernel_flag); ++ ++current->lock_depth; ++#else + #if 1 + if (!++current->lock_depth) + spin_lock(&kernel_flag); +@@ -54,6 +67,7 @@ + :"=m" (__dummy_lock(&kernel_flag)), + "=m" (current->lock_depth)); + #endif ++#endif + } + + static __inline__ void unlock_kernel(void) +diff -Nur linux_c860_org/include/asm-i386/softirq.h linux/include/asm-i386/softirq.h +--- linux_c860_org/include/asm-i386/softirq.h 2002-08-26 14:37:47.000000000 +0900 ++++ linux/include/asm-i386/softirq.h 2004-06-10 21:09:11.000000000 +0900 +@@ -6,9 +6,9 @@ + #include <linux/stringify.h> + + #define __cpu_bh_enable(cpu) \ +- do { barrier(); local_bh_count(cpu)--; } while (0) ++ do { barrier(); local_bh_count(cpu)--; preempt_enable(); } while (0) + #define cpu_bh_disable(cpu) \ +- do { local_bh_count(cpu)++; barrier(); } while (0) ++ do { preempt_disable(); local_bh_count(cpu)++; barrier(); } while (0) + + #define local_bh_disable() cpu_bh_disable(smp_processor_id()) + #define __local_bh_enable() __cpu_bh_enable(smp_processor_id()) +@@ -23,7 +23,7 @@ + * If you change the offsets in irq_stat then you have to + * update this code as well. + */ +-#define local_bh_enable() \ ++#define _local_bh_enable() \ + do { \ + unsigned int *ptr = &local_bh_count(smp_processor_id()); \ + \ +@@ -49,4 +49,6 @@ + /* no registers clobbered */ ); \ + } while (0) + ++#define local_bh_enable() do { _local_bh_enable(); preempt_enable(); } while (0) ++ + #endif /* __ASM_SOFTIRQ_H */ +diff -Nur linux_c860_org/include/asm-i386/spinlock.h linux/include/asm-i386/spinlock.h +--- linux_c860_org/include/asm-i386/spinlock.h 2002-08-26 14:37:47.000000000 +0900 ++++ linux/include/asm-i386/spinlock.h 2004-06-10 21:09:11.000000000 +0900 +@@ -81,7 +81,7 @@ + :"=m" (lock->lock) : : "memory" + + +-static inline void spin_unlock(spinlock_t *lock) ++static inline void _raw_spin_unlock(spinlock_t *lock) + { + #if SPINLOCK_DEBUG + if (lock->magic != SPINLOCK_MAGIC) +@@ -101,7 +101,7 @@ + :"=q" (oldval), "=m" (lock->lock) \ + :"0" (oldval) : "memory" + +-static inline void spin_unlock(spinlock_t *lock) ++static inline void _raw_spin_unlock(spinlock_t *lock) + { + char oldval = 1; + #if SPINLOCK_DEBUG +@@ -117,7 +117,7 @@ + + #endif + +-static inline int spin_trylock(spinlock_t *lock) ++static inline int _raw_spin_trylock(spinlock_t *lock) + { + char oldval; + __asm__ __volatile__( +@@ -127,7 +127,7 @@ + return oldval > 0; + } + +-static inline void spin_lock(spinlock_t *lock) ++static inline void _raw_spin_lock(spinlock_t *lock) + { + #if SPINLOCK_DEBUG + __label__ here; +@@ -183,7 +183,7 @@ + */ + /* the spinlock helpers are in arch/i386/kernel/semaphore.c */ + +-static inline void read_lock(rwlock_t *rw) ++static inline void _raw_read_lock(rwlock_t *rw) + { + #if SPINLOCK_DEBUG + if (rw->magic != RWLOCK_MAGIC) +@@ -192,7 +192,7 @@ + __build_read_lock(rw, "__read_lock_failed"); + } + +-static inline void write_lock(rwlock_t *rw) ++static inline void _raw_write_lock(rwlock_t *rw) + { + #if SPINLOCK_DEBUG + if (rw->magic != RWLOCK_MAGIC) +@@ -201,10 +201,10 @@ + __build_write_lock(rw, "__write_lock_failed"); + } + +-#define read_unlock(rw) asm volatile("lock ; incl %0" :"=m" ((rw)->lock) : : "memory") +-#define write_unlock(rw) asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0":"=m" ((rw)->lock) : : "memory") ++#define _raw_read_unlock(rw) asm volatile("lock ; incl %0" :"=m" ((rw)->lock) : : "memory") ++#define _raw_write_unlock(rw) asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0":"=m" ((rw)->lock) : : "memory") + +-static inline int write_trylock(rwlock_t *lock) ++static inline int _raw_write_trylock(rwlock_t *lock) + { + atomic_t *count = (atomic_t *)lock; + if (atomic_sub_and_test(RW_LOCK_BIAS, count)) +diff -Nur linux_c860_org/include/asm-ia64/processor.h linux/include/asm-ia64/processor.h +--- linux_c860_org/include/asm-ia64/processor.h 2002-08-26 14:37:56.000000000 +0900 ++++ linux/include/asm-ia64/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -463,7 +463,7 @@ + * do_basic_setup() and the timing is such that free_initmem() has + * been called already. + */ +-extern int kernel_thread (int (*fn)(void *), void *arg, unsigned long flags); ++extern int arch_kernel_thread (int (*fn)(void *), void *arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + #define copy_segments(tsk, mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-m68k/processor.h linux/include/asm-m68k/processor.h +--- linux_c860_org/include/asm-m68k/processor.h 2002-08-26 14:37:50.000000000 +0900 ++++ linux/include/asm-m68k/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -105,7 +105,7 @@ + { + } + +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + #define copy_segments(tsk, mm) do { } while (0) + #define release_segments(mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-mips/processor.h linux/include/asm-mips/processor.h +--- linux_c860_org/include/asm-mips/processor.h 2002-08-26 14:37:48.000000000 +0900 ++++ linux/include/asm-mips/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -208,7 +208,7 @@ + /* Free all resources held by a thread. */ + #define release_thread(thread) do { } while(0) + +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + #define copy_segments(p, mm) do { } while(0) +diff -Nur linux_c860_org/include/asm-mips64/processor.h linux/include/asm-mips64/processor.h +--- linux_c860_org/include/asm-mips64/processor.h 2002-08-26 14:37:58.000000000 +0900 ++++ linux/include/asm-mips64/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -231,7 +231,7 @@ + /* Free all resources held by a thread. */ + #define release_thread(thread) do { } while(0) + +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + #define copy_segments(p, mm) do { } while(0) +diff -Nur linux_c860_org/include/asm-parisc/processor.h linux/include/asm-parisc/processor.h +--- linux_c860_org/include/asm-parisc/processor.h 2002-08-26 14:38:01.000000000 +0900 ++++ linux/include/asm-parisc/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -305,7 +305,7 @@ + + /* Free all resources held by a thread. */ + extern void release_thread(struct task_struct *); +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + #define copy_segments(tsk, mm) do { } while (0) + #define release_segments(mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-ppc/processor.h linux/include/asm-ppc/processor.h +--- linux_c860_org/include/asm-ppc/processor.h 2002-08-26 14:37:52.000000000 +0900 ++++ linux/include/asm-ppc/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -571,7 +571,7 @@ + /* + * Create a new kernel thread. + */ +-extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); ++extern long arch_kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); + + /* + * Bus types +diff -Nur linux_c860_org/include/asm-s390/processor.h linux/include/asm-s390/processor.h +--- linux_c860_org/include/asm-s390/processor.h 2002-08-26 14:37:59.000000000 +0900 ++++ linux/include/asm-s390/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -116,7 +116,7 @@ + + /* Free all resources held by a thread. */ + extern void release_thread(struct task_struct *); +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + #define copy_segments(nr, mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-s390x/processor.h linux/include/asm-s390x/processor.h +--- linux_c860_org/include/asm-s390x/processor.h 2002-08-26 14:38:02.000000000 +0900 ++++ linux/include/asm-s390x/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -127,7 +127,7 @@ + + /* Free all resources held by a thread. */ + extern void release_thread(struct task_struct *); +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* Copy and release all segment info associated with a VM */ + #define copy_segments(nr, mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-sh/hardirq.h linux/include/asm-sh/hardirq.h +--- linux_c860_org/include/asm-sh/hardirq.h 2002-08-26 14:37:55.000000000 +0900 ++++ linux/include/asm-sh/hardirq.h 2004-06-10 21:09:11.000000000 +0900 +@@ -34,6 +34,8 @@ + + #define synchronize_irq() barrier() + ++#define release_irqlock(cpu) do { } while (0) ++ + #else + + #error Super-H SMP is not available +diff -Nur linux_c860_org/include/asm-sh/processor.h linux/include/asm-sh/processor.h +--- linux_c860_org/include/asm-sh/processor.h 2002-08-26 14:37:55.000000000 +0900 ++++ linux/include/asm-sh/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -137,7 +137,7 @@ + /* + * create a kernel thread without removing it from tasklists + */ +-extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern int arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + /* + * Bus types +diff -Nur linux_c860_org/include/asm-sh/smplock.h linux/include/asm-sh/smplock.h +--- linux_c860_org/include/asm-sh/smplock.h 2002-08-26 14:37:55.000000000 +0900 ++++ linux/include/asm-sh/smplock.h 2004-06-10 21:09:11.000000000 +0900 +@@ -9,15 +9,88 @@ + + #include <linux/config.h> + +-#ifndef CONFIG_SMP +- ++#if !defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT) ++/* ++ * Should never happen, since linux/smp_lock.h catches this case; ++ * but in case this file is included directly with neither SMP nor ++ * PREEMPT configuration, provide same dummys as linux/smp_lock.h ++ */ + #define lock_kernel() do { } while(0) + #define unlock_kernel() do { } while(0) +-#define release_kernel_lock(task, cpu, depth) ((depth) = 1) +-#define reacquire_kernel_lock(task, cpu, depth) do { } while(0) ++#define release_kernel_lock(task, cpu) do { } while(0) ++#define reacquire_kernel_lock(task) do { } while(0) ++#define kernel_locked() 1 ++ ++#else /* CONFIG_SMP || CONFIG_PREEMPT */ ++ ++#if CONFIG_SMP ++#error "We do not support SMP on SH yet" ++#endif ++/* ++ * Default SMP lock implementation (i.e. the i386 version) ++ */ ++ ++#include <linux/interrupt.h> ++#include <linux/spinlock.h> ++ ++extern spinlock_t kernel_flag; ++#define lock_bkl() spin_lock(&kernel_flag) ++#define unlock_bkl() spin_unlock(&kernel_flag) + ++#ifdef CONFIG_SMP ++#define kernel_locked() spin_is_locked(&kernel_flag) ++#elif CONFIG_PREEMPT ++#define kernel_locked() preempt_get_count() ++#else /* neither */ ++#define kernel_locked() 1 ++#endif ++ ++/* ++ * Release global kernel lock and global interrupt lock ++ */ ++#define release_kernel_lock(task, cpu) \ ++do { \ ++ if (task->lock_depth >= 0) \ ++ spin_unlock(&kernel_flag); \ ++ release_irqlock(cpu); \ ++ __sti(); \ ++} while (0) ++ ++/* ++ * Re-acquire the kernel lock ++ */ ++#define reacquire_kernel_lock(task) \ ++do { \ ++ if (task->lock_depth >= 0) \ ++ spin_lock(&kernel_flag); \ ++} while (0) ++ ++/* ++ * Getting the big kernel lock. ++ * ++ * This cannot happen asynchronously, ++ * so we only need to worry about other ++ * CPU's. ++ */ ++static __inline__ void lock_kernel(void) ++{ ++#ifdef CONFIG_PREEMPT ++ if (current->lock_depth == -1) ++ spin_lock(&kernel_flag); ++ ++current->lock_depth; + #else +-#error "We do not support SMP on SH" +-#endif /* CONFIG_SMP */ ++ if (!++current->lock_depth) ++ spin_lock(&kernel_flag); ++#endif ++} ++ ++static __inline__ void unlock_kernel(void) ++{ ++ if (current->lock_depth < 0) ++ BUG(); ++ if (--current->lock_depth < 0) ++ spin_unlock(&kernel_flag); ++} ++#endif /* CONFIG_SMP || CONFIG_PREEMPT */ + + #endif /* __ASM_SH_SMPLOCK_H */ +diff -Nur linux_c860_org/include/asm-sh/softirq.h linux/include/asm-sh/softirq.h +--- linux_c860_org/include/asm-sh/softirq.h 2002-08-26 14:37:55.000000000 +0900 ++++ linux/include/asm-sh/softirq.h 2004-06-10 21:09:11.000000000 +0900 +@@ -6,6 +6,7 @@ + + #define local_bh_disable() \ + do { \ ++ preempt_disable(); \ + local_bh_count(smp_processor_id())++; \ + barrier(); \ + } while (0) +@@ -14,6 +15,7 @@ + do { \ + barrier(); \ + local_bh_count(smp_processor_id())--; \ ++ preempt_enable(); \ + } while (0) + + #define local_bh_enable() \ +@@ -23,6 +25,7 @@ + && softirq_pending(smp_processor_id())) { \ + do_softirq(); \ + } \ ++ preempt_enable(); \ + } while (0) + + #define in_softirq() (local_bh_count(smp_processor_id()) != 0) +diff -Nur linux_c860_org/include/asm-sparc/processor.h linux/include/asm-sparc/processor.h +--- linux_c860_org/include/asm-sparc/processor.h 2002-08-26 14:37:51.000000000 +0900 ++++ linux/include/asm-sparc/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -146,7 +146,7 @@ + + /* Free all resources held by a thread. */ + #define release_thread(tsk) do { } while(0) +-extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + + #define copy_segments(tsk, mm) do { } while (0) +diff -Nur linux_c860_org/include/asm-sparc64/processor.h linux/include/asm-sparc64/processor.h +--- linux_c860_org/include/asm-sparc64/processor.h 2002-08-26 14:37:53.000000000 +0900 ++++ linux/include/asm-sparc64/processor.h 2004-06-10 21:09:11.000000000 +0900 +@@ -253,7 +253,7 @@ + /* Free all resources held by a thread. */ + #define release_thread(tsk) do { } while(0) + +-extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++extern pid_t arch_kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); + + #define copy_segments(tsk, mm) do { } while (0) + #define release_segments(mm) do { } while (0) +diff -Nur linux_c860_org/include/linux/ac97_codec.h linux/include/linux/ac97_codec.h +--- linux_c860_org/include/linux/ac97_codec.h 2002-08-26 14:37:45.000000000 +0900 ++++ linux/include/linux/ac97_codec.h 2004-06-10 21:13:20.000000000 +0900 +@@ -1,3 +1,8 @@ ++/* ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * ++ */ + #ifndef _AC97_CODEC_H_ + #define _AC97_CODEC_H_ + +@@ -5,124 +10,145 @@ + #include <linux/soundcard.h> + + /* AC97 1.0 */ +-#define AC97_RESET 0x0000 // +-#define AC97_MASTER_VOL_STEREO 0x0002 // Line Out +-#define AC97_HEADPHONE_VOL 0x0004 // +-#define AC97_MASTER_VOL_MONO 0x0006 // TAD Output +-#define AC97_MASTER_TONE 0x0008 // +-#define AC97_PCBEEP_VOL 0x000a // none +-#define AC97_PHONE_VOL 0x000c // TAD Input (mono) +-#define AC97_MIC_VOL 0x000e // MIC Input (mono) +-#define AC97_LINEIN_VOL 0x0010 // Line Input (stereo) +-#define AC97_CD_VOL 0x0012 // CD Input (stereo) +-#define AC97_VIDEO_VOL 0x0014 // none +-#define AC97_AUX_VOL 0x0016 // Aux Input (stereo) +-#define AC97_PCMOUT_VOL 0x0018 // Wave Output (stereo) +-#define AC97_RECORD_SELECT 0x001a // +-#define AC97_RECORD_GAIN 0x001c +-#define AC97_RECORD_GAIN_MIC 0x001e +-#define AC97_GENERAL_PURPOSE 0x0020 +-#define AC97_3D_CONTROL 0x0022 +-#define AC97_MODEM_RATE 0x0024 +-#define AC97_POWER_CONTROL 0x0026 ++#define AC97_RESET 0x0000 // ++#define AC97_MASTER_VOL_STEREO 0x0002 // Line Out ++#define AC97_HEADPHONE_VOL 0x0004 // ++#define AC97_MASTER_VOL_MONO 0x0006 // TAD Output ++#define AC97_MASTER_TONE 0x0008 // ++#define AC97_PCBEEP_VOL 0x000a // none ++#define AC97_PHONE_VOL 0x000c // TAD Input (mono) ++#define AC97_MIC_VOL 0x000e // MIC Input (mono) ++#define AC97_LINEIN_VOL 0x0010 // Line Input (stereo) ++#define AC97_CD_VOL 0x0012 // CD Input (stereo) ++#ifdef CONFIG_ARCH_PXA_TOSA ++#define AC97_SIDETONE 0x0014 ++#endif /* CONFIG_ARCH_PXA_TOSA */ ++#define AC97_VIDEO_VOL 0x0014 // none ++#ifdef CONFIG_ARCH_PXA_TOSA ++#define AC97_OUT3_VOL 0x0016 ++#define AC97_DAC_VOL 0x0018 ++#endif /* CONFIG_ARCH_PXA_TOSA */ ++#define AC97_AUX_VOL 0x0016 // Aux Input (stereo) ++#define AC97_PCMOUT_VOL 0x0018 // Wave Output (stereo) ++#define AC97_RECORD_SELECT 0x001a // ++#define AC97_RECORD_GAIN 0x001c ++#define AC97_RECORD_GAIN_MIC 0x001e ++#define AC97_GENERAL_PURPOSE 0x0020 ++#define AC97_3D_CONTROL 0x0022 ++#define AC97_MODEM_RATE 0x0024 ++#ifdef CONFIG_ARCH_PXA_TOSA ++#define AC97_POWERDOWN 0x0024 ++#endif /* CONFIG_ARCH_PXA_TOSA */ ++#define AC97_POWER_CONTROL 0x0026 + + /* AC'97 2.0 */ +-#define AC97_EXTENDED_ID 0x0028 /* Extended Audio ID */ +-#define AC97_EXTENDED_STATUS 0x002A /* Extended Audio Status */ +-#define AC97_PCM_FRONT_DAC_RATE 0x002C /* PCM Front DAC Rate */ +-#define AC97_PCM_SURR_DAC_RATE 0x002E /* PCM Surround DAC Rate */ +-#define AC97_PCM_LFE_DAC_RATE 0x0030 /* PCM LFE DAC Rate */ +-#define AC97_PCM_LR_ADC_RATE 0x0032 /* PCM LR DAC Rate */ +-#define AC97_PCM_MIC_ADC_RATE 0x0034 /* PCM MIC ADC Rate */ +-#define AC97_CENTER_LFE_MASTER 0x0036 /* Center + LFE Master Volume */ +-#define AC97_SURROUND_MASTER 0x0038 /* Surround (Rear) Master Volume */ +-#define AC97_RESERVED_3A 0x003A /* Reserved in AC '97 < 2.2 */ ++#define AC97_EXTENDED_ID 0x0028 /* Extended Audio ID */ ++#define AC97_EXTENDED_STATUS 0x002A /* Extended Audio Status */ ++#define AC97_PCM_FRONT_DAC_RATE 0x002C /* PCM Front DAC Rate */ ++#define AC97_PCM_SURR_DAC_RATE 0x002E /* PCM Surround DAC Rate */ ++#define AC97_PCM_LFE_DAC_RATE 0x0030 /* PCM LFE DAC Rate */ ++#define AC97_PCM_LR_ADC_RATE 0x0032 /* PCM LR ADC Rate */ ++#define AC97_PCM_MIC_ADC_RATE 0x0034 /* PCM MIC ADC Rate */ ++#define AC97_CENTER_LFE_MASTER 0x0036 /* Center + LFE Master Volume */ ++#define AC97_SURROUND_MASTER 0x0038 /* Surround (Rear) Master Volume */ ++#define AC97_RESERVED_3A 0x003A /* Reserved in AC '97 < 2.2 */ + + /* AC'97 2.2 */ +-#define AC97_SPDIF_CONTROL 0x003A /* S/PDIF Control */ ++#define AC97_SPDIF_CONTROL 0x003A /* S/PDIF Control */ + + /* range 0x3c-0x58 - MODEM */ +-#define AC97_EXTENDED_MODEM_ID 0x003C +-#define AC97_EXTEND_MODEM_STAT 0x003E +-#define AC97_LINE1_RATE 0x0040 +-#define AC97_LINE2_RATE 0x0042 +-#define AC97_HANDSET_RATE 0x0044 +-#define AC97_LINE1_LEVEL 0x0046 +-#define AC97_LINE2_LEVEL 0x0048 +-#define AC97_HANDSET_LEVEL 0x004A +-#define AC97_GPIO_CONFIG 0x004C +-#define AC97_GPIO_POLARITY 0x004E +-#define AC97_GPIO_STICKY 0x0050 +-#define AC97_GPIO_WAKE_UP 0x0052 +-#define AC97_GPIO_STATUS 0x0054 +-#define AC97_MISC_MODEM_STAT 0x0056 +-#define AC97_RESERVED_58 0x0058 ++#define AC97_EXTENDED_MODEM_ID 0x003C ++#define AC97_EXTEND_MODEM_STAT 0x003E ++#define AC97_LINE1_RATE 0x0040 ++#define AC97_LINE2_RATE 0x0042 ++#define AC97_HANDSET_RATE 0x0044 ++#define AC97_LINE1_LEVEL 0x0046 ++#define AC97_LINE2_LEVEL 0x0048 ++#define AC97_HANDSET_LEVEL 0x004A ++#define AC97_GPIO_CONFIG 0x004C ++#define AC97_GPIO_POLARITY 0x004E ++#define AC97_GPIO_STICKY 0x0050 ++#define AC97_GPIO_WAKE_UP 0x0052 ++#define AC97_GPIO_STATUS 0x0054 ++#define AC97_MISC_MODEM_STAT 0x0056 ++#define AC97_RESERVED_58 0x0058 ++ ++#ifdef CONFIG_ARCH_PXA_TOSA ++#define AC97_GPIO_FUNC 0x0056 ++#define AC97_ADITFUNC1 0x0058 ++#define AC97_ADITFUNC2 0x005c ++#define AC97_ALC_CTL 0x0060 ++#define AC97_NOISE_CTL 0x0062 ++#define AC97_AUXDAC_CTL 0x0064 ++#define AC97_TS_REG1 0x0076 ++#define AC97_TS_REG2 0x0078 ++#define AC97_TS_READBACK 0x007a ++#endif /* CONFIG_ARCH_PXA_TOSA */ + + /* registers 0x005a - 0x007a are vendor reserved */ +- +-#define AC97_VENDOR_ID1 0x007c +-#define AC97_VENDOR_ID2 0x007e ++#define AC97_VENDOR_ID1 0x007c ++#define AC97_VENDOR_ID2 0x007e + + /* volume control bit defines */ +-#define AC97_MUTE 0x8000 +-#define AC97_MICBOOST 0x0040 +-#define AC97_LEFTVOL 0x3f00 +-#define AC97_RIGHTVOL 0x003f ++#define AC97_MUTE 0x8000 ++#define AC97_MICBOOST 0x0040 ++#define AC97_LEFTVOL 0x3f00 ++#define AC97_RIGHTVOL 0x003f + + /* record mux defines */ +-#define AC97_RECMUX_MIC 0x0000 +-#define AC97_RECMUX_CD 0x0101 +-#define AC97_RECMUX_VIDEO 0x0202 +-#define AC97_RECMUX_AUX 0x0303 +-#define AC97_RECMUX_LINE 0x0404 +-#define AC97_RECMUX_STEREO_MIX 0x0505 +-#define AC97_RECMUX_MONO_MIX 0x0606 +-#define AC97_RECMUX_PHONE 0x0707 ++#define AC97_RECMUX_MIC 0x0000 ++#define AC97_RECMUX_CD 0x0101 ++#define AC97_RECMUX_VIDEO 0x0202 ++#define AC97_RECMUX_AUX 0x0303 ++#define AC97_RECMUX_LINE 0x0404 ++#define AC97_RECMUX_STEREO_MIX 0x0505 ++#define AC97_RECMUX_MONO_MIX 0x0606 ++#define AC97_RECMUX_PHONE 0x0707 + + /* general purpose register bit defines */ +-#define AC97_GP_LPBK 0x0080 /* Loopback mode */ +-#define AC97_GP_MS 0x0100 /* Mic Select 0=Mic1, 1=Mic2 */ +-#define AC97_GP_MIX 0x0200 /* Mono output select 0=Mix, 1=Mic */ +-#define AC97_GP_RLBK 0x0400 /* Remote Loopback - Modem line codec */ +-#define AC97_GP_LLBK 0x0800 /* Local Loopback - Modem Line codec */ +-#define AC97_GP_LD 0x1000 /* Loudness 1=on */ +-#define AC97_GP_3D 0x2000 /* 3D Enhancement 1=on */ +-#define AC97_GP_ST 0x4000 /* Stereo Enhancement 1=on */ +-#define AC97_GP_POP 0x8000 /* Pcm Out Path, 0=pre 3D, 1=post 3D */ ++#define AC97_GP_LPBK 0x0080 /* Loopback mode */ ++#define AC97_GP_MS 0x0100 /* Mic Select 0=Mic1, 1=Mic2 */ ++#define AC97_GP_MIX 0x0200 /* Mono output select 0=Mix, 1=Mic */ ++#define AC97_GP_RLBK 0x0400 /* Remote Loopback - Modem line codec */ ++#define AC97_GP_LLBK 0x0800 /* Local Loopback - Modem Line codec */ ++#define AC97_GP_LD 0x1000 /* Loudness 1=on */ ++#define AC97_GP_3D 0x2000 /* 3D Enhancement 1=on */ ++#define AC97_GP_ST 0x4000 /* Stereo Enhancement 1=on */ ++#define AC97_GP_POP 0x8000 /* Pcm Out Path, 0=pre 3D, 1=post 3D */ + + /* extended audio status and control bit defines */ +-#define AC97_EA_VRA 0x0001 /* Variable bit rate enable bit */ +-#define AC97_EA_DRA 0x0002 /* Double-rate audio enable bit */ +-#define AC97_EA_SPDIF 0x0004 /* S/PDIF Enable bit */ +-#define AC97_EA_VRM 0x0008 /* Variable bit rate for MIC enable bit */ +-#define AC97_EA_CDAC 0x0040 /* PCM Center DAC is ready (Read only) */ +-#define AC97_EA_SDAC 0x0040 /* PCM Surround DACs are ready (Read only) */ +-#define AC97_EA_LDAC 0x0080 /* PCM LFE DAC is ready (Read only) */ +-#define AC97_EA_MDAC 0x0100 /* MIC ADC is ready (Read only) */ +-#define AC97_EA_SPCV 0x0400 /* S/PDIF configuration valid (Read only) */ +-#define AC97_EA_PRI 0x0800 /* Turns the PCM Center DAC off */ +-#define AC97_EA_PRJ 0x1000 /* Turns the PCM Surround DACs off */ +-#define AC97_EA_PRK 0x2000 /* Turns the PCM LFE DAC off */ +-#define AC97_EA_PRL 0x4000 /* Turns the MIC ADC off */ +-#define AC97_EA_SLOT_MASK 0xffcf /* Mask for slot assignment bits */ +-#define AC97_EA_SPSA_3_4 0x0000 /* Slot assigned to 3 & 4 */ +-#define AC97_EA_SPSA_7_8 0x0010 /* Slot assigned to 7 & 8 */ +-#define AC97_EA_SPSA_6_9 0x0020 /* Slot assigned to 6 & 9 */ +-#define AC97_EA_SPSA_10_11 0x0030 /* Slot assigned to 10 & 11 */ ++#define AC97_EA_VRA 0x0001 /* Variable bit rate enable bit */ ++#define AC97_EA_DRA 0x0002 /* Double-rate audio enable bit */ ++#define AC97_EA_SPDIF 0x0004 /* S/PDIF Enable bit */ ++#define AC97_EA_VRM 0x0008 /* Variable bit rate for MIC enable bit */ ++#define AC97_EA_CDAC 0x0040 /* PCM Center DAC is ready (Read only) */ ++#define AC97_EA_SDAC 0x0040 /* PCM Surround DACs are ready (Read only) */ ++#define AC97_EA_LDAC 0x0080 /* PCM LFE DAC is ready (Read only) */ ++#define AC97_EA_MDAC 0x0100 /* MIC ADC is ready (Read only) */ ++#define AC97_EA_SPCV 0x0400 /* S/PDIF configuration valid (Read only) */ ++#define AC97_EA_PRI 0x0800 /* Turns the PCM Center DAC off */ ++#define AC97_EA_PRJ 0x1000 /* Turns the PCM Surround DACs off */ ++#define AC97_EA_PRK 0x2000 /* Turns the PCM LFE DAC off */ ++#define AC97_EA_PRL 0x4000 /* Turns the MIC ADC off */ ++#define AC97_EA_SLOT_MASK 0xffcf /* Mask for slot assignment bits */ ++#define AC97_EA_SPSA_3_4 0x0000 /* Slot assigned to 3 & 4 */ ++#define AC97_EA_SPSA_7_8 0x0010 /* Slot assigned to 7 & 8 */ ++#define AC97_EA_SPSA_6_9 0x0020 /* Slot assigned to 6 & 9 */ ++#define AC97_EA_SPSA_10_11 0x0030 /* Slot assigned to 10 & 11 */ + + /* S/PDIF control bit defines */ +-#define AC97_SC_PRO 0x0001 /* Professional status */ +-#define AC97_SC_NAUDIO 0x0002 /* Non audio stream */ +-#define AC97_SC_COPY 0x0004 /* Copyright status */ +-#define AC97_SC_PRE 0x0008 /* Preemphasis status */ +-#define AC97_SC_CC_MASK 0x07f0 /* Category Code mask */ +-#define AC97_SC_L 0x0800 /* Generation Level status */ +-#define AC97_SC_SPSR_MASK 0xcfff /* S/PDIF Sample Rate bits */ +-#define AC97_SC_SPSR_44K 0x0000 /* Use 44.1kHz Sample rate */ +-#define AC97_SC_SPSR_48K 0x2000 /* Use 48kHz Sample rate */ +-#define AC97_SC_SPSR_32K 0x3000 /* Use 32kHz Sample rate */ +-#define AC97_SC_DRS 0x4000 /* Double Rate S/PDIF */ +-#define AC97_SC_V 0x8000 /* Validity status */ ++#define AC97_SC_PRO 0x0001 /* Professional status */ ++#define AC97_SC_NAUDIO 0x0002 /* Non audio stream */ ++#define AC97_SC_COPY 0x0004 /* Copyright status */ ++#define AC97_SC_PRE 0x0008 /* Preemphasis status */ ++#define AC97_SC_CC_MASK 0x07f0 /* Category Code mask */ ++#define AC97_SC_L 0x0800 /* Generation Level status */ ++#define AC97_SC_SPSR_MASK 0xcfff /* S/PDIF Sample Rate bits */ ++#define AC97_SC_SPSR_44K 0x0000 /* Use 44.1kHz Sample rate */ ++#define AC97_SC_SPSR_48K 0x2000 /* Use 48kHz Sample rate */ ++#define AC97_SC_SPSR_32K 0x3000 /* Use 32kHz Sample rate */ ++#define AC97_SC_DRS 0x4000 /* Double Rate S/PDIF */ ++#define AC97_SC_V 0x8000 /* Validity status */ + + /* powerdown control and status bit defines */ + +@@ -143,6 +169,39 @@ + #define AC97_PWR_PR6 0x4000 /* HP amp powerdown */ + #define AC97_PWR_PR7 0x8000 /* Modem off - if supported */ + ++/* extended audio ID register bit defines */ ++#define AC97_EXTID_VRA 0x0001 ++#define AC97_EXTID_DRA 0x0002 ++#define AC97_EXTID_SPDIF 0x0004 ++#define AC97_EXTID_VRM 0x0008 ++#define AC97_EXTID_DSA0 0x0010 ++#define AC97_EXTID_DSA1 0x0020 ++#define AC97_EXTID_CDAC 0x0040 ++#define AC97_EXTID_SDAC 0x0080 ++#define AC97_EXTID_LDAC 0x0100 ++#define AC97_EXTID_AMAP 0x0200 ++#define AC97_EXTID_REV0 0x0400 ++#define AC97_EXTID_REV1 0x0800 ++#define AC97_EXTID_ID0 0x4000 ++#define AC97_EXTID_ID1 0x8000 ++ ++/* extended status register bit defines */ ++#define AC97_EXTSTAT_VRA 0x0001 ++#define AC97_EXTSTAT_DRA 0x0002 ++#define AC97_EXTSTAT_SPDIF 0x0004 ++#define AC97_EXTSTAT_VRM 0x0008 ++#define AC97_EXTSTAT_SPSA0 0x0010 ++#define AC97_EXTSTAT_SPSA1 0x0020 ++#define AC97_EXTSTAT_CDAC 0x0040 ++#define AC97_EXTSTAT_SDAC 0x0080 ++#define AC97_EXTSTAT_LDAC 0x0100 ++#define AC97_EXTSTAT_MADC 0x0200 ++#define AC97_EXTSTAT_SPCV 0x0400 ++#define AC97_EXTSTAT_PRI 0x0800 ++#define AC97_EXTSTAT_PRJ 0x1000 ++#define AC97_EXTSTAT_PRK 0x2000 ++#define AC97_EXTSTAT_PRL 0x4000 ++ + /* useful power states */ + #define AC97_PWR_D0 0x0000 /* everything on */ + #define AC97_PWR_D1 AC97_PWR_PR0|AC97_PWR_PR1|AC97_PWR_PR4 +@@ -189,11 +248,18 @@ + int dev_mixer; + int type; + ++ int modem:1; ++ + struct ac97_ops *codec_ops; + + /* controller specific lower leverl ac97 accessing routines */ + u16 (*codec_read) (struct ac97_codec *codec, u8 reg); + void (*codec_write) (struct ac97_codec *codec, u8 reg, u16 val); ++#ifdef CONFIG_ARCH_PXA_TOSA ++ void (*codec_bit_clear) (struct ac97_codec *codec, u8 reg, u16 val); ++ void (*codec_bit_set) (struct ac97_codec *codec, u8 reg, u16 val); ++ int mixer_busy; ++#endif /* CONFIG_ARCH_PXA_TOSA */ + + /* Wait for codec-ready. Ok to sleep here. */ + void (*codec_wait) (struct ac97_codec *codec); +@@ -204,6 +270,9 @@ + int stereo_mixers; + int record_sources; + ++ /* Property flags */ ++ int flags; ++ + int bit_resolution; + + /* OSS mixer interface */ +@@ -232,6 +301,8 @@ + int (*amplifier)(struct ac97_codec *codec, int on); + /* Digital mode control */ + int (*digital)(struct ac97_codec *codec, int format); ++#define AC97_DELUDED_MODEM 1 /* Audio codec reports its a modem */ ++#define AC97_NO_PCM_VOLUME 2 /* Volume control is missing */ + }; + + extern int ac97_read_proc (char *page_out, char **start, off_t off, +@@ -242,4 +313,8 @@ + extern int ac97_save_state(struct ac97_codec *codec); + extern int ac97_restore_state(struct ac97_codec *codec); + ++#ifdef CONFIG_ARCH_PXA_TOSA ++#include <asm/arch/tosa_ac97_codec.h> ++#endif /* CONFIG_ARCH_PXA_TOSA */ ++ + #endif /* _AC97_CODEC_H_ */ +diff -Nur linux_c860_org/include/linux/brlock.h linux/include/linux/brlock.h +--- linux_c860_org/include/linux/brlock.h 2002-08-26 14:37:46.000000000 +0900 ++++ linux/include/linux/brlock.h 2004-06-10 21:12:50.000000000 +0900 +@@ -171,11 +171,11 @@ + } + + #else +-# define br_read_lock(idx) ((void)(idx)) +-# define br_read_unlock(idx) ((void)(idx)) +-# define br_write_lock(idx) ((void)(idx)) +-# define br_write_unlock(idx) ((void)(idx)) +-#endif ++# define br_read_lock(idx) ({ (void)(idx); preempt_disable(); }) ++# define br_read_unlock(idx) ({ (void)(idx); preempt_enable(); }) ++# define br_write_lock(idx) ({ (void)(idx); preempt_disable(); }) ++# define br_write_unlock(idx) ({ (void)(idx); preempt_enable(); }) ++#endif /* CONFIG_SMP */ + + /* + * Now enumerate all of the possible sw/hw IRQ protected +diff -Nur linux_c860_org/include/linux/dcache.h linux/include/linux/dcache.h +--- linux_c860_org/include/linux/dcache.h 2002-12-18 19:52:24.000000000 +0900 ++++ linux/include/linux/dcache.h 2004-06-10 21:12:37.000000000 +0900 +@@ -129,31 +129,6 @@ + + extern spinlock_t dcache_lock; + +-/** +- * d_drop - drop a dentry +- * @dentry: dentry to drop +- * +- * d_drop() unhashes the entry from the parent +- * dentry hashes, so that it won't be found through +- * a VFS lookup any more. Note that this is different +- * from deleting the dentry - d_delete will try to +- * mark the dentry negative if possible, giving a +- * successful _negative_ lookup, while d_drop will +- * just make the cache lookup fail. +- * +- * d_drop() is used mainly for stuff that wants +- * to invalidate a dentry for some reason (NFS +- * timeouts or autofs deletes). +- */ +- +-static __inline__ void d_drop(struct dentry * dentry) +-{ +- spin_lock(&dcache_lock); +- list_del(&dentry->d_hash); +- INIT_LIST_HEAD(&dentry->d_hash); +- spin_unlock(&dcache_lock); +-} +- + static __inline__ int dname_external(struct dentry *d) + { + return d->d_name.name != d->d_iname; +@@ -281,3 +256,34 @@ + #endif /* __KERNEL__ */ + + #endif /* __LINUX_DCACHE_H */ ++ ++#if !defined(__LINUX_DCACHE_H_INLINES) && defined(_TASK_STRUCT_DEFINED) ++#define __LINUX_DCACHE_H_INLINES ++ ++#ifdef __KERNEL__ ++/** ++ * d_drop - drop a dentry ++ * @dentry: dentry to drop ++ * ++ * d_drop() unhashes the entry from the parent ++ * dentry hashes, so that it won't be found through ++ * a VFS lookup any more. Note that this is different ++ * from deleting the dentry - d_delete will try to ++ * mark the dentry negative if possible, giving a ++ * successful _negative_ lookup, while d_drop will ++ * just make the cache lookup fail. ++ * ++ * d_drop() is used mainly for stuff that wants ++ * to invalidate a dentry for some reason (NFS ++ * timeouts or autofs deletes). ++ */ ++ ++static __inline__ void d_drop(struct dentry * dentry) ++{ ++ spin_lock(&dcache_lock); ++ list_del(&dentry->d_hash); ++ INIT_LIST_HEAD(&dentry->d_hash); ++ spin_unlock(&dcache_lock); ++} ++#endif ++#endif +diff -Nur linux_c860_org/include/linux/fb_doublebyte.h linux/include/linux/fb_doublebyte.h +--- linux_c860_org/include/linux/fb_doublebyte.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/linux/fb_doublebyte.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,43 @@ ++/* ++ * linux/include/linux/fb_widechar.h ++ * ++ * Copyright (C) 1999 Christopher Li, Jim Chen ++ * GNU/Linux Research Center ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive ++ * for more details. ++ * ++ * ++ */ ++ ++#ifndef _LINUX_FB_DOUBLEBYTE_H ++#define _LINUX_FB_DOUBLEbYTE_H ++ ++#define DB_VALIDATE 0x8000 ++#define DB_RIGHT_MASK 0x4000 ++#define DB_HALF_MASK 0x2000 ++#define DB_SYMBOL 0x1000 ++#define DB_ASCII 0 ++ ++#define DB_RIGHT (DB_VALIDATE|DB_RIGHT_MASK) ++#define DB_LEFT (DB_VALIDATE) ++#define DB_NUM 8 ++ ++#define DB_INDEX_ERROR -512 ++struct double_byte ++{ ++ unsigned int num; ++ char name[16]; ++ int (*is_left)(int ); ++ int (*is_right)(int ); ++ int (*font_index)(int left,int right); ++ unsigned int width,height; /* right now only support 16x16 */ ++ int charcount; ++ unsigned char * font_data; ++}; ++extern int register_doublebyte(struct double_byte *); ++extern int unregister_doublebyte(struct double_byte *); ++extern struct double_byte * doublebyte_encodeing[DB_NUM]; ++extern struct double_byte * doublebyte_default; ++#endif +diff -Nur linux_c860_org/include/linux/fs_struct.h linux/include/linux/fs_struct.h +--- linux_c860_org/include/linux/fs_struct.h 2002-08-26 14:37:46.000000000 +0900 ++++ linux/include/linux/fs_struct.h 2004-06-10 21:09:11.000000000 +0900 +@@ -20,6 +20,15 @@ + extern void exit_fs(struct task_struct *); + extern void set_fs_altroot(void); + ++struct fs_struct *copy_fs_struct(struct fs_struct *old); ++void put_fs_struct(struct fs_struct *fs); ++ ++#endif ++#endif ++ ++#if !defined(_LINUX_FS_STRUCT_H_INLINES) && defined(_TASK_STRUCT_DEFINED) ++#define _LINUX_FS_STRUCT_H_INLINES ++#ifdef __KERNEL__ + /* + * Replace the fs->{rootmnt,root} with {mnt,dentry}. Put the old values. + * It can block. Requires the big lock held. +@@ -65,9 +74,5 @@ + mntput(old_pwdmnt); + } + } +- +-struct fs_struct *copy_fs_struct(struct fs_struct *old); +-void put_fs_struct(struct fs_struct *fs); +- + #endif + #endif +diff -Nur linux_c860_org/include/linux/jffs2_fs_sb.h linux/include/linux/jffs2_fs_sb.h +--- linux_c860_org/include/linux/jffs2_fs_sb.h 2003-05-14 15:01:52.000000000 +0900 ++++ linux/include/linux/jffs2_fs_sb.h 2004-06-10 21:12:37.000000000 +0900 +@@ -16,6 +16,7 @@ + * 15-Nov-2002 Lineo Japan, Inc. add nodemerge facility + * 05-Nov-2002 Lineo Japan, Inc. modify nr_bad_blocks type + * 29-Oct-2002 Lineo Japan, Inc. add member nr_bad_blocks and cont_gc_count ++ * 05-Aug-2003 SHARP for Tosa + * + */ + +@@ -81,7 +82,7 @@ + uint32_t nr_blocks; + struct jffs2_eraseblock *blocks; /* The whole array of blocks. Used for getting blocks + * from the offset (blocks[ofs / sector_size]) */ +-#ifdef CONFIG_ARCH_PXA_HUSKY ++#if defined(CONFIG_ARCH_PXA_HUSKY) || defined(CONFIG_ARCH_PXA_TOSA) + dma_addr_t blocks_phys; + #endif + struct jffs2_eraseblock *nextblock; /* The block we're currently filling */ +diff -Nur linux_c860_org/include/linux/lock_break.h linux/include/linux/lock_break.h +--- linux_c860_org/include/linux/lock_break.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/linux/lock_break.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,84 @@ ++/* ++ * include/linux/lock_break.h - lock breaking routines ++ * ++ * since in-kernel preemption can not occur while a lock is ++ * held, we can drop and reacquire long-held locks when they are ++ * in a natural quiescent state to further lower system latency. ++ * ++ * (C) 2001 Robert Love ++ * ++ */ ++ ++#ifndef _LINUX_LOCK_BREAK_H ++#define _LINUX_LOCK_BREAK_H ++ ++#include <linux/compiler.h> ++ ++/* ++ * setting this to 1 will instruct debug_lock_break to ++ * note when the expected lock count does not equal the ++ * actual count. if the lock count is higher than expected, ++ * we aren't dropping enough locks. if it is 0, we are ++ * wasting our time since the system is already preemptible. ++ */ ++#ifndef DEBUG_LOCK_BREAK ++#define DEBUG_LOCK_BREAK 0 ++#endif ++ ++#ifdef CONFIG_LOCK_BREAK ++ ++#define conditional_schedule_needed() (unlikely(current->need_resched)) ++ ++/* ++ * setting the task's state to TASK_RUNNING is nothing but paranoia, ++ * in the case where a task is delinquent in properly putting itself ++ * to sleep. we should test without it. ++ */ ++#define unconditional_schedule() do { \ ++ __set_current_state(TASK_RUNNING); \ ++ schedule(); \ ++} while(0) ++ ++#define conditional_schedule() do { \ ++ if (conditional_schedule_needed()) \ ++ unconditional_schedule(); \ ++} while(0) ++ ++#define break_spin_lock(n) do { \ ++ spin_unlock(n); \ ++ spin_lock(n); \ ++} while(0) ++ ++#define break_spin_lock_and_resched(n) do { \ ++ spin_unlock(n); \ ++ conditional_schedule(); \ ++ spin_lock(n); \ ++} while(0) ++ ++#if DEBUG_LOCK_BREAK ++#define debug_lock_break(n) do { \ ++ if (current->preempt_count != n) \ ++ printk(KERN_ERR "lock_break: %s:%d: count was %d not %d\n", \ ++ __FILE__, __LINE__, current->preempt_count, n); \ ++} while(0) ++#else ++#define debug_lock_break(n) ++#endif ++ ++#define DEFINE_LOCK_COUNT() int _lock_break_count = 0 ++#define TEST_LOCK_COUNT(n) (++_lock_break_count > (n)) ++#define RESET_LOCK_COUNT() _lock_break_count = 0 ++ ++#else ++#define unconditional_schedule() ++#define conditional_schedule() ++#define conditional_schedule_needed() 0 ++#define break_spin_lock(n) ++#define break_spin_lock_and_resched(n) ++#define debug_lock_break(n) ++#define DEFINE_LOCK_COUNT() ++#define TEST_LOCK_COUNT(n) 0 ++#define RESET_LOCK_COUNT() ++#endif ++ ++#endif /* _LINUX_LOCK_BREAK_H */ +diff -Nur linux_c860_org/include/linux/mm.h linux/include/linux/mm.h +--- linux_c860_org/include/linux/mm.h 2003-01-29 14:45:03.000000000 +0900 ++++ linux/include/linux/mm.h 2004-06-10 21:12:37.000000000 +0900 +@@ -126,6 +126,9 @@ + */ + extern pgprot_t protection_map[16]; + ++#define ZPR_MAX_BYTES 256*PAGE_SIZE ++#define ZPR_NORMAL 0 /* perform zap_page_range request in one walk */ ++#define ZPR_PARTITION 1 /* partition into a series of smaller operations */ + + /* + * These are the virtual MM functions - opening of an area, closing and +@@ -409,7 +412,7 @@ + extern void shmem_lock(struct file * file, int lock); + extern int shmem_zero_setup(struct vm_area_struct *); + +-extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size); ++extern void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, int actions); + extern int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma); + extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, pgprot_t prot); + extern int zeromap_page_range(unsigned long from, unsigned long size, pgprot_t prot); +diff -Nur linux_c860_org/include/linux/ppp-comp.h linux/include/linux/ppp-comp.h +--- linux_c860_org/include/linux/ppp-comp.h 2002-08-26 14:37:45.000000000 +0900 ++++ linux/include/linux/ppp-comp.h 2004-06-10 21:09:11.000000000 +0900 +@@ -24,11 +24,11 @@ + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, + * OR MODIFICATIONS. + * +- * $Id: ppp-comp.h,v 1.6 1997/11/27 06:04:44 paulus Exp $ ++ * $Id: ppp-comp.h,v 1.8 1999/07/23 06:53:40 paulus Exp $ + */ + + /* +- * ==FILEVERSION 980319== ++ * ==FILEVERSION 990623== + * + * NOTE TO MAINTAINERS: + * If you modify this file at all, please set the above date. +@@ -120,6 +120,7 @@ + * Don't you just lurve software patents. + */ + ++#define DECOMP_OK 0 /* no error occured */ + #define DECOMP_ERROR -1 /* error detected before decomp. */ + #define DECOMP_FATALERROR -2 /* error detected after decomp. */ + +@@ -138,7 +139,7 @@ + * Max # bytes for a CCP option + */ + +-#define CCP_MAX_OPTION_LENGTH 32 ++#define CCP_MAX_OPTION_LENGTH 64 + + /* + * Parts of a CCP packet. +@@ -187,6 +188,20 @@ + #define DEFLATE_CHK_SEQUENCE 0 + + /* ++ * Definitions for MPPE. ++ */ ++ ++#define CI_MPPE 18 /* config. option for MPPE */ ++#define CILEN_MPPE 6 /* length of config. option */ ++ ++/* ++ * Definitions for Stac LZS. ++ */ ++ ++#define CI_LZS 17 /* config option for Stac LZS */ ++#define CILEN_LZS 5 /* length of config option */ ++ ++/* + * Definitions for other, as yet unsupported, compression methods. + */ + +diff -Nur linux_c860_org/include/linux/sched.h linux/include/linux/sched.h +--- linux_c860_org/include/linux/sched.h 2002-12-18 19:29:48.000000000 +0900 ++++ linux/include/linux/sched.h 2004-06-10 21:12:37.000000000 +0900 +@@ -31,6 +31,7 @@ + #include <linux/signal.h> + #include <linux/securebits.h> + #include <linux/fs_struct.h> ++#include <linux/lock_break.h> + + struct exec_domain; + +@@ -93,6 +94,7 @@ + #define TASK_UNINTERRUPTIBLE 2 + #define TASK_ZOMBIE 4 + #define TASK_STOPPED 8 ++#define PREEMPT_ACTIVE 0x4000000 + + #define __set_task_state(tsk, state_value) \ + do { (tsk)->state = (state_value); } while (0) +@@ -159,6 +161,9 @@ + #define MAX_SCHEDULE_TIMEOUT LONG_MAX + extern signed long FASTCALL(schedule_timeout(signed long timeout)); + asmlinkage void schedule(void); ++#ifdef CONFIG_PREEMPT ++asmlinkage void preempt_schedule(void); ++#endif + + extern int schedule_task(struct tq_struct *task); + extern void flush_scheduled_tasks(void); +@@ -288,7 +293,7 @@ + * offsets of these are hardcoded elsewhere - touch with care + */ + volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ +- unsigned long flags; /* per process flags, defined below */ ++ int preempt_count; /* 0 => preemptable, <0 => BUG */ + int sigpending; + mm_segment_t addr_limit; /* thread address space: + 0-0xBFFFFFFF for user-thead +@@ -330,6 +335,7 @@ + struct mm_struct *active_mm; + struct list_head local_pages; + unsigned int allocation_order, nr_local_pages; ++ unsigned long flags; + + /* task state */ + struct linux_binfmt *binfmt; +@@ -338,6 +344,7 @@ + /* ??? */ + unsigned long personality; + int did_exec:1; ++ unsigned task_dumpable:1; + pid_t pid; + pid_t pgrp; + pid_t tty_old_pgrp; +@@ -505,6 +512,8 @@ + #define PT_TRACESYSGOOD 0x00000008 + #define PT_PTRACE_CAP 0x00000010 /* ptracer can follow suid-exec */ + ++#define is_dumpable(tsk) (((tsk)->task_dumpable) && (((tsk)->mm != NULL) && (tsk)->mm->dumpable)) ++ + /* + * Limit the stack by to some sane default: root can always + * increase this limit if needed.. 8MB seems reasonable. +@@ -854,6 +863,8 @@ + extern int do_execve(char *, char **, char **, struct pt_regs *); + extern int do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long); + ++extern long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++ + extern void FASTCALL(add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); + extern void FASTCALL(add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)); + extern void FASTCALL(remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)); +@@ -992,6 +1003,11 @@ + return res; + } + ++#define _TASK_STRUCT_DEFINED ++#include <linux/dcache.h> ++#include <linux/tqueue.h> ++#include <linux/fs_struct.h> ++ + #endif /* __KERNEL__ */ + + #endif +diff -Nur linux_c860_org/include/linux/smp.h linux/include/linux/smp.h +--- linux_c860_org/include/linux/smp.h 2002-08-26 14:37:45.000000000 +0900 ++++ linux/include/linux/smp.h 2004-06-10 21:12:36.000000000 +0900 +@@ -81,11 +81,17 @@ + #define smp_processor_id() 0 + #define hard_smp_processor_id() 0 + #define smp_threads_ready 1 ++#ifndef CONFIG_PREEMPT + #define kernel_lock() ++#endif + #define cpu_logical_map(cpu) 0 + #define cpu_number_map(cpu) 0 + #define smp_call_function(func,info,retry,wait) ({ 0; }) + #define cpu_online_map 1 + +-#endif +-#endif ++#endif /* !SMP */ ++ ++#define get_cpu() smp_processor_id() ++#define put_cpu() do { } while(0) ++ ++#endif /* __LINUX_SMP_H */ +diff -Nur linux_c860_org/include/linux/smp_lock.h linux/include/linux/smp_lock.h +--- linux_c860_org/include/linux/smp_lock.h 2002-08-26 14:37:45.000000000 +0900 ++++ linux/include/linux/smp_lock.h 2004-06-10 21:12:37.000000000 +0900 +@@ -3,7 +3,7 @@ + + #include <linux/config.h> + +-#ifndef CONFIG_SMP ++#if !defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT) + + #define lock_kernel() do { } while(0) + #define unlock_kernel() do { } while(0) +diff -Nur linux_c860_org/include/linux/spinlock.h linux/include/linux/spinlock.h +--- linux_c860_org/include/linux/spinlock.h 2002-08-26 14:37:46.000000000 +0900 ++++ linux/include/linux/spinlock.h 2004-06-10 21:12:37.000000000 +0900 +@@ -2,6 +2,7 @@ + #define __LINUX_SPINLOCK_H + + #include <linux/config.h> ++#include <linux/compiler.h> + + /* + * These are the generic versions of the spinlocks and read-write +@@ -45,8 +46,10 @@ + + #if (DEBUG_SPINLOCKS < 1) + ++#ifndef CONFIG_PREEMPT + #define atomic_dec_and_lock(atomic,lock) atomic_dec_and_test(atomic) + #define ATOMIC_DEC_AND_LOCK ++#endif + + /* + * Your basic spinlocks, allowing only a single CPU anywhere +@@ -62,11 +65,11 @@ + #endif + + #define spin_lock_init(lock) do { } while(0) +-#define spin_lock(lock) (void)(lock) /* Not "unused variable". */ ++#define _raw_spin_lock(lock) (void)(lock) /* Not "unused variable". */ + #define spin_is_locked(lock) (0) +-#define spin_trylock(lock) ({1; }) ++#define _raw_spin_trylock(lock) ({1; }) + #define spin_unlock_wait(lock) do { } while(0) +-#define spin_unlock(lock) do { } while(0) ++#define _raw_spin_unlock(lock) do { } while(0) + + #elif (DEBUG_SPINLOCKS < 2) + +@@ -125,13 +128,78 @@ + #endif + + #define rwlock_init(lock) do { } while(0) +-#define read_lock(lock) (void)(lock) /* Not "unused variable". */ +-#define read_unlock(lock) do { } while(0) +-#define write_lock(lock) (void)(lock) /* Not "unused variable". */ +-#define write_unlock(lock) do { } while(0) ++#define _raw_read_lock(lock) (void)(lock) /* Not "unused variable". */ ++#define _raw_read_unlock(lock) do { } while(0) ++#define _raw_write_lock(lock) (void)(lock) /* Not "unused variable". */ ++#define _raw_write_unlock(lock) do { } while(0) + + #endif /* !SMP */ + ++#ifdef CONFIG_PREEMPT ++ ++#define preempt_get_count() (current->preempt_count) ++#define preempt_is_disabled() (preempt_get_count() != 0) ++ ++#define preempt_disable() \ ++do { \ ++ ++current->preempt_count; \ ++ barrier(); \ ++} while (0) ++ ++#define preempt_enable_no_resched() \ ++do { \ ++ --current->preempt_count; \ ++ barrier(); \ ++} while (0) ++ ++#define preempt_enable() \ ++do { \ ++ --current->preempt_count; \ ++ barrier(); \ ++ if (unlikely(current->preempt_count < current->need_resched)) \ ++ preempt_schedule(); \ ++} while (0) ++ ++#define spin_lock(lock) \ ++do { \ ++ preempt_disable(); \ ++ _raw_spin_lock(lock); \ ++} while(0) ++ ++#define spin_trylock(lock) ({preempt_disable(); _raw_spin_trylock(lock) ? \ ++ 1 : ({preempt_enable(); 0;});}) ++#define spin_unlock(lock) \ ++do { \ ++ _raw_spin_unlock(lock); \ ++ preempt_enable(); \ ++} while (0) ++ ++#define read_lock(lock) ({preempt_disable(); _raw_read_lock(lock);}) ++#define read_unlock(lock) ({_raw_read_unlock(lock); preempt_enable();}) ++#define write_lock(lock) ({preempt_disable(); _raw_write_lock(lock);}) ++#define write_unlock(lock) ({_raw_write_unlock(lock); preempt_enable();}) ++#define write_trylock(lock) ({preempt_disable();_raw_write_trylock(lock) ? \ ++ 1 : ({preempt_enable(); 0;});}) ++ ++#else ++ ++#define preempt_get_count() (0) ++#define preempt_is_disabled() (1) ++#define preempt_disable() do { } while (0) ++#define preempt_enable_no_resched() do {} while(0) ++#define preempt_enable() do { } while (0) ++ ++#define spin_lock(lock) _raw_spin_lock(lock) ++#define spin_trylock(lock) _raw_spin_trylock(lock) ++#define spin_unlock(lock) _raw_spin_unlock(lock) ++ ++#define read_lock(lock) _raw_read_lock(lock) ++#define read_unlock(lock) _raw_read_unlock(lock) ++#define write_lock(lock) _raw_write_lock(lock) ++#define write_unlock(lock) _raw_write_unlock(lock) ++#define write_trylock(lock) _raw_write_trylock(lock) ++#endif ++ + /* "lock on reference count zero" */ + #ifndef ATOMIC_DEC_AND_LOCK + #include <asm/atomic.h> +diff -Nur linux_c860_org/include/linux/tqueue.h linux/include/linux/tqueue.h +--- linux_c860_org/include/linux/tqueue.h 2002-08-26 14:37:44.000000000 +0900 ++++ linux/include/linux/tqueue.h 2004-06-10 21:12:37.000000000 +0900 +@@ -94,6 +94,22 @@ + extern spinlock_t tqueue_lock; + + /* ++ * Call all "bottom halfs" on a given list. ++ */ ++ ++extern void __run_task_queue(task_queue *list); ++ ++static inline void run_task_queue(task_queue *list) ++{ ++ if (TQ_ACTIVE(*list)) ++ __run_task_queue(list); ++} ++ ++#endif /* _LINUX_TQUEUE_H */ ++ ++#if !defined(_LINUX_TQUEUE_H_INLINES) && defined(_TASK_STRUCT_DEFINED) ++#define _LINUX_TQUEUE_H_INLINES ++/* + * Queue a task on a tq. Return non-zero if it was successfully + * added. + */ +@@ -109,17 +125,4 @@ + } + return ret; + } +- +-/* +- * Call all "bottom halfs" on a given list. +- */ +- +-extern void __run_task_queue(task_queue *list); +- +-static inline void run_task_queue(task_queue *list) +-{ +- if (TQ_ACTIVE(*list)) +- __run_task_queue(list); +-} +- +-#endif /* _LINUX_TQUEUE_H */ ++#endif +diff -Nur linux_c860_org/include/linux/tty_flip.h linux/include/linux/tty_flip.h +--- linux_c860_org/include/linux/tty_flip.h 2002-08-26 14:37:44.000000000 +0900 ++++ linux/include/linux/tty_flip.h 2004-06-10 21:12:59.000000000 +0900 +@@ -7,9 +7,22 @@ + #define _INLINE_ static __inline__ + #endif + ++#ifdef CONFIG_UNICON ++extern int (*Unicon_fnKeyHook) (struct tty_struct *tty, ++ unsigned char ch, char flag); ++#endif + _INLINE_ void tty_insert_flip_char(struct tty_struct *tty, +- unsigned char ch, char flag) ++ unsigned char ch, char flag) + { ++ #ifdef CONFIG_UNICON ++ if (Unicon_fnKeyHook != NULL) ++ { ++ /* return 1 ==> processed by kernel ++ return 0 ==> processed by app */ ++ if ((*Unicon_fnKeyHook) (tty, ch, flag) == 1) ++ return; ++ } ++ #endif + if (tty->flip.count < TTY_FLIPBUF_SIZE) { + tty->flip.count++; + *tty->flip.flag_buf_ptr++ = flag; +diff -Nur linux_c860_org/include/net/irda/irlmp.h linux/include/net/irda/irlmp.h +--- linux_c860_org/include/net/irda/irlmp.h 2002-08-29 12:24:49.000000000 +0900 ++++ linux/include/net/irda/irlmp.h 2004-06-10 21:13:39.000000000 +0900 +@@ -21,6 +21,9 @@ + * Neither Dag Brattli nor University of Tromsř admit liability nor + * provide warranty for any of this software. This material is + * provided "AS-IS" and at no charge. ++ * ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa + * + ********************************************************************/ + +@@ -181,6 +184,9 @@ + int running; + + __u16_host_order hints; /* Hint bits */ ++#if defined(CONFIG_ARCH_SHARP_SL) ++ int discovery_retry; /* Discovery retry flag at media busy */ ++#endif + }; + + /* Prototype declarations */ +diff -Nur linux_c860_org/include/openssl/opensslconf.h linux/include/openssl/opensslconf.h +--- linux_c860_org/include/openssl/opensslconf.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/openssl/opensslconf.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,176 @@ ++/* opensslconf.h */ ++/* WARNING: Generated automatically from opensslconf.h.in by Configure. */ ++ ++/* OpenSSL was configured with the following options: */ ++#ifdef OPENSSL_ALGORITHM_DEFINES ++ /* no ciphers excluded */ ++#endif ++#ifdef OPENSSL_THREAD_DEFINES ++# ifndef THREADS ++# define THREADS ++# endif ++#endif ++#ifdef OPENSSL_OTHER_DEFINES ++# ifndef DSO_DLFCN ++# define DSO_DLFCN ++# endif ++# ifndef HAVE_DLFCN_H ++# define HAVE_DLFCN_H ++# endif ++#endif ++ ++/* crypto/opensslconf.h.in */ ++ ++/* Generate 80386 code? */ ++#undef I386_ONLY ++ ++#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */ ++#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR) ++#define OPENSSLDIR "/usr/local/ssl" ++#endif ++#endif ++ ++#define OPENSSL_UNISTD <unistd.h> ++ ++#if defined(HEADER_IDEA_H) && !defined(IDEA_INT) ++#define IDEA_INT unsigned int ++#endif ++ ++#if defined(HEADER_MD2_H) && !defined(MD2_INT) ++#define MD2_INT unsigned int ++#endif ++ ++#if defined(HEADER_RC2_H) && !defined(RC2_INT) ++/* I need to put in a mod for the alpha - eay */ ++#define RC2_INT unsigned int ++#endif ++ ++#if defined(HEADER_RC4_H) ++#if !defined(RC4_INT) ++/* using int types make the structure larger but make the code faster ++ * on most boxes I have tested - up to %20 faster. */ ++/* ++ * I don't know what does "most" mean, but declaring "int" is a must on: ++ * - Intel P6 because partial register stalls are very expensive; ++ * - elder Alpha because it lacks byte load/store instructions; ++ */ ++#define RC4_INT unsigned int ++#endif ++#if !defined(RC4_CHUNK) ++/* ++ * This enables code handling data aligned at natural CPU word ++ * boundary. See crypto/rc4/rc4_enc.c for further details. ++ */ ++#undef RC4_CHUNK ++#endif ++#endif ++ ++#if defined(HEADER_DES_H) && !defined(DES_LONG) ++/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a ++ * %20 speed up (longs are 8 bytes, int's are 4). */ ++#ifndef DES_LONG ++#define DES_LONG unsigned long ++#endif ++#endif ++ ++#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) ++#define CONFIG_HEADER_BN_H ++#define BN_LLONG ++ ++/* Should we define BN_DIV2W here? */ ++ ++/* Only one for the following should be defined */ ++/* The prime number generation stuff may not work when ++ * EIGHT_BIT but I don't care since I've only used this mode ++ * for debuging the bignum libraries */ ++#undef SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#define THIRTY_TWO_BIT ++#undef SIXTEEN_BIT ++#undef EIGHT_BIT ++#endif ++ ++#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) ++#define CONFIG_HEADER_RC4_LOCL_H ++/* if this is defined data[i] is used instead of *data, this is a %20 ++ * speedup on x86 */ ++#define RC4_INDEX ++#endif ++ ++#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H) ++#define CONFIG_HEADER_BF_LOCL_H ++#undef BF_PTR ++#endif /* HEADER_BF_LOCL_H */ ++ ++#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H) ++#define CONFIG_HEADER_DES_LOCL_H ++#ifndef DES_DEFAULT_OPTIONS ++/* the following is tweaked from a config script, that is why it is a ++ * protected undef/define */ ++#ifndef DES_PTR ++#define DES_PTR ++#endif ++ ++/* This helps C compiler generate the correct code for multiple functional ++ * units. It reduces register dependancies at the expense of 2 more ++ * registers */ ++#ifndef DES_RISC1 ++#define DES_RISC1 ++#endif ++ ++#ifndef DES_RISC2 ++#undef DES_RISC2 ++#endif ++ ++#if defined(DES_RISC1) && defined(DES_RISC2) ++YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!! ++#endif ++ ++/* Unroll the inner loop, this sometimes helps, sometimes hinders. ++ * Very mucy CPU dependant */ ++#ifndef DES_UNROLL ++#define DES_UNROLL ++#endif ++ ++/* These default values were supplied by ++ * Peter Gutman <pgut001@cs.auckland.ac.nz> ++ * They are only used if nothing else has been defined */ ++#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL) ++/* Special defines which change the way the code is built depending on the ++ CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find ++ even newer MIPS CPU's, but at the moment one size fits all for ++ optimization options. Older Sparc's work better with only UNROLL, but ++ there's no way to tell at compile time what it is you're running on */ ++ ++#if defined( sun ) /* Newer Sparc's */ ++# define DES_PTR ++# define DES_RISC1 ++# define DES_UNROLL ++#elif defined( __ultrix ) /* Older MIPS */ ++# define DES_PTR ++# define DES_RISC2 ++# define DES_UNROLL ++#elif defined( __osf1__ ) /* Alpha */ ++# define DES_PTR ++# define DES_RISC2 ++#elif defined ( _AIX ) /* RS6000 */ ++ /* Unknown */ ++#elif defined( __hpux ) /* HP-PA */ ++ /* Unknown */ ++#elif defined( __aux ) /* 68K */ ++ /* Unknown */ ++#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */ ++# define DES_UNROLL ++#elif defined( __sgi ) /* Newer MIPS */ ++# define DES_PTR ++# define DES_RISC2 ++# define DES_UNROLL ++#elif defined( i386 ) /* x86 boxes, should be gcc */ ++# define DES_PTR ++# define DES_RISC1 ++# define DES_UNROLL ++#endif /* Systems-specific speed defines */ ++#endif ++ ++#endif /* DES_DEFAULT_OPTIONS */ ++#endif /* HEADER_DES_LOCL_H */ +diff -Nur linux_c860_org/include/openssl/opensslv.h linux/include/openssl/opensslv.h +--- linux_c860_org/include/openssl/opensslv.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/openssl/opensslv.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,85 @@ ++#ifndef HEADER_OPENSSLV_H ++#define HEADER_OPENSSLV_H ++ ++/* Numeric release version identifier: ++ * MMNNFFPPS: major minor fix patch status ++ * The status nibble has one of the values 0 for development, 1 to e for betas ++ * 1 to 14, and f for release. The patch level is exactly that. ++ * For example: ++ * 0.9.3-dev 0x00903000 ++ * 0.9.3-beta1 0x00903001 ++ * 0.9.3-beta2-dev 0x00903002 ++ * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) ++ * 0.9.3 0x0090300f ++ * 0.9.3a 0x0090301f ++ * 0.9.4 0x0090400f ++ * 1.2.3z 0x102031af ++ * ++ * For continuity reasons (because 0.9.5 is already out, and is coded ++ * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level ++ * part is slightly different, by setting the highest bit. This means ++ * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start ++ * with 0x0090600S... ++ * ++ * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) ++ * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for ++ * major minor fix final patch/beta) ++ */ ++#define OPENSSL_VERSION_NUMBER 0x0090601fL ++#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.6a 5 Apr 2001" ++#define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT ++ ++ ++/* The macros below are to be used for shared library (.so, .dll, ...) ++ * versioning. That kind of versioning works a bit differently between ++ * operating systems. The most usual scheme is to set a major and a minor ++ * number, and have the runtime loader check that the major number is equal ++ * to what it was at application link time, while the minor number has to ++ * be greater or equal to what it was at application link time. With this ++ * scheme, the version number is usually part of the file name, like this: ++ * ++ * libcrypto.so.0.9 ++ * ++ * Some unixen also make a softlink with the major verson number only: ++ * ++ * libcrypto.so.0 ++ * ++ * On True64 it works a little bit differently. There, the shared library ++ * version is stored in the file, and is actually a series of versions, ++ * separated by colons. The rightmost version present in the library when ++ * linking an application is stored in the application to be matched at ++ * run time. When the application is run, a check is done to see if the ++ * library version stored in the application matches any of the versions ++ * in the version string of the library itself. ++ * This version string can be constructed in any way, depending on what ++ * kind of matching is desired. However, to implement the same scheme as ++ * the one used in the other unixen, all compatible versions, from lowest ++ * to highest, should be part of the string. Consecutive builds would ++ * give the following versions strings: ++ * ++ * 3.0 ++ * 3.0:3.1 ++ * 3.0:3.1:3.2 ++ * 4.0 ++ * 4.0:4.1 ++ * ++ * Notice how version 4 is completely incompatible with version, and ++ * therefore give the breach you can see. ++ * ++ * There may be other schemes as well that I haven't yet discovered. ++ * ++ * So, here's the way it works here: first of all, the library version ++ * number doesn't need at all to match the overall OpenSSL version. ++ * However, it's nice and more understandable if it actually does. ++ * The current library version is stored in the macro SHLIB_VERSION_NUMBER, ++ * which is just a piece of text in the format "M.m.e" (Major, minor, edit). ++ * For the sake of True64 and any other OS that behaves in similar ways, ++ * we need to keep a history of version numbers, which is done in the ++ * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and ++ * should only keep the versions that are binary compatible with the current. ++ */ ++#define SHLIB_VERSION_HISTORY "" ++#define SHLIB_VERSION_NUMBER "0.9.6" ++ ++ ++#endif /* HEADER_OPENSSLV_H */ +diff -Nur linux_c860_org/include/openssl/rc4.h linux/include/openssl/rc4.h +--- linux_c860_org/include/openssl/rc4.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/openssl/rc4.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,88 @@ ++/* crypto/rc4/rc4.h */ ++/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#ifndef HEADER_RC4_H ++#define HEADER_RC4_H ++ ++#ifdef NO_RC4 ++#error RC4 is disabled. ++#endif ++ ++#include <openssl/opensslconf.h> /* RC4_INT */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct rc4_key_st ++ { ++ RC4_INT x,y; ++ RC4_INT data[256]; ++ } RC4_KEY; ++ ++ ++const char *RC4_options(void); ++void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); ++void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, ++ unsigned char *outdata); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff -Nur linux_c860_org/include/openssl/sha.h linux/include/openssl/sha.h +--- linux_c860_org/include/openssl/sha.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/openssl/sha.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,119 @@ ++/* crypto/sha/sha.h */ ++/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) ++ * All rights reserved. ++ * ++ * This package is an SSL implementation written ++ * by Eric Young (eay@cryptsoft.com). ++ * The implementation was written so as to conform with Netscapes SSL. ++ * ++ * This library is free for commercial and non-commercial use as long as ++ * the following conditions are aheared to. The following conditions ++ * apply to all code found in this distribution, be it the RC4, RSA, ++ * lhash, DES, etc., code; not just the SSL code. The SSL documentation ++ * included with this distribution is covered by the same copyright terms ++ * except that the holder is Tim Hudson (tjh@cryptsoft.com). ++ * ++ * Copyright remains Eric Young's, and as such any Copyright notices in ++ * the code are not to be removed. ++ * If this package is used in a product, Eric Young should be given attribution ++ * as the author of the parts of the library used. ++ * This can be in the form of a textual message at program startup or ++ * in documentation (online or textual) provided with the package. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. 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. ++ * 3. All advertising materials mentioning features or use of this software ++ * must display the following acknowledgement: ++ * "This product includes cryptographic software written by ++ * Eric Young (eay@cryptsoft.com)" ++ * The word 'cryptographic' can be left out if the rouines from the library ++ * being used are not cryptographic related :-). ++ * 4. If you include any Windows specific code (or a derivative thereof) from ++ * the apps directory (application code) you must include an acknowledgement: ++ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" ++ * ++ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. ++ * ++ * The licence and distribution terms for any publically available version or ++ * derivative of this code cannot be changed. i.e. this code cannot simply be ++ * copied and put under another distribution licence ++ * [including the GNU Public Licence.] ++ */ ++ ++#ifndef HEADER_SHA_H ++#define HEADER_SHA_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#if defined(NO_SHA) || (defined(NO_SHA0) && defined(NO_SHA1)) ++#error SHA is disabled. ++#endif ++ ++/* ++ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ++ * ! SHA_LONG has to be at least 32 bits wide. If it's wider, then ! ++ * ! SHA_LONG_LOG2 has to be defined along. ! ++ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ++ */ ++ ++#if defined(WIN16) || defined(__LP32__) ++#define SHA_LONG unsigned long ++#elif defined(_CRAY) || defined(__ILP64__) ++#define SHA_LONG unsigned long ++#define SHA_LONG_LOG2 3 ++#else ++#define SHA_LONG unsigned int ++#endif ++ ++#define SHA_LBLOCK 16 ++#define SHA_CBLOCK (SHA_LBLOCK*4) /* SHA treats input data as a ++ * contiguous array of 32 bit ++ * wide big-endian values. */ ++#define SHA_LAST_BLOCK (SHA_CBLOCK-8) ++#define SHA_DIGEST_LENGTH 20 ++ ++typedef struct SHAstate_st ++ { ++ SHA_LONG h0,h1,h2,h3,h4; ++ SHA_LONG Nl,Nh; ++ SHA_LONG data[SHA_LBLOCK]; ++ int num; ++ } SHA_CTX; ++ ++#ifndef NO_SHA0 ++void SHA_Init(SHA_CTX *c); ++void SHA_Update(SHA_CTX *c, const void *data, unsigned long len); ++void SHA_Final(unsigned char *md, SHA_CTX *c); ++unsigned char *SHA(const unsigned char *d, unsigned long n,unsigned char *md); ++void SHA_Transform(SHA_CTX *c, const unsigned char *data); ++#endif ++#ifndef NO_SHA1 ++void SHA1_Init(SHA_CTX *c); ++void SHA1_Update(SHA_CTX *c, const void *data, unsigned long len); ++void SHA1_Final(unsigned char *md, SHA_CTX *c); ++unsigned char *SHA1(const unsigned char *d, unsigned long n,unsigned char *md); ++void SHA1_Transform(SHA_CTX *c, const unsigned char *data); ++#endif ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff -Nur linux_c860_org/include/video/tosa_backlight.h linux/include/video/tosa_backlight.h +--- linux_c860_org/include/video/tosa_backlight.h 1970-01-01 09:00:00.000000000 +0900 ++++ linux/include/video/tosa_backlight.h 2004-06-10 21:09:11.000000000 +0900 +@@ -0,0 +1,47 @@ ++/* ++ * linux/include/video/tosa_backlight.h ++ * ++ * (C) Copyright 2004 Lineo Solutions, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on: ++ * linux/include/video/corgi_backlight.h ++ * ++ * (C) Copyright 2002 Lineo Japan, Inc. ++ * ++ * May be copied or modified under the terms of the GNU General Public ++ * License. See linux/COPYING for more information. ++ * ++ * Based on include/video/sa1100_frontlight.h ++ * ++ * ChangeLog: ++ * 06-Nov-2002 SHARP for SL-B500/5600 ++ */ ++ ++ ++#ifndef __TOSA_FRONTLIGHT_H ++#define __TOSA_FRONTLIGHT_H ++ ++#define TOSA_BL_IOCTL_ON 1 ++#define TOSA_BL_IOCTL_OFF 2 ++#define TOSA_BL_IOCTL_STEP_CONTRAST 100 ++#define TOSA_BL_IOCTL_GET_STEP_CONTRAST 101 ++#define TOSA_BL_IOCTL_GET_STEP 102 ++ ++#define TOSA_BL_RESET_CONTRAST (-1) ++#define TOSA_BL_CAUTION_CONTRAST (1) ++ ++#define BL_MAJOR 254 ++#define BL_NAME "tosa-bl" ++ ++#ifdef CONFIG_PM ++void tosa_bl_blank(int); ++int tosa_bl_pm_callback(struct pm_dev*, pm_request_t, void*); ++#endif ++void tosa_bl_temporary_contrast_set(void); ++void tosa_bl_temporary_contrast_reset(void); ++void tosa_bl_set_limit_contrast(int); ++ ++#endif /* __TOSA_FRONTLIGHT_H */ +diff -Nur linux_c860_org/kernel/exit.c linux/kernel/exit.c +--- linux_c860_org/kernel/exit.c 2002-08-26 14:43:29.000000000 +0900 ++++ linux/kernel/exit.c 2004-06-10 21:09:11.000000000 +0900 +@@ -203,6 +203,8 @@ + } + i++; + set >>= 1; ++ debug_lock_break(1); ++ conditional_schedule(); + } + } + } +@@ -320,8 +322,8 @@ + /* more a memory barrier than a real lock */ + task_lock(tsk); + tsk->mm = NULL; +- task_unlock(tsk); + enter_lazy_tlb(mm, current, smp_processor_id()); ++ task_unlock(tsk); + mmput(mm); + } + } +@@ -442,6 +444,11 @@ + tsk->flags |= PF_EXITING; + del_timer_sync(&tsk->real_timer); + ++ if (unlikely(preempt_get_count())) ++ printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", ++ current->comm, current->pid, ++ preempt_get_count()); ++ + fake_volatile: + #ifdef CONFIG_BSD_PROCESS_ACCT + acct_process(code); +diff -Nur linux_c860_org/kernel/fork.c linux/kernel/fork.c +--- linux_c860_org/kernel/fork.c 2002-12-18 19:29:50.000000000 +0900 ++++ linux/kernel/fork.c 2004-06-10 21:09:11.000000000 +0900 +@@ -28,6 +28,7 @@ + #include <asm/pgalloc.h> + #include <asm/uaccess.h> + #include <asm/mmu_context.h> ++#include <asm/processor.h> + + /* The idle threads do not count.. */ + int nr_threads; +@@ -561,6 +562,31 @@ + p->flags = new_flags; + } + ++long kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) ++{ ++ struct task_struct *task = current; ++ unsigned old_task_dumpable; ++ long ret; ++ ++ /* lock out any potential ptracer */ ++ task_lock(task); ++ if (task->ptrace) { ++ task_unlock(task); ++ return -EPERM; ++ } ++ ++ old_task_dumpable = task->task_dumpable; ++ task->task_dumpable = 0; ++ task_unlock(task); ++ ++ ret = arch_kernel_thread(fn, arg, flags); ++ ++ /* never reached in child process, only in parent */ ++ current->task_dumpable = old_task_dumpable; ++ ++ return ret; ++} ++ + /* + * Ok, this is the main fork-routine. It copies the system process + * information (task[nr]) and sets up the necessary registers. It also +@@ -622,6 +648,13 @@ + if (p->binfmt && p->binfmt->module) + __MOD_INC_USE_COUNT(p->binfmt->module); + ++#ifdef CONFIG_PREEMPT ++ /* ++ * Continue with preemption disabled as part of the context ++ * switch, so start with preempt_count set to 1. ++ */ ++ p->preempt_count = 1; ++#endif + p->did_exec = 0; + p->swappable = 0; + p->state = TASK_UNINTERRUPTIBLE; +diff -Nur linux_c860_org/kernel/ksyms.c linux/kernel/ksyms.c +--- linux_c860_org/kernel/ksyms.c 2002-08-26 14:43:29.000000000 +0900 ++++ linux/kernel/ksyms.c 2004-06-10 21:09:11.000000000 +0900 +@@ -439,6 +439,9 @@ + EXPORT_SYMBOL(interruptible_sleep_on); + EXPORT_SYMBOL(interruptible_sleep_on_timeout); + EXPORT_SYMBOL(schedule); ++#ifdef CONFIG_PREEMPT ++EXPORT_SYMBOL(preempt_schedule); ++#endif + EXPORT_SYMBOL(schedule_timeout); + EXPORT_SYMBOL(jiffies); + EXPORT_SYMBOL(xtime); +diff -Nur linux_c860_org/kernel/ptrace.c linux/kernel/ptrace.c +--- linux_c860_org/kernel/ptrace.c 2002-08-26 14:37:42.000000000 +0900 ++++ linux/kernel/ptrace.c 2004-06-10 21:09:11.000000000 +0900 +@@ -21,6 +21,9 @@ + */ + int ptrace_check_attach(struct task_struct *child, int kill) + { ++ mb(); ++ if (!child->task_dumpable) ++ return -EPERM; + if (!(child->ptrace & PT_PTRACED)) + return -ESRCH; + +@@ -70,7 +73,7 @@ + (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE)) + goto bad; + rmb(); +- if (!task->mm->dumpable && !capable(CAP_SYS_PTRACE)) ++ if (!is_dumpable(task) && !capable(CAP_SYS_PTRACE)) + goto bad; + /* the same process cannot be attached many times */ + if (task->ptrace & PT_PTRACED) +@@ -136,6 +139,8 @@ + /* Worry about races with exit() */ + task_lock(tsk); + mm = tsk->mm; ++ if (!tsk->task_dumpable || (&init_mm == mm)) ++ mm = NULL; + if (mm) + atomic_inc(&mm->mm_users); + task_unlock(tsk); +diff -Nur linux_c860_org/kernel/sched.c linux/kernel/sched.c +--- linux_c860_org/kernel/sched.c 2002-08-26 14:37:42.000000000 +0900 ++++ linux/kernel/sched.c 2004-06-10 21:09:11.000000000 +0900 +@@ -491,7 +491,7 @@ + task_lock(prev); + task_release_cpu(prev); + mb(); +- if (prev->state == TASK_RUNNING) ++ if (task_on_runqueue(prev)) + goto needs_resched; + + out_unlock: +@@ -521,7 +521,7 @@ + goto out_unlock; + + spin_lock_irqsave(&runqueue_lock, flags); +- if ((prev->state == TASK_RUNNING) && !task_has_cpu(prev)) ++ if (task_on_runqueue(prev) && !task_has_cpu(prev)) + reschedule_idle(prev); + spin_unlock_irqrestore(&runqueue_lock, flags); + goto out_unlock; +@@ -534,6 +534,7 @@ + asmlinkage void schedule_tail(struct task_struct *prev) + { + __schedule_tail(prev); ++ preempt_enable(); + } + + /* +@@ -553,10 +554,12 @@ + struct list_head *tmp; + int this_cpu, c; + +- + spin_lock_prefetch(&runqueue_lock); + ++ preempt_disable(); ++ + if (!current->active_mm) BUG(); ++ + need_resched_back: + prev = current; + this_cpu = prev->processor; +@@ -583,6 +586,14 @@ + move_last_runqueue(prev); + } + ++#ifdef CONFIG_PREEMPT ++ /* ++ * entering from preempt_schedule, off a kernel preemption, ++ * go straight to picking the next task. ++ */ ++ if (unlikely(preempt_get_count() & PREEMPT_ACTIVE)) ++ goto treat_like_run; ++#endif + switch (prev->state) { + case TASK_INTERRUPTIBLE: + if (signal_pending(prev)) { +@@ -593,6 +604,9 @@ + del_from_runqueue(prev); + case TASK_RUNNING:; + } ++#ifdef CONFIG_PREEMPT ++ treat_like_run: ++#endif + prev->need_resched = 0; + + /* +@@ -701,9 +715,25 @@ + reacquire_kernel_lock(current); + if (current->need_resched) + goto need_resched_back; ++ preempt_enable_no_resched(); + return; + } + ++#ifdef CONFIG_PREEMPT ++/* ++ * this is is the entry point to schedule() from in-kernel preemption. ++ */ ++asmlinkage void preempt_schedule(void) ++{ ++ do { ++ current->preempt_count += PREEMPT_ACTIVE; ++ schedule(); ++ current->preempt_count -= PREEMPT_ACTIVE; ++ barrier(); ++ } while (current->need_resched); ++} ++#endif /* CONFIG_PREEMPT */ ++ + /* + * The core wakeup function. Non-exclusive wakeups (nr_exclusive == 0) just wake everything + * up. If it's an exclusive wakeup (nr_exclusive == small +ve number) then we wake all the +@@ -1312,6 +1342,13 @@ + sched_data->curr = current; + sched_data->last_schedule = get_cycles(); + clear_bit(current->processor, &wait_init_idle); ++#ifdef CONFIG_PREEMPT ++ /* ++ * fix up the preempt_count for non-CPU0 idle threads ++ */ ++ if (current->processor) ++ current->preempt_count = 0; ++#endif + } + + extern void init_timervecs (void); +diff -Nur linux_c860_org/kernel/sys.c linux/kernel/sys.c +--- linux_c860_org/kernel/sys.c 2002-08-29 12:24:32.000000000 +0900 ++++ linux/kernel/sys.c 2004-06-10 21:09:11.000000000 +0900 +@@ -1231,7 +1231,7 @@ + error = put_user(current->pdeath_signal, (int *)arg2); + break; + case PR_GET_DUMPABLE: +- if (current->mm->dumpable) ++ if (is_dumpable(current)) + error = 1; + break; + case PR_SET_DUMPABLE: +@@ -1239,7 +1239,8 @@ + error = -EINVAL; + break; + } +- current->mm->dumpable = arg2; ++ if (is_dumpable(current)) ++ current->mm->dumpable = arg2; + break; + case PR_SET_UNALIGN: + #ifdef SET_UNALIGN_CTL +diff -Nur linux_c860_org/lib/dec_and_lock.c linux/lib/dec_and_lock.c +--- linux_c860_org/lib/dec_and_lock.c 2002-08-26 14:37:42.000000000 +0900 ++++ linux/lib/dec_and_lock.c 2004-06-10 21:09:11.000000000 +0900 +@@ -1,5 +1,6 @@ + #include <linux/module.h> + #include <linux/spinlock.h> ++#include <linux/sched.h> + #include <asm/atomic.h> + + /* +diff -Nur linux_c860_org/mm/filemap.c linux/mm/filemap.c +--- linux_c860_org/mm/filemap.c 2002-08-26 14:37:43.000000000 +0900 ++++ linux/mm/filemap.c 2004-06-10 21:09:11.000000000 +0900 +@@ -296,6 +296,7 @@ + + page_cache_release(page); + ++ /* we hit this with lock depth of 1 or 2 */ + if (current->need_resched) { + __set_current_state(TASK_RUNNING); + schedule(); +@@ -406,6 +407,8 @@ + } + + page_cache_release(page); ++ ++ debug_lock_break(551); + if (current->need_resched) { + __set_current_state(TASK_RUNNING); + schedule(); +@@ -560,12 +563,16 @@ + list_del(&page->list); + list_add(&page->list, &mapping->locked_pages); + +- if (!PageDirty(page)) +- continue; +- + page_cache_get(page); + spin_unlock(&pagecache_lock); + ++ /* BKL is held ... */ ++ debug_lock_break(1); ++ conditional_schedule(); ++ ++ if (!PageDirty(page)) ++ goto clean; ++ + lock_page(page); + + if (PageDirty(page)) { +@@ -576,7 +583,7 @@ + ret = err; + } else + UnlockPage(page); +- ++clean: + page_cache_release(page); + spin_lock(&pagecache_lock); + } +@@ -595,14 +602,28 @@ + { + int ret = 0; + ++ DEFINE_LOCK_COUNT(); ++ + spin_lock(&pagecache_lock); + ++restart: + while (!list_empty(&mapping->locked_pages)) { + struct page *page = list_entry(mapping->locked_pages.next, struct page, list); + + list_del(&page->list); + list_add(&page->list, &mapping->clean_pages); + ++ debug_lock_break(2); ++ if (TEST_LOCK_COUNT(32)) { ++ RESET_LOCK_COUNT(); ++ if (conditional_schedule_needed()) { ++ page_cache_get(page); ++ break_spin_lock_and_resched(&pagecache_lock); ++ page_cache_release(page); ++ goto restart; ++ } ++ } ++ + if (!PageLocked(page)) + continue; + +@@ -869,6 +890,7 @@ + * the hash-list needs a held write-lock. + */ + repeat: ++ break_spin_lock(&pagecache_lock); + page = __find_page_nolock(mapping, offset, hash); + if (page) { + page_cache_get(page); +@@ -2031,6 +2053,8 @@ + address += PAGE_SIZE; + pte++; + } while (address && (address < end)); ++ debug_lock_break(1); ++ break_spin_lock(&vma->vm_mm->page_table_lock); + return error; + } + +@@ -2061,6 +2085,9 @@ + address = (address + PMD_SIZE) & PMD_MASK; + pmd++; + } while (address && (address < end)); ++ ++ debug_lock_break(1); ++ break_spin_lock(&vma->vm_mm->page_table_lock); + return error; + } + +@@ -2438,7 +2465,7 @@ + if (vma->vm_flags & VM_LOCKED) + return -EINVAL; + +- zap_page_range(vma->vm_mm, start, end - start); ++ zap_page_range(vma->vm_mm, start, end - start, ZPR_PARTITION); + return 0; + } + +diff -Nur linux_c860_org/mm/memory.c linux/mm/memory.c +--- linux_c860_org/mm/memory.c 2003-06-18 16:12:29.000000000 +0900 ++++ linux/mm/memory.c 2004-06-10 21:09:11.000000000 +0900 +@@ -384,7 +384,8 @@ + /* + * remove user pages in a given range. + */ +-void zap_page_range(struct mm_struct *mm, unsigned long address, unsigned long size) ++void do_zap_page_range(struct mm_struct *mm, unsigned long address, ++ unsigned long size) + { + unsigned long start = address, end = address + size; + mmu_gather_t *tlb; +@@ -643,6 +644,20 @@ + iobuf->locked = 0; + } + ++void zap_page_range(struct mm_struct *mm, unsigned long address, ++ unsigned long size, int actions) ++{ ++ while (size) { ++ unsigned long chunk = size; ++ ++ if (actions & ZPR_PARTITION && chunk > ZPR_MAX_BYTES) ++ chunk = ZPR_MAX_BYTES; ++ do_zap_page_range(mm, address, chunk); ++ ++ address += chunk; ++ size -= chunk; ++ } ++} + + /* + * Lock down all of the pages of a kiovec for IO. +@@ -752,11 +767,15 @@ + return 0; + } + +-static inline void zeromap_pte_range(pte_t * pte, unsigned long address, +- unsigned long size, pgprot_t prot) ++static inline void zeromap_pte_range(struct mm_struct *mm, pte_t * pte, ++ unsigned long address, unsigned long size, ++ pgprot_t prot) + { + unsigned long end; + ++ debug_lock_break(1); ++ break_spin_lock(&mm->page_table_lock); ++ + address &= ~PMD_MASK; + end = address + size; + if (end > PMD_SIZE) +@@ -784,7 +803,7 @@ + pte_t * pte = pte_alloc(mm, pmd, address); + if (!pte) + return -ENOMEM; +- zeromap_pte_range(pte, address, end - address, prot); ++ zeromap_pte_range(mm, pte, address, end - address, prot); + address = (address + PMD_SIZE) & PMD_MASK; + pmd++; + } while (address && (address < end)); +@@ -1022,7 +1041,7 @@ + + /* mapping wholly truncated? */ + if (mpnt->vm_pgoff >= pgoff) { +- zap_page_range(mm, start, len); ++ zap_page_range(mm, start, len, ZPR_NORMAL); + continue; + } + +@@ -1035,7 +1054,7 @@ + /* Ok, partially affected.. */ + start += diff << PAGE_SHIFT; + len = (len - diff) << PAGE_SHIFT; +- zap_page_range(mm, start, len); ++ zap_page_range(mm, start, len, ZPR_NORMAL); + } while ((mpnt = mpnt->vm_next_share) != NULL); + } + +diff -Nur linux_c860_org/mm/mmap.c linux/mm/mmap.c +--- linux_c860_org/mm/mmap.c 2003-06-18 16:12:29.000000000 +0900 ++++ linux/mm/mmap.c 2004-06-10 21:09:11.000000000 +0900 +@@ -578,7 +578,7 @@ + fput(file); + + /* Undo any partial mapping done by a device driver. */ +- zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start); ++ zap_page_range(mm, vma->vm_start, vma->vm_end - vma->vm_start, ZPR_NORMAL); + free_vma: + kmem_cache_free(vm_area_cachep, vma); + return error; +@@ -978,7 +978,7 @@ + remove_shared_vm_struct(mpnt); + mm->map_count--; + +- zap_page_range(mm, st, size); ++ zap_page_range(mm, st, size, ZPR_PARTITION); + + /* + * Fix the mapping, and free the old area if it wasn't reused. +@@ -1025,6 +1025,9 @@ + if (!len) + return addr; + ++ if ((addr + len) > TASK_SIZE || (addr + len) < addr) ++ return -EINVAL; ++ + /* + * mlock MCL_FUTURE? + */ +diff -Nur linux_c860_org/mm/mremap.c linux/mm/mremap.c +--- linux_c860_org/mm/mremap.c 2002-08-26 14:37:43.000000000 +0900 ++++ linux/mm/mremap.c 2004-06-10 21:09:11.000000000 +0900 +@@ -118,7 +118,7 @@ + flush_cache_range(mm, new_addr, new_addr + len); + while ((offset += PAGE_SIZE) < len) + move_one_page(mm, new_addr + offset, old_addr + offset); +- zap_page_range(mm, new_addr, len); ++ zap_page_range(mm, new_addr, len, ZPR_NORMAL); + return -1; + } + +@@ -236,6 +236,13 @@ + + if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len) + goto out; ++ /* ++ * Allow new_len == 0 only if new_addr == addr ++ * to preserve truncation in place (that was working ++ * safe and some app may depend on it). ++ */ ++ if (unlikely(!new_len && new_addr != addr)) ++ goto out; + + /* Check if the location we're moving into overlaps the + * old location at all, and fail if it does. +@@ -246,16 +253,20 @@ + if ((addr <= new_addr) && (addr+old_len) > new_addr) + goto out; + +- do_munmap(current->mm, new_addr, new_len); ++ ret = do_munmap(current->mm, new_addr, new_len); ++ if (ret && new_len) ++ goto out; + } + + /* + * Always allow a shrinking remap: that just unmaps + * the unnecessary pages.. + */ +- ret = addr; + if (old_len >= new_len) { +- do_munmap(current->mm, addr+new_len, old_len - new_len); ++ ret = do_munmap(current->mm, addr+new_len, old_len - new_len); ++ if (ret && old_len != new_len) ++ goto out; ++ ret = addr; + if (!(flags & MREMAP_FIXED) || (new_addr == addr)) + goto out; + } +diff -Nur linux_c860_org/mm/oom_kill.c linux/mm/oom_kill.c +--- linux_c860_org/mm/oom_kill.c 2003-06-18 16:12:29.000000000 +0900 ++++ linux/mm/oom_kill.c 2004-06-10 21:09:11.000000000 +0900 +@@ -20,6 +20,7 @@ + * 16-Jan-2003 SHARP add VM switch + * 24-Feb-2003 SHARP modify check out of memory function + * 18-Apr-2003 Sharp modify threshold ++ * 05-Aug-2003 SHARP for Tosa + */ + + #include <linux/mm.h> +@@ -237,7 +238,7 @@ + + #if defined(CONFIG_ARCH_SHARP_SL) + #define MIN_KILL_INTERVAL (60*HZ) +-#if defined(CONFIG_ARCH_PXA_SHEPHERD) ++#if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined (CONFIG_ARCH_PXA_TOSA) + #define OOM_KILL_PG_CACHE_SIZE (1280) /* 5MB */ + #define MIN_SIGNAL_PG_CACHE_SIZE (1536) /* 6MB */ + #define LOW_SIGNAL_PG_CACHE_SIZE (2048) /* 8MB */ +diff -Nur linux_c860_org/mm/slab.c linux/mm/slab.c +--- linux_c860_org/mm/slab.c 2002-11-22 21:03:26.000000000 +0900 ++++ linux/mm/slab.c 2004-06-10 21:09:11.000000000 +0900 +@@ -49,7 +49,8 @@ + * constructors and destructors are called without any locking. + * Several members in kmem_cache_t and slab_t never change, they + * are accessed without any locking. +- * The per-cpu arrays are never accessed from the wrong cpu, no locking. ++ * The per-cpu arrays are never accessed from the wrong cpu, no locking, ++ * and local interrupts are disabled so slab code is preempt-safe. + * The non-constant members are protected with a per-cache irq spinlock. + * + * Further notes from the original documentation: +diff -Nur linux_c860_org/mm/swapfile.c linux/mm/swapfile.c +--- linux_c860_org/mm/swapfile.c 2002-08-26 14:37:43.000000000 +0900 ++++ linux/mm/swapfile.c 2004-06-10 21:09:11.000000000 +0900 +@@ -696,6 +696,7 @@ + * interactive performance. Interruptible check on + * signal_pending() would be nice, but changes the spec? + */ ++ debug_lock_break(551); + if (current->need_resched) + schedule(); + } +@@ -1124,6 +1125,13 @@ + if (swap_info[i].flags != SWP_USED) + continue; + for (j = 0; j < swap_info[i].max; ++j) { ++ if (conditional_schedule_needed()) { ++ debug_lock_break(551); ++ swap_list_unlock(); ++ debug_lock_break(551); ++ unconditional_schedule(); ++ swap_list_lock(); ++ } + switch (swap_info[i].swap_map[j]) { + case 0: + case SWAP_MAP_BAD: +diff -Nur linux_c860_org/mm/vmscan.c linux/mm/vmscan.c +--- linux_c860_org/mm/vmscan.c 2003-01-30 18:59:16.000000000 +0900 ++++ linux/mm/vmscan.c 2004-06-10 21:09:11.000000000 +0900 +@@ -170,6 +170,8 @@ + pte_t * pte; + unsigned long pmd_end; + ++ DEFINE_LOCK_COUNT(); ++ + if (pmd_none(*dir)) + return count; + if (pmd_bad(*dir)) { +@@ -194,6 +196,14 @@ + address += PAGE_SIZE; + break; + } ++ /* we reach this with a lock depth of 1 or 2 */ ++#if 0 ++ if (TEST_LOCK_COUNT(4)) { ++ if (conditional_schedule_needed()) ++ return count; ++ RESET_LOCK_COUNT(); ++ } ++#endif + } + } + address += PAGE_SIZE; +@@ -227,6 +237,9 @@ + count = swap_out_pmd(mm, vma, pmd, address, end, count, classzone); + if (!count) + break; ++ /* lock depth can be 1 or 2 */ ++ if (conditional_schedule_needed()) ++ return count; + address = (address + PMD_SIZE) & PMD_MASK; + pmd++; + } while (address && (address < end)); +@@ -252,6 +265,9 @@ + count = swap_out_pgd(mm, vma, pgdir, address, end, count, classzone); + if (!count) + break; ++ /* lock depth can be 1 or 2 */ ++ if (conditional_schedule_needed()) ++ return count; + address = (address + PGDIR_SIZE) & PGDIR_MASK; + pgdir++; + } while (address && (address < end)); +@@ -274,6 +290,8 @@ + * and ptes. + */ + spin_lock(&mm->page_table_lock); ++ ++continue_scan: + address = mm->swap_address; + if (address == TASK_SIZE || swap_mm != mm) { + /* We raced: don't count this mm but try again */ +@@ -290,6 +308,13 @@ + vma = vma->vm_next; + if (!vma) + break; ++ /* we reach this with a lock depth of 1 and 2 */ ++#if 0 ++ if (conditional_schedule_needed()) { ++ break_spin_lock(&mm->page_table_lock); ++ goto continue_scan; ++ } ++#endif + if (!count) + goto out_unlock; + address = vma->vm_start; +@@ -311,6 +336,7 @@ + + counter = mmlist_nr; + do { ++ /* lock depth can be 0 or 1 */ + if (unlikely(current->need_resched)) { + __set_current_state(TASK_RUNNING); + schedule(); +@@ -356,6 +382,7 @@ + while (--max_scan >= 0 && (entry = inactive_list.prev) != &inactive_list) { + struct page * page; + ++ /* lock depth is 1 or 2 */ + if (unlikely(current->need_resched)) { + spin_unlock(&pagemap_lru_lock); + __set_current_state(TASK_RUNNING); +@@ -673,8 +700,11 @@ + + for (i = pgdat->nr_zones-1; i >= 0; i--) { + zone = pgdat->node_zones + i; ++ debug_lock_break(0); ++#ifndef CONFIG_PREEMPT + if (unlikely(current->need_resched)) + schedule(); ++#endif + if (!zone->need_balance) + continue; + if (!try_to_free_pages(zone, GFP_KSWAPD, 0)) { +diff -Nur linux_c860_org/net/core/dev.c linux/net/core/dev.c +--- linux_c860_org/net/core/dev.c 2002-08-26 14:42:28.000000000 +0900 ++++ linux/net/core/dev.c 2004-06-10 21:09:11.000000000 +0900 +@@ -1033,9 +1033,15 @@ + int cpu = smp_processor_id(); + + if (dev->xmit_lock_owner != cpu) { ++ /* ++ * The spin_lock effectivly does a preempt lock, but ++ * we are about to drop that... ++ */ ++ preempt_disable(); + spin_unlock(&dev->queue_lock); + spin_lock(&dev->xmit_lock); + dev->xmit_lock_owner = cpu; ++ preempt_enable(); + + if (!netif_queue_stopped(dev)) { + if (netdev_nit) +diff -Nur linux_c860_org/net/core/skbuff.c linux/net/core/skbuff.c +--- linux_c860_org/net/core/skbuff.c 2002-08-26 14:42:28.000000000 +0900 ++++ linux/net/core/skbuff.c 2004-06-10 21:09:11.000000000 +0900 +@@ -111,33 +111,37 @@ + + static __inline__ struct sk_buff *skb_head_from_pool(void) + { +- struct sk_buff_head *list = &skb_head_pool[smp_processor_id()].list; ++ struct sk_buff_head *list; ++ struct sk_buff *skb = NULL; ++ unsigned long flags; + +- if (skb_queue_len(list)) { +- struct sk_buff *skb; +- unsigned long flags; ++ local_irq_save(flags); + +- local_irq_save(flags); ++ list = &skb_head_pool[smp_processor_id()].list; ++ ++ if (skb_queue_len(list)) + skb = __skb_dequeue(list); +- local_irq_restore(flags); +- return skb; +- } +- return NULL; ++ ++ local_irq_restore(flags); ++ return skb; + } + + static __inline__ void skb_head_to_pool(struct sk_buff *skb) + { +- struct sk_buff_head *list = &skb_head_pool[smp_processor_id()].list; ++ struct sk_buff_head *list; ++ unsigned long flags; + +- if (skb_queue_len(list) < sysctl_hot_list_len) { +- unsigned long flags; ++ local_irq_save(flags); ++ list = &skb_head_pool[smp_processor_id()].list; + +- local_irq_save(flags); ++ if (skb_queue_len(list) < sysctl_hot_list_len) { + __skb_queue_head(list, skb); + local_irq_restore(flags); + + return; + } ++ ++ local_irq_restore(flags); + kmem_cache_free(skbuff_head_cache, skb); + } + +diff -Nur linux_c860_org/net/irda/irlmp.c linux/net/irda/irlmp.c +--- linux_c860_org/net/irda/irlmp.c 2003-01-10 15:02:41.000000000 +0900 ++++ linux/net/irda/irlmp.c 2004-06-10 21:09:11.000000000 +0900 +@@ -24,6 +24,8 @@ + * + * ChangeLog: + * 11-20-2002 SHARP apply patch (fix small bugs in /proc) ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * + ********************************************************************/ + + #include <linux/config.h> +@@ -769,6 +771,14 @@ + nslots = sysctl_discovery_slots = 8; + } + ++#if defined(CONFIG_ARCH_SHARP_SL) ++ /* ++ * Clear the passive discovery retry flag. ++ * modified by SHARP ++ */ ++ irlmp->discovery_retry = FALSE; ++#endif ++ + /* Construct new discovery info to be used by IrLAP, */ + irlmp->discovery_cmd.hints.word = irlmp->hints.word; + +diff -Nur linux_c860_org/net/irda/irlmp_event.c linux/net/irda/irlmp_event.c +--- linux_c860_org/net/irda/irlmp_event.c 2002-08-29 12:25:13.000000000 +0900 ++++ linux/net/irda/irlmp_event.c 2004-06-10 21:09:11.000000000 +0900 +@@ -22,6 +22,9 @@ + * provide warranty for any of this software. This material is + * provided "AS-IS" and at no charge. + * ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * + ********************************************************************/ + + #include <linux/config.h> +@@ -178,6 +181,16 @@ + /* Active discovery is conditional */ + if (sysctl_discovery) + irlmp_do_discovery(sysctl_discovery_slots); ++#if defined(CONFIG_ARCH_SHARP_SL) ++ else if (( irlmp != NULL )&&( irlmp->discovery_retry )){ ++ /* ++ * Retry discovery at passive mode, if it hasn't been done ++ * because of the media busy. ++ * modified by SHARP ++ */ ++ irlmp_do_discovery(sysctl_discovery_slots); ++ } ++#endif + + /* Restart timer */ + irlmp_start_discovery_timer(irlmp, sysctl_discovery_timeout * HZ); +diff -Nur linux_c860_org/net/irda/irlmp_frame.c linux/net/irda/irlmp_frame.c +--- linux_c860_org/net/irda/irlmp_frame.c 2002-08-29 12:25:13.000000000 +0900 ++++ linux/net/irda/irlmp_frame.c 2004-06-10 21:09:11.000000000 +0900 +@@ -22,6 +22,9 @@ + * provide warranty for any of this software. This material is + * provided "AS-IS" and at no charge. + * ++ * ChangeLog: ++ * 1-Nov-2003 Sharp Corporation for Tosa ++ * + ********************************************************************/ + + #include <linux/config.h> +@@ -397,6 +400,16 @@ + ASSERT(self->magic == LMP_LAP_MAGIC, return;); + + irlmp_add_discovery_log(irlmp->cachelog, log); ++#if defined(CONFIG_ARCH_SHARP_SL) ++ /* ++ * Retry discovery at passive mode, if it hasn't been done ++ * because of the media busy. ++ * modified by SHARP ++ */ ++ if(( log == NULL )&&( irlmp != NULL )){ ++ irlmp->discovery_retry = TRUE; ++ } ++#endif + + /* Propagate event to various LSAPs registered for it. + * We bypass the LM_LAP state machine because +diff -Nur linux_c860_org/net/socket.c linux/net/socket.c +--- linux_c860_org/net/socket.c 2002-08-29 12:25:05.000000000 +0900 ++++ linux/net/socket.c 2004-06-10 21:09:11.000000000 +0900 +@@ -140,7 +140,7 @@ + + static struct net_proto_family *net_families[NPROTO]; + +-#ifdef CONFIG_SMP ++#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) + static atomic_t net_family_lockct = ATOMIC_INIT(0); + static spinlock_t net_family_lock = SPIN_LOCK_UNLOCKED; + +diff -Nur linux_c860_org/net/sunrpc/pmap_clnt.c linux/net/sunrpc/pmap_clnt.c +--- linux_c860_org/net/sunrpc/pmap_clnt.c 2002-08-26 14:38:06.000000000 +0900 ++++ linux/net/sunrpc/pmap_clnt.c 2004-06-10 21:09:11.000000000 +0900 +@@ -12,6 +12,7 @@ + #include <linux/config.h> + #include <linux/types.h> + #include <linux/socket.h> ++#include <linux/sched.h> + #include <linux/kernel.h> + #include <linux/errno.h> + #include <linux/uio.h> diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch new file mode 100644 index 0000000000..fafdf32e55 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/sharpsl_battery.patch @@ -0,0 +1,346 @@ +--- linux-orig/arch/arm/mach-pxa/sharpsl_battery.c 2004-02-18 23:41:57.000000000 +0300 ++++ linux/arch/arm/mach-pxa/sharpsl_battery.c 2004-02-24 06:21:56.000000000 +0300 +@@ -197,7 +197,7 @@ + #define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT 1 // 10msec + #define SHARPSL_CHECK_BATTERY_WAIT_TIME_JKVAD 1 // 10msec + #define SHARPSL_CORGI_FATAL_ACIN_VOLT 182 // 3.45V +-#define SHARPSL_CORGI_FATAL_NOACIN_VOLT 179 // 3.40V ++#define SHARPSL_CORGI_FATAL_NOACIN_VOLT 170 // 3.40V + #define SHARPSL_CORGI_WAIT_CO_TIME 15 // 15 Sec + //NOTICE !! you want to change this value , so you must change + // alarm check mirgin time ( +30 ) in the sharpsl_power.c. +@@ -245,10 +245,17 @@ + BATTERY_THRESH *GetMainLevel( int Volt ); + int sharpsl_get_main_battery(void); + int suspend_sharpsl_read_Voltage(void); ++int GetMainPercent(int); + int GetMainChargePercent(int); + int Get_DAC_Value(int); + int sharpsl_check_battery(int mode); + ++// remove warnings ++static int sharpsl_battery_thread_main(void); ++int handle_scancode(int, int); ++int sharpsl_ac_check(void); ++void sharpsl_charge_err_off(void); ++ + /*** extern ***********************************************************************/ + extern u32 apm_wakeup_src_mask; + #if defined(CONFIG_ARCH_PXA_POODLE) || defined(CONFIG_ARCH_PXA_CORGI) +@@ -269,7 +276,6 @@ + + /*** variables ********************************************************************/ + +- + #if defined(CONFIG_ARCH_PXA_POODLE) + + BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = { +@@ -293,20 +299,26 @@ + #elif defined(CONFIG_ARCH_PXA_CORGI) + + BATTERY_THRESH sharpsl_main_battery_thresh_fl[] = { +- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH}, +- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 194, 90, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 188, 70, SHARPSL_BATTERY_STATUS_HIGH}, + { 184, 50, SHARPSL_BATTERY_STATUS_HIGH}, + { 180, 25, SHARPSL_BATTERY_STATUS_LOW}, +- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 174, 10, SHARPSL_BATTERY_STATUS_LOW}, ++ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, + { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, + }; + + BATTERY_THRESH sharpsl_main_battery_thresh_nofl[] = { +- { 194, 100, SHARPSL_BATTERY_STATUS_HIGH}, +- { 188, 75, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 194, 90, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 188, 70, SHARPSL_BATTERY_STATUS_HIGH}, + { 184, 50, SHARPSL_BATTERY_STATUS_HIGH}, + { 180, 25, SHARPSL_BATTERY_STATUS_LOW}, +- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 174, 10, SHARPSL_BATTERY_STATUS_LOW}, ++ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, + { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, + }; + #endif +@@ -332,25 +344,36 @@ + #elif defined(CONFIG_ARCH_PXA_CORGI) + + BATTERY_THRESH sharpsl_main_battery_thresh_charge_fl[] = { +- { 200, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 200, 95, SHARPSL_BATTERY_STATUS_HIGH}, + { 196, 75, SHARPSL_BATTERY_STATUS_HIGH}, + { 192, 50, SHARPSL_BATTERY_STATUS_HIGH}, + { 187, 25, SHARPSL_BATTERY_STATUS_LOW}, +- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 182, 10, SHARPSL_BATTERY_STATUS_LOW}, ++ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, + { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, + }; + + BATTERY_THRESH sharpsl_main_battery_thresh_charge_nofl[] = { +- { 200, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 999, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 210, 100, SHARPSL_BATTERY_STATUS_HIGH}, ++ { 200, 95, SHARPSL_BATTERY_STATUS_HIGH}, + { 196, 75, SHARPSL_BATTERY_STATUS_HIGH}, + { 192, 50, SHARPSL_BATTERY_STATUS_HIGH}, + { 187, 25, SHARPSL_BATTERY_STATUS_LOW}, +- { 171, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, ++ { 182, 10, SHARPSL_BATTERY_STATUS_LOW}, ++ { 170, 5, SHARPSL_BATTERY_STATUS_VERYLOW}, + { 0, 0, SHARPSL_BATTERY_STATUS_CRITICAL}, + }; + + #endif + ++//#if defined(CONFIG_ARCH_PXA_CORGI) ++#define MAIN_BATTERY_THRES (sizeof(sharpsl_main_battery_thresh_charge_nofl) / sizeof(BATTERY_THRESH) - 1) ++//#endif ++ ++ + #if 1 + static struct file_operations sharpsl_battery_fops = { + }; +@@ -389,6 +412,8 @@ + int sharpsl_main_battery = SHARPSL_BATTERY_STATUS_HIGH; + int sharpsl_main_battery_percentage = 100; + int sharpsl_main_charge_battery = 100; ++int sharpsl_main_battery_voltage = 200; ++ + int sharpsl_ac_status = APM_AC_OFFLINE; + + static int MainCntWk = SHARPSL_MAIN_GOOD_COUNT; +@@ -498,7 +523,7 @@ + // 2 : check battery w/ refresh battery status. + void sharpsl_kick_battery_check(int before_waitms,int after_waitms,int flag) + { +- int start; ++ //int start; + + + MainCntWk = MainCnt + 1; +@@ -604,6 +629,7 @@ + } + #endif + ++ return 0; + } + + +@@ -920,13 +946,17 @@ + #endif + + voltage = sharpsl_cnv_value(voltage); +- ++ sharpsl_main_battery_voltage = voltage; ++ + thresh = GetMainLevel(voltage); + ++ sharpsl_main_battery = thresh->status; ++ sharpsl_main_battery_percentage = GetMainPercent(voltage); ++ sharpsl_main_charge_battery = GetMainChargePercent(voltage); ++ + // if battery is low , backlight driver become to save power. + if ( ( ( thresh->status == SHARPSL_BATTERY_STATUS_VERYLOW ) || +- ( thresh->status == SHARPSL_BATTERY_STATUS_CRITICAL ) || +- ( thresh->status == SHARPSL_BATTERY_STATUS_LOW ) ) && ++ ( thresh->status == SHARPSL_BATTERY_STATUS_CRITICAL )) && + ( !sharpsl_main_bk_flag ) ) { + SHARPSL_LIMIT_CONTRAST(SHARPSL_CAUTION_CONTRAST); + } +@@ -934,11 +964,7 @@ + if ( sharpsl_main_bk_flag == 0 ) { + return sharpsl_main_battery; + } +- sharpsl_main_battery = thresh->status; +- sharpsl_main_battery_percentage = thresh->percentage; +- sharpsl_main_charge_battery = GetMainChargePercent(voltage); +- +- //printk("bat : main battery = %d\n",sharpsl_main_battery); ++ + + if ( sharpsl_debug_flag != 0 ) { + int i; +@@ -946,7 +972,8 @@ + sharpsl_main_battery = sharpsl_debug_flag; + for (i = 0; sharpsl_main_battery_thresh_nofl[i].voltage > 0; i++) { + if ( sharpsl_debug_flag == sharpsl_main_battery_thresh_nofl[i].status ) { +- sharpsl_main_battery_percentage = sharpsl_main_battery_thresh_nofl[i].percentage; ++ //sharpsl_main_battery_percentage = sharpsl_main_battery_thresh_nofl[i].percentage; ++ sharpsl_main_battery_percentage = GetMainPercent(voltage); + break; + } + } +@@ -965,7 +992,7 @@ + sharpsl_main_battery_percentage = sharpsl_main_percent_bk; + } + +- DPRINTK2("charge percent = %d ( at %d ) \n",sharpsl_main_charge_battery,(int)jiffies); ++ //DPRINTK2("charge percent = %d ( at %d ) \n",sharpsl_main_charge_battery,(int)jiffies); + DPRINTK(" get Main battery status %d\n",sharpsl_main_battery); + + } else { +@@ -975,40 +1002,79 @@ + return sharpsl_main_battery; + } + +-int GetMainChargePercent( int Volt ) ++int GetLevelIndex(BATTERY_THRESH *thresh, int Volt) ++{ ++ int i = MAIN_BATTERY_THRES; ++ ++ DPRINTK("volt = %d \n", Volt); ++ while (i > 0 && (Volt > thresh[i].voltage)) ++ i--; ++ ++ return i; ++} ++ ++int GetPercent(BATTERY_THRESH *thresh, int Volt) ++{ ++ int i = GetLevelIndex(thresh, Volt); ++ ++ /* i is now between 0 and MAIN_BATTERY_THRES. That means ++ * we can safely access main_batt_thres[i] and ++ * main_batt_thres[i+1] */ ++ ++ { ++// long percentage = thresh[i].percentage; ++ ++ long deltav = thresh[i].voltage - thresh[i + 1].voltage; ++ long deltap = thresh[i].percentage - thresh[i + 1].percentage; ++ ++ long percentage = ++ thresh[i + 1].percentage + ++ deltap * (Volt - thresh[i + 1].voltage) / ++ deltav; ++ ++ DPRINTK("percentage = %d \n", percentage); ++ return percentage; ++ } ++ ++ return thresh[i].percentage; ++} ++ ++int GetMainPercent( int Volt ) + { +- int i; + BATTERY_THRESH *thresh; + +- DPRINTK(" volt = %d \n",Volt); ++ if (counter_step_contrast) ++ thresh = sharpsl_main_battery_thresh_fl; ++ else ++ thresh = sharpsl_main_battery_thresh_nofl; ++ ++ return GetPercent(thresh, Volt); ++} ++ ++int GetMainChargePercent( int Volt ) ++{ ++ BATTERY_THRESH *thresh; + + if (counter_step_contrast) +- thresh = sharpsl_main_battery_thresh_charge_fl; ++ thresh = sharpsl_main_battery_thresh_charge_fl; + else +- thresh = sharpsl_main_battery_thresh_charge_nofl; +- for (i = 0; thresh[i].voltage > 0; i++) { +- if (Volt >= thresh[i].voltage) +- return thresh[i].percentage; +- } +- return thresh[i].percentage; ++ thresh = sharpsl_main_battery_thresh_charge_nofl; ++ ++ return GetPercent(thresh, Volt); + } + + BATTERY_THRESH *GetMainLevel( int Volt ) + { +- int i; + BATTERY_THRESH *thresh; + + DPRINTK(" volt = %d \n",Volt); + + if (counter_step_contrast) +- thresh = sharpsl_main_battery_thresh_fl; ++ thresh = sharpsl_main_battery_thresh_fl; + else +- thresh = sharpsl_main_battery_thresh_nofl; +- for (i = 0; thresh[i].voltage > 0; i++) { +- if (Volt >= thresh[i].voltage) +- return &thresh[i]; +- } +- return &thresh[i]; ++ thresh = sharpsl_main_battery_thresh_nofl; ++ ++ return &thresh[GetLevelIndex(thresh, Volt)]; + } + + +@@ -1018,7 +1084,7 @@ + int Get_DAC_Value(int channel) + { + unsigned long cmd; +- unsigned int dummy; ++ unsigned int dummy; + int voltage; + + #if defined(CONFIG_ARCH_PXA_POODLE) +@@ -1263,7 +1329,7 @@ + // 0: OK + int sharpsl_ac_check(void) + { +- int temp, i, volt; ++ int temp, i; //, volt; + int buff[5]; + + if ( in_interrupt() ) { +@@ -1835,14 +1901,18 @@ + int def_value; + char* name; + char* description; ++ char readonly; + unsigned short low_ino; + } sharpsl_battery_entry_t; + + static sharpsl_battery_entry_t sharpsl_battery_params[] = { + /* { addr, def_value, name, description }*/ +- { &msglevel, 0, "msglevel", "debug message output level" }, +- { &sharpsl_debug_flag , 0 , "dflag", "debug flag" }, +- { &sharpsl_change_battery_status , 0 , "chg_status", "Change status" } ++ { &msglevel, 0, "msglevel", "debug message output level", 0 }, ++ { &sharpsl_debug_flag , 0 , "dflag", "debug flag", 0 }, ++ { &sharpsl_change_battery_status , 0 , "chg_status", "Change status", 1 }, ++ { &sharpsl_main_battery_percentage , 0 , "charge_percentage", "Charge percentage", 1 }, ++ { &sharpsl_main_battery_voltage , 0 , "main_voltage", "Main voltage", 1 }, // alias ++ { &sharpsl_main_battery_voltage , 0 , "charge_voltage", "Charge voltage", 1 } + }; + #define NUM_OF_BATTERY_ENTRY (sizeof(sharpsl_battery_params)/sizeof(sharpsl_battery_entry_t)) + +@@ -1866,7 +1936,7 @@ + if (current_param==NULL) { + return -EINVAL; + } +- count = sprintf(outputbuf, "0x%08X\n", ++ count = sprintf(outputbuf, "%04i\n", + *((volatile Word *) current_param->addr)); + *ppos += count; + if (count>nbytes) /* Assume output can be read at one time */ +@@ -1891,7 +1961,7 @@ + break; + } + } +- if (current_param==NULL) { ++ if (current_param==NULL || current_param->readonly) { + return -EINVAL; + } + diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff new file mode 100644 index 0000000000..bcf3734f63 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/smallfonts.diff @@ -0,0 +1,2453 @@ +diff -Nur linux-2.4.1-pre12/drivers/video/font_4x6.c linux-2.4.1-pre12.smallfonts/drivers/video/font_4x6.c +--- linux-2.4.1-pre12/drivers/video/font_4x6.c Wed Dec 31 17:00:00 1969 ++++ linux-2.4.1-pre12.smallfonts/drivers/video/font_4x6.c Tue Jan 30 14:17:15 2001 +@@ -0,0 +1,1059 @@ ++/* Font file generated by Jay Carlson from clR4x6.bdf */ ++ ++/* ++COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org ++COMMENT 399 Beacon Ave. ++COMMENT St. Paul, MN 55104-3527 ++COMMENT ++COMMENT Permission to use, copy, modify, and distribute this software and ++COMMENT its documentation for any purpose and without fee is hereby ++COMMENT granted, provided that the above copyright notice appear in all ++COMMENT copies and that both that copyright notice and this permission ++COMMENT notice appear in supporting documentation, and that the name of ++COMMENT Dale Schumacher not be used in advertising or publicity pertaining to ++COMMENT distribution of the software without specific, written prior ++COMMENT permission. Dale Schumacher makes no representations about the ++COMMENT suitability of this software for any purpose. It is provided "as ++COMMENT is" without express or implied warranty. ++*/ ++ ++#include <video/font.h> ++ ++#define FONTDATAMAX (6 * 256) ++ ++static unsigned char fontdata_4x6[FONTDATAMAX] = { ++ ++ /* 0 0x00 C000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0xf0, /* 11110000 */ ++ ++ /* 1 0x01 C001 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 2 0x02 C002 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 3 0x03 C003 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 4 0x04 C004 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 5 0x05 C005 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 6 0x06 C006 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 7 0x07 C007 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 8 0x08 C010 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 9 0x09 C011 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 10 0x0a C012 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 11 0x0b C013 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 12 0x0c C014 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 13 0x0d C015 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 14 0x0e C016 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 15 0x0f C017 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 16 0x10 C020 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 17 0x11 C021 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 18 0x12 C022 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 19 0x13 C023 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 20 0x14 C024 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 21 0x15 C025 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 22 0x16 C026 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 23 0x17 C027 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 24 0x18 C030 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 25 0x19 C031 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 26 0x1a C032 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 27 0x1b C033 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 28 0x1c C034 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 29 0x1d C035 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 30 0x1e C036 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 31 0x1f C037 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 32 0x20 C040 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 33 0x21 ! */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 34 0x22 " */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 35 0x23 # */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 36 0x24 $ */ ++ 0xe0, /* 11100000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 37 0x25 % */ ++ 0xa0, /* 10100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x80, /* 10000000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 38 0x26 & */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 39 0x27 ' */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 40 0x28 ( */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 41 0x29 ) */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 42 0x2a * */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 43 0x2b + */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 44 0x2c , */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 45 0x2d - */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 46 0x2e . */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 47 0x2f / */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 48 0x30 0 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 49 0x31 1 */ ++ 0x40, /* 01000000 */ ++ 0xc0, /* 11000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 50 0x32 2 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 51 0x33 3 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 52 0x34 4 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 53 0x35 5 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 54 0x36 6 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 55 0x37 7 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 56 0x38 8 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 57 0x39 9 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 58 0x3a : */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 59 0x3b ; */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 60 0x3c < */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x80, /* 10000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 61 0x3d = */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 62 0x3e > */ ++ 0x80, /* 10000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 63 0x3f ? */ ++ 0xc0, /* 11000000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 64 0x40 @ */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 65 0x41 A */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 66 0x42 B */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 67 0x43 C */ ++ 0x60, /* 01100000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 68 0x44 D */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 69 0x45 E */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 70 0x46 F */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 71 0x47 G */ ++ 0x60, /* 01100000 */ ++ 0x80, /* 10000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 72 0x48 H */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 73 0x49 I */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 74 0x4a J */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 75 0x4b K */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 76 0x4c L */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 77 0x4d M */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 78 0x4e N */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 79 0x4f O */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 80 0x50 P */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 81 0x51 Q */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 82 0x52 R */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 83 0x53 S */ ++ 0x60, /* 01100000 */ ++ 0x80, /* 10000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 84 0x54 T */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 85 0x55 U */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 86 0x56 V */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 87 0x57 W */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 88 0x58 X */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 89 0x59 Y */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 90 0x5a Z */ ++ 0xe0, /* 11100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x80, /* 10000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 91 0x5b [ */ ++ 0x60, /* 01100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 92 0x5c \ */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 93 0x5d ] */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 94 0x5e ^ */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 95 0x5f _ */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 96 0x60 ` */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 97 0x61 a */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 98 0x62 b */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 99 0x63 c */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 100 0x64 d */ ++ 0x20, /* 00100000 */ ++ 0x60, /* 01100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 101 0x65 e */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 102 0x66 f */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 103 0x67 g */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0xc0, /* 11000000 */ ++ ++ /* 104 0x68 h */ ++ 0x80, /* 10000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 105 0x69 i */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 106 0x6a j */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ ++ /* 107 0x6b k */ ++ 0x80, /* 10000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 108 0x6c l */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 109 0x6d m */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 110 0x6e n */ ++ 0x00, /* 00000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 111 0x6f o */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 112 0x70 p */ ++ 0x00, /* 00000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0xc0, /* 11000000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ ++ /* 113 0x71 q */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ ++ /* 114 0x72 r */ ++ 0x00, /* 00000000 */ ++ 0xc0, /* 11000000 */ ++ 0xa0, /* 10100000 */ ++ 0x80, /* 10000000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 115 0x73 s */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 116 0x74 t */ ++ 0x40, /* 01000000 */ ++ 0xe0, /* 11100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 117 0x75 u */ ++ 0x00, /* 00000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 118 0x76 v */ ++ 0x00, /* 00000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 119 0x77 w */ ++ 0x00, /* 00000000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 120 0x78 x */ ++ 0x00, /* 00000000 */ ++ 0xa0, /* 10100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 121 0x79 y */ ++ 0x00, /* 00000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0xc0, /* 11000000 */ ++ ++ /* 122 0x7a z */ ++ 0x00, /* 00000000 */ ++ 0xe0, /* 11100000 */ ++ 0x60, /* 01100000 */ ++ 0xc0, /* 11000000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 123 0x7b { */ ++ 0x60, /* 01100000 */ ++ 0x40, /* 01000000 */ ++ 0xc0, /* 11000000 */ ++ 0x40, /* 01000000 */ ++ 0x60, /* 01100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 124 0x7c | */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 125 0x7d } */ ++ 0xc0, /* 11000000 */ ++ 0x40, /* 01000000 */ ++ 0x60, /* 01100000 */ ++ 0x40, /* 01000000 */ ++ 0xc0, /* 11000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 126 0x7e ~ */ ++ 0x20, /* 00100000 */ ++ 0xe0, /* 11100000 */ ++ 0x80, /* 10000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 127 0x7f C177 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0xa0, /* 10100000 */ ++ 0xa0, /* 10100000 */ ++ 0xe0, /* 11100000 */ ++ 0x00, /* 00000000 */ ++ ++}; ++ ++struct fbcon_font_desc font_clean_4x6 = { ++ CLEAN4x6_IDX, ++ "Clean4x6", ++ 4, ++ 6, ++ fontdata_4x6, ++ -1000 /* Try avoiding this font if possible unless screen really small */ ++}; +diff -Nur linux-2.4.1-pre12/drivers/video/font_5x8.c linux-2.4.1-pre12.smallfonts/drivers/video/font_5x8.c +--- linux-2.4.1-pre12/drivers/video/font_5x8.c Wed Dec 31 17:00:00 1969 ++++ linux-2.4.1-pre12.smallfonts/drivers/video/font_5x8.c Tue Jan 30 14:17:16 2001 +@@ -0,0 +1,1314 @@ ++/* Font file generated by Jay Carlson from clR5x8.bdf */ ++ ++/* ++COMMENT Copyright 1989 Dale Schumacher, dal@syntel.mn.org ++COMMENT 399 Beacon Ave. ++COMMENT St. Paul, MN 55104-3527 ++COMMENT ++COMMENT Permission to use, copy, modify, and distribute this software and ++COMMENT its documentation for any purpose and without fee is hereby ++COMMENT granted, provided that the above copyright notice appear in all ++COMMENT copies and that both that copyright notice and this permission ++COMMENT notice appear in supporting documentation, and that the name of ++COMMENT Dale Schumacher not be used in advertising or publicity pertaining to ++COMMENT distribution of the software without specific, written prior ++COMMENT permission. Dale Schumacher makes no representations about the ++COMMENT suitability of this software for any purpose. It is provided "as ++COMMENT is" without express or implied warranty. ++*/ ++ ++#include <video/font.h> ++ ++#define FONTDATAMAX (8 * 256) ++ ++static unsigned char fontdata_5x8[FONTDATAMAX] = { ++ ++ /* 0 0x00 C000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 1 0x01 C001 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 2 0x02 C002 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 3 0x03 C003 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 4 0x04 C004 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 5 0x05 C005 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 6 0x06 C006 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 7 0x07 C007 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x40, /* 01000000 */ ++ 0x58, /* 01011000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 8 0x08 C010 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 9 0x09 C011 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 10 0x0a C012 */ ++ 0x00, /* 00000000 */ ++ 0x18, /* 00011000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 11 0x0b C013 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x50, /* 01010000 */ ++ 0x60, /* 01100000 */ ++ 0x50, /* 01010000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 12 0x0c C014 */ ++ 0x00, /* 00000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 13 0x0d C015 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 14 0x0e C016 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x68, /* 01101000 */ ++ 0x58, /* 01011000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 15 0x0f C017 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 16 0x10 C020 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 17 0x11 C021 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 18 0x12 C022 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x50, /* 01010000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 19 0x13 C023 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x40, /* 01000000 */ ++ 0x30, /* 00110000 */ ++ 0x08, /* 00001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 20 0x14 C024 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 21 0x15 C025 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 22 0x16 C026 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 23 0x17 C027 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 24 0x18 C030 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 25 0x19 C031 */ ++ 0x00, /* 00000000 */ ++ 0x88, /* 10001000 */ ++ 0x50, /* 01010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 26 0x1a C032 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 27 0x1b C033 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 28 0x1c C034 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 29 0x1d C035 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 30 0x1e C036 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 31 0x1f C037 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 32 0x20 C040 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 33 0x21 ! */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 34 0x22 " */ ++ 0x28, /* 00101000 */ ++ 0x28, /* 00101000 */ ++ 0x28, /* 00101000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 35 0x23 # */ ++ 0x50, /* 01010000 */ ++ 0x50, /* 01010000 */ ++ 0xf8, /* 11111000 */ ++ 0x50, /* 01010000 */ ++ 0xf8, /* 11111000 */ ++ 0x50, /* 01010000 */ ++ 0x50, /* 01010000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 36 0x24 $ */ ++ 0x20, /* 00100000 */ ++ 0x78, /* 01111000 */ ++ 0xa0, /* 10100000 */ ++ 0x70, /* 01110000 */ ++ 0x28, /* 00101000 */ ++ 0xf0, /* 11110000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 37 0x25 % */ ++ 0x60, /* 01100000 */ ++ 0x68, /* 01101000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x58, /* 01011000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 38 0x26 & */ ++ 0x30, /* 00110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x28, /* 00101000 */ ++ 0x50, /* 01010000 */ ++ 0x50, /* 01010000 */ ++ 0x28, /* 00101000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 39 0x27 ' */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 40 0x28 ( */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x08, /* 00001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 41 0x29 ) */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 42 0x2a * */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x78, /* 01111000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 43 0x2b + */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0xf8, /* 11111000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 44 0x2c , */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ ++ /* 45 0x2d - */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 46 0x2e . */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 47 0x2f / */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ ++ /* 48 0x30 0 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x58, /* 01011000 */ ++ 0x68, /* 01101000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 49 0x31 1 */ ++ 0x20, /* 00100000 */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 50 0x32 2 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 51 0x33 3 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x08, /* 00001000 */ ++ 0x30, /* 00110000 */ ++ 0x08, /* 00001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 52 0x34 4 */ ++ 0x08, /* 00001000 */ ++ 0x18, /* 00011000 */ ++ 0x18, /* 00011000 */ ++ 0x28, /* 00101000 */ ++ 0x28, /* 00101000 */ ++ 0x78, /* 01111000 */ ++ 0x08, /* 00001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 53 0x35 5 */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 54 0x36 6 */ ++ 0x30, /* 00110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 55 0x37 7 */ ++ 0x78, /* 01111000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 56 0x38 8 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 57 0x39 9 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 58 0x3a : */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 59 0x3b ; */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ ++ /* 60 0x3c < */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x08, /* 00001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 61 0x3d = */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 62 0x3e > */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 63 0x3f ? */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 64 0x40 @ */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x58, /* 01011000 */ ++ 0x58, /* 01011000 */ ++ 0x40, /* 01000000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 65 0x41 A */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 66 0x42 B */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 67 0x43 C */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 68 0x44 D */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 69 0x45 E */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 70 0x46 F */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 71 0x47 G */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x40, /* 01000000 */ ++ 0x58, /* 01011000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 72 0x48 H */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 73 0x49 I */ ++ 0x70, /* 01110000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 74 0x4a J */ ++ 0x18, /* 00011000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 75 0x4b K */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x50, /* 01010000 */ ++ 0x60, /* 01100000 */ ++ 0x50, /* 01010000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 76 0x4c L */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 77 0x4d M */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 78 0x4e N */ ++ 0x48, /* 01001000 */ ++ 0x68, /* 01101000 */ ++ 0x68, /* 01101000 */ ++ 0x58, /* 01011000 */ ++ 0x58, /* 01011000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 79 0x4f O */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 80 0x50 P */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 81 0x51 Q */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x18, /* 00011000 */ ++ ++ /* 82 0x52 R */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x50, /* 01010000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 83 0x53 S */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x40, /* 01000000 */ ++ 0x30, /* 00110000 */ ++ 0x08, /* 00001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 84 0x54 T */ ++ 0xf8, /* 11111000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 85 0x55 U */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 86 0x56 V */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 87 0x57 W */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x78, /* 01111000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 88 0x58 X */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 89 0x59 Y */ ++ 0x88, /* 10001000 */ ++ 0x88, /* 10001000 */ ++ 0x50, /* 01010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 90 0x5a Z */ ++ 0x78, /* 01111000 */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 91 0x5b [ */ ++ 0x38, /* 00111000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 92 0x5c \ */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ ++ /* 93 0x5d ] */ ++ 0x70, /* 01110000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 94 0x5e ^ */ ++ 0x20, /* 00100000 */ ++ 0x50, /* 01010000 */ ++ 0x88, /* 10001000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 95 0x5f _ */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xf8, /* 11111000 */ ++ ++ /* 96 0x60 ` */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 97 0x61 a */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x58, /* 01011000 */ ++ 0x28, /* 00101000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 98 0x62 b */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 99 0x63 c */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 100 0x64 d */ ++ 0x08, /* 00001000 */ ++ 0x08, /* 00001000 */ ++ 0x38, /* 00111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 101 0x65 e */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x78, /* 01111000 */ ++ 0x40, /* 01000000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 102 0x66 f */ ++ 0x18, /* 00011000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x70, /* 01110000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 103 0x67 g */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x08, /* 00001000 */ ++ 0x30, /* 00110000 */ ++ ++ /* 104 0x68 h */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 105 0x69 i */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 106 0x6a j */ ++ 0x10, /* 00010000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x60, /* 01100000 */ ++ ++ /* 107 0x6b k */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x48, /* 01001000 */ ++ 0x50, /* 01010000 */ ++ 0x60, /* 01100000 */ ++ 0x50, /* 01010000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 108 0x6c l */ ++ 0x60, /* 01100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 109 0x6d m */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0xd0, /* 11010000 */ ++ 0xa8, /* 10101000 */ ++ 0xa8, /* 10101000 */ ++ 0xa8, /* 10101000 */ ++ 0x88, /* 10001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 110 0x6e n */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 111 0x6f o */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 112 0x70 p */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x70, /* 01110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x70, /* 01110000 */ ++ 0x40, /* 01000000 */ ++ ++ /* 113 0x71 q */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x08, /* 00001000 */ ++ ++ /* 114 0x72 r */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x58, /* 01011000 */ ++ 0x60, /* 01100000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 115 0x73 s */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x38, /* 00111000 */ ++ 0x40, /* 01000000 */ ++ 0x30, /* 00110000 */ ++ 0x08, /* 00001000 */ ++ 0x70, /* 01110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 116 0x74 t */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x78, /* 01111000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x18, /* 00011000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 117 0x75 u */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 118 0x76 v */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x30, /* 00110000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 119 0x77 w */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x88, /* 10001000 */ ++ 0xa8, /* 10101000 */ ++ 0xa8, /* 10101000 */ ++ 0xa8, /* 10101000 */ ++ 0x50, /* 01010000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 120 0x78 x */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x30, /* 00110000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 121 0x79 y */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x48, /* 01001000 */ ++ 0x38, /* 00111000 */ ++ 0x08, /* 00001000 */ ++ 0x30, /* 00110000 */ ++ ++ /* 122 0x7a z */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x78, /* 01111000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x78, /* 01111000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 123 0x7b { */ ++ 0x08, /* 00001000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x10, /* 00010000 */ ++ 0x08, /* 00001000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 124 0x7c | */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 125 0x7d } */ ++ 0x40, /* 01000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x10, /* 00010000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x40, /* 01000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 126 0x7e ~ */ ++ 0x28, /* 00101000 */ ++ 0x50, /* 01010000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ 0x00, /* 00000000 */ ++ ++ /* 127 0x7f C177 */ ++ 0x00, /* 00000000 */ ++ 0x20, /* 00100000 */ ++ 0x20, /* 00100000 */ ++ 0x50, /* 01010000 */ ++ 0x50, /* 01010000 */ ++ 0x88, /* 10001000 */ ++ 0xf8, /* 11111000 */ ++ 0x00, /* 00000000 */ ++}; ++ ++struct fbcon_font_desc font_clean_5x8 = { ++ CLEAN5x8_IDX, ++ "Clean5x8", ++ 5, ++ 8, ++ fontdata_5x8, ++ -1000 /* Try avoiding this font if possible unless screen really small */ ++}; +--- Makefile.~1~ 2002-02-26 05:38:07 +10:00 ++++ linux/drivers/video/Makefile 2004-08-31 18:04:15 +10:00 +@@ -33,6 +33,8 @@ + obj-$(CONFIG_FONT_6x11) += font_6x11.o + obj-$(CONFIG_FONT_PEARL_8x8) += font_pearl_8x8.o + obj-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o ++obj-$(CONFIG_FONT_5x8) += font_5x8.o ++obj-$(CONFIG_FONT_4x6) += font_4x6.o + + # Add fbmon.o back into obj-$(CONFIG_FB) in 2.5.x + obj-$(CONFIG_FB) += fbmem.o fbcmap.o modedb.o fbcon.o fonts.o +--- Config.in.~1~ 2002-02-26 05:38:07 +10:00 ++++ linux/drivers/video/Config.in 2004-08-31 18:03:46 +10:00 +@@ -424,6 +424,8 @@ + bool ' VGA 8x16 font' CONFIG_FONT_8x16 + if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then + bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11 ++ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8 ++ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6 + fi + bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8 + bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8 +@@ -437,6 +439,8 @@ + if [ "$CONFIG_FBCON_FONTWIDTH8_ONLY" = "n" ]; then + bool ' Sparc console 12x22 font (not supported by all drivers)' CONFIG_FONT_SUN12x22 + bool ' Mac console 6x11 font (not supported by all drivers)' CONFIG_FONT_6x11 ++ bool ' X11 Clean 5x8 font (not supported by all drivers)' CONFIG_FONT_5x8 ++ bool ' X11 Clean 4x6 font (not supported by all drivers)' CONFIG_FONT_4x6 + fi + bool ' Pearl (old m68k) console 8x8 font' CONFIG_FONT_PEARL_8x8 + bool ' Acorn console 8x8 font' CONFIG_FONT_ACORN_8x8 +--- fonts.c.~1~ 2001-03-03 12:38:39 +10:00 ++++ linux/drivers/video/fonts.c 2004-08-31 18:08:22 +10:00 +@@ -56,6 +56,16 @@ + #undef NO_FONTS + &font_pearl_8x8, + #endif ++#ifdef CONFIG_FONT_5x8 ++#if defined(CONFIG_FBCON_MAC) /* XXX fixme, need better test */ ++#undef NO_FONTS ++#endif ++ &font_clean_5x8, ++#endif ++#ifdef CONFIG_FONT_4x6 ++#undef NO_FONTS ++ &font_clean_4x6, ++#endif + }; + + #define num_fonts (sizeof(fbcon_fonts)/sizeof(*fbcon_fonts)) +--- font.h.~1~ 1999-01-20 04:47:48 +10:00 ++++ linux/include/video/font.h 2004-08-31 18:10:39 +10:00 +@@ -28,6 +28,8 @@ + #define SUN8x16_IDX 4 + #define SUN12x22_IDX 5 + #define ACORN8x8_IDX 6 ++#define CLEAN5x8_IDX 7 ++#define CLEAN4x6_IDX 8 + + extern struct fbcon_font_desc font_vga_8x8, + font_vga_8x16, +@@ -35,7 +37,9 @@ + font_vga_6x11, + font_sun_8x16, + font_sun_12x22, +- font_acorn_8x8; ++ font_acorn_8x8, ++ font_clean_5x8, ++ font_clean_4x6; + + /* Find a font with a specific name */ + diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch new file mode 100644 index 0000000000..1cde717bb4 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/swap-performance.patch @@ -0,0 +1,19 @@ +*** ../linux/mm/swap.c Tue Jan 14 14:54:41 2003 +--- linux/mm/swap.c Sun Sep 28 21:34:25 2003 +*************** +*** 32,38 **** + int page_cluster; + + pager_daemon_t pager_daemon = { +! 512, /* base number for calculating the number of tries */ + SWAP_CLUSTER_MAX, /* minimum number of tries */ + 8, /* do swap I/O in clusters of this size */ + }; +--- 32,38 ---- + int page_cluster; + + pager_daemon_t pager_daemon = { +! 128, /* base number for calculating the number of tries */ + SWAP_CLUSTER_MAX, /* minimum number of tries */ + 8, /* do swap I/O in clusters of this size */ + }; diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch new file mode 100644 index 0000000000..e9ced6c8cc --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa-power-key-off.patch @@ -0,0 +1,144 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +Index: linux/drivers/char/tosa_ts.c +=================================================================== +--- linux.orig/drivers/char/tosa_ts.c 2005-02-15 14:32:53.000000000 +0000 ++++ linux/drivers/char/tosa_ts.c 2005-02-15 14:32:58.000000000 +0000 +@@ -205,10 +205,53 @@ + write: tosa_ts_write_params, + }; + ++#if defined(CONFIG_TOSA_POWER_KEY_OFF) ++extern unsigned int power_key_off_mode; ++ ++static ssize_t power_key_off_read_params(struct file *file, char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ char outputbuf[32]; ++ int count; ++ ++ if (*ppos>0) /* Assume reading completed in previous read*/ ++ return 0; ++ count = sprintf(outputbuf, "%d\n", (unsigned int)power_key_off_mode); ++ count++; ++ *ppos += count; ++ if (count>nbytes) /* Assume output can be read at one time */ ++ return -EINVAL; ++ if (copy_to_user(buf, outputbuf, count+1)) ++ return -EFAULT; ++ return count; ++} ++ ++static ssize_t power_key_off_write_params(struct file *file, const char *buf, ++ size_t nbytes, loff_t *ppos) ++{ ++ unsigned int param=0; ++ ++ sscanf(buf,"%d",¶m); ++ if (power_key_off_mode != param) { ++ power_key_off_mode = param; ++ printk("power_key_off = %d\n", power_key_off_mode); ++ } ++ return nbytes; ++} ++ ++static struct file_operations proc_power_key_off_operations = { ++ read: power_key_off_read_params, ++ write: power_key_off_write_params, ++}; ++#endif ++ + static int init_procinfo(void) + { + int i; + struct proc_dir_entry *entry; ++#if defined(CONFIG_TOSA_POWER_KEY_OFF) ++ struct proc_dir_entry *power_key_off_proc; ++#endif + + proc_ts = proc_mkdir("driver/ts", NULL); + if (proc_ts == NULL) { +@@ -234,6 +277,12 @@ + } + } + ++#if defined(CONFIG_TOSA_POWER_KEY_OFF) ++ power_key_off_proc = create_proc_entry("power_key_off", 0, NULL); ++ if (power_key_off_proc) ++ power_key_off_proc->proc_fops = &proc_power_key_off_operations; ++#endif ++ + return 0; + } + +Index: linux/drivers/char/Config.in +=================================================================== +--- linux.orig/drivers/char/Config.in 2005-02-15 14:32:41.000000000 +0000 ++++ linux/drivers/char/Config.in 2005-02-15 14:32:58.000000000 +0000 +@@ -35,6 +35,8 @@ + if [ "$CONFIG_SERIAL_SL_SERIES" = "y" ]; then + bool ' SL-series Bluetooth support' CONFIG_BLUETOOTH_SL + fi ++ dep_bool ' Tosa power key suspend (EXPERIMENTAL)' CONFIG_TOSA_POWER_KEY_OFF $CONFIG_ARCH_PXA_TOSA ++ dep_bool ' Tosa Boot On power key suspend' CONFIG_BOOT_TOSA_POWER_KEY_OFF $CONFIG_TOSA_POWER_KEY_OFF + fi + bool 'Use Keyboard device file (EXPERIMENTAL)' CONFIG_KBD_DEV_FILE + if [ "$CONFIG_SA1100_COLLIE" = "y" ]; then +Index: linux/drivers/char/keyboard.c +=================================================================== +--- linux.orig/drivers/char/keyboard.c 2005-02-15 14:32:48.000000000 +0000 ++++ linux/drivers/char/keyboard.c 2005-02-15 14:32:58.000000000 +0000 +@@ -119,8 +119,8 @@ + static struct kbd_struct * kbd = kbd_table; + static struct tty_struct * tty; + +-#if defined(CONFIG_SL7X0_POWER_KEY_OFF) +-#if defined(CONFIG_BOOT_POWER_KEY_OFF) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF) ++#if defined(CONFIG_BOOT_POWER_KEY_OFF) || defined(CONFIG_BOOT_TOSA_POWER_KEY_OFF) + unsigned int power_key_off_mode = 1; + #else + unsigned int power_key_off_mode = 0; +@@ -245,7 +245,7 @@ + void handle_scancode(unsigned char scancode, int down) + { + +-#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF) + /* printk("scancode = %x down = %x \n",scancode,down); */ + /* SL-C700 side power 0x6d */ + if ( power_key_off_mode && ( scancode == 0x6d ) && ( down == 0x01 ) ){ +@@ -282,7 +282,7 @@ + handle_scancode_main ( scancode, down ); + } else + #endif +-#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_SL_3BUTTON_PATCH) || defined(CONFIG_TOSA_POWER_KEY_OFF) + { + + handle_scancode_main ( scancode, down ); +Index: linux/arch/arm/mach-pxa/sharpsl_power.c +=================================================================== +--- linux.orig/arch/arm/mach-pxa/sharpsl_power.c 2005-02-15 14:32:41.000000000 +0000 ++++ linux/arch/arm/mach-pxa/sharpsl_power.c 2005-02-16 09:45:13.000000000 +0000 +@@ -1725,7 +1725,7 @@ + return 0; + } + +-#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF) + static int key_suspend_thread(void* unused) + { + int time_cnt = 0; +@@ -1854,7 +1854,7 @@ + } + + kernel_thread(sharpsl_off_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); +-#if defined(CONFIG_SL7X0_POWER_KEY_OFF) ++#if defined(CONFIG_SL7X0_POWER_KEY_OFF) || defined(CONFIG_TOSA_POWER_KEY_OFF) + kernel_thread(key_suspend_thread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); + #endif + #if defined(CONFIG_ARCH_PXA_SHEPHERD) || defined(CONFIG_ARCH_PXA_TOSA) diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch new file mode 100644 index 0000000000..feca970614 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_map.patch @@ -0,0 +1,889 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/drivers/char/tosa_keymap.c~tosa_map.patch ++++ linux/drivers/char/tosa_keymap.c +@@ -6,348 +6,88 @@ + #include <linux/keyboard.h> + #include <linux/kd.h> + +-u_short plain_map[] = { ++u_short plain_map[NR_KEYS] = { + 0xf200, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67, + 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f, + 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77, +- 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf703, 0xf008, +- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xfb78, 0xfb79, 0xfb7a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, ++ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, + 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, +- 0xf038, 0xf039, 0xf030, 0xf02d, 0xf05e, 0xf05c, 0xf05b, 0xf040, +- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, +- 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf301, +- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, +- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, +- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf03b, +- 0xf03a, 0xf05d, 0xf02c, 0xf02e, 0xf02f, 0xf05f, 0xf200, 0xf700, +- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc, ++ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, ++ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b, ++ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a, ++ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e, ++ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, ++ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + }; + +-u_short shift_map[] = { ++u_short shift_map[NR_KEYS] = { + 0xf200, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46, 0xfb47, + 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, + 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57, +- 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf702, 0xf008, +- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, +- 0xf200, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, +- 0xf028, 0xf029, 0xf07e, 0xf03d, 0xf07e, 0xf07c, 0xf07b, 0xf060, +- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf03b, +- 0xf03a, 0xf009, 0xf104, 0xf105, 0xf106, 0xf03f, 0xf022, 0xf301, +- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, +- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, +- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf02b, +- 0xf02a, 0xf07d, 0xf03c, 0xf03e, 0xf03f, 0xf05f, 0xf200, 0xf700, +- 0xf114, 0xf117, 0xf20b, 0xf20a, 0xf701, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xfb58, 0xfb59, 0xfb5a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, ++ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, ++ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc, ++ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, ++ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b, ++ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a, ++ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e, ++ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200, ++ 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, ++ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + }; + +-u_short ctrl_map[] = { ++u_short ctrl_map[NR_KEYS] = { + 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, +- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200, +- 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301, +- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, +- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, +- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf000, 0xf310, 0xf200, 0xf200, ++ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, ++ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc, ++ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, ++ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b, ++ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a, ++ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e, ++ 0xf702, 0xf703, 0xf200, 0xf000, 0xf000, 0xf200, 0xf021, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, +- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + }; + +-u_short shift_ctrl_map[] = { ++u_short shift_ctrl_map[NR_KEYS] = { + 0xf200, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf008, +- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf200, +- 0xf200, 0xf009, 0xf104, 0xf105, 0xf106, 0xf200, 0xf200, 0xf301, +- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, +- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, +- 0xf702, 0xf703, 0xf01b, 0xf020, 0xf020, 0xf310, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, +- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +-}; +- +-u_short alt_map[] = { +- 0xf200, 0xf021, 0xf02d, 0xf863, 0xf023, 0xf033, 0xf024, 0xf025, +- 0xf05f, 0xf038, 0xf026, 0xf02a, 0xf028, 0xf03d, 0xf02b, 0xf039, +- 0xf030, 0xf031, 0xf034, 0xf040, 0xf035, 0xf037, 0xf876, 0xf032, +- 0xf878, 0xf036, 0xf87a, 0xf700, 0xf201, 0xf101, 0xf200, 0xf07f, +- 0xf208, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf07d, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf702, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf029, +- 0xf03c, 0xf207, 0xf104, 0xf105, 0xf106, 0xf200, 0xf07e, 0xf301, +- 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, +- 0xf300, 0xf07f, 0xf30d, 0xf30c, 0xf200, 0xf30b, 0xf30a, 0xf30e, +- 0xf702, 0xf703, 0xf01b, 0xf000, 0xf020, 0xf310, 0xf200, 0xf200, ++ 0xf07c, 0xf200, 0xf01b, 0xf601, 0xf603, 0xf600, 0xf602, 0xf201, ++ 0xf200, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, ++ 0xf038, 0xf039, 0xf030, 0xfbe4, 0xfbfc, 0xfbf6, 0xfbc4, 0xfbdc, ++ 0xfbd6, 0xfbdf, 0xf02d, 0xf02b, 0xfa00, 0xf040, 0xf03f, 0xf02c, ++ 0xf02e, 0xf009, 0xf104, 0xf105, 0xf106, 0xf02f, 0xf027, 0xf03b, ++ 0xf022, 0xf03a, 0xf023, 0xf024, 0xf025, 0xf05f, 0xf026, 0xf02a, ++ 0xf028, 0xf07f, 0xf109, 0xf03d, 0xf029, 0xf07e, 0xf03c, 0xf03e, ++ 0xf702, 0xf703, 0xf200, 0xf020, 0xf020, 0xf200, 0xf021, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf700, +- 0xf114, 0xf117, 0xf118, 0xf119, 0xf701, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf200, 0xf200, +- 0xf702, 0xf703, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, +- 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, ++ 0xf702, 0xf702, 0xf703, 0xf703, 0xf701, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, + }; + + ushort *key_maps[MAX_NR_KEYMAPS] = { + plain_map, shift_map, 0, 0, +- ctrl_map, shift_ctrl_map, 0, 0, +- alt_map, 0 ++ ctrl_map, shift_ctrl_map, 0 + }; + +-unsigned int keymap_count = 5; ++unsigned int keymap_count = 4; + + + /* +--- linux/drivers/char/tosa_keymap.map~tosa_map.patch ++++ linux/drivers/char/tosa_keymap.map +@@ -8,9 +8,8 @@ + # 1 for [SHIFT] + # 4 for [CTRL] , to symbol input for debug + # 5 for [CTRL] [SHIFT] , to symbol input for debug +-# 8 for [ALT] + # +-keymaps 0,1,4,5,8 ++keymaps 0,1,4,5 + # + # loadkeys --mktable iris_keymap.map + # +@@ -20,60 +19,38 @@ + # + # + keycode 1 = a +- alt keycode 1 = exclam + keycode 2 = b +- alt keycode 2 = minus + keycode 3 = c + keycode 4 = d +- alt keycode 4 = numbersign + keycode 5 = e +- alt keycode 5 = three + keycode 6 = f +- alt keycode 6 = dollar + keycode 7 = g +- alt keycode 7 = percent + keycode 8 = h +- alt keycode 8 = underscore + keycode 9 = i +- alt keycode 9 = eight + keycode 10 = j +- alt keycode 10 = ampersand + keycode 11 = k +- alt keycode 11 = asterisk + keycode 12 = l +- alt keycode 12 = parenleft + keycode 13 = m +- alt keycode 13 = equal + keycode 14 = n +- alt keycode 14 = plus + keycode 15 = o +- alt keycode 15 = nine + keycode 16 = p +- alt keycode 16 = zero + keycode 17 = q +- alt keycode 17 = one + keycode 18 = r +- alt keycode 18 = four + keycode 19 = s +- alt keycode 19 = at + keycode 20 = t +- alt keycode 20 = five + keycode 21 = u +- alt keycode 21 = seven + keycode 22 = v + keycode 23 = w +- alt keycode 23 = two + keycode 24 = x + keycode 25 = y +- alt keycode 25 = six + keycode 26 = z + keycode 27 = Shift + keycode 28 = Return + keycode 29 = F2 +-keycode 30 = Alt Control ++keycode 30 = + keycode 31 = BackSpace +- alt keycode 31 = Delete +-keycode 32 = Num_Lock ++# for Debug , keycode 32(F3, Sym) --> Control ++keycode 32 = bar + keycode 33 = + # (Cancel:34) F9 -> Escape + keycode 34 = Escape +@@ -83,100 +60,84 @@ + keycode 38 = Right + # (OK:39) F4 -> Return + keycode 39 = Return +- alt keycode 39 = braceright + keycode 40 = +-keycode 41 = one exclam +-keycode 42 = two quotedbl +-keycode 43 = three numbersign +-keycode 44 = four dollar +-keycode 45 = five percent +-keycode 46 = six ampersand +-keycode 47 = seven apostrophe +-keycode 48 = eight parenleft +-keycode 49 = nine parenright +-keycode 50 = zero asciitilde +-keycode 51 = minus equal +-keycode 52 = asciicircum asciitilde +-keycode 53 = backslash bar +-keycode 54 = bracketleft braceleft +-keycode 55 = at grave +-keycode 56 = Control +-keycode 57 = Alt +-keycode 58 = Control ++keycode 41 = one ++keycode 42 = two ++keycode 43 = three ++keycode 44 = four ++keycode 45 = five ++keycode 46 = six ++keycode 47 = seven ++keycode 48 = eight ++keycode 49 = nine ++keycode 50 = zero ++keycode 51 = +adiaeresis ++keycode 52 = +udiaeresis ++keycode 53 = +odiaeresis ++keycode 54 = +Adiaeresis ++keycode 55 = +Udiaeresis ++keycode 56 = +Odiaeresis ++keycode 57 = +ssharp ++keycode 58 = minus + keycode 59 = plus + keycode 60 = Shift_Lock + keycode 61 = at + keycode 62 = question +-keycode 63 = comma semicolon +- alt keycode 63 = parenright +-keycode 64 = period colon +- alt keycode 64 = less ++keycode 63 = comma ++keycode 64 = period + keycode 65 = Tab +- alt keycode 65 = Caps_Lock + keycode 66 = F5 + keycode 67 = F6 + keycode 68 = F7 +-keycode 69 = slash question +-keycode 70 = apostrophe quotedbl +- alt keycode 70 = asciitilde +-keycode 71 = KP_1 +-keycode 72 = KP_2 +-keycode 73 = KP_3 +-keycode 74 = KP_4 +-keycode 75 = KP_5 +-keycode 76 = KP_6 +-keycode 77 = KP_7 +-keycode 78 = KP_8 +-keycode 79 = KP_9 +-keycode 80 = KP_0 ++keycode 69 = slash ++keycode 70 = apostrophe ++keycode 71 = semicolon ++keycode 72 = quotedbl ++keycode 73 = colon ++keycode 74 = numbersign ++keycode 75 = dollar ++keycode 76 = percent ++# 2001/7/5 old keycode 77 = asciicircum ++keycode 77 = underscore ++keycode 78 = ampersand ++keycode 79 = asterisk ++keycode 80 = parenleft + keycode 81 = Delete +-keycode 82 = KP_Divide +-keycode 83 = KP_Multiply +-keycode 84 = +-keycode 85 = KP_Subtract +-keycode 86 = KP_Add +-keycode 87 = KP_Enter ++keycode 82 = F10 ++keycode 83 = equal ++keycode 84 = parenright ++keycode 85 = asciitilde ++keycode 86 = less ++keycode 87 = greater + # (Activity:88) -> Ctrl + keycode 88 = Control + # (Contacts:89) -> Alt + keycode 89 = Alt +-keycode 90 = Escape ++keycode 90 = + # (select:91) F11 -> space + keycode 91 = space +- alt keycode 91 = nul ++ control keycode 91 = nul + keycode 92 = space + control keycode 92 = nul +-keycode 93 = KP_Period +-keycode 94 = +-keycode 95 = semicolon plus +-keycode 96 = colon asterisk +-keycode 97 = bracketright braceright +-keycode 98 = comma less +-keycode 99 = period greater +-keycode 100 = slash question +-keycode 101 = underscore underscore ++keycode 93 = ++keycode 94 = exclam ++keycode 95 = ++keycode 96 = ++keycode 97 = ++keycode 98 = ++keycode 99 = ++keycode 100 = ++keycode 101 = + keycode 102 = + keycode 103 = Shift +-keycode 104 = Find +-keycode 105 = Select +-keycode 106 = Prior +- shift keycode 106 = Scroll_Backward +-keycode 107 = Next +- shift keycode 107 = Scroll_Forward ++keycode 104 = Control ++keycode 105 = Control ++keycode 106 = Alt ++keycode 107 = Alt + keycode 108 = AltGr + keycode 109 = + keycode 110 = + keycode 111 = +-keycode 112 = +-keycode 113 = +-keycode 114 = +-keycode 115 = +-keycode 116 = +-keycode 117 = Control +-keycode 118 = +-keycode 119 = +-keycode 120 = Control +-keycode 121 = Alt + + + string F1 = "\033[[A" +--- linux/drivers/char/tosa_rawmap.h~tosa_map.patch ++++ linux/drivers/char/tosa_rawmap.h +@@ -22,28 +22,156 @@ + + + static unsigned char rawkeytable_table_NormalLower[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_BACK_SPACE, ++SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I, ++SLKEY_COMMA, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER, ++SLKEY_PERIOD, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Z, SLKEY_C, SLKEY_V, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS, ++SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_TAB, SLKEY_SLASH, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_X, SLKEY_F, SLKEY_SPACE, SLKEY_APOSTROPHE,SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_NormalUpper[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_BACK_SPACE, ++SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I, ++SLKEY_SEMICOLON,KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER, ++SLKEY_COLON, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Z, SLKEY_C, SLKEY_V, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS, ++SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_TAB, SLKEY_QUESTION, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_X, SLKEY_F, SLKEY_SPACE, SLKEY_QUOTEDBL, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_2ndLower[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_DELETE, ++SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8, ++SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT,SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER, ++SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND,SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS, ++SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_CAPS_LOCK,SLKEY_NUMLOCK, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SYM, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_2ndUpper[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_DELETE, ++SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8, ++SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT,SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER, ++SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND,SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS, ++SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_CAPS_LOCK,SLKEY_NUMLOCK, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SYM, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_NumlockLower[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_BACK_SPACE, ++SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8, ++SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT, SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER, ++SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS, ++SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_TAB, SLKEY_SLASH, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SPACE, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_NumlockUpper[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_2, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_ASTERISK, SLKEY_BACK_SPACE, ++SLKEY_0, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_1, SLKEY_3, SLKEY_5, SLKEY_6, KEY_IGN, SLKEY_9, SLKEY_8, ++SLKEY_PARENRIGHT, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_EXCLAM, SLKEY_NUMBERSIGN, SLKEY_PERCENT, SLKEY_7, KEY_IGN, SLKEY_PARENLEFT,SLKEY_GREATER, ++SLKEY_LESS, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F10, SLKEY_F6, SLKEY_F7, SLKEY_AMPERSAND, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_AT, SLKEY_4, SLKEY_MINUS, SLKEY_PLUS, SLKEY_ACTIVITY, SLKEY_HOME, SLKEY_MINUS, ++SLKEY_FRONTLIGHT, KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_TAB, SLKEY_QUESTION, SLKEY_ASCIICIRCUM, SLKEY_EQUAL, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_DOLLAR, SLKEY_SPACE, SLKEY_ASCIITILDE, SLKEY_MAIL, SLKEY_LEFT, SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_Num2ndLower[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_C,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_DELETE, ++SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I, ++SLKEY_COMMA, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER, ++SLKEY_PERIOD, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Z, SLKEY_F6, SLKEY_F7, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS, ++SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_CAPS_LOCK, SLKEY_NUMLOCK, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_F, SLKEY_SYM, SLKEY_APOSTROPHE,SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + static unsigned char rawkeytable_table_Num2ndUpper[(NR_KEYCODES+1)] = { +-KEY_IGN,KEY_IGN,SLKEY_W,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_K,SLKEY_BACK_SPACE,SLKEY_P,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_OFF,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Q,SLKEY_E,SLKEY_T,SLKEY_Y,KEY_IGN,SLKEY_O,SLKEY_I,SLKEY_COMMA,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_RECORDER,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_A,SLKEY_D,SLKEY_G,SLKEY_U,KEY_IGN,SLKEY_L,SLKEY_ENTER,SLKEY_PERIOD,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_SYNCSTART,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_Z,SLKEY_PRINTSCREEN,SLKEY_V,SLKEY_J,SLKEY_CONTACTS,SLKEY_F9,SLKEY_F11,SLKEY_F4,SLKEY_LSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_S,SLKEY_R,SLKEY_B,SLKEY_N,SLKEY_ACTIVITY,SLKEY_HOME,SLKEY_MINUS,SLKEY_FRONTLIGHT,KEY_IGN,SLKEY_RSHIFT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_TAB,SLKEY_SLASH,SLKEY_H,SLKEY_M,SLKEY_F2,KEY_IGN,SLKEY_UP,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_2ND,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,SLKEY_X,SLKEY_F,SLKEY_SPACE,SLKEY_APOSTROPHE,SLKEY_MAIL,SLKEY_LEFT,SLKEY_DOWN,SLKEY_RIGHT,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN,KEY_IGN}; ++KEY_IGN, KEY_IGN, SLKEY_W, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_K, SLKEY_DELETE, ++SLKEY_P, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_OFF, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Q, SLKEY_E, SLKEY_T, SLKEY_Y, KEY_IGN, SLKEY_O, SLKEY_I, ++SLKEY_SEMICOLON,KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_RECORDER, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_A, SLKEY_D, SLKEY_G, SLKEY_U, KEY_IGN, SLKEY_L, SLKEY_ENTER, ++SLKEY_COLON, KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_SYNCSTART,KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_Z, SLKEY_F6, SLKEY_F7, SLKEY_J, SLKEY_CONTACTS, SLKEY_F9, SLKEY_F11, ++SLKEY_F4, SLKEY_LSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_S, SLKEY_R, SLKEY_B, SLKEY_N, SLKEY_ACTIVITY, SLKEY_HOME,SLKEY_MINUS, ++SLKEY_FRONTLIGHT,KEY_IGN, SLKEY_RSHIFT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_CAPS_LOCK, SLKEY_NUMLOCK, SLKEY_H, SLKEY_M, SLKEY_F2, KEY_IGN, SLKEY_UP, ++KEY_IGN, KEY_IGN, KEY_IGN, SLKEY_2ND, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, SLKEY_F5, SLKEY_F, SLKEY_SYM, SLKEY_QUOTEDBL, SLKEY_MAIL, SLKEY_LEFT,SLKEY_DOWN, ++SLKEY_RIGHT, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, ++KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN, KEY_IGN ++}; + + + +@@ -334,7 +462,87 @@ + + + static unsigned char *state_to_keymap[STATE_NUMS_TOTAL] = { +-rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NormalLower,rawkeytable_table_NormalUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_2ndLower,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockLower,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndLower,rawkeytable_table_Num2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NormalUpper,rawkeytable_table_NormalUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_NumlockUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper,rawkeytable_table_Num2ndUpper}; ++rawkeytable_table_NormalLower, /*S0*/ ++rawkeytable_table_NormalUpper, /*S1*/ ++rawkeytable_table_2ndLower, /*S2*/ ++rawkeytable_table_2ndUpper, /*S3*/ ++rawkeytable_table_2ndLower, /*S4*/ ++rawkeytable_table_2ndUpper, /*S5*/ ++rawkeytable_table_2ndLower, /*S6*/ ++rawkeytable_table_2ndUpper, /*S7*/ ++rawkeytable_table_2ndLower, /*S8*/ ++rawkeytable_table_2ndUpper, /*S9*/ ++rawkeytable_table_NormalLower, /*S10*/ ++rawkeytable_table_NormalUpper, /*S11*/ ++rawkeytable_table_2ndLower, /*S12*/ ++rawkeytable_table_2ndUpper, /*S13*/ ++rawkeytable_table_2ndLower, /*S14*/ ++rawkeytable_table_2ndUpper, /*S15*/ ++rawkeytable_table_2ndLower, /*S16*/ ++rawkeytable_table_2ndUpper, /*S17*/ ++rawkeytable_table_2ndLower, /*S18*/ ++rawkeytable_table_2ndUpper, /*S19*/ ++rawkeytable_table_NumlockLower, /*S20*/ ++rawkeytable_table_NumlockUpper, /*S21*/ ++rawkeytable_table_Num2ndLower, /*S22*/ ++rawkeytable_table_Num2ndUpper, /*S23*/ ++rawkeytable_table_Num2ndLower, /*S24*/ ++rawkeytable_table_Num2ndUpper, /*S25*/ ++rawkeytable_table_Num2ndLower, /*S26*/ ++rawkeytable_table_Num2ndUpper, /*S27*/ ++rawkeytable_table_Num2ndLower, /*S28*/ ++rawkeytable_table_Num2ndUpper, /*S29*/ ++rawkeytable_table_NumlockLower, /*S30*/ ++rawkeytable_table_NumlockUpper, /*S31*/ ++rawkeytable_table_Num2ndLower, /*S32*/ ++rawkeytable_table_Num2ndUpper, /*S33*/ ++rawkeytable_table_Num2ndLower, /*S34*/ ++rawkeytable_table_Num2ndUpper, /*S35*/ ++rawkeytable_table_Num2ndLower, /*S36*/ ++rawkeytable_table_Num2ndUpper, /*S37*/ ++rawkeytable_table_Num2ndLower, /*S38*/ ++rawkeytable_table_Num2ndUpper, /*S39*/ ++rawkeytable_table_NormalUpper, /*S40*/ ++rawkeytable_table_NormalUpper, /*S41*/ ++rawkeytable_table_2ndUpper, /*S42*/ ++rawkeytable_table_2ndUpper, /*S43*/ ++rawkeytable_table_2ndUpper, /*S44*/ ++rawkeytable_table_2ndUpper, /*S45*/ ++rawkeytable_table_2ndUpper, /*S46*/ ++rawkeytable_table_2ndUpper, /*S47*/ ++rawkeytable_table_2ndUpper, /*S48*/ ++rawkeytable_table_2ndUpper, /*S49*/ ++rawkeytable_table_NormalUpper, /*S50*/ ++rawkeytable_table_NormalUpper, /*S51*/ ++rawkeytable_table_2ndUpper, /*S52*/ ++rawkeytable_table_2ndUpper, /*S53*/ ++rawkeytable_table_2ndUpper, /*S54*/ ++rawkeytable_table_2ndUpper, /*S55*/ ++rawkeytable_table_2ndUpper, /*S56*/ ++rawkeytable_table_2ndUpper, /*S57*/ ++rawkeytable_table_2ndUpper, /*S58*/ ++rawkeytable_table_2ndUpper, /*S59*/ ++rawkeytable_table_NumlockUpper, /*S60*/ ++rawkeytable_table_NumlockUpper, /*S61*/ ++rawkeytable_table_Num2ndUpper, /*S62*/ ++rawkeytable_table_Num2ndUpper, /*S63*/ ++rawkeytable_table_Num2ndUpper, /*S64*/ ++rawkeytable_table_Num2ndUpper, /*S65*/ ++rawkeytable_table_Num2ndUpper, /*S66*/ ++rawkeytable_table_Num2ndUpper, /*S67*/ ++rawkeytable_table_Num2ndUpper, /*S68*/ ++rawkeytable_table_Num2ndUpper, /*S69*/ ++rawkeytable_table_NumlockUpper, /*S70*/ ++rawkeytable_table_NumlockUpper, /*S71*/ ++rawkeytable_table_Num2ndUpper, /*S72*/ ++rawkeytable_table_Num2ndUpper, /*S73*/ ++rawkeytable_table_Num2ndUpper, /*S74*/ ++rawkeytable_table_Num2ndUpper, /*S75*/ ++rawkeytable_table_Num2ndUpper, /*S76*/ ++rawkeytable_table_Num2ndUpper, /*S77*/ ++rawkeytable_table_Num2ndUpper, /*S78*/ ++rawkeytable_table_Num2ndUpper /*S79*/ ++}; + + + #endif /* ! __KEYTABLE_H_INCLUDED__ */ diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch new file mode 100644 index 0000000000..678cb2e25b --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/tosa_ts.patch @@ -0,0 +1,207 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- linux/drivers/char/tosa_ts.c~tosa_ts.patch ++++ linux/drivers/char/tosa_ts.c +@@ -102,6 +102,8 @@ + static int head = 0, tail = 0; + + #ifdef CONFIG_PM ++#include <linux/pm.h> ++static struct pm_dev* tosa_ts_pm_dev; + static int tp_suspend = 0; + #endif /* CONFIG_PM */ + +@@ -495,25 +497,6 @@ + ioctl: ts_ioctl, + }; + +-static void ts_exit(void) +-{ +- ts_timer_clear(); +- ts_clear(); +- free_irq(IRQ_GPIO_TP_INT, NULL); +- wm9712_power_mode_ts(WM9712_PWR_OFF); +- +- pxa_ac97_put(&ac97_on); +-} +- +-#ifdef MODULE +-static void __exit ac97_ts_cleanup(void) +-{ +- ts_exit(); +- unregister_chrdev(TS_MAJOR, "ts"); +-} +-module_exit(ac97_ts_cleanup); +-#endif /* MODULE */ +- + extern int tc6393fb_lcdMode; + + int ac97_ad_input(int ch, unsigned short *dat) +@@ -608,7 +591,7 @@ + #endif + } + +-static int ts_init(void) ++static int tosa_ts_hardware_start(void) + { + pxa_ac97_get(&codec, &ac97_on); + +@@ -625,7 +608,6 @@ + /* GPIO3/PENDOWN wakeup */ + ac97_bit_set(AC97_GPIO_WAKE_UP, CODEC_PENDOWN); + +- ts_clear(); + + /* Init queue */ + //X kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); +@@ -639,12 +621,39 @@ + return -EBUSY; + } + +- // printk(KERN_INFO "Tosa Touch Screen driver initialized\n"); +- + return 0; + } + +-static int __init ac97_ts_init(void) ++static void tosa_ts_hardware_stop(void) ++{ ++ ts_timer_clear(); ++ ts_clear(); ++ free_irq(IRQ_GPIO_TP_INT, NULL); ++ wm9712_power_mode_ts(WM9712_PWR_OFF); ++ ++ pxa_ac97_put(&ac97_on); ++} ++ ++#ifdef CONFIG_PM ++static int tosa_ts_pm_callback(struct pm_dev *pm_dev, ++ pm_request_t req, void *data) ++{ ++ switch (req) { ++ case PM_SUSPEND: ++ tp_suspend = 1; ++ tosa_ts_hardware_stop(); ++ break; ++ case PM_RESUME: ++ tp_suspend = 0; ++ tosa_ts_hardware_start(); ++ break; ++ } ++ return 0; ++} ++#endif ++ ++ ++static int __init tosa_ts_init(void) + { + ac97_on = 0; + +@@ -663,28 +672,37 @@ + + if( register_chrdev(TS_MAJOR,DEV_NAME, &ts_fops) ) { + printk("unable to get major %d for touch screen\n", TS_MAJOR); +- ts_exit(); + } + + init_procinfo(); + ++ tosa_ts_hardware_start(); ++ ++#ifdef CONFIG_PM ++ tosa_ts_pm_dev = pm_register(PM_SYS_DEV, 0, tosa_ts_pm_callback); ++#endif ++ + kernel_thread(ts_pendown, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD); + + return 0; + } + +-module_init(ac97_ts_init); ++static int __exit tosa_ts_cleanup() ++{ ++ tosa_hardware_stop(); ++ pm_unregister(tosa_ts_pm_dev); ++ unregister_chrdev(TS_MAJOR, "ts"); ++} ++ ++module_init(tosa_ts_init); ++module_exit(tosa_ts_cleanup); + + /* + * Driver functions + */ + static int ts_open(struct inode *inode, struct file *file) + { +- if( ts_init() < 0 ) { +- ts_exit(); +- return -EINVAL; +- } +- ++ ts_clear(); + MOD_INC_USE_COUNT; + return 0; + } +@@ -692,7 +710,6 @@ + + static int ts_release(struct inode *inode, struct file *file) + { +- ts_exit(); + + MOD_DEC_USE_COUNT; + return 0; +@@ -788,20 +805,3 @@ + return 0; + } + +-#ifdef CONFIG_PM +-void tosa_ts_suspend(void) +-{ +- DEBUG(DBG_L1, "in\n"); +- tp_suspend = 1; +- ts_exit(); +- DEBUG(DBG_L1, "out\n"); +-} +- +-void tosa_ts_resume(void) +-{ +- DEBUG(DBG_L1, "in\n"); +- tp_suspend = 0; +- ts_init(); +- DEBUG(DBG_L1, "out\n"); +-} +-#endif /* CONFIG_PM */ +--- linux/drivers/sound/pxa-ac97_tosa.c~tosa_ts.patch ++++ linux/drivers/sound/pxa-ac97_tosa.c +@@ -90,8 +90,6 @@ + #include <linux/pm.h> + static struct pm_dev* pxa_sound_pm_dev; + static int tosa_pm_callback(struct pm_dev *,pm_request_t, void *); +-extern void tosa_ts_suspend(void); +-extern void tosa_ts_resume(void); + #endif /* CONFIG_PM */ + + /************************************************************ +@@ -2195,9 +2193,6 @@ + case PM_SUSPEND: + DEBUG(DBG_L1, "PM_SUSPEND: start\n"); + wm9712_suspend(); +-#ifdef CONFIG_TOSA_TS +- tosa_ts_suspend(); +-#endif /* CONFIG_TOSA_TS */ + if ( ac97_audio_state.rd_ref != 0 ) { + audio_clear_buf(ac97_audio_state.input_stream); + *ac97_audio_state.input_stream->drcmr = 0; +@@ -2239,9 +2234,6 @@ + ac97_audio_state.input_stream->dma_ch = err; + } + wm9712_resume(); +-#ifdef CONFIG_TOSA_TS +- tosa_ts_resume(); +-#endif /* CONFIG_TOSA_TS */ + DEBUG(DBG_L1, "PM_RESUME: done\n"); + break; + } diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch new file mode 100644 index 0000000000..6095ccb604 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch @@ -0,0 +1,102 @@ +--- linux/arch/arm/mach-pxa/sharpsl_apm.c 2005-09-07 10:49:06.000000000 +0200 ++++ /home/hrw//devel/diffs/sharpsl_apm.c 2005-09-07 10:46:57.000000000 +0200 +@@ -1876,10 +1876,11 @@ + switch (event) { + case APM_SYS_STANDBY: + case APM_USER_STANDBY: +- if (send_event(event)) { +- queue_event(event, NULL); +- if (standbys_pending <= 0) ++ queue_event(event, NULL); ++ if (standbys_pending <= 0) { ++ if (send_event(event)) { + standby(); ++ } + } + break; + +@@ -1907,13 +1908,12 @@ + */ + if (waiting_for_resume) + return; +- if (send_event(event)) { +- queue_event(event, NULL); +- waiting_for_resume = 1; +- if (suspends_pending <= 0){ ++ queue_event(event, NULL); ++ waiting_for_resume = 1; ++ if (suspends_pending <= 0) ++ if (send_event(event)) { + (void) suspend(); + } +- } + break; + + case APM_NORMAL_RESUME: +@@ -2225,26 +2225,32 @@ + as->standbys_read--; + as->standbys_pending--; + standbys_pending--; +- } else if (!send_event(APM_USER_STANDBY)) +- return -EAGAIN; +- else ++ } else { + queue_event(APM_USER_STANDBY, as); +- if (standbys_pending <= 0) +- standby(); ++ } ++ if (standbys_pending <= 0) { ++ if (send_event(APM_USER_STANDBY)) { ++ standby(); ++ } else { ++ return -EAGAIN; ++ } ++ } + break; + case APM_IOC_SUSPEND: + if (as->suspends_read > 0) { + as->suspends_read--; + as->suspends_pending--; + suspends_pending--; +- } else if (!send_event(APM_USER_SUSPEND)) +- return -EAGAIN; +- else ++ } else { + queue_event(APM_USER_SUSPEND, as); ++ } + if (suspends_pending <= 0) { +- +- if (suspend() != APM_SUCCESS) +- return -EIO; ++ if (send_event(APM_USER_SUSPEND)) { ++ if (suspend() != APM_SUCCESS) ++ return -EIO; ++ } else { ++ return -EAGAIN; ++ } + } else { + as->suspend_wait = 1; + add_wait_queue(&apm_suspend_waitqueue, &wait); +@@ -2483,13 +2489,18 @@ + lock_kernel(); + if (as->standbys_pending > 0) { + standbys_pending -= as->standbys_pending; +- if (standbys_pending <= 0) +- standby(); ++ if (standbys_pending <= 0) { ++ if (send_event(APM_USER_STANDBY)) { ++ standby(); ++ } ++ } + } + if (as->suspends_pending > 0) { + suspends_pending -= as->suspends_pending; +- if (suspends_pending <= 0){ +- (void) suspend(); ++ if (suspends_pending <= 0) { ++ if (send_event(APM_USER_SUSPEND)) { ++ (void) suspend(); ++ } + } + } + if (user_list == as) diff --git a/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch new file mode 100644 index 0000000000..c9296cf224 --- /dev/null +++ b/recipes/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/usb-storage.patch @@ -0,0 +1,3433 @@ +diff -Nur linux-2.4.18/drivers/usb/device/bi/sa1100.c linux-2.4.18-usb-storage/drivers/usb/device/bi/sa1100.c +--- linux-2.4.18/drivers/usb/device/bi/sa1100.c 2003-05-13 13:18:44.000000000 +0400 ++++ linux-2.4.18-usb-storage/drivers/usb/device/bi/sa1100.c 2004-03-01 07:20:38.000000000 +0300 +@@ -440,6 +440,7 @@ + udc_interrupts, *(UDCSR), *(UDCCS0), *(UDCAR)); + + usbd_device_event (udc_device, DEVICE_RESET, 0); ++ usbd_device_event (udc_device, DEVICE_ADDRESS_ASSIGNED,0); + } + + if (status & UDCSR_SUSIR) { +diff -Nur linux-2.4.18/drivers/usb/device/Config.in linux-2.4.18-usb-storage/drivers/usb/device/Config.in +--- linux-2.4.18/drivers/usb/device/Config.in 2003-05-13 13:18:45.000000000 +0400 ++++ linux-2.4.18-usb-storage/drivers/usb/device/Config.in 2003-11-07 05:35:14.000000000 +0300 +@@ -34,6 +34,7 @@ + comment 'USB Device functions' + source drivers/usb/device/net_fd/Config.in + source drivers/usb/device/serial_fd/Config.in ++ source drivers/usb/device/storage_fd/Config.in + + comment 'USB Device bus interfaces' + source drivers/usb/device/bi/Config.in +diff -Nur linux-2.4.18/drivers/usb/device/Makefile linux-2.4.18-usb-storage/drivers/usb/device/Makefile +--- linux-2.4.18/drivers/usb/device/Makefile 2003-05-13 13:18:45.000000000 +0400 ++++ linux-2.4.18-usb-storage/drivers/usb/device/Makefile 2003-11-07 05:35:01.000000000 +0300 +@@ -20,6 +20,7 @@ + + subdir-$(CONFIG_USBD_NET) += net_fd + subdir-$(CONFIG_USBD_SERIAL) += serial_fd ++subdir-$(CONFIG_USBD_STORAGE) += storage_fd + + #subdir-$(CONFIG_USBD_GENERIC_BUS) += gen_bi + #subdir-$(CONFIG_USBD_L7205_BUS) += l7205_bi +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Config.help linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.help +--- linux-2.4.18/drivers/usb/device/storage_fd/Config.help 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.help 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,55 @@ ++CONFIG_USBD_STORAGE ++ Enable the generic mass storage function driver. This function is ++ used emulating a Linux block driver. ++ ++CONFIG_USBD_STORAGE_VENDORID ++ Optionally specify the mass storage USB Device Vendor ID. The top ++ level Vendor ID will be used if this is not specified. ++ ++CONFIG_USBD_STORAGE_PRODUCTID ++ Optionally specify the mass storage USB Device Product ID. The top ++ level Vendor ID will be used if this is not specified. ++ ++CONFIG_USBD_STORAGE_OUT_ENDPOINT ++ Specify the preferred OUT (received data) endpoint number. This is a ++ number from 0-15 and must be allowed by the bus interface device. ++ ++ Some devices such as the SA-1110 or L7205/L7210 may override this ++ value with a fixed value. ++ ++CONFIG_USBD_STORAGE_IN_ENDPOINT ++ Specify the preferred IN (transmit data) endpoint number. This is a ++ number from 0-15 and must be allowed by the bus interface device. ++ ++ Some devices such as the SA-1110 or L7205/L7210 may override this ++ value with a fixed value. ++ ++CONFIG_USBD_STORAGE_INT_ENDPOINT ++ Specify the preferred INT (interrupt) endpoint number. This is a ++ number from 0-15 and must be allowed by the bus interface device. ++ ++ Some devices such as the L7205/L7210 may override this value with a ++ fixed value. Others such as the SA-1110 do not allow an interrupt ++ value. ++ ++CONFIG_USBD_STORAGE_OUT_PKTSIZE ++ Specify the maximum packet size for the OUT endpoint. This allowable ++ values are normally 16, 32 and 64. ++ ++ Some devices such as the Linkup L7205/L7210 may override this value ++ with a lower maximum value (such as 32). ++ ++CONFIG_USBD_STORAGE_IN_PKTSIZE ++ Specify the maximum packet size for the IN endpoint. This allowable ++ values are normally 16, 32 and 64. ++ ++ Some devices such as the Linkup L7205/L7210 may override this value ++ with a lower maximum value (such as 32). ++ ++CONFIG_USBD_STORAGE_INT_PKTSIZE ++ Specify the maximum packet size for the INT endpoint. This allowable ++ values are normally 8 and 16. Some bus interface devices may not ++ support all values. ++ ++CONFIG_USBD_STORAGE_DEF_DEVICE_NAME ++ Specify the default block device name to used on mass storage. +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Config.in linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.in +--- linux-2.4.18/drivers/usb/device/storage_fd/Config.in 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Config.in 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,29 @@ ++# ++# Generic Mass Storage Function Driver ++# ++# Copyright (c) 2003 Communication Technology Inc. ++# Copyright (C) 2001 Lineo, Inc. ++# Copyright (C) 2001 Hewlett-Packard Co. ++mainmenu_option next_comment ++comment "Mass Storage Function" ++ ++dep_tristate ' Mass Storage Function Driver' CONFIG_USBD_STORAGE $CONFIG_USBD ++if [ "$CONFIG_USBD_STORAGE" = "y" -o "$CONFIG_USBD_STORAGE" = "m" ]; then ++ hex ' Overide VendorID (hex value)' CONFIG_USBD_STORAGE_VENDORID "0000" ++ hex ' Overide ProductID (hex value)' CONFIG_USBD_STORAGE_PRODUCTID "0000" ++ ++ # allow setting of endpoint configurations for some architectures ++ int ' OUT Endpoint (0-15)' CONFIG_USBD_STORAGE_OUT_ENDPOINT "1" ++ int ' OUT PacketSize (16, 32, 64)' CONFIG_USBD_STORAGE_OUT_PKTSIZE "64" ++ int ' IN Endpoint (0-15)' CONFIG_USBD_STORAGE_IN_ENDPOINT "2" ++ int ' IN PacketSize (16, 32, 64)' CONFIG_USBD_STORAGE_IN_PKTSIZE "64" ++ ++ if [ ! "$CONFIG_ARCH_SA1100" = "y" -a ! "$CONFIG_ARCH_L7200" = "y" ]; then ++ int ' INT Endpoint (0-15)' CONFIG_USBD_STORAGE_INT_ENDPOINT "3" ++ int ' INT PacketSize (8, 16)' CONFIG_USBD_STORAGE_INT_PKTSIZE "16" ++ fi ++ ++ string ' Default Mass Storage device name' CONFIG_USBD_STORAGE_DEF_DEVICE_NAME "" ++fi ++ ++endmenu +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/Makefile linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Makefile +--- linux-2.4.18/drivers/usb/device/storage_fd/Makefile 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/Makefile 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,58 @@ ++# ++# SA1100 Function driver for a network USB Device ++# ++# Copyright (C) 2001 Lineo, Inc. ++# Copyright (C) 2001 Hewlett-Packard Co. ++ ++ ++O_TARGET := storage_fd_drv.o ++list-multi := storage_fd.o ++ ++storage_fd-objs := storage-fd.o storageproto.o schedule_task.o # netproto.o crc32.o ++ ++# Object file lists. ++ ++obj-y := ++obj-m := ++obj-n := ++obj- := ++ ++# Each configuration option enables a list of files. ++ ++obj-$(CONFIG_USBD_STORAGE) += storage_fd.o ++ ++# Extract lists of the multi-part drivers. ++# The 'int-*' lists are the intermediate files used to build the multi's. ++ ++multi-y := $(filter $(list-multi), $(obj-y)) ++multi-m := $(filter $(list-multi), $(obj-m)) ++int-y := $(sort $(foreach m, $(multi-y), $($(basename $(m))-objs))) ++int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs))) ++ ++# Files that are both resident and modular: remove from modular. ++ ++obj-m := $(filter-out $(obj-y), $(obj-m)) ++int-m := $(filter-out $(int-y), $(int-m)) ++ ++# Translate to Rules.make lists. ++ ++O_OBJS := $(filter-out $(export-objs), $(obj-y)) ++OX_OBJS := $(filter $(export-objs), $(obj-y)) ++M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m))) ++MX_OBJS := $(sort $(filter $(export-objs), $(obj-m))) ++MI_OBJS := $(sort $(filter-out $(export-objs), $(int-m))) ++MIX_OBJS := $(sort $(filter $(export-objs), $(int-m))) ++ ++# The global Rules.make. ++ ++include $(TOPDIR)/Rules.make ++ ++# Link rules for multi-part drivers. ++ ++storage_fd.o: $(storage_fd-objs) ++ $(LD) -r -o $@ $(storage_fd-objs) ++ ++# dependencies: ++ ++storage-fd.o: ../usbd.h ../usbd-bus.h ../usbd-func.h ++ +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.c +--- linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.c 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.c 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,230 @@ ++/* ++ * linux/drivers/usb/device/storage_fd/schedule_task.c - schedule task library ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Written by Shunnosuke kabata ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++/****************************************************************************** ++** Include File ++******************************************************************************/ ++#include <linux/config.h> ++#include <linux/fs.h> ++#include <linux/string.h> ++#include <linux/mm.h> ++#include <linux/dcache.h> ++#include <linux/init.h> ++#include <linux/quotaops.h> ++#include <linux/slab.h> ++#include <linux/cache.h> ++#include <linux/swap.h> ++#include <linux/swapctl.h> ++#include <linux/prefetch.h> ++#include <linux/locks.h> ++#include <asm/uaccess.h> ++ ++#include "schedule_task.h" ++ ++/****************************************************************************** ++** Macro Define ++******************************************************************************/ ++#define TASK_DESC_NUM (512) ++ ++/****************************************************************************** ++** Structure Define ++******************************************************************************/ ++ ++/************************************** ++** TASK_DESC ++**************************************/ ++typedef struct _TASK_DESC{ ++ struct _TASK_DESC* next; ++ SCHEDULE_TASK_FUNC task_entry; ++ int task_param1; ++ int task_param2; ++ int task_param3; ++ int task_param4; ++ int task_param5; ++ char* file; ++ int line; ++} TASK_DESC; ++ ++/************************************** ++** OS_WRP_TASK_DATA ++**************************************/ ++typedef struct{ ++ volatile TASK_DESC* read_desc; ++ volatile TASK_DESC* write_desc; ++ TASK_DESC desc_pool[TASK_DESC_NUM]; ++ spinlock_t spin_lock; ++ struct tq_struct task_que; ++ unsigned long use_num; ++ unsigned long max_num; ++} TASK_DATA; ++ ++/****************************************************************************** ++** Variable Declaration ++******************************************************************************/ ++static TASK_DATA TaskData; ++ ++/****************************************************************************** ++** Local Function Prototype ++******************************************************************************/ ++static void task_entry(void*); ++ ++/****************************************************************************** ++** Global Function ++******************************************************************************/ ++void schedule_task_init(void) ++{ ++ int i; ++ ++ /* 0 clear */ ++ memset(&TaskData, 0x00, sizeof(TaskData)); ++ ++ /* Read/write pointer initialize */ ++ TaskData.read_desc = TaskData.write_desc = &TaskData.desc_pool[0]; ++ ++ /* Ling buffer initialize */ ++ for(i=0; i<(TASK_DESC_NUM-1); i++){ ++ TaskData.desc_pool[i].next = &TaskData.desc_pool[i+1]; ++ } ++ TaskData.desc_pool[i].next = &TaskData.desc_pool[0]; ++ ++ /* Spin lock initialize */ ++ spin_lock_init(&TaskData.spin_lock); ++ ++ /* Task queue initialize */ ++ PREPARE_TQUEUE(&TaskData.task_que, task_entry, &TaskData); ++ ++ return; ++} ++ ++int schedule_task_register(SCHEDULE_TASK_FUNC entry, int param1, int param2, ++ int param3, int param4, int param5) ++{ ++ unsigned long flags = 0; ++ ++ spin_lock_irqsave(&TaskData.spin_lock, flags); ++ ++ /* Free descriptor check */ ++ if(TaskData.write_desc->next == TaskData.read_desc){ ++ printk(KERN_INFO "storage_fd: schedule task no descriptor.\n"); ++ spin_unlock_irqrestore(&TaskData.spin_lock, flags); ++ return -1; ++ } ++ ++ /* Descriptor set */ ++ TaskData.write_desc->task_entry = entry; ++ TaskData.write_desc->task_param1 = param1; ++ TaskData.write_desc->task_param2 = param2; ++ TaskData.write_desc->task_param3 = param3; ++ TaskData.write_desc->task_param4 = param4; ++ TaskData.write_desc->task_param5 = param5; ++ ++ /* Pointer update */ ++ TaskData.write_desc = TaskData.write_desc->next; ++ ++ /* Statistics set */ ++ TaskData.use_num++; ++ if(TaskData.use_num > TaskData.max_num){ ++ TaskData.max_num = TaskData.use_num; ++ } ++ ++ spin_unlock_irqrestore(&TaskData.spin_lock, flags); ++ ++ /* Task queue register */ ++ schedule_task(&TaskData.task_que); ++ ++ return 0; ++} ++ ++void schedule_task_all_unregister(void) ++{ ++ unsigned long flags = 0; ++ ++ spin_lock_irqsave(&TaskData.spin_lock, flags); ++ TaskData.read_desc = TaskData.write_desc; ++ TaskData.use_num = 0; ++ spin_unlock_irqrestore(&TaskData.spin_lock, flags); ++} ++ ++ssize_t schedule_task_proc_read(struct file* file, char* buf, size_t count, ++ loff_t* pos) ++{ ++ char string[1024]; ++ int len = 0; ++ ++ len += sprintf(string + len, "Schedule task max num:0x%d\n", ++ TASK_DESC_NUM); ++ ++ len += sprintf(string + len, "Schedule task use num:0x%ld\n", ++ TaskData.use_num); ++ ++ len += sprintf(string + len, "Schedule task max use num:0x%ld\n", ++ TaskData.max_num); ++ ++ *pos += len; ++ if(len > count){ ++ len = -EINVAL; ++ } ++ else ++ if(len > 0 && copy_to_user(buf, string, len)) { ++ len = -EFAULT; ++ } ++ ++ return len; ++} ++ ++/****************************************************************************** ++** Local Function ++******************************************************************************/ ++static void task_entry(void* data) ++{ ++ int cond; ++ unsigned long flags = 0; ++ volatile TASK_DESC* desc; ++ ++ for(;;){ ++ ++ spin_lock_irqsave(&TaskData.spin_lock, flags); ++ desc = TaskData.read_desc; ++ cond = (TaskData.read_desc == TaskData.write_desc); ++ spin_unlock_irqrestore(&TaskData.spin_lock, flags); ++ ++ if(cond) break; ++ ++ /* Task call */ ++ desc->task_entry(desc->task_param1, desc->task_param2, ++ desc->task_param3, desc->task_param4, desc->task_param5); ++ ++ spin_lock_irqsave(&TaskData.spin_lock, flags); ++ ++ /* Pointer update */ ++ TaskData.read_desc = TaskData.read_desc->next; ++ ++ /* Statistics set */ ++ TaskData.use_num--; ++ ++ spin_unlock_irqrestore(&TaskData.spin_lock, flags); ++ } ++ ++ return; ++} ++ +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.h linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.h +--- linux-2.4.18/drivers/usb/device/storage_fd/schedule_task.h 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/schedule_task.h 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,41 @@ ++/* ++ * linux/drivers/usb/device/storage_fd/schedule_task.h - schedule task library header ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Written by Shunnosuke kabata ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++#ifndef _SCHEDULE_TASK_H_ ++#define _SCHEDULE_TASK_H_ ++ ++/****************************************************************************** ++** Macro Define ++******************************************************************************/ ++typedef int (*SCHEDULE_TASK_FUNC)(int, int, int, int, int); ++ ++/****************************************************************************** ++** Global Function Prototype ++******************************************************************************/ ++void schedule_task_init(void); ++int schedule_task_register(SCHEDULE_TASK_FUNC, int, int, int, int, int); ++void schedule_task_all_unregister(void); ++ssize_t schedule_task_proc_read(struct file*, char*, size_t, loff_t*); ++ ++#endif /* _SCHEDULE_TASK_H_ */ ++ +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storage-fd.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storage-fd.c +--- linux-2.4.18/drivers/usb/device/storage_fd/storage-fd.c 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storage-fd.c 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,865 @@ ++/* ++ * linux/drivers/usb/device/storage_fd/storage-fd.c - mass storage function driver ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Written by Shunnosuke kabata ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ * Based on ++ * ++ * linux/drivers/usbd/net_fd/net-fd.c - network function driver ++ * ++ * Copyright (c) 2000, 2001, 2002 Lineo ++ * Copyright (c) 2001 Hewlett Packard ++ * ++ * By: ++ * Stuart Lynne <sl@lineo.com>, ++ * Tom Rushworth <tbr@lineo.com>, ++ * Bruce Balden <balden@lineo.com> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++/****************************************************************************** ++** Include File ++******************************************************************************/ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include "../usbd-export.h" ++#include "../usbd-build.h" ++#include "../usbd-module.h" ++ ++#include <linux/init.h> ++#include <linux/kernel.h> ++#include <linux/list.h> ++#include <linux/netdevice.h> ++#include <linux/skbuff.h> ++#include <linux/etherdevice.h> ++#include <linux/rtnetlink.h> ++#include <linux/smp_lock.h> ++#include <linux/ctype.h> ++#include <linux/timer.h> ++#include <linux/string.h> ++#include <linux/atmdev.h> ++#include <linux/pkt_sched.h> ++#include <linux/delay.h> ++#include <asm/uaccess.h> ++#include <asm/system.h> ++#include <net/arp.h> ++ ++#include <linux/autoconf.h> ++ ++#include "../usbd.h" ++#include "../usbd-func.h" ++#include "../usbd-bus.h" ++#include "../usbd-inline.h" ++#include "../usbd-arch.h" ++#include "../hotplug.h" ++ ++#include "schedule_task.h" ++#include "storageproto.h" ++ ++/****************************************************************************** ++** Macro Define ++******************************************************************************/ ++ ++/************************************** ++** Module Information ++**************************************/ ++ ++MODULE_AUTHOR("Shunnosuke kabata"); ++MODULE_DESCRIPTION("USB Device Mass Storage Function"); ++USBD_MODULE_INFO("storage_fd 0.1"); ++ ++/************************************** ++** Configration Check ++**************************************/ ++ ++#if !defined (CONFIG_USBD_VENDORID) && !defined(CONFIG_USBD_STORAGE_VENDORID) ++#error No Vendor ID ++#endif ++#if !defined (CONFIG_USBD_PRODUCTID) && !defined(CONFIG_USBD_STORAGE_PRODUCTID) ++#error No Product ID ++#endif ++ ++#if defined(CONFIG_USBD_STORAGE_VENDORID) && (CONFIG_USBD_STORAGE_VENDORID > 0) ++#undef CONFIG_USBD_VENDORID ++#define CONFIG_USBD_VENDORID CONFIG_USBD_STORAGE_VENDORID ++#endif ++ ++#if defined(CONFIG_USBD_STORAGE_PRODUCTID) && (CONFIG_USBD_STORAGE_PRODUCTID > 0) ++#undef CONFIG_USBD_PRODUCTID ++#define CONFIG_USBD_PRODUCTID CONFIG_USBD_STORAGE_PRODUCTID ++#endif ++ ++#ifndef CONFIG_USBD_MAXPOWER ++#define CONFIG_USBD_MAXPOWER 0 ++#endif ++ ++#ifndef CONFIG_USBD_MANUFACTURER ++#define CONFIG_USBD_MANUFACTURER "Sharp" ++#endif ++ ++#define MAXTRANSFER (512) ++ ++#ifndef CONFIG_USBD_VENDORID ++#error "CONFIG_USBD_VENDORID not defined" ++#endif ++ ++#ifndef CONFIG_USBD_PRODUCTID ++#error "CONFIG_USBD_PRODUCTID not defined" ++#endif ++ ++#ifndef CONFIG_USBD_PRODUCT_NAME ++#define CONFIG_USBD_PRODUCT_NAME "Linux Mass Storage Driver" ++#endif ++ ++#ifndef CONFIG_USBD_SERIAL_NUMBER_STR ++#define CONFIG_USBD_SERIAL_NUMBER_STR "" ++#endif ++ ++/* ++ * USB 2.0 spec does not mention it, but MaxPower is expected to be at least one ++ * and is tested for in USB configuration tests. ++ */ ++ ++#ifdef CONFIG_USBD_SELFPOWERED ++#define BMATTRIBUTE BMATTRIBUTE_RESERVED | BMATTRIBUTE_SELF_POWERED ++#define BMAXPOWER 1 ++#else ++#define BMATTRIBUTE BMATTRIBUTE_RESERVED ++#define BMAXPOWER CONFIG_USBD_MAXPOWER ++#endif ++ ++/* ++ * setup some default values for pktsizes and endpoint addresses. ++ */ ++ ++#ifndef CONFIG_USBD_STORAGE_OUT_PKTSIZE ++#define CONFIG_USBD_STORAGE_OUT_PKTSIZE 64 ++#endif ++ ++#ifndef CONFIG_USBD_STORAGE_IN_PKTSIZE ++#define CONFIG_USBD_STORAGE_IN_PKTSIZE 64 ++#endif ++ ++#ifndef CONFIG_USBD_STORAGE_INT_PKTSIZE ++#define CONFIG_USBD_STORAGE_INT_PKTSIZE 16 ++#endif ++ ++#ifndef CONFIG_USBD_STORAGE_OUT_ENDPOINT ++#define CONFIG_USBD_STORAGE_OUT_ENDPOINT 1 ++#endif ++ ++#ifndef CONFIG_USBD_STORAGE_IN_ENDPOINT ++#define CONFIG_USBD_STORAGE_IN_ENDPOINT 2 ++#endif ++ ++#ifndef CONFIG_USBD_STORAGE_INT_ENDPOINT ++#define CONFIG_USBD_STORAGE_INT_ENDPOINT 3 ++#endif ++ ++/* ++ * check for architecture specific endpoint configurations ++ */ ++ ++#if defined(ABS_OUT_ADDR) ++ //#warning ++ //#warning USING ABS ENDPOINT OUT ADDRESS ++ #undef CONFIG_USBD_STORAGE_OUT_ENDPOINT ++ ++ #if ABS_OUT_ADDR > 0 ++ #define CONFIG_USBD_STORAGE_OUT_ENDPOINT ABS_OUT_ADDR ++ #endif ++ ++#elif defined(MAX_OUT_ADDR) && defined(CONFIG_USBD_STORAGE_OUT_ENDPOINT) && (CONFIG_USBD_STORAGE_OUT_ENDPOINT > MAX_OUT_ADDR) ++ //#warning ++ //#warning USING DEFAULT ENDPOINT OUT ADDRESS ++ #undef CONFIG_USBD_STORAGE_OUT_ENDPOINT ++ #define CONFIG_USBD_STORAGE_OUT_ENDPOINT DFL_OUT_ADDR ++ ++#endif /* elif */ ++ ++#if defined(ABS_IN_ADDR) ++ //#warning ++ //#warning USING ABS ENDPOINT IN ADDRESS ++ #undef CONFIG_USBD_STORAGE_IN_ENDPOINT ++ ++ #if ABS_IN_ADDR > 0 ++ #define CONFIG_USBD_STORAGE_IN_ENDPOINT ABS_IN_ADDR ++ #endif ++ ++#elif defined(MAX_IN_ADDR) && defined(CONFIG_USBD_STORAGE_IN_ENDPOINT) && (CONFIG_USBD_STORAGE_IN_ENDPOINT > MAX_IN_ADDR) ++ //#warning ++ //#warning USING DEFAULT ENDPOINT IN ADDRESS ++ #undef CONFIG_USBD_STORAGE_IN_ENDPOINT ++ #define CONFIG_USBD_STORAGE_IN_ENDPOINT DFL_IN_ADDR ++ ++#endif /* elif */ ++ ++#if defined(ABS_INT_ADDR) ++ //#warning ++ //#warning USING ABS ENDPOINT INT ADDRESS ++ #undef CONFIG_USBD_STORAGE_INT_ENDPOINT ++ ++ #if ABS_INT_ADDR ++ #define CONFIG_USBD_STORAGE_INT_ENDPOINT ABS_INT_ADDR ++ #endif ++ ++#elif defined(MAX_INT_ADDR) && defined(CONFIG_USBD_STORAGE_INT_ENDPOINT) && (CONFIG_USBD_STORAGE_INT_ENDPOINT > MAX_INT_ADDR) ++ //#warning ++ //#warning USING DEFAULT ENDPOINT INT ADDRESS ++ #undef CONFIG_USBD_STORAGE_INT_ENDPOINT ++ #define CONFIG_USBD_STORAGE_INT_ENDPOINT DFL_INT_ADDR ++ ++#endif /* elif */ ++ ++#if defined(MAX_OUT_PKTSIZE) && defined(CONFIG_USBD_STORAGE_OUT_PKTSIZE) && CONFIG_USBD_STORAGE_OUT_PKTSIZE > MAX_OUT_PKTSIZE ++ //#warning ++ //#warning OVERIDING ENDPOINT OUT PKTSIZE ++ #undef CONFIG_USBD_STORAGE_OUT_PKTSIZE ++ #define CONFIG_USBD_STORAGE_OUT_PKTSIZE MAX_OUT_PKTSIZE ++#endif ++ ++#if defined(MAX_IN_PKTSIZE) && defined(CONFIG_USBD_STORAGE_IN_PKTSIZE) && CONFIG_USBD_STORAGE_IN_PKTSIZE > MAX_IN_PKTSIZE ++ //#warning ++ //#warning OVERIDING ENDPOINT IN PKTSIZE ++ #undef CONFIG_USBD_STORAGE_IN_PKTSIZE ++ #define CONFIG_USBD_STORAGE_IN_PKTSIZE MAX_IN_PKTSIZE ++#endif ++ ++#if defined(MAX_INT_PKTSIZE) && defined(CONFIG_USBD_STORAGE_INT_PKTSIZE) && CONFIG_USBD_STORAGE_INT_PKTSIZE > MAX_INT_PKTSIZE ++ //#warning ++ //#warning OVERIDING ENDPOINT INT PKTSIZE ++ #undef CONFIG_USBD_STORAGE_INT_PKTSIZE ++ #define CONFIG_USBD_STORAGE_INT_PKTSIZE MAX_INT_PKTSIZE ++#endif ++ ++/****************************************************************************** ++** Variable Declaration ++******************************************************************************/ ++ ++/************************************** ++** Module Parameters ++**************************************/ ++ ++static u32 vendor_id; ++static u32 product_id; ++static int out_pkt_sz = CONFIG_USBD_STORAGE_OUT_PKTSIZE; ++static int in_pkt_sz = CONFIG_USBD_STORAGE_IN_PKTSIZE; ++ ++MODULE_PARM(vendor_id, "i"); ++MODULE_PARM(product_id, "i"); ++MODULE_PARM(out_pkt_sz, "i"); ++MODULE_PARM(in_pkt_sz, "i"); ++ ++MODULE_PARM_DESC(vendor_id, "vendor id"); ++MODULE_PARM_DESC(product_id, "product id"); ++ ++/************************************** ++** Mass Storage Configuration ++**************************************/ ++ ++/* ++ * Data Interface Alternate 1 endpoints ++ */ ++static __initdata struct usb_endpoint_description StorageAlt1Endpoints[] = { ++ { ++ bEndpointAddress:CONFIG_USBD_STORAGE_OUT_ENDPOINT, ++ bmAttributes:BULK, ++ wMaxPacketSize:CONFIG_USBD_STORAGE_OUT_PKTSIZE, ++ bInterval:0, ++ direction:OUT, ++ transferSize:MAXTRANSFER, ++ }, ++ ++ { ++ bEndpointAddress:CONFIG_USBD_STORAGE_IN_ENDPOINT, ++ bmAttributes:BULK, ++ wMaxPacketSize:CONFIG_USBD_STORAGE_IN_PKTSIZE, ++ bInterval:0, ++ direction:IN, ++ transferSize:MAXTRANSFER, ++ }, ++ ++#if defined(CONFIG_USBD_STORAGE_INT_ENDPOINT) && (CONFIG_USBD_STORAGE_INT_ENDPOINT > 0) ++ { ++ bEndpointAddress:CONFIG_USBD_STORAGE_INT_ENDPOINT, ++ bmAttributes:INTERRUPT, ++ wMaxPacketSize:CONFIG_USBD_STORAGE_INT_PKTSIZE, ++ bInterval:10, ++ direction:IN, ++ transferSize:CONFIG_USBD_STORAGE_INT_PKTSIZE, ++ }, ++#endif ++}; ++ ++ ++/* ++ * Data Interface Alternate description(s) ++ */ ++static __initdata struct usb_alternate_description StorageAlternateDescriptions[] = { ++ { ++ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS) ++ iInterface:"", ++ #else ++ iInterface:"Mass Storage Interface", ++ #endif ++ bAlternateSetting:0, ++ classes:0, ++ class_list:NULL, ++ endpoints:sizeof (StorageAlt1Endpoints) / sizeof (struct usb_endpoint_description), ++ endpoint_list:StorageAlt1Endpoints, ++ }, ++}; ++ ++/* ++ * Interface description(s) ++ */ ++static __initdata struct usb_interface_description StorageInterfaces[] = { ++ { ++ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS) ++ iInterface:"", ++ #else ++ iInterface:"Mass Storage Interface", ++ #endif ++ bInterfaceClass:MASS_STORAGE_CLASS, ++ bInterfaceSubClass:MASS_STORAGE_SUBCLASS_SCSI, ++ bInterfaceProtocol:MASS_STORAGE_PROTO_BULK_ONLY, ++ alternates:sizeof (StorageAlternateDescriptions) / sizeof (struct usb_alternate_description), ++ alternate_list:StorageAlternateDescriptions, ++ }, ++}; ++ ++/****************************************************************************** ++** USB Configuration ++******************************************************************************/ ++ ++/* ++ * Configuration description(s) ++ */ ++struct __initdata usb_configuration_description StorageDescription[] = { ++ { ++ #if defined(CONFIG_USBD_STORAGE_NO_STRINGS) ++ iConfiguration:"", ++ #else ++ iConfiguration:"Mass Storage Configuration", ++ #endif ++ bmAttributes:BMATTRIBUTE, ++ bMaxPower:BMAXPOWER, ++ interfaces:sizeof (StorageInterfaces) / sizeof (struct usb_interface_description), ++ interface_list:StorageInterfaces, ++ }, ++}; ++ ++/* ++ * Device Description ++ */ ++struct __initdata usb_device_description StorageDeviceDescription = { ++ bDeviceClass:0, ++ bDeviceSubClass:0, // XXX ++ bDeviceProtocol:0, // XXX ++ idVendor:CONFIG_USBD_VENDORID, ++ idProduct:CONFIG_USBD_PRODUCTID, ++ iManufacturer:CONFIG_USBD_MANUFACTURER, ++ iProduct:CONFIG_USBD_PRODUCT_NAME, ++ iSerialNumber:CONFIG_USBD_SERIAL_NUMBER_STR, ++}; ++ ++/************************************** ++** Other Variable ++**************************************/ ++static int storage_exit_flag = 0; ++static pid_t storage_pid = 0; ++static struct semaphore storage_sem; ++struct timer_list storage_usb_event_tim; ++ ++ ++/****************************************************************************** ++** Global Function ++******************************************************************************/ ++ ++void storage_urb_send(struct usb_device_instance* device, void* buffer, ++ int length) ++{ ++ int port = 0; ++ struct urb* urb; ++ ++ if(!(urb = usbd_alloc_urb(device, ++ device->function_instance_array + port, ++ CONFIG_USBD_STORAGE_IN_ENDPOINT, ++ length + 5 + in_pkt_sz))){ ++ printk(KERN_INFO "storage_fd: usbd_alloc_urb failed. length '%d'.\n", length); ++ return; ++ } ++ ++ if(buffer){ ++ memcpy(urb->buffer, buffer, length); ++ } ++ else{ ++ memset(urb->buffer, 0x00, length); ++ } ++ urb->actual_length = length; ++ ++ if(usbd_send_urb(urb)){ ++ printk(KERN_INFO "storage_fd: usbd_send_urb failed.\n"); ++ usbd_dealloc_urb(urb); ++ return; ++ } ++ ++ return; ++} ++ ++/****************************************************************************** ++** Local Function ++******************************************************************************/ ++ ++/************************************** ++** Called when a USB Device is created or destroyed ++**************************************/ ++ ++static int storage_thread(void *_c) ++{ ++ siginfo_t info; ++ unsigned long signr; ++ char buff[32]; ++ ++ /* current status set */ ++ daemonize(); ++ ++ /* PID set */ ++ storage_pid = current->pid; ++ ++ /* thread name set */ ++ sprintf(current->comm, STORAGE_THREAD_NAME); ++ (current)->nice = 10; ++ ++ /* signal register */ ++ spin_lock_irq(¤t->sigmask_lock); ++ siginitsetinv(¤t->blocked, ++ sigmask(SIGUSR1) | sigmask(SIGHUP) | sigmask(SIGKILL) | ++ sigmask(SIGSTOP) | sigmask(SIGCONT) | sigmask(SIGTERM) | ++ sigmask(SIGALRM)); ++ recalc_sigpending(current); ++ spin_unlock_irq(¤t->sigmask_lock); ++ ++ /* media open */ ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_STORAGE, ++ 0, 0, 0, 0); ++ ++ /* thread active indicate */ ++ sprintf(buff, "%d\n", storage_pid); ++ hotplug("usbdstorage", buff, "active"); ++ ++ for(;;){ ++ set_current_state(TASK_INTERRUPTIBLE); ++ ++ if (!signal_pending(current)) { ++ schedule(); ++ continue; ++ } ++ ++ spin_lock_irq(¤t->sigmask_lock); ++ signr = dequeue_signal(¤t->blocked, &info); ++ spin_unlock_irq(¤t->sigmask_lock); ++ ++ switch(signr) { ++ case SIGHUP: ++ /* media signal indicate */ ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_STORAGE, ++ 0, 0, 0, 0); ++ ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: signal receive 'SIGHUP'.\n"); ++ break; ++ ++ default: ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: signal receive '%ld'\n", signr); ++ break; ++ } ++ ++ if(storage_exit_flag) break; ++ } ++ /* current status set */ ++ current->state = TASK_RUNNING; ++ ++ /* PID clear */ ++ storage_pid = 0; ++ ++ /* thread inactive indicate */ ++ hotplug("usbdstorage", buff, "inactive"); ++ ++ up(&storage_sem); ++ ++ return 0; ++} ++ ++static void storage_function_init(struct usb_bus_instance* bus, ++ struct usb_device_instance* device, ++ struct usb_function_driver* function_driver) ++{ ++ /* schedule task init */ ++ schedule_task_init(); ++ ++ /* storage protocol initialize */ ++ storageproto_init(); ++ ++ /* semaphore init */ ++ sema_init(&storage_sem, 0); ++ ++ /* timer initialize */ ++ init_timer(&storage_usb_event_tim); ++ ++ /* thread create */ ++ storage_pid = kernel_thread(storage_thread, NULL, 0); ++ ++ return; ++} ++ ++static void storage_function_exit(struct usb_device_instance* device) ++{ ++ /* thread kill */ ++ storage_exit_flag = 1; ++ kill_proc(storage_pid, SIGKILL, 1); ++ down(&storage_sem); ++ ++ /* delete timer */ ++ del_timer(&storage_usb_event_tim); ++ ++ /* storage protocol exit */ ++ storageproto_exit(); ++ ++ /* schedule task delete */ ++ schedule_task_all_unregister(); ++ ++ return; ++} ++ ++ ++/************************************** ++** Called to handle USB Events ++**************************************/ ++ ++static void storage_usb_event_delay_timeout(unsigned long param) ++{ ++ /* media signal indicate */ ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_usb_status_check, (int)param, ++ 0, 0, 0, 0); ++ ++ return; ++} ++ ++/* ++ * storage_event - process a device event ++ * @device: usb device ++ * @event: the event that happened ++ * ++ * Called by the usb device core layer to respond to various USB events. ++ * ++ * This routine IS called at interrupt time. Please use the usual precautions. ++ * ++ */ ++void storage_event(struct usb_device_instance* device, ++ usb_device_event_t event, int data) ++{ ++#if 0 ++ static struct { ++ usb_device_event_t event; ++ char* string; ++ } eventAnal[] = { ++ {DEVICE_UNKNOWN, "DEVICE_UNKNOWN"}, ++ {DEVICE_INIT, "DEVICE_INIT"}, ++ {DEVICE_CREATE, "DEVICE_CREATE"}, ++ {DEVICE_HUB_CONFIGURED, "DEVICE_HUB_CONFIGURED"}, ++ {DEVICE_RESET, "DEVICE_RESET"}, ++ {DEVICE_ADDRESS_ASSIGNED, "DEVICE_ADDRESS_ASSIGNED"}, ++ {DEVICE_CONFIGURED, "DEVICE_CONFIGURED"}, ++ {DEVICE_SET_INTERFACE, "DEVICE_SET_INTERFACE"}, ++ {DEVICE_SET_FEATURE, "DEVICE_SET_FEATURE"}, ++ {DEVICE_CLEAR_FEATURE, "DEVICE_CLEAR_FEATURE"}, ++ {DEVICE_DE_CONFIGURED, "DEVICE_DE_CONFIGURED"}, ++ {DEVICE_BUS_INACTIVE, "DEVICE_BUS_INACTIVE"}, ++ {DEVICE_BUS_ACTIVITY, "DEVICE_BUS_ACTIVITY"}, ++ {DEVICE_POWER_INTERRUPTION, "DEVICE_POWER_INTERRUPTION"}, ++ {DEVICE_HUB_RESET, "DEVICE_HUB_RESET"}, ++ {DEVICE_DESTROY, "DEVICE_DESTROY"}, ++ {DEVICE_FUNCTION_PRIVATE, "DEVICE_FUNCTION_PRIVATE"} ++ }; ++ int i; ++ ++ for(i=0; i<(sizeof(eventAnal)/sizeof(eventAnal[0])); i++){ ++ if(event == eventAnal[i].event){ ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: event receive '%s'.\n", ++ eventAnal[i].string); ++ break; ++ } ++ } ++ if(i == (sizeof(eventAnal)/sizeof(eventAnal[0]))){ ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: unknown event receive.\n"); ++ } ++#endif ++ ++ switch(event){ ++ case DEVICE_ADDRESS_ASSIGNED: ++ { ++ static int Is1stCheck = 1; ++ if(Is1stCheck){ ++ Is1stCheck = 0; ++ ++ /* delay timer set */ ++ del_timer(&storage_usb_event_tim); ++ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000); ++ storage_usb_event_tim.data = USB_DISCONNECT; ++ storage_usb_event_tim.function = storage_usb_event_delay_timeout; ++ add_timer(&storage_usb_event_tim); ++ break; ++ } ++ } ++ case DEVICE_BUS_ACTIVITY: ++ /* delay timer set */ ++ del_timer(&storage_usb_event_tim); ++ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000); ++ storage_usb_event_tim.data = USB_CONNECT; ++ storage_usb_event_tim.function = storage_usb_event_delay_timeout; ++ add_timer(&storage_usb_event_tim); ++ break; ++ ++ case DEVICE_BUS_INACTIVE: ++ /* delay timer set */ ++ del_timer(&storage_usb_event_tim); ++ storage_usb_event_tim.expires = jiffies + ((USB_EVENT_DELAY_TIM * HZ) / 1000); ++ storage_usb_event_tim.data = USB_DISCONNECT; ++ storage_usb_event_tim.function = storage_usb_event_delay_timeout; ++ add_timer(&storage_usb_event_tim); ++ break; ++ ++ case DEVICE_RESET: ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_usb_reset_ind, ++ 0, 0, 0, 0, 0); ++ break; ++ ++ default: ++ break; ++ } ++ ++ return; ++} ++ ++/* ++ * storage_recv_setup - called with a control URB ++ * @urb - pointer to struct urb ++ * ++ * Check if this is a setup packet, process the device request, put results ++ * back into the urb and return zero or non-zero to indicate success (DATA) ++ * or failure (STALL). ++ * ++ * This routine IS called at interrupt time. Please use the usual precautions. ++ * ++ */ ++int storage_recv_setup(struct urb* urb) ++{ ++ return 0; ++} ++ ++/* ++ * storage_recv_urb - called with a received URB ++ * @urb - pointer to struct urb ++ * ++ * Return non-zero if we failed and urb is still valid (not disposed) ++ * ++ * This routine IS called at interrupt time. Please use the usual precautions. ++ * ++ */ ++int storage_recv_urb(struct urb* urb) ++{ ++ int port = 0; // XXX compound device ++ struct usb_device_instance* device; ++ struct usb_function_instance* function; ++ ++ if(!urb || !(device = urb->device) || ++ !(function = device->function_instance_array + port)){ ++ return -EINVAL; ++ } ++ ++ if(urb->status != RECV_OK){ ++ return -EINVAL; ++ } ++ ++ /* URB urb_analysis */ ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_urb_analysis, (int)urb, ++ 0, 0, 0, 0); ++ ++ return 0; ++} ++ ++/* ++ * storage_urb_sent - called to indicate URB transmit finished ++ * @urb: pointer to struct urb ++ * @rc: result ++ * ++ * The usb device core layer will use this to let us know when an URB has ++ * been finished with. ++ * ++ * This routine IS called at interrupt time. Please use the usual precautions. ++ * ++ */ ++int storage_urb_sent(struct urb* urb, int rc) ++{ ++ int port = 0; // XXX compound device ++ struct usb_device_instance* device; ++ struct usb_function_instance* function; ++ ++ if(!urb || !(device = urb->device) || ++ !(function = device->function_instance_array + port)){ ++ return -EINVAL; ++ } ++ ++ usbd_dealloc_urb (urb); ++ ++ return 0; ++} ++ ++/************************************** ++** Proc file system ++**************************************/ ++ ++static ssize_t storage_proc_read(struct file* file, char* buf, size_t count, ++ loff_t* pos) ++{ ++ int len = 0, ret; ++ ++ if(*pos > 0) return 0; ++ ++ if((ret = storageproto_proc_read(file, buf + len, count - len, pos)) < 0){ ++ return ret; ++ } ++ len += ret; ++ ++ if((ret = schedule_task_proc_read(file, buf + len, count - len, pos)) < 0){ ++ return ret; ++ } ++ len += ret; ++ ++ return len; ++} ++ ++static struct file_operations StorageProcOps = { ++ read:storage_proc_read, ++}; ++ ++/************************************** ++** Module init and exit ++**************************************/ ++ ++struct usb_function_operations StorageFunctionOps = { ++ event:storage_event, ++ recv_urb:storage_recv_urb, ++ recv_setup:storage_recv_setup, ++ urb_sent:storage_urb_sent, ++ function_init:storage_function_init, ++ function_exit:storage_function_exit, ++}; ++ ++struct usb_function_driver StorageFunctionDriver = { ++ name:"Mass Storage", ++ ops:&StorageFunctionOps, ++ device_description:&StorageDeviceDescription, ++ configurations:sizeof (StorageDescription) / sizeof (struct usb_configuration_description), ++ configuration_description:StorageDescription, ++ this_module:THIS_MODULE, ++}; ++ ++/* ++ * net_modinit - module init ++ * ++ */ ++static int __init net_modinit(void) ++{ ++ struct proc_dir_entry* proc_entry; ++ ++ printk(KERN_INFO "storage_fd: %s (OUT=%d,IN=%d)\n", ++ __usbd_module_info, out_pkt_sz, in_pkt_sz); ++ ++ printk(KERN_INFO "storage_fd: vendorID: %x productID: %x\n", ++ CONFIG_USBD_VENDORID, CONFIG_USBD_PRODUCTID); ++ ++ // verify pkt sizes not too small ++ if (out_pkt_sz < 3 || in_pkt_sz < 3){ ++ printk(KERN_INFO "storage_fd: Rx pkt size %d or Tx pkt size %d too small\n", ++ out_pkt_sz, in_pkt_sz); ++ return (-EINVAL); ++ } ++ ++ if(vendor_id){ ++ StorageDeviceDescription.idVendor = vendor_id; ++ } ++ if(product_id){ ++ StorageDeviceDescription.idProduct = product_id; ++ } ++ ++ // register us with the usb device support layer ++ if(usbd_register_function(&StorageFunctionDriver)){ ++ printk(KERN_INFO "storage_fd: usbd_register_function failed.\n"); ++ return -EINVAL; ++ } ++ ++ // create proc entry ++ if ((proc_entry = create_proc_entry("usb-storage", 0, 0)) == NULL) { ++ usbd_deregister_function (&StorageFunctionDriver); ++ printk(KERN_INFO "storage_fd: create_proc_entry failed.\n"); ++ return -ENOMEM; ++ } ++ proc_entry->proc_fops = &StorageProcOps; ++ ++ return 0; ++} ++ ++/* ++ * function_exit - module cleanup ++ * ++ */ ++static void __exit net_modexit (void) ++{ ++ // de-register us with the usb device support layer ++ usbd_deregister_function (&StorageFunctionDriver); ++ ++ // remove proc entry ++ remove_proc_entry("usb-storage", NULL); ++ ++ return; ++} ++ ++module_init (net_modinit); ++module_exit (net_modexit); +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storageproto.c linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.c +--- linux-2.4.18/drivers/usb/device/storage_fd/storageproto.c 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.c 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,1505 @@ ++/* ++ * linux/drivers/usb/device/storage_fd/storageproto.c - mass storage protocol library ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Written by Shunnosuke kabata ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++/****************************************************************************** ++** Include File ++******************************************************************************/ ++#include <linux/config.h> ++#include <linux/module.h> ++ ++#include "../usbd-export.h" ++#include "../usbd-build.h" ++#include "../usbd-module.h" ++ ++#include <linux/init.h> ++#include <linux/kernel.h> ++#include <linux/list.h> ++#include <linux/netdevice.h> ++#include <linux/skbuff.h> ++#include <linux/etherdevice.h> ++#include <linux/rtnetlink.h> ++#include <linux/smp_lock.h> ++#include <linux/ctype.h> ++#include <linux/timer.h> ++#include <linux/string.h> ++#include <linux/atmdev.h> ++#include <linux/pkt_sched.h> ++#include <linux/delay.h> ++#include <linux/blkdev.h> ++#include <linux/file.h> ++#include <asm/uaccess.h> ++#include <asm/system.h> ++#include <net/arp.h> ++ ++#include <linux/autoconf.h> ++ ++#include "../usbd.h" ++#include "../usbd-func.h" ++#include "../usbd-bus.h" ++#include "../usbd-inline.h" ++#include "../usbd-arch.h" ++#include "../hotplug.h" ++ ++#include "schedule_task.h" ++#include "storageproto.h" ++ ++/****************************************************************************** ++** macro define ++******************************************************************************/ ++ ++#define DEVICE_BLOCK_SIZE 512 ++ ++#define BLOCK_BUFFER_SIZE (1024 * 64) ++ ++#define DEF_NUMBER_OF_HEADS 0x10 ++#define DEF_SECTORS_PER_TRACK 0x20 ++ ++/****************************************************************************** ++** Structure Define ++******************************************************************************/ ++ ++typedef struct{ ++ unsigned char scsi_command; ++ unsigned char* command_name; ++ void (*scsi_func)(struct usb_device_instance*, ++ COMMAND_BLOCK_WRAPPER*); ++} SCSI_ANALYSIS_TBL; ++ ++typedef struct{ ++ unsigned char scsi_command; ++ unsigned char* command_name; ++ void (*bulkout_func)(struct usb_device_instance*, ++ void*, int); ++} SCSI_BULKOUT_ANALYSIS_TBL; ++ ++/****************************************************************************** ++** Variable Declaration ++******************************************************************************/ ++ ++/************************************** ++** Module Parameters ++**************************************/ ++ ++static char* storage_device = CONFIG_USBD_STORAGE_DEF_DEVICE_NAME; ++MODULE_PARM(storage_device, "s"); ++ ++/************************************** ++** Device Information ++**************************************/ ++ ++static struct file* DeviceFile = NULL; ++static int DeviceSize = 0; ++static int DeviceBlockSize = DEVICE_BLOCK_SIZE; ++static int DeviceWrProtect = WR_PROTECT_OFF; ++ ++/************************************** ++** Status ++**************************************/ ++ ++static int StorageStatus = STORAGE_IDLE; ++static int UsbStatus = USB_DISCONNECT; ++static int MediaStatus = MEDIA_EJECT; ++static int MediaChange = MEDIA_CHANGE_OFF; ++ ++/************************************** ++** Keep Information ++**************************************/ ++ ++static SCSI_REQUEST_SENSE_DATA RequestSenseData; ++static COMMAND_BLOCK_WRAPPER KeepCBW; ++static unsigned long BulkOutLength = 0; ++static unsigned char BlockBuffer[BLOCK_BUFFER_SIZE]; ++ ++/************************************** ++** Statistics ++**************************************/ ++static unsigned long StatMaxBulkInSize = 0; ++static unsigned long StatMaxBulkOutSize = 0; ++static unsigned long StatDevWriteError = 0; ++static unsigned long StatDevReadError = 0; ++static unsigned long StatDevFlushError = 0; ++static unsigned long StatWriteTimout = 0; ++static unsigned long StatMaxWriteTime = 0; ++ ++/************************************** ++** Timer ++**************************************/ ++static struct timer_list BulkOutTim; ++static struct timer_list MediaCheckTim; ++ ++/****************************************************************************** ++** Local Function ++******************************************************************************/ ++ ++static void storage_bulkout_timeout(unsigned long param) ++{ ++ /* statistics update */ ++ StatWriteTimout++; ++ printk(KERN_INFO "storage_fd: write bulk out timeout. length '%ld/%ld'.\n", ++ BulkOutLength, KeepCBW.dCBWDataTransferLength); ++ ++ return; ++} ++ ++static void media_check_timeout(unsigned long param) ++{ ++ /* media check */ ++ schedule_task_register( ++ (SCHEDULE_TASK_FUNC)storageproto_media_status_check, CONTEXT_TIMER, ++ 0, 0, 0, 0); ++ ++ return; ++} ++ ++static void request_sense_data_set(unsigned char sense_key, unsigned char asc, ++ unsigned char ascq, unsigned long info) ++{ ++ /* ++ * set REQUEST SENSE DATA ++ */ ++ ++ memset(&RequestSenseData, 0x00, sizeof(RequestSenseData)); ++ ++ RequestSenseData.ErrorCode = 0x70; ++ RequestSenseData.Valid = (info) ? 1 : 0; ++ RequestSenseData.SenseKey = sense_key; ++ memcpy(RequestSenseData.Information, &info, sizeof(info)); ++ RequestSenseData.AdditionalSenseLength = 0x0a; ++ RequestSenseData.AdditionalSenseCode = asc; ++ RequestSenseData.AdditionalSenseCodeQualifier = ascq; ++ ++ return; ++} ++ ++static void scsi_inquiry_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_INQUIRY_DATA data; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned long data_len; ++ ++ /* ++ * data transport ++ */ ++ ++ memset(&data, 0x00, sizeof(data)); ++ ++ data.PeripheralDeviceType = 0x00; ++ data.RMB = 1; ++ data.ResponseDataFormat = 0x01; ++ data.AdditionalLength = 0x1f; ++ strncpy(data.VendorInformation, CONFIG_USBD_MANUFACTURER, ++ sizeof(data.VendorInformation)); ++ strncpy(data.ProductIdentification, CONFIG_USBD_PRODUCT_NAME, ++ sizeof(data.ProductIdentification)); ++ strncpy(data.ProductRevisionLevel, PRODUCT_REVISION_LEVEL, ++ sizeof(data.ProductRevisionLevel)); ++ ++ data_len = sizeof(data); ++ if(cbw->dCBWDataTransferLength < data_len){ ++ data_len = cbw->dCBWDataTransferLength; ++ } ++ ++ storage_urb_send(device, &data, data_len); ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = 0; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_read_format_capacity_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_READ_FORMAT_CAPACITY_DATA data; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned long block_num, data_len; ++ unsigned short block_len; ++ ++ /* ++ * data transport ++ */ ++ ++ block_num = 0xffffffff; ++ block_len = (unsigned short)DeviceBlockSize; ++ block_num = htonl(block_num); ++ block_len = htons(block_len); ++ ++ memset(&data, 0x00, sizeof(data)); ++ ++ data.CapacityListHeader.CapacityListLength = ++ sizeof(data.CurrentMaximumCapacityDescriptor); ++ memcpy(data.CurrentMaximumCapacityDescriptor.NumberofBlocks, &block_num, ++ sizeof(block_num)); ++ data.CurrentMaximumCapacityDescriptor.DescriptorCode = 0x03; ++ memcpy(data.CurrentMaximumCapacityDescriptor.BlockLength + 1, &block_len, ++ sizeof(block_len)); ++ ++ data_len = sizeof(data); ++ if(cbw->dCBWDataTransferLength < data_len){ ++ data_len = cbw->dCBWDataTransferLength; ++ } ++ ++ storage_urb_send(device, &data, data_len); ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = 0; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_read_capacity_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_READ_CAPACITY_DATA data; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char data_len, status = 0; ++ ++ if(DeviceFile == NULL){ ++ /* 0 clear */ ++ memset(&data, 0x00, sizeof(data)); ++ ++ /* data length set */ ++ data_len = cbw->dCBWDataTransferLength; ++ ++ /* status set */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* 0 clear */ ++ memset(&data, 0x00, sizeof(data)); ++ ++ /* data length set */ ++ data_len = cbw->dCBWDataTransferLength; ++ ++ /* status set */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ else{ ++ unsigned long last_lba, block_len; ++ ++ /* 0 clear */ ++ memset(&data, 0x00, sizeof(data)); ++ ++ /* data set */ ++ last_lba = (DeviceSize / DeviceBlockSize) - 1; ++ block_len = DeviceBlockSize; ++ last_lba = htonl(last_lba); ++ block_len = htonl(block_len); ++ ++ memcpy(data.LastLogicalBlockAddress, &last_lba, sizeof(last_lba)); ++ memcpy(data.BlockLengthInBytes, &block_len, sizeof(block_len)); ++ ++ /* data length set */ ++ data_len = sizeof(data); ++ ++ /* status set */ ++ status = 0; ++ } ++ ++ /* ++ * data transport ++ */ ++ ++ if(cbw->dCBWDataTransferLength < data_len){ ++ data_len = cbw->dCBWDataTransferLength; ++ } ++ ++ storage_urb_send(device, &data, data_len); ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_request_sense_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned long data_len; ++ ++ /* ++ * data transport ++ */ ++ ++ data_len = sizeof(RequestSenseData); ++ if(cbw->dCBWDataTransferLength < data_len){ ++ data_len = cbw->dCBWDataTransferLength; ++ } ++ ++ storage_urb_send(device, &RequestSenseData, data_len); ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = 0; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_read_10_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_READ_10_COMMAND* command = (SCSI_READ_10_COMMAND*)cbw->CBWCB; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ unsigned short len; ++ unsigned long lba, size, offset; ++ ++ memcpy(&lba, command->LogicalBlockAddress, sizeof(lba)); ++ memcpy(&len, command->TransferLength, sizeof(len)); ++ lba = ntohl(lba); ++ len = ntohs(len); ++ offset = lba * DeviceBlockSize; ++ size = cbw->dCBWDataTransferLength; ++ ++ if(DeviceFile == NULL){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ ++ /* ++ * data transport ++ */ ++ ++ storage_urb_send(device, NULL, size); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ ++ /* ++ * data transport ++ */ ++ ++ storage_urb_send(device, NULL, size); ++ } ++ else{ ++ unsigned long count, read_size; ++ ++ /* ++ * data transport ++ */ ++ ++ /* device seek */ ++ DeviceFile->f_op->llseek(DeviceFile, offset, 0); ++ ++ /* device read */ ++ for(count = size; count; count -= read_size){ ++ read_size = (count > sizeof(BlockBuffer)) ? ++ sizeof(BlockBuffer) : count; ++ if(DeviceFile && ++ DeviceFile->f_op->read(DeviceFile, BlockBuffer, read_size, ++ &DeviceFile->f_pos) != read_size){ ++ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ ++ /* statistics update */ ++ StatDevReadError++; ++ printk(KERN_INFO "storage_fd: device read error. length '%ld'.\n", read_size); ++ } ++ ++ storage_urb_send(device, BlockBuffer, read_size); ++ } ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - size; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_mode_sense_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ static READ_WRITE_ERROR_RECOVERY_PAGE page_01 = { ++ PageCode:0x01, ++ PageLength:0x0A, ++ ReadRetryCount:0x03, ++ WriteRetryCount:0x80, ++ }; ++ static FLEXIBLE_DISK_PAGE page_05 = { ++ PageCode:0x05, ++ PageLength:0x1E, ++ TransferRate:{0x00, 0xFA}, ++ NumberofHeads:0xA0, ++ SectorsperTrack:0x00, ++ DataBytesperSector:{0x02, 0x00}, ++ NumberofCylinders:{0x00, 0x00}, ++ MotorOnDelay:0x05, ++ MotorOffDelay:0x1E, ++ MediumRotationRate:{0x01, 0x68}, ++ }; ++ static REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE page_1b = { ++ PageCode:0x1B, ++ PageLength:0x0A, ++ TLUN:0x01, ++ }; ++ static TIMER_AND_PROTECT_PAGE page_1c = { ++ PageCode:0x1c, ++ PageLength:0x06, ++ InactivityTimeMultiplier:0x0A, ++ }; ++ ++ ++ SCSI_MODE_SENSE_COMMAND* command = (SCSI_MODE_SENSE_COMMAND*)cbw->CBWCB; ++ SCSI_MODE_SENSE_DATA data; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char data_len, status = 0; ++ unsigned short cylinder, sector; ++ unsigned long size; ++ ++ /* ++ * data transport ++ */ ++ ++ memset(&data, 0x00, sizeof(data)); ++ ++ /* set write protect */ ++ data.ModeParameterHeader.WP = DeviceWrProtect; ++ ++ /* set Flexible Disk Page */ ++ if(DeviceFile == NULL){ ++ sector = (unsigned short)DeviceBlockSize; ++ cylinder = 0; ++ sector = htons(sector); ++ cylinder = htons(cylinder); ++ ++ page_05.NumberofHeads = 0; ++ page_05.SectorsperTrack = 0; ++ memcpy(page_05.DataBytesperSector, §or, sizeof(sector)); ++ memcpy(page_05.NumberofCylinders, &cylinder, sizeof(cylinder)); ++ } ++ else{ ++ sector = (unsigned short)DeviceBlockSize; ++ size = DEF_NUMBER_OF_HEADS * DEF_SECTORS_PER_TRACK * sector; ++ cylinder = DeviceSize / size; ++ sector = htons(sector); ++ cylinder = htons(cylinder); ++ ++ page_05.NumberofHeads = DEF_NUMBER_OF_HEADS; ++ page_05.SectorsperTrack = DEF_SECTORS_PER_TRACK; ++ memcpy(page_05.DataBytesperSector, §or, sizeof(sector)); ++ memcpy(page_05.NumberofCylinders, &cylinder, sizeof(cylinder)); ++ } ++ ++ if(command->PC == 0 && command->PageCode == 0x01){ ++ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_01); ++ data.ModeParameterHeader.ModeDataLength = data_len - 1; ++ memcpy(&data.ModePages, &page_01, sizeof(page_01)); ++ } ++ else ++ if(command->PC == 0 && command->PageCode == 0x05){ ++ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_05); ++ data.ModeParameterHeader.ModeDataLength = data_len - 1; ++ memcpy(&data.ModePages, &page_05, sizeof(page_05)); ++ } ++ else ++ if(command->PC == 0 && command->PageCode == 0x1b){ ++ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_1b); ++ data.ModeParameterHeader.ModeDataLength = data_len - 1; ++ memcpy(&data.ModePages, &page_1b, sizeof(page_1b)); ++ } ++ else ++ if(command->PC == 0 && command->PageCode == 0x1c){ ++ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(page_1c); ++ data.ModeParameterHeader.ModeDataLength = data_len - 1; ++ memcpy(&data.ModePages, &page_1c, sizeof(page_1c)); ++ } ++ else ++ if(command->PC == 0 && command->PageCode == 0x3f){ ++ data_len = sizeof(MODE_PARAMETER_HEADER) + sizeof(MODE_ALL_PAGES); ++ data.ModeParameterHeader.ModeDataLength = data_len - 1; ++ memcpy(&data.ModePages.ModeAllPages.ReadWriteErrorRecoveryPage, ++ &page_01, sizeof(page_01)); ++ memcpy(&data.ModePages.ModeAllPages.FlexibleDiskPage, ++ &page_05, sizeof(page_05)); ++ memcpy(&data.ModePages.ModeAllPages.RemovableBlockAccessCapabilitiesPage, ++ &page_1b, sizeof(page_1b)); ++ memcpy(&data.ModePages.ModeAllPages.TimerAndProtectPage, ++ &page_1c, sizeof(page_1c)); ++ } ++ else{ ++ /* command fail */ ++ status = 1; ++ data_len = cbw->dCBWDataTransferLength; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x05, 0x24, 0x00, 0x00); ++ } ++ ++ if(cbw->dCBWDataTransferLength < data_len){ ++ data_len = cbw->dCBWDataTransferLength; ++ } ++ ++ storage_urb_send(device, &data, data_len); ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_test_unit_ready_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ ++ if(DeviceFile == NULL){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_prevent_allow_medium_removal_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND* command = (SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND*)cbw->CBWCB; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ ++ if(command->Prevent){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x05, 0x24, 0x00, 0x00); ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_start_stop_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ SCSI_START_STOP_COMMAND* command = (SCSI_START_STOP_COMMAND*)cbw->CBWCB; ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ ++ if(DeviceFile == NULL){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ else ++ if(command->Start && command->LoEj){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x05, 0x24, 0x00, 0x00); ++ } ++ ++ /* device buffer flush */ ++ if(DeviceFile && DeviceFile->f_op->ioctl(DeviceFile->f_dentry->d_inode, ++ DeviceFile, BLKFLSBUF, 0) != 0){ ++ /* statistics update */ ++ StatDevFlushError++; ++ printk(KERN_INFO "storage_fd: device flush error.\n"); ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_write_10_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ /* status set */ ++ BulkOutLength = 0; ++ StorageStatus = STORAGE_BULKOUT; ++ ++ /* timer set */ ++ del_timer(&BulkOutTim); ++ BulkOutTim.expires = jiffies + ((WR_BULKOUT_CHK_TIM * HZ) / 1000); ++ BulkOutTim.data = 0; ++ BulkOutTim.function = storage_bulkout_timeout; ++ add_timer(&BulkOutTim); ++ ++ return; ++} ++ ++static void scsi_verify_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ ++ if(DeviceFile == NULL){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ return; ++} ++ ++static void scsi_unsupport_analysis(struct usb_device_instance* device, ++ COMMAND_BLOCK_WRAPPER* cbw) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char data_len = 0; ++ ++ if(((cbw->bmCBWFlags & 0x80) == 0x00) && (cbw->dCBWDataTransferLength)){ ++ /* BLKOUT */ ++ ++ /* status set */ ++ BulkOutLength = 0; ++ StorageStatus = STORAGE_BULKOUT; ++ } ++ else{ ++ /* BLKIN */ ++ ++ if(cbw->dCBWDataTransferLength){ ++ data_len = cbw->dCBWDataTransferLength; ++ storage_urb_send(device, NULL, data_len); ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = cbw->dCBWTag; ++ csw.dCSWDataResidue = cbw->dCBWDataTransferLength - data_len; ++ csw.bCSWStatus = 0x01; ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ } ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x05, 0x20, 0x00, 0x00); ++ ++ return; ++} ++ ++static void scsi_bulkout_write_10_analysis(struct usb_device_instance* device, ++ void* buffer, int length) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ unsigned char status = 0; ++ unsigned long buff_used_len, buff_offset; ++ unsigned long s_tick, e_tick, wr_tick; ++ ++ buff_offset = BulkOutLength % sizeof(BlockBuffer); ++ ++ memcpy(BlockBuffer + buff_offset, buffer, length); ++ BulkOutLength += length; ++ ++ buff_used_len = BulkOutLength % sizeof(BlockBuffer); ++ if(buff_used_len == 0) buff_used_len = sizeof(BlockBuffer); ++ ++ /* delete timer */ ++ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){ ++ del_timer(&BulkOutTim); ++ } ++ ++ if(buff_used_len >= sizeof(BlockBuffer) || ++ BulkOutLength >= KeepCBW.dCBWDataTransferLength){ ++ ++ /* buffer full */ ++ SCSI_WRITE_10_COMMAND* command = (SCSI_WRITE_10_COMMAND*)&KeepCBW.CBWCB; ++ unsigned short len; ++ unsigned long lba, offset; ++ ++ memcpy(&lba, command->LogicalBlockAddress, sizeof(lba)); ++ memcpy(&len, command->TransferLength, sizeof(len)); ++ lba = ntohl(lba); ++ len = ntohs(len); ++ ++ offset = (lba * DeviceBlockSize) + ++ (sizeof(BlockBuffer) * ((BulkOutLength - 1) / sizeof(BlockBuffer))); ++ ++ /* device check */ ++ if(DeviceFile && ++ MediaChange != MEDIA_CHANGE_ON && ++ DeviceWrProtect != WR_PROTECT_ON){ ++ ++ /* write before jiffies get */ ++ s_tick = jiffies; ++ ++ /* device seek */ ++ DeviceFile->f_op->llseek(DeviceFile, offset, 0); ++ ++ /* device write */ ++ if(DeviceFile->f_op->write(DeviceFile, BlockBuffer, buff_used_len, ++ &DeviceFile->f_pos) != buff_used_len){ ++ /* statistics update */ ++ StatDevWriteError++; ++ printk(KERN_INFO "storage_fd: device write error. length '%ld'.\n", buff_used_len); ++ } ++ ++ /* write after jiffies get */ ++ e_tick = jiffies; ++ ++ /* statistics update */ ++ wr_tick = e_tick - s_tick; ++ if(wr_tick > StatMaxWriteTime){ ++ StatMaxWriteTime = wr_tick; ++ } ++ } ++ } ++ ++ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){ ++ if(DeviceFile == NULL){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x02, 0x3a, 0x00, 0x00); ++ } ++ else ++ if(MediaChange == MEDIA_CHANGE_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x06, 0x28, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ else ++ if(DeviceWrProtect == WR_PROTECT_ON){ ++ /* command fail */ ++ status = 1; ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x07, 0x27, 0x00, 0x00); ++ ++ /* media change flag off */ ++ MediaChange = MEDIA_CHANGE_OFF; ++ } ++ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = KeepCBW.dCBWTag; ++ csw.dCSWDataResidue = KeepCBW.dCBWDataTransferLength - BulkOutLength; ++ csw.bCSWStatus = status; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ /* status reset */ ++ BulkOutLength = 0; ++ StorageStatus = STORAGE_IDLE; ++ ++ /* flush before jiffies get */ ++ s_tick = jiffies; ++ ++ /* device buffer flush */ ++ if(DeviceFile && DeviceFile->f_op->ioctl(DeviceFile->f_dentry->d_inode, ++ DeviceFile, BLKFLSBUF, 0) != 0){ ++ /* statistics update */ ++ StatDevFlushError++; ++ printk(KERN_INFO "storage_fd: device flush error.\n"); ++ } ++ ++ /* flush after jiffies get */ ++ e_tick = jiffies; ++ ++ /* statistics update */ ++ wr_tick = e_tick - s_tick; ++ if(wr_tick > StatMaxWriteTime){ ++ StatMaxWriteTime = wr_tick; ++ } ++ ++ } ++ ++ return; ++} ++ ++static void scsi_bulkout_unsupport_analysis(struct usb_device_instance* device, ++ void* buffer, int length) ++{ ++ COMMAND_STATUS_WRAPPER csw; ++ ++ BulkOutLength += length; ++ ++ if(BulkOutLength >= KeepCBW.dCBWDataTransferLength){ ++ /* ++ * status transport ++ */ ++ ++ memset(&csw, 0x00, sizeof(csw)); ++ ++ csw.dCSWSignature = CSW_SIGNATURE; ++ csw.dCSWTag = KeepCBW.dCBWTag; ++ csw.dCSWDataResidue = KeepCBW.dCBWDataTransferLength - BulkOutLength; ++ csw.bCSWStatus = 1; ++ ++ storage_urb_send(device, &csw, sizeof(csw)); ++ ++ /* error code save REQUEST SENSE */ ++ request_sense_data_set(0x05, 0x20, 0x00, 0x00); ++ ++ /* status reset */ ++ BulkOutLength = 0; ++ StorageStatus = STORAGE_IDLE; ++ } ++ ++ return; ++} ++ ++/****************************************************************************** ++** Global Function ++******************************************************************************/ ++ ++static SCSI_ANALYSIS_TBL ScsiAnalysisTbl[] = { ++ {SCSI_FORMAT_UNT, "SCSI_FORMAT_UNT", NULL}, ++ {SCSI_INQUIRY, "SCSI_INQUIRY", scsi_inquiry_analysis}, ++ {SCSI_START_STOP, "SCSI_START_STOP", scsi_start_stop_analysis}, ++ {SCSI_MODE_SELECT, "SCSI_MODE_SELECT", NULL}, ++ {SCSI_MODE_SENSE, "SCSI_MODE_SENSE", scsi_mode_sense_analysis}, ++ {SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL, "SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL", scsi_prevent_allow_medium_removal_analysis}, ++ {SCSI_READ_10, "SCSI_READ_10", scsi_read_10_analysis}, ++ {SCSI_READ_12, "SCSI_READ_12", NULL}, ++ {SCSI_READ_CAPACITY, "SCSI_READ_CAPACITY", scsi_read_capacity_analysis}, ++ {SCSI_READ_FORMAT_CAPACITY, "SCSI_READ_FORMAT_CAPACITY", scsi_read_format_capacity_analysis}, ++ {SCSI_REQUEST_SENSE, "SCSI_REQUEST_SENSE", scsi_request_sense_analysis}, ++ {SCSI_REZERO_UNIT, "SCSI_REZERO_UNIT", NULL}, ++ {SCSI_SEEK_10, "SCSI_SEEK_10", NULL}, ++ {SCSI_SEND_DIAGNOSTIC, "SCSI_SEND_DIAGNOSTIC", NULL}, ++ {SCSI_TEST_UNIT_READY, "SCSI_TEST_UNIT_READY", scsi_test_unit_ready_analysis}, ++ {SCSI_VERIFY, "SCSI_VERIFY", scsi_verify_analysis}, ++ {SCSI_WRITE_10, "SCSI_WRITE_10", scsi_write_10_analysis}, ++ {SCSI_WRITE_12, "SCSI_WRITE_12", NULL}, ++ {SCSI_WRITE_AND_VERIFY, "SCSI_WRITE_AND_VERIFY", NULL} ++}; ++ ++static SCSI_BULKOUT_ANALYSIS_TBL ScsiBlkOutAnalysisTbl[] = { ++ {SCSI_WRITE_10, "SCSI_WRITE_10", scsi_bulkout_write_10_analysis}, ++}; ++ ++void storageproto_urb_analysis(struct urb* urb) ++{ ++ COMMAND_BLOCK_WRAPPER* cbw = (COMMAND_BLOCK_WRAPPER*)urb->buffer; ++ int i; ++ ++ /* status BLKOUT check */ ++ if(StorageStatus == STORAGE_BULKOUT){ ++ for(i = 0; ++ i < sizeof(ScsiBlkOutAnalysisTbl) / sizeof(SCSI_ANALYSIS_TBL); ++ i++){ ++ if(ScsiBlkOutAnalysisTbl[i].scsi_command == KeepCBW.CBWCB[0]){ ++ if(ScsiBlkOutAnalysisTbl[i].bulkout_func){ ++ ScsiBlkOutAnalysisTbl[i].bulkout_func(urb->device, ++ urb->buffer, ++ urb->actual_length); ++ goto RETURN_LABEL; ++ } ++ break; ++ } ++ } ++ scsi_bulkout_unsupport_analysis(urb->device, urb->buffer, urb->actual_length); ++ goto RETURN_LABEL; ++ } ++ ++ /* signature check */ ++ if(cbw->dCBWSignature != CBW_SIGNATURE){ ++ printk(KERN_INFO "storage_fd: signature error. '0x%08lx'.\n", ++ cbw->dCBWSignature); ++ goto RETURN_LABEL; ++ } ++ ++ /* statistics set */ ++ if(cbw->dCBWDataTransferLength){ ++ if(((cbw->bmCBWFlags & 0x80) == 0x00) && (cbw->dCBWDataTransferLength)){ ++ /* BULK OUT */ ++ if(StatMaxBulkOutSize < cbw->dCBWDataTransferLength){ ++ StatMaxBulkOutSize = cbw->dCBWDataTransferLength; ++ } ++ } ++ else{ ++ /* BULK IN */ ++ if(StatMaxBulkInSize < cbw->dCBWDataTransferLength){ ++ StatMaxBulkInSize = cbw->dCBWDataTransferLength; ++ } ++ } ++ } ++ ++ /* save CBW and set storage status */ ++ memcpy(&KeepCBW, cbw, sizeof(KeepCBW)); ++ ++ /* UFI command analysis */ ++ for(i = 0; i < sizeof(ScsiAnalysisTbl) / sizeof(SCSI_ANALYSIS_TBL); i++){ ++ if(ScsiAnalysisTbl[i].scsi_command == cbw->CBWCB[0]){ ++ if(ScsiAnalysisTbl[i].scsi_func){ ++ ScsiAnalysisTbl[i].scsi_func(urb->device, cbw); ++ goto RETURN_LABEL; ++ } ++ break; ++ } ++ } ++ ++ scsi_unsupport_analysis(urb->device, cbw); ++ printk(KERN_INFO "storage_fd: SCSI command error. '0x%02x'.\n", ++ cbw->CBWCB[0]); ++ goto RETURN_LABEL; ++ ++RETURN_LABEL: ++ ++ /* URB free */ ++ usbd_recycle_urb(urb); ++ ++ return; ++} ++ ++int storageproto_device_open_check(void) ++{ ++ struct file* file; ++ struct inode* inode; ++ kdev_t dev; ++ int read_org; ++ ++ /* device already open check */ ++ if(DeviceFile){ ++ storageproto_device_close(); ++ } ++ ++ /* device open */ ++ file = filp_open(storage_device, O_RDWR, 0000); ++ if(IS_ERR(file)){ ++ file = filp_open(storage_device, O_RDONLY, 0000); ++ if(IS_ERR(file)){ ++ storageproto_device_close(); ++ return MEDIA_EJECT; ++ } ++ DeviceWrProtect = WR_PROTECT_ON; ++ } ++ ++ file->f_op->llseek(file, 0, 0); ++ if(file->f_op->read(file, (void*)&read_org, sizeof(read_org), &file->f_pos) ++ != sizeof(read_org)){ ++ filp_close(file, NULL); ++ storageproto_device_close(); ++ return MEDIA_EJECT; ++ } ++ ++ /* struct file pointer save */ ++ DeviceFile = file; ++ ++ /* device information */ ++ inode = file->f_dentry->d_inode; ++ dev = inode->i_rdev; ++ ++ if (blk_size[MAJOR(dev)]){ ++ DeviceSize = blk_size[MAJOR(dev)][MINOR(dev)] << BLOCK_SIZE_BITS; ++ } ++ else{ ++ DeviceSize = INT_MAX << BLOCK_SIZE_BITS; ++ } ++ ++ if(blksize_size[MAJOR(dev)] && blksize_size[MAJOR(dev)][MINOR(dev)]){ ++ DeviceBlockSize = DEVICE_BLOCK_SIZE; ++ } ++ else{ ++ DeviceBlockSize = DEVICE_BLOCK_SIZE; ++ } ++ ++ return MEDIA_INSERT; ++} ++ ++void storageproto_device_close(void) ++{ ++ if(DeviceFile){ ++ filp_close(DeviceFile, NULL); ++ DeviceFile = NULL; ++ DeviceSize = 0; ++ DeviceBlockSize = DEVICE_BLOCK_SIZE; ++ DeviceWrProtect = WR_PROTECT_OFF; ++ } ++ ++ return; ++} ++ ++void storageproto_usb_status_check(int status) ++{ ++ static int Is1stCheck = 1; ++ ++ /* USB status check */ ++ if(Is1stCheck){ ++ Is1stCheck = 0; ++ } ++ else{ ++ if(UsbStatus == status) goto RETURN_LABEL; ++ } ++ ++ /* set status */ ++ UsbStatus = status; ++ ++ switch(UsbStatus){ ++ case USB_CONNECT: ++ /* media status check */ ++ storageproto_media_status_check(CONTEXT_SCHEDULE); ++ ++ switch(MediaStatus){ ++ case MEDIA_EJECT: ++ break; ++ ++ case MEDIA_INSERT: ++ hotplug("usbdstorage", storage_device, "umount"); ++ break; ++ ++ default: ++ break; ++ } ++ hotplug("usbdstorage", storage_device, "connect"); ++ break; ++ ++ case USB_DISCONNECT: ++ /* device close */ ++ storageproto_device_close(); ++ ++ switch(MediaStatus){ ++ case MEDIA_EJECT: ++ break; ++ ++ case MEDIA_INSERT: ++ hotplug("usbdstorage", storage_device, "mount"); ++ break; ++ ++ default: ++ break; ++ } ++ hotplug("usbdstorage", storage_device, "disconnect"); ++ break; ++ ++ default: ++ break; ++ } ++ ++RETURN_LABEL: ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: USB check '%s' '%s' 'file:%p'.\n", ++ (UsbStatus) ? "USB_CONNECT" : "USB_DISCONNECT", ++ (MediaStatus) ? "MEDIA_INSERT" : "MEDIA_EJECT", DeviceFile); ++ ++ return; ++} ++ ++void storageproto_media_status_check(int call_context) ++{ ++ static unsigned long RetryCount = 0; ++ int status; ++ ++ /* media open check */ ++ status = storageproto_device_open_check(); ++ ++ /* media status check retry */ ++ if(status == MEDIA_EJECT){ ++ switch(call_context){ ++ case CONTEXT_STORAGE: ++ ++ /* retry counter init */ ++ RetryCount = 0; ++ ++ /* timer set */ ++ del_timer(&MediaCheckTim); ++ MediaCheckTim.expires = jiffies + ((MEDIA_CHECK_TIM * HZ) / 1000); ++ MediaCheckTim.data = 0; ++ MediaCheckTim.function = media_check_timeout; ++ add_timer(&MediaCheckTim); ++ ++ break; ++ ++ case CONTEXT_TIMER: ++ ++ /* retry counter update */ ++ RetryCount++; ++ ++ /* retry counter check */ ++ if(RetryCount >= MEDIA_CHECK_RETRY) break; ++ ++ /* timer set */ ++ del_timer(&MediaCheckTim); ++ MediaCheckTim.expires = jiffies + ((MEDIA_CHECK_TIM * HZ) / 1000); ++ MediaCheckTim.data = 0; ++ MediaCheckTim.function = media_check_timeout; ++ add_timer(&MediaCheckTim); ++ ++ break; ++ ++ default: ++ break; ++ } ++ } ++ else ++ if(status == MEDIA_INSERT){ ++ /* delete timer */ ++ del_timer(&MediaCheckTim); ++ } ++ ++ /* media status check */ ++ if(status == MediaStatus){ ++ if(UsbStatus == USB_DISCONNECT){ ++ storageproto_device_close(); ++ } ++ if(MediaStatus == MEDIA_INSERT){ ++ if(call_context == CONTEXT_STORAGE || call_context == CONTEXT_TIMER){ ++ MediaChange = MEDIA_CHANGE_ON; ++ } ++ } ++ goto RETURN_LABEL; ++ } ++ ++ /* set status */ ++ MediaStatus = status; ++ ++ switch(MediaStatus){ ++ case MEDIA_INSERT: ++ /* set status */ ++ MediaChange = MEDIA_CHANGE_ON; ++ ++ switch(UsbStatus){ ++ case USB_DISCONNECT: ++ storageproto_device_close(); ++ break; ++ ++ case USB_CONNECT: ++ break; ++ ++ default: ++ break; ++ } ++ hotplug("usbdstorage", storage_device, "insert"); ++ break; ++ ++ case MEDIA_EJECT: ++ switch(UsbStatus){ ++ case USB_DISCONNECT: ++ storageproto_device_close(); ++ break; ++ ++ case USB_CONNECT: ++ break; ++ ++ default: ++ break; ++ } ++ hotplug("usbdstorage", storage_device, "eject"); ++ break; ++ ++ default: ++ break; ++ } ++ ++RETURN_LABEL: ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: media check. '%s' '%s' 'file:%p' '%s'.\n", ++ (UsbStatus) ? "USB_CONNECT" : "USB_DISCONNECT", ++ (MediaStatus) ? "MEDIA_INSERT" : "MEDIA_EJECT", DeviceFile, ++ (call_context == CONTEXT_SCHEDULE) ? "CONTEXT_SCHEDULE" : ++ (call_context == CONTEXT_STORAGE) ? "CONTEXT_STORAGE" : "CONTEXT_TIMER"); ++ ++ return; ++} ++ ++void storageproto_usb_reset_ind(void) ++{ ++ /* status reset */ ++ BulkOutLength = 0; ++ StorageStatus = STORAGE_IDLE; ++ ++ DBG_STORAGE_FD(KERN_INFO "storage_fd: storage protocol reset.\n"); ++ ++ return; ++} ++ ++void storageproto_init(void) ++{ ++ /* timer init */ ++ init_timer(&BulkOutTim); ++ ++ /* timer init */ ++ init_timer(&MediaCheckTim); ++ ++ return; ++} ++ ++void storageproto_exit(void) ++{ ++ /* device close */ ++ storageproto_device_close(); ++ ++ /* delete timer */ ++ del_timer(&BulkOutTim); ++ ++ /* delete timer */ ++ del_timer(&MediaCheckTim); ++ ++ return; ++} ++ ++ssize_t storageproto_proc_read(struct file* file, char* buf, size_t count, ++ loff_t* pos) ++{ ++ char string[1024]; ++ int len = 0; ++ ++ len += sprintf(string + len, "Protocol status:%s\n", ++ (StorageStatus == STORAGE_IDLE) ? "STORAGE_IDLE" : ++ (StorageStatus == STORAGE_BULKIN) ? "STORAGE_BULKIN" : ++ "STORAGE_BULKOUT"); ++ ++ len += sprintf(string + len, "USB status:%s\n", ++ (UsbStatus == USB_DISCONNECT) ? "USB_DISCONNECT" : ++ "USB_CONNECT"); ++ ++ len += sprintf(string + len, "Media status:%s\n", ++ (MediaStatus == MEDIA_EJECT) ? "MEDIA_EJECT" : ++ "MEDIA_INSERT"); ++ ++ len += sprintf(string + len, "Media chage:%s\n", ++ (MediaChange == MEDIA_CHANGE_OFF) ? "MEDIA_CHANGE_OFF" : ++ "MEDIA_CHANGE_ON"); ++ ++ len += sprintf(string + len, "Device name:%s\n", ++ storage_device); ++ ++ len += sprintf(string + len, "Device file descriptor:0x%p\n", ++ DeviceFile); ++ ++ len += sprintf(string + len, "Device size:0x%d\n", ++ DeviceSize); ++ ++ len += sprintf(string + len, "Device block size:0x%d\n", ++ DeviceBlockSize); ++ ++ len += sprintf(string + len, "Device write protect:%s\n", ++ (DeviceWrProtect == WR_PROTECT_OFF) ? "WR_PROTECT_OFF": ++ "WR_PROTECT_ON"); ++ ++ len += sprintf(string + len, "Bulk in max size:%ld\n", ++ StatMaxBulkInSize); ++ ++ len += sprintf(string + len, "Bulk out max size:%ld\n", ++ StatMaxBulkOutSize); ++ ++ len += sprintf(string + len, "device write error:%ld\n", ++ StatDevWriteError); ++ ++ len += sprintf(string + len, "device read error:%ld\n", ++ StatDevReadError); ++ ++ len += sprintf(string + len, "device flush error:%ld\n", ++ StatDevFlushError); ++ ++ len += sprintf(string + len, "write data bulk out timout:%ld\n", ++ StatWriteTimout); ++ ++ len += sprintf(string + len, "device write max time:%ld msec\n", ++ (StatMaxWriteTime * 1000) / HZ); ++ ++ *pos += len; ++ if(len > count){ ++ len = -EINVAL; ++ } ++ else ++ if(len > 0 && copy_to_user(buf, string, len)) { ++ len = -EFAULT; ++ } ++ ++ return len; ++} ++ +diff -Nur linux-2.4.18/drivers/usb/device/storage_fd/storageproto.h linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.h +--- linux-2.4.18/drivers/usb/device/storage_fd/storageproto.h 1970-01-01 03:00:00.000000000 +0300 ++++ linux-2.4.18-usb-storage/drivers/usb/device/storage_fd/storageproto.h 2003-11-07 05:34:43.000000000 +0300 +@@ -0,0 +1,585 @@ ++/* ++ * linux/drivers/usb/device/storage_fd/storageproto.h - mass storage protocol library header ++ * ++ * Copyright (c) 2003 Lineo Solutions, Inc. ++ * ++ * Written by Shunnosuke kabata ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ */ ++ ++#ifndef _STORAGEPROTO_H_ ++#define _STORAGEPROTO_H_ ++ ++/****************************************************************************** ++** Macro Define ++******************************************************************************/ ++ ++/************************************** ++** Class Code ++**************************************/ ++ ++/* ++ * Class ++ */ ++ ++#define MASS_STORAGE_CLASS 0x08 ++ ++/* ++ * SubClass ++ */ ++ ++#define MASS_STORAGE_SUBCLASS_RBC 0x01 ++#define MASS_STORAGE_SUBCLASS_SFF8020I 0x02 ++#define MASS_STORAGE_SUBCLASS_QIC157 0x03 ++#define MASS_STORAGE_SUBCLASS_UFI 0x04 ++#define MASS_STORAGE_SUBCLASS_SFF8070I 0x05 ++#define MASS_STORAGE_SUBCLASS_SCSI 0x06 ++ ++/* ++ * Protocol ++ */ ++ ++#define MASS_STORAGE_PROTO_CBI_WITH_COMP 0x00 ++#define MASS_STORAGE_PROTO_CBI_NO_COMP 0x01 ++#define MASS_STORAGE_PROTO_BULK_ONLY 0x50 ++ ++/************************************** ++** SCSI Command ++**************************************/ ++ ++#define SCSI_FORMAT_UNT 0x04 ++#define SCSI_INQUIRY 0x12 ++#define SCSI_START_STOP 0x1b ++#define SCSI_MODE_SELECT 0x55 ++#define SCSI_MODE_SENSE 0x1a ++#define SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e ++#define SCSI_READ_10 0x28 ++#define SCSI_READ_12 0xa8 ++#define SCSI_READ_CAPACITY 0x25 ++#define SCSI_READ_FORMAT_CAPACITY 0x23 ++#define SCSI_REQUEST_SENSE 0x03 ++#define SCSI_REZERO_UNIT 0x01 ++#define SCSI_SEEK_10 0x2b ++#define SCSI_SEND_DIAGNOSTIC 0x1d ++#define SCSI_TEST_UNIT_READY 0x00 ++#define SCSI_VERIFY 0x2f ++#define SCSI_WRITE_10 0x2a ++#define SCSI_WRITE_12 0xaa ++#define SCSI_WRITE_AND_VERIFY 0x2e ++ ++/************************************** ++** SCSI Command Parameter ++**************************************/ ++ ++#define CBW_SIGNATURE 0x43425355 /* USBC */ ++#define CSW_SIGNATURE 0x53425355 /* USBS */ ++ ++#define PRODUCT_REVISION_LEVEL "1.00" ++ ++/************************************** ++** Status ++**************************************/ ++ ++#define WR_PROTECT_OFF 0 ++#define WR_PROTECT_ON 1 ++ ++#define STORAGE_IDLE 0 ++#define STORAGE_BULKIN 1 ++#define STORAGE_BULKOUT 2 ++ ++#define USB_DISCONNECT 0 ++#define USB_CONNECT 1 ++ ++#define MEDIA_EJECT 0 ++#define MEDIA_INSERT 1 ++ ++#define MEDIA_CHANGE_OFF 0 ++#define MEDIA_CHANGE_ON 1 ++ ++/************************************** ++** Mass Storage Thread Name ++**************************************/ ++ ++#define STORAGE_THREAD_NAME "usbdstorage" ++ ++/************************************** ++** Media Signal Delay Time(ms) ++**************************************/ ++ ++#define USB_EVENT_DELAY_TIM 1000 ++ ++/************************************** ++** Write Bulk Out Check Time(ms) ++**************************************/ ++ ++#define WR_BULKOUT_CHK_TIM 1000 ++ ++/************************************** ++** Media Check Time(ms) ++**************************************/ ++ ++#define MEDIA_CHECK_TIM 3000 ++#define MEDIA_CHECK_RETRY 3 ++ ++/************************************** ++** Context ++**************************************/ ++ ++#define CONTEXT_SCHEDULE 0 ++#define CONTEXT_STORAGE 1 ++#define CONTEXT_TIMER 2 ++ ++/************************************** ++** Debug Message ++**************************************/ ++#if 0 ++#define DBG_STORAGE_FD(fmt, args...) printk(fmt, ##args) ++#else ++#define DBG_STORAGE_FD(fmt, args...) ++#endif ++ ++/****************************************************************************** ++** Structure Define ++******************************************************************************/ ++ ++/************************************** ++** Command Block Wrapper / Command Status Wrapper ++**************************************/ ++ ++/* ++ * Command Block Wrapper ++ */ ++typedef struct{ ++ unsigned long dCBWSignature; ++ unsigned long dCBWTag; ++ unsigned long dCBWDataTransferLength; ++ unsigned char bmCBWFlags; ++ unsigned char bCBWLUN:4, ++ Reserved:4; ++ unsigned char bCBWCBLength:5, ++ Reserved2:3; ++ unsigned char CBWCB[16]; ++} __attribute__((packed)) COMMAND_BLOCK_WRAPPER; ++ ++/* ++ * Command Status Wrapper ++ */ ++typedef struct{ ++ unsigned long dCSWSignature; ++ unsigned long dCSWTag; ++ unsigned long dCSWDataResidue; ++ unsigned char bCSWStatus; ++} __attribute__((packed)) COMMAND_STATUS_WRAPPER; ++ ++/************************************** ++** SCSI Command ++**************************************/ ++ ++/* ++ * INQUIRY ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char EVPD:1, ++ Reserved1:4, ++ LogicalUnitNumber:3; ++ unsigned char PageCode; ++ unsigned char Reserved2; ++ unsigned char AllocationLength; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++} __attribute__((packed)) SCSI_INQUIRY_COMMAND; ++ ++typedef struct{ ++ unsigned char PeripheralDeviceType:5, ++ Reserved1:3; ++ unsigned char Reserved2:7, ++ RMB:1; ++ unsigned char ANSIVersion:3, ++ ECMAVersion:3, ++ ISOVersion:2; ++ unsigned char ResponseDataFormat:4, ++ Reserved3:4; ++ unsigned char AdditionalLength; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char VendorInformation[8]; ++ unsigned char ProductIdentification[16]; ++ unsigned char ProductRevisionLevel[4]; ++} __attribute__((packed)) SCSI_INQUIRY_DATA; ++ ++/* ++ * READ FORMAT CAPACITY ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char Reserved1:5, ++ LogicalUnitNumber:3; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char AllocationLength[2]; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++} __attribute__((packed)) SCSI_READ_FORMAT_CAPACITY_COMMAND; ++ ++typedef struct{ ++ struct{ ++ unsigned char Reserved1; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char CapacityListLength; ++ } __attribute__((packed)) CapacityListHeader; ++ struct{ ++ unsigned char NumberofBlocks[4]; ++ unsigned char DescriptorCode:2, ++ Reserved1:6; ++ unsigned char BlockLength[3]; ++ } __attribute__((packed)) CurrentMaximumCapacityDescriptor; ++} __attribute__((packed)) SCSI_READ_FORMAT_CAPACITY_DATA; ++ ++/* ++ * READ FORMAT CAPACITY ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char RelAdr:1, ++ Reserved1:4, ++ LogicalUnitNumber:3; ++ unsigned char LogicalBlockAddress[4]; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char PMI:1, ++ Reserved4:7; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++} __attribute__((packed)) SCSI_READ_CAPACITY_COMMAND; ++ ++typedef struct{ ++ unsigned char LastLogicalBlockAddress[4]; ++ unsigned char BlockLengthInBytes[4]; ++} __attribute__((packed)) SCSI_READ_CAPACITY_DATA; ++ ++/* ++ * REQUEST SENSE ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char Reserved1:5, ++ LogicalUnitNumber:3; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char AllocationLength; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++ unsigned char Reserved10; ++} __attribute__((packed)) SCSI_REQUEST_SENSE_COMMAND; ++ ++typedef struct{ ++ unsigned char ErrorCode:7, ++ Valid:1; ++ unsigned char Reserved1; ++ unsigned char SenseKey:4, ++ Reserved2:4; ++ unsigned char Information[4]; ++ unsigned char AdditionalSenseLength; ++ unsigned char Reserved3[4]; ++ unsigned char AdditionalSenseCode; ++ unsigned char AdditionalSenseCodeQualifier; ++ unsigned char Reserved4; ++ unsigned char Reserved5[3]; ++} __attribute__((packed)) SCSI_REQUEST_SENSE_DATA; ++ ++/* ++ * READ(10) ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char RelAdr:1, ++ Reserved1:2, ++ FUA:1, ++ DPO:1, ++ LogicalUnitNumber:3; ++ unsigned char LogicalBlockAddress[4]; ++ unsigned char Reserved2; ++ unsigned char TransferLength[2]; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++} __attribute__((packed)) SCSI_READ_10_COMMAND; ++ ++/* ++ * MODE SENSE ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char Reserved1:3, ++ DBD:1, ++ Reserved2:1, ++ LogicalUnitNumber:3; ++ unsigned char PageCode:6, ++ PC:2; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char ParameterListLength[2]; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++} __attribute__((packed)) SCSI_MODE_SENSE_COMMAND; ++ ++typedef struct{ ++ unsigned char ModeDataLength; ++ unsigned char MediumTypeCode; ++ unsigned char Reserved1:4, ++ DPOFUA:1, ++ Reserved2:2, ++ WP:1; ++ unsigned char Reserved3; ++} __attribute__((packed)) MODE_PARAMETER_HEADER; ++ ++typedef struct{ ++ unsigned char PageCode:6, ++ Reserved1:1, ++ PS:1; ++ unsigned char PageLength; ++ unsigned char DCR:1, ++ Reserved2:1, ++ PER:1, ++ Reserved3:1, ++ RC:1, ++ Reserved4:1, ++ Reserved5:1, ++ AWRE:1; ++ unsigned char ReadRetryCount; ++ unsigned char Reserved6[4]; ++ unsigned char WriteRetryCount; ++ unsigned char Reserved7[3]; ++} __attribute__((packed)) READ_WRITE_ERROR_RECOVERY_PAGE; ++ ++typedef struct{ ++ unsigned char PageCode:6, ++ Reserved1:1, ++ PS:1; ++ unsigned char PageLength; ++ unsigned char TransferRate[2]; ++ unsigned char NumberofHeads; ++ unsigned char SectorsperTrack; ++ unsigned char DataBytesperSector[2]; ++ unsigned char NumberofCylinders[2]; ++ unsigned char Reserved2[9]; ++ unsigned char MotorOnDelay; ++ unsigned char MotorOffDelay; ++ unsigned char Reserved3[7]; ++ unsigned char MediumRotationRate[2]; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++} __attribute__((packed)) FLEXIBLE_DISK_PAGE; ++ ++typedef struct{ ++ unsigned char PageCode:6, ++ Reserved1:1, ++ PS:1; ++ unsigned char PageLength; ++ unsigned char Reserved2:6, ++ SRFP:1, ++ SFLP:1; ++ unsigned char TLUN:3, ++ Reserved3:3, ++ SML:1, ++ NCD:1; ++ unsigned char Reserved4[8]; ++} __attribute__((packed)) REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE; ++ ++typedef struct{ ++ unsigned char PageCode:6, ++ Reserved1:1, ++ PS:1; ++ unsigned char PageLength; ++ unsigned char Reserved2; ++ unsigned char InactivityTimeMultiplier:4, ++ Reserved3:4; ++ unsigned char SWPP:1, ++ DISP:1, ++ Reserved4:6; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++} __attribute__((packed)) TIMER_AND_PROTECT_PAGE; ++ ++typedef struct{ ++ READ_WRITE_ERROR_RECOVERY_PAGE ReadWriteErrorRecoveryPage; ++ FLEXIBLE_DISK_PAGE FlexibleDiskPage; ++ REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE RemovableBlockAccessCapabilitiesPage; ++ TIMER_AND_PROTECT_PAGE TimerAndProtectPage; ++} __attribute__((packed)) MODE_ALL_PAGES; ++ ++typedef struct{ ++ MODE_PARAMETER_HEADER ModeParameterHeader; ++ union{ ++ READ_WRITE_ERROR_RECOVERY_PAGE ReadWriteErrorRecoveryPage; ++ FLEXIBLE_DISK_PAGE FlexibleDiskPage; ++ REMOVABLE_BLOCK_ACCESS_CAPABILITIES_PAGE RemovableBlockAccessCapabilitiesPage; ++ TIMER_AND_PROTECT_PAGE TimerAndProtectPage; ++ MODE_ALL_PAGES ModeAllPages; ++ } __attribute__((packed)) ModePages; ++} __attribute__((packed)) SCSI_MODE_SENSE_DATA; ++ ++/* ++ * TEST UNIT READY ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char Reserved1:5, ++ LogicalUnitNumber:3; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++ unsigned char Reserved10; ++ unsigned char Reserved11; ++} __attribute__((packed)) SCSI_TEST_UNIT_READY_COMMAND; ++ ++/* ++ * PREVENT-ALLOW MEDIUM REMOVAL ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char Reserved1:5, ++ LogicalUnitNumber:3; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char Prevent:1, ++ Reserved4:7; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++ unsigned char Reserved10; ++ unsigned char Reserved11; ++} __attribute__((packed)) SCSI_PREVENT_ALLOW_MEDIUM_REMOVAL_COMMAND; ++ ++/* ++ * START-STOP UNIT ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char IMMED:1, ++ Reserved1:4, ++ LogicalUnitNumber:3; ++ unsigned char Reserved2; ++ unsigned char Reserved3; ++ unsigned char Start:1, ++ LoEj:1, ++ Reserved4:6; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++ unsigned char Reserved7; ++ unsigned char Reserved8; ++ unsigned char Reserved9; ++ unsigned char Reserved10; ++ unsigned char Reserved11; ++} __attribute__((packed)) SCSI_START_STOP_COMMAND; ++ ++/* ++ * WRITE(10) ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char RelAdr:1, ++ Reserved1:2, ++ FUA:1, ++ DPO:1, ++ LogicalUnitNumber:3; ++ unsigned char LogicalBlockAddress[4]; ++ unsigned char Reserved2; ++ unsigned char TransferLength[2]; ++ unsigned char Reserved3; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++} __attribute__((packed)) SCSI_WRITE_10_COMMAND; ++ ++/* ++ * VERIFY ++ */ ++ ++typedef struct{ ++ unsigned char OperationCode; ++ unsigned char RelAdr:1, ++ ByteChk:1, ++ Reserved1:1, ++ Reserved2:1, ++ DPO:1, ++ LogicalUnitNumber:3; ++ unsigned char LogicalBlockAddress[4]; ++ unsigned char Reserved3; ++ unsigned char VerificationLength[2]; ++ unsigned char Reserved4; ++ unsigned char Reserved5; ++ unsigned char Reserved6; ++} __attribute__((packed)) SCSI_VERIFY_COMMAND; ++ ++/****************************************************************************** ++** Global Function Prototype ++******************************************************************************/ ++ ++/* storage-fd.c */ ++void storage_urb_send(struct usb_device_instance*, void*, int); ++ ++/* storageproto.c */ ++void storageproto_urb_analysis(struct urb*); ++int storageproto_device_open_check(void); ++void storageproto_device_close(void); ++void storageproto_usb_status_check(int); ++void storageproto_media_status_check(int); ++void storageproto_usb_reset_ind(void); ++ssize_t storageproto_proc_read(struct file*, char*, size_t, loff_t* pos); ++void storageproto_init(void); ++void storageproto_exit(void); ++ ++#endif /* _STORAGEPROTO_H_ */ ++ |